matlab怎样求解分段函数

求助一下大神,我现在这个代码能够画出一个Ey的分段函数的图像,求问一下,我想求这个分段函数Ey在两个定值x0到x4的定积分,接下来的代码应该怎么写,我之前用了int函数,总是运行不出来结果。
clear%TE

close all

n1 = 3.476;

ns = 1.45;

n0 = 1.45;

d = 400e-9;

a=d/2;

lambda = 1.55e-6;

k = 2*pi/lambda;

e=2.718281828459;

r=(ns^2-n0^2)/(n1^2-ns^2);

v=sqrt(k^2*a^2*(n1^2-ns^2));

m=0;

F1=@(b)(2*v*sqrt(1-b));

ezplot(F1,[0,1,-5,10]);

hold on;

F2=@(b)(m*pi)+atan(sqrt(b/(1-b)))+atan (sqrt((b+r)/(1-b)));

ezplot(F2,[0,1,-5,10]);

xlabel('b')

Feigin=@(b)(F1(b)-F2(b));

b(1)=fzero(Feigin,0.5);

ne=sqrt(b*n1^2+(1-b)*ns^2);

beta=ne*k;

kappa=sqrt((k^2*n1^2)-beta^2);

xi=sqrt(beta^2-k^2*ns^2);

sigma=sqrt(beta^2-k^2*n0^2);

phi=m*pi/2+atan(sqrt(b/(1-b)))/2-atan(sqrt((b+r)/(1-b)))/2;

format short g

[ne kappa xi sigma phi];

Np=1001;

x2=linspace(-12*a,-a,Np);

x1=linspace(-a,a,Np);

x3=linspace(a,12*a,Np);

Ey1=zeros(1,Np);

Ey2=Ey1;

Ey3=Ey1;

Ey1=cos(kappa*x1-phi);

Ey2=cos(kappa*a+phi)*exp(xi*(x2+a));

Ey3=cos(kappa*a-phi)*exp(-sigma*(x3-a));

Ey=[Ey2,Ey1,Ey3];

Ey=Ey/diag(max(abs(Ey)));

x=[x2,x1,x3];

hold on

%plot(x,Ey,'g+');

plot(x1,Ey1,'g',x2,Ey2,'r',x3,Ey3,'b')

%legend('TE_0','TE_1','TE_2')

xlabel('x')

axis([-12e-7 12e-7 -1.1 1.1])

%plot([-d,-d],[-1.1,1.1],'black--')

plot([ 0, 0],[-1.1,1.1],'black--')

plot([x(1), x(end)],[0,0],'black')

plot([x(1), x(end)],[1/e,1/e],'black')

x0=-1/xi*log(e*cos(kappa*a))-a;

x4=1/sigma*log(e*cos(kappa*a))+a;

xx = x((x>=x0) & (x<=x4));
Eyz = Ey((x>=x0) & (x<=x4));

figure
plot(xx,Eyz,'LineWidth',2)
hold on
plot(x,Ey)

Z1 = trapz(xx,Eyz) % Ey在两个定值x0到x4的定积分
Z = trapz(x,Ey) % Ey在 x 的定积分
Z1/Z
温馨提示:答案为网友推荐,仅供参考
相似回答