matla如何求解这个复数方程
我用solve来解 运行报错
ns=1.521145; k=2*pi/0.6328e-6; nc=1.531302842-0.0001349208*i; N1=1.5423;
x=solve('k*sqrt(N1^2-x)*(1e-6)=pi-atan(sqrt((N1^2-x)/(x-ns^2)))-tan(sqrt((N1^2-x)/(x-nc^2)))');
x=eval(x);
出错提示:
??? Error using ==> solve
Unable to find closed form solution.
请各位前辈帮忙看一下:
1.这个方程不能用solve解出吗?
2.那应该用什么方法来?实部虚部分离?
先谢谢前辈们!~~~
[ 本帖最后由 ChaChing 于 2009-6-26 22:23 编辑 ] 知道了 声明syms x就可以了 不好意思 我试了一下,声明之后,仍然无解。提示是说solve无法给出解析解,可以考虑用数值解法。例如:
clc
clear
ns=1.521145;
k=2*pi/0.6328e-6;
nc=1.531302842-0.0001349208*i;
N1=1.5423;
=fsolve(@(x) pi-atan(sqrt((N1^2-x)./(x-ns^2)))-atan(sqrt((N1^2-x)./(x-nc^2)))-k*sqrt(N1^2-x)*(1e-6),1+i);
%%%%%%%%%%%%%
>> x
x =
2.3553 - 0.0001i
>> fval
fval =
-9.5479e-015 +1.5786e-016i 谢谢前辈,用solve也可以的,这样就行了:
syms y;
ns=1.521145;
k=2*pi/0.6328e-6;
nc=1.4466-0.000164*i;
nf=1.549;
N1=1.5423;
z=solve(k*sqrt(N1^2-y)*(1e-6)-pi+atan(sqrt((N1^2-y)/(y-ns^2)))+atan(sqrt((N1^2-y)/(y-nc^2))),y);
%%%%%%%%%%%
z =
2.3415355792255721271184738258769-.68836951651617539102897623565936e-5*i
回复 板凳 friendchj 的帖子
奇怪了,我输入你的代码,显示了这条信息ns=1.521145;
k=2*pi/0.6328e-6;
nc=1.531302842-0.0001349208*i;
N1=1.5423;
=fsolve(@(x) pi-atan(sqrt((N1^2-x)./(x-ns^2)))-atan(sqrt((N1^2-x)./(x-nc^2)))-k*sqrt(N1^2-x)*(1e-6),1+i);
Optimization terminated: first-order optimality is less than options.TolFun.
页:
[1]