24小时热门版块排行榜    

查看: 1681  |  回复: 7

yj112358

新虫 (小有名气)

[交流] matlab计算带有复数的函数,最后求复数函数的模,结果里面却有复数标志i, 已有2人参与

matlab计算带有复数的函数,最后求复数函数的模,结果里面却有复数标志i,输入自变量,得到的结果确实是实数,不知道怎么回事;
代码如下:
syms n2 k0 fa1 fa2 k2 real ;
syms c v0 fw alpha real;
syms sild kmax d kxmax kx delta sild real;
syms v  real ;
syms Rsf Rs RA1 real;
nord=1.46;next=1.57;n1=1;c=3*(10^8);alpha=pi/2;fa1=pi/3;n2=1.383;k2=0.0083;v0=2923.443;sild=0;kmax=0.6;d=2.17*10^(-9);fw=20.77174;k0=2*pi*v/1000;
nx=next*(sin(sild))^2+nord*(cos(sild))^2;
f=0.5*(3*(cos(sild))^2-1);
kxmax=kmax*(f*(sin(alpha))^2/2+(1-f)/3);
V=2*pi*c*fw;
delta=2*pi*c*(v-v0);
kx=kxmax*V^2/(4*delta^2+V^2);
Nx=nx+kx*i;
N2=n2+k2*i;
I1=d*(Nx^2-N2^2);
I2=k0/N2*sin(fa1)*I1;
I3=I2*i;
fa2=asin(n1/N2*sin(fa1));
b=-sin(fa1-fa2)+I3;
b1=sin(fa1+fa2)-I3;
rs=b/b1;
rf=sin(fa1-fa2)/sin(fa2+fa1);
Rsf=rf*conj(rf);
Rs=rs*conj(rs);
%Rsf=real(rf)*real(rf)+imag(rf)*imag(rf);
%Rs=real(rs)*real(rs)+imag(rs)*imag(rs);
RA1=-log10(Rs/Rsf)
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

idzhougl

金虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
我觉得你可以分段运行,一点点排查,看你的程序,应该不是多复杂,很好排查

发自小木虫Android客户端
2楼2015-09-06 08:25:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yj112358

新虫 (小有名气)

引用回帖:
2楼: Originally posted by idzhougl at 2015-09-06 08:25:18
我觉得你可以分段运行,一点点排查,看你的程序,应该不是多复杂,很好排查

排查了,都木有问题,求大神帮忙啊。
3楼2015-09-06 08:40:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yj112358

新虫 (小有名气)

跪求大神帮忙
4楼2015-09-06 09:38:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

1314168apple

金虫 (知名作家)


小木虫: 金币+0.5, 给个红包,谢谢回帖
用 expand命令 展开 Rs/Rsf。
你会 发现 并没有i 的存在。
为了最终理解你所不理解的,你必须经历一条愚昧无知的道路。为了占有你从未占有的东西,你必须经历被剥夺的道路。为了达到你现在所不在的名位,你必须经历那...
5楼2015-09-06 15:10:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yj112358

新虫 (小有名气)

引用回帖:
5楼: Originally posted by 1314168apple at 2015-09-06 15:10:39
用 expand命令 展开 Rs/Rsf。
你会 发现 并没有i 的存在。

太感谢你了,不过,用了expand之后,matlab 中出现Output truncated.  Text exceeds maximum line length of 25,000 characters for Command Window display,无法显示所有的公式,怎么办啊?大神
6楼2015-09-06 16:09:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yj112358

新虫 (小有名气)

引用回帖:
5楼: Originally posted by 1314168apple at 2015-09-06 15:10:39
用 expand命令 展开 Rs/Rsf。
你会 发现 并没有i 的存在。

太感谢你了,但是用了expand之后,matlab 中出现Output truncated.  Text exceeds maximum line length of 25,000 characters for Command Window display,怎么显示所有的数字啊?大神
7楼2015-09-06 16:10:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

1314168apple

金虫 (知名作家)


小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
7楼: Originally posted by yj112358 at 2015-09-06 16:10:41
太感谢你了,但是用了expand之后,matlab 中出现Output truncated.  Text exceeds maximum line length of 25,000 characters for Command Window display,怎么显示所有的数字啊?大神...

2013a版本下:
1、试试用factor命令:factor(expand(Rs/Rsf)).这一道题这个方法最好。
2、再用simplify命令的深度化简选项:simplify(expand(Rs/Rsf),'steps',300)。你的问题可以。提高深度值都不可以的话(比较耗时),只能用方法3。1,2有时可以叠用。
3、可以参考  http://blog.sina.com.cn/s/blog_3ebc3c2901018cnu.html
为了最终理解你所不理解的,你必须经历一条愚昧无知的道路。为了占有你从未占有的东西,你必须经历被剥夺的道路。为了达到你现在所不在的名位,你必须经历那...
8楼2015-09-06 19:20:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yj112358 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见