matlab解方程+画图最近在学习matlab,主要是用来模拟场分布.基本思路就是求特征方程,然后利用方程的解来画图,现在只是做最简单的,有些问题想问下.代码如下,有点凌乱.特征方程有六个,含有六

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 15:47:04

matlab解方程+画图最近在学习matlab,主要是用来模拟场分布.基本思路就是求特征方程,然后利用方程的解来画图,现在只是做最简单的,有些问题想问下.代码如下,有点凌乱.特征方程有六个,含有六
matlab解方程+画图

最近在学习matlab,主要是用来模拟场分布.

基本思路就是求特征方程,然后利用方程的解来画图,现在只是做最简单的,有些问题想问下.

代码如下,有点凌乱.

特征方程有六个,含有六个参数.其中先令m=1,n=0.k0=2*pi/lamda=2*pi/1.55;n1=1.4949;n2=n4=n3=n5=1.465;a=b=6;

问题如下:

1,看特征方程,kx和ky的方程很接近,基本就是相同的,理论上两个的解应该也差不多,但是matlab解出来的结果差距很大,不知道为什么.

2,利用前面求解的结果做图,matlab老是提示说surface使用错误,矩阵维数不对,但是我又不知道是什么问题,如果我把结果单独另外赋值给那几个参数就不会报错.

syms  kx ky k3x k5x k2y k4y

S=solve('k3x^2=(2*pi/1.55)^2*(1.4949^2-1.465^2)-kx^2',...

      'k5x^2=(2*pi/1.55)^2*(1.4949^2-1.465^2)-kx^2',...

      'kx*6=pi+atan(k3x/kx)+atan(k5x/kx)',...

      'k2y^2=(2*pi/1.55)^2*(1.4949^2-1.465^2)-ky^2',...

      'k4y^2=(2*pi/1.55)^2*(1.4949^2-1.465^2)-ky^2',...

      'ky*6=pi+atan((1.4949^2*k2y)/(1.465^2*ky))+atan((1.4949^2*k4y)/(1.465^2*ky))');

  S

kx=vpa(S.kx(1),2)

ky=vpa(S.ky(1),2)

k3x=vpa(S.k3x(1),2)

k5x=vpa(S.k5x(1),2)

k2y=vpa(S.k2y(1),2)

k4y=vpa(S.k4y(1),2)

syms a b x y z1 z2 Z

a=6;

b=6;

%因为连起来老是报错,所以就尝试用这句话来试验你后面的有么有问题.kx=0.8;ky=0.8;k3x=1.2;k5x=1.2;k2y=0.89;k4y=0.89;

x=linspace(-9,9,300);

y=linspace(-10,10,300);

[xx,yy]=meshgrid(x,y);

z1=cos(kx*a/2+pi/2)*exp(k3x*(xx+a/2)).*(xx<=-a/2)+cos(kx*xx-pi/2).*(xx>=-a/2&xx<=a/2)+cos(kx*a/2-pi/2)*exp(-k5x*(xx-a/2)).*(xx>=a/2);

z2=cos(ky*b/2+pi/2)*exp(k2y*(yy+b/2)).*(yy<=-b/2)+cos(ky*yy-pi/2).*(yy>=-b/2&yy<=b/2)+cos(ky*b/2-pi/2)*exp(-k4y*(yy-b/2)).*(yy>=b/2);

Z=z1.*z2;

figure;

surface(xx,yy,Z);


我的马化腾:461770984.
方便的话加我也可以,多谢了.~

matlab解方程+画图最近在学习matlab,主要是用来模拟场分布.基本思路就是求特征方程,然后利用方程的解来画图,现在只是做最简单的,有些问题想问下.代码如下,有点凌乱.特征方程有六个,含有六

问题出在符号量和数值量的的关系上.

建议修改

syms  kx ky k3x k5x k2y k4y

S=solve('k3x^2=(2*pi/1.55)^2*(1.4949^2-1.465^2)-kx^2',...

      'k5x^2=(2*pi/1.55)^2*(1.4949^2-1.465^2)-kx^2',...

      'kx*6=pi+atan(k3x/kx)+atan(k5x/kx)',...

      'k2y^2=(2*pi/1.55)^2*(1.4949^2-1.465^2)-ky^2',...

      'k4y^2=(2*pi/1.55)^2*(1.4949^2-1.465^2)-ky^2',...

      'ky*6=pi+atan((1.4949^2*k2y)/(1.465^2*ky))+atan((1.4949^2*k4y)/(1.465^2*ky))');

  S

kx=double(vpa(S.kx(1),2))

ky=double(vpa(S.ky(1),2))

k3x=double(vpa(S.k3x(1),2))

k5x=double(vpa(S.k5x(1),2))

k2y=double(vpa(S.k2y(1),2))

k4y=double(vpa(S.k4y(1),2))

a=6;

b=6;

x=linspace(-9,9,300);

y=linspace(-10,10,300);

[xx,yy]=meshgrid(x,y);

z1=cos(kx*a/2+pi/2)*exp(k3x*(xx+a/2)).*(xx<=-a/2)+cos(kx*xx-pi/2).*(xx>=-a/2&xx<=a/2)+cos(kx*a/2-pi/2)*exp(-k5x*(xx-a/2)).*(xx>=a/2);

z2=cos(ky*b/2+pi/2)*exp(k2y*(yy+b/2)).*(yy<=-b/2)+cos(ky*yy-pi/2).*(yy>=-b/2&yy<=b/2)+cos(ky*b/2-pi/2)*exp(-k4y*(yy-b/2)).*(yy>=b/2);

Z=z1.*z2;

figure;

surface(xx,yy,Z);