悠若谷 发表于 2009-6-25 21:41

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 编辑 ]

悠若谷 发表于 2009-6-25 22:11

知道了 声明syms x就可以了 不好意思

friendchj 发表于 2009-6-26 11:12

我试了一下,声明之后,仍然无解。提示是说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

悠若谷 发表于 2009-6-27 13:25

谢谢前辈,用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

beyondhxf 发表于 2009-6-27 22:13

回复 板凳 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]
查看完整版本: matla如何求解这个复数方程