yangyang_722 发表于 2009-8-2 11:09

解方程问题

各位高手,像下面这样的方程应该从何下手呢?
cot(x)=a/x+x/a;
其中a是可测的量,但是在此方程中以符号的形式表示;x是变量。MATLAB中采用fzero,roots等命令好像不行,我曾尝试用数值的方法求解,可是a是一个符号,不好处理。那么该如何处理呢?

[ 本帖最后由 yangyang_722 于 2009-8-2 21:06 编辑 ]

ChaChing 发表于 2009-8-2 14:58

ctan是什么函数呢? atan或cot? 余切函数不是cot吗?

solve('ctan(x)=a/x+x/a','x')
??? Error using ==> solve
Unable to find closed form solution.
待高人路过

[ 本帖最后由 ChaChing 于 2009-8-2 15:08 编辑 ]

波波球 发表于 2009-8-2 21:29

回复 沙发 ChaChing 的帖子

为什么不是
solve('cot(x)=a/x+x/a','x')?

ChaChing 发表于 2009-8-2 21:40

回复 板凳 波波球 的帖子

阁下没试吗!? 也是一样的:@)

刚才发现楼主在我2F指正后, 已将原有的ctan编辑成cot! 难怪楼上的会有这样疑问!
再次呼吁使用编辑一定是个好习惯, 但若已被回帖, 编辑会造成误解则请勿使用!

[ 本帖最后由 ChaChing 于 2010-1-3 14:25 编辑 ]

波波球 发表于 2009-8-4 12:14

回复 地板 ChaChing 的帖子

不好意思,在同学本子上上的,没有Matlab...

friendchj 发表于 2009-8-5 14:54

lz其实是求x关于a的表达式,对于此方程,应该没有解析解。试试
a=2;
fsolve(@(x)cot(x)-a/x-x/a,10)

yangyang_722 发表于 2009-8-26 22:56

Matlab求解超越方程

用下面的语句可以画出方程的图,如附件。syms x; f=cot(x)-(0.5/x+x/0.5)/2; ezplot(f) 可以看出此方程式有解,但输入solve('cot(x)-(0.5/x+x/0.5)/2=0','x') 得到的结果却是ans =
0.
这是为什么呢。Fzero可以获得解,但是需要分别给出不同的区间,不利于后续计算。怎样能同时得到这些解,最好是以a=,……]的形式,或者是含k*pi形式的?
另外,如图所示,x的取值范围只是2*pi到-2*pi范围的,怎么才能取到负无穷到正无穷的啊

[ 本帖最后由 ChaChing 于 2010-1-3 14:14 编辑 ]

ChaChing 发表于 2010-1-3 15:01

回复 7楼 yangyang_722 的帖子

1.刚才试下, 版本v5.3的确如LZ所说ans=0
   但使用r2009a版本, 不管是 solve('cot(x)-(0.5/x+x/0.5)/2=0','x') 或solve('cot(x)-(0.5/x+x/0.5)/2','x') 都可以解出
   ans = -3.4203854894568732243866513329247 !!
2.画图范围可使用ezplot(fun,)调整! 但应该不可能负无穷到正无穷!
3.要得到这些解, 或许可试试6F的方式再加上一个for回圈!
页: [1]
查看完整版本: 解方程问题