24小时热门版块排行榜    

查看: 2108  |  回复: 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的回帖

wxliu1992

新虫 (初入文坛)

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