关于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,谢谢!!!
回复 #2 guowang366 的帖子
把你的公式用图片的形式贴上来 直接用fzero即可. fzero需要初值,或是一个取值范围,但是我这个没有。。。:'( 方程及其中的一些系数的取值范围如下,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;
谢了! 复数域内求解-------solve试试.
不行的话,可以再试试 fsolve.
注:初值本来就是自己给的,最后收敛的那个解即为所求。 不论是利用fsolve还是solve只能求出一个根,但是小弟现在目标是四个根同时求出,如果是四个实数,则两两互为相反数;如果是两个实数两个复数,则两个实数互为相反数,而两个复数互为共轭(辛共轭);如果是四个复数则是两两互为辛共轭。还请各位大侠帮忙,谢谢!!!
回复 7楼 的帖子
只出现一个根,可能是你的方程具有周期性.比如方程cos(x)*cosh(x)=-1,用solve只能求出一个根,而实际上它的根有无数个.这就得用fsolve(Fun,f0.opt,p1,p2,...)这个语句求解.最好找本有相关用法的书,了解下fsolve的用法.
页:
[1]