guowang366 发表于 2007-12-20 22:11

关于MATLAB求解超越方程问题

小弟现有一个超越方程,预用MATLAB求解,如下:
(((-(u)^2+(k)^2)^0.5)^2+v*u^2)*(((-(u)^2-(k)^2)^0.5)^3+(2-v)*u^2*((-(u)^2-(k)^2)^0.5))*(tanh(((-(u)^2-(k)^2)^0.5)*(b/a)))-(((-(u)^2-(k)^2)^0.5)^2+v*u^2)*(((-(u)^2+(k)^2)^0.5)^3+(2-v)*u^2*((-(u)^2+(k)^2)^0.5))*(tanh(((-(u)^2+(k)^2)^0.5)*(b/a)))=0
其中v取0.3 ,k取0.01--0.3之间的某值,b/a取0.2--0.5之间的某值,u为变量。
请各位高人指点,由于急用小弟将不甚感激。
也可直接与我联系,QQ274453035,谢谢!!!

sigma665 发表于 2007-12-20 22:14

回复 #2 guowang366 的帖子

把你的公式用图片的形式贴上来

xjzuo 发表于 2007-12-20 22:15

直接用fzero即可.

guowang366 发表于 2007-12-20 22:17

fzero需要初值,或是一个取值范围,但是我这个没有。。。:'(

guowang366 发表于 2007-12-20 22:23

方程及其中的一些系数的取值范围如下,u为变量,在复数域内求解:

((y1)^2+v*u^2)*((y2)^3+(2-v)*u^2*(y2))*(tanh((y2)*(b/a)))-((y2)^2+v*u^2)*((y1)^3+(2-v)*u^2*(y1))*(tanh((y1)*(b/a)))=0

b/a=0.2--0.5;   k=0.01--0.3;    v=0.3

y1=(-(u)^2+(k)^2)^0.5;
y2=(-(u)^2-(k)^2)^0.5;
谢了!

xjzuo 发表于 2007-12-20 22:34

复数域内求解-------solve试试.
不行的话,可以再试试 fsolve.
注:初值本来就是自己给的,最后收敛的那个解即为所求。

guowang366 发表于 2007-12-21 09:45

不论是利用fsolve还是solve只能求出一个根,但是小弟现在目标是四个根同时求出,如果是四个实数,则两两互为相反数;如果是两个实数两个复数,则两个实数互为相反数,而两个复数互为共轭(辛共轭);如果是四个复数则是两两互为辛共轭。还请各位大侠帮忙,谢谢!!!

mechanic05 发表于 2008-1-19 16:41

回复 7楼 的帖子

只出现一个根,可能是你的方程具有周期性.比如方程cos(x)*cosh(x)=-1,用solve只能求出一个根,而实际上它的根有无数个.这就得用fsolve(Fun,f0.opt,p1,p2,...)这个语句求解.最好找本有相关用法的书,了解下fsolve的用法.
页: [1]
查看完整版本: 关于MATLAB求解超越方程问题