matlab数组判断零点,请教一个matlab 求函数零点的问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

程序如下,求beta值

function beta_3

c=3*10^8;

lambda=1.55;

rho(1)=1;nc=1;n1=3;l1=0.13;n2=1.5;l2=0.265;

omega=2*pi*c/lambda;

x=fsolve(@(x) myfun(x,omega,l1,l2,n1,n2,nc,c),[0.5,4.0227,12.1507,6.0599,-1.2508-i*0.0461,0.7453-0.1052*i,3.1416-0.6942*i]')

function F=myfun(x,omega,l1,l2,n1,n2,nc,c)

beta=x(1);

kc=x(2);

k1=x(3);

k2=x(4);

kte=x(5);

Ate=x(6);

Bte=x(7);

F(1)=-besselj(kc*1,1)/(besselj(kc*1,0))+i*kc/k1*(exp(i*kte)-Ate-Bte)/(exp(i*kte)-Ate+Bte);

F(2)=kc-sqrt(nc^2*(omega/c)^2-beta^2);

F(3)=k1-sqrt(n1^2*(omega/c)^2-beta^2);

F(4)=k2-sqrt(n2^2*(omega/c)^2-beta^2);

F(5)=Ate-exp(i*k1*l1)*(i*(k1^2+k2^2)/(2*k1*k2)*sin(k2*l2)+cos(k2*l2));

F(6)=Bte-i*exp(-i*k1*11)*(k1^2-k2^2)/(2*k1*k2)*sin(k2*l2);

F(7)=kte+i*log(real(Ate)-sqrt(real(Ate)^2-1));

我用的是多元函数,取初值得时候带beta=0.5得到其他的几个变量值。。。

但结果好象得不到,不知道为什么。

如果不用这个方法,已知

kc=sqrt(nc^2*(omega/c)^2-beta^2);

k1=sqrt(n1^2*(omega/c)^2-beta^2);

k2=sqrt(n2^2*(omega/c)^2-beta^2);

Ate=exp(i*k1*l1)*(i*(k1^2+k2^2)/(2*k1*k2)*sin(k2*l2)+cos(k2*l2));

Bte=i*exp(-i*k1*11)*(k1^2-k2^2)/(2*k1*k2)*sin(k2*l2);

kte=-i*log(real(Ate)-sqrt(real(Ate)^2-1));

-besselj(kc*1,1)/(besselj(kc*1,0))+i*kc/k1*(exp(i*kte)-Ate-Bte)/(exp(i*kte)-Ate+Bte)=0;

应该怎么求beta喃?

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值