24小时热门版块排行榜    

查看: 2086  |  回复: 5

zdzhang

木虫 (正式写手)

[求助] 求各位前辈帮忙!matlab解复数方程,出现图中的警告,怎来修改呢?谢谢了啊

各位前辈好,我想通过解这样一个复数方程,得到k_z的值,但是我这样编写的程序,总是出错,哪位大侠能帮我看看是那个地方出错了呢?望帮忙修改一下,先谢过各位了!
下面是我自己写的程序:
clc;
clear;
syms k_z
i=sqrt(-1);
a=60*10^(-9);
mu_air=4*pi*10^(-7);
epsl_air=8.854187817e-12;
epsl_met=-18.36+0.46i;
c=3.0*10^8;
wavelength=632.8*10^(-9);
k_0=2*pi/wavelength;

f=@(k_z) (-epsl_met*k_0^2*(8-(epsl_met*k_0^2-k_z^2)^(0.5)*a))/16*(1-0.25*(epsl_met*k_0^2-k_z^2)*a^2)+mu_air*epsl_air*k_0^2/((mu_air*epsl_air*k_0^2-k_z^2)*a^2*log(1.1229/(mu_air*epsl_air*k_0^2-k_z^2)^(0.5)*a))
ferror=1e-5;
k_z1=(0.95+0.0008*i)*k_0;
k_z2=(1.2+0.005*i)*k_0;
fplot(f,[k_z1,k_z2])
xlabel('k_z')
ylabel('f(k_z)')
hold on
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
k_z0=(k_z1+k_z2)/2;
while abs(f(k_z0))>ferror
    plot(k_z0,f(k_z0),'+')
    if f(k_z1)*f(k_z0)>0
        k_z1=k_z0;
    else
        k_z2=k_z0;
    end
    k_z0=(k_z1+k_z2)/2;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
format short
disp('[           k_z0            f(k_z0)')
disp([k_z0 f(k_z0)])
那位大侠能帮忙修改一下我的程序呢?小弟在此谢过各位了

[ 来自科研家族 Ocean家族 ]

这是我要解的复数方程及已知参数



这是出现的警告

[ Last edited by zdzhang on 2011-11-16 at 17:29 ]
回复此楼

» 本帖已获得的红花(最新10朵)

» 猜你喜欢

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

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

wangyuewu08

木虫 (著名写手)

【答案】应助回帖


zdzhang(金币+2): 2011-12-06 09:32:03
zdzhang(金币+2): 2011-12-06 13:23:44
xiegangmai(金币+1): 谢谢应助! 2011-12-06 22:18:21
错误出现在24行,我数了一下,好像是if f(k_z1)*f(k_z0)>0
这条语句出了问题,两个复数相乘得到的结果应该还是一个复数,除非它们是共轭的。当你把一个复数同0相比较时,程序会认为你是用实部与0比较,而忽略了虚步,警告就是这样显示的。
建议楼主求一下两复数乘积的模,然后再与0进行比较,希望对你有用。
往事并不如烟
2楼2011-12-06 08:47:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangyuewu08

木虫 (著名写手)

★ ★
xiegangmai(金币+2): 谢谢参与! 2011-12-07 18:38:22
我把楼主的代码考到自己的电脑上,运行之后,发现了问题所在。
24行是输出plot(k_z0,f(k_z0),'+')的这条语句,在工作空间中发现k_z0和f(k_z0)都是复数,当x和y都是复数时,系统无法绘制相应的图形,所以提出警告。
我在command window中输入这样的语句plot( 3+4i, 4+3i ),系统显示相同的错误。
知道楼主的意图是想表示两个变量之间的关系,输入一个点,但如果在复数平面上表示的话,会输出两个点,无法反应自变量与应变量之间的关系。

上次回帖说错了,当复数和复数进行大小比较的时候,系统只比较实部,实数可以看做虚部为0的复数,所以比较语句并没有问题。
往事并不如烟
3楼2011-12-07 18:26:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangyuewu08

木虫 (著名写手)

那条语句的确可以画出点来,但反应的只是实部之间的关系。
请问楼主画图是想表示什么意思?说不定有其他的替代方案
往事并不如烟
4楼2011-12-07 18:38:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zdzhang

木虫 (正式写手)

引用回帖:
4楼: Originally posted by wangyuewu08 at 2011-12-07 18:38:37:
那条语句的确可以画出点来,但反应的只是实部之间的关系。
请问楼主画图是想表示什么意思?说不定有其他的替代方案

非常感谢您的回复,根据您的提供的建议,我重新编写了程序,现在解决了,非常感谢您的回答!祝您工作顺利!万事如意!
5楼2011-12-08 09:33:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wxliu1992

新虫 (初入文坛)

送红花一朵
楼主问题是怎么解决的?可否告知,急需
6楼2014-10-31 22:48:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zdzhang 的主题更新
信息提示
请填处理意见