解方程问题
各位高手,像下面这样的方程应该从何下手呢?cot(x)=a/x+x/a;
其中a是可测的量,但是在此方程中以符号的形式表示;x是变量。MATLAB中采用fzero,roots等命令好像不行,我曾尝试用数值的方法求解,可是a是一个符号,不好处理。那么该如何处理呢?
[ 本帖最后由 yangyang_722 于 2009-8-2 21:06 编辑 ] 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 编辑 ]
回复 沙发 ChaChing 的帖子
为什么不是solve('cot(x)=a/x+x/a','x')?
回复 板凳 波波球 的帖子
阁下没试吗!? 也是一样的:@)刚才发现楼主在我2F指正后, 已将原有的ctan编辑成cot! 难怪楼上的会有这样疑问!
再次呼吁使用编辑一定是个好习惯, 但若已被回帖, 编辑会造成误解则请勿使用!
[ 本帖最后由 ChaChing 于 2010-1-3 14:25 编辑 ]
回复 地板 ChaChing 的帖子
不好意思,在同学本子上上的,没有Matlab... lz其实是求x关于a的表达式,对于此方程,应该没有解析解。试试a=2;
fsolve(@(x)cot(x)-a/x-x/a,10)
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 编辑 ]
回复 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]