声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2093|回复: 4

[编程技巧] matla如何求解这个复数方程

[复制链接]
发表于 2009-6-25 21:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
复数方程.jpg

我用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 编辑 ]
复数方程.jpg
回复
分享到:

使用道具 举报

 楼主| 发表于 2009-6-25 22:11 | 显示全部楼层
知道了 声明syms x就可以了 不好意思
发表于 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;
[x,fval]=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

评分

1

查看全部评分

 楼主| 发表于 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

评分

1

查看全部评分

发表于 2009-6-27 22:13 | 显示全部楼层

回复 板凳 friendchj 的帖子

奇怪了,我输入你的代码,显示了这条信息

  1. ns=1.521145;
  2. k=2*pi/0.6328e-6;
  3. nc=1.531302842-0.0001349208*i;
  4. N1=1.5423;
  5. [x,fval]=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);
  6. Optimization terminated: first-order optimality is less than options.TolFun.
复制代码
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-26 11:32 , Processed in 0.066255 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表