MATLAB求积分表达式
解析法适⽤于函数积分能够求出解析表达式的情况,例如:
1
2
3
4
syms x y
f=x^2*y^3;
J=int(f,x,-5,5);
ezplot(J)
如果上述使专⽤int求积分得不出解析表达式,⼀般就应该考虑使属⽤数值⽅法求解了。这⾥使⽤的conto
ur函数将这个函数的具体图形画出来,当然如果数据⽐较多,运⾏效果会⽐较慢,然后可以看出每个点的取值,⽹上有⼈说再⽤fzero来计算数值解,我没有实现,我还是根据得出的图形,⽤放⼤镜看我想要的点的解。如果需要,还是具体结合你的函数来说吧。
% clc;clear;%contour函数画出来范围还能放⼤看每个的取值,然后再通过第⼆段函数矫正
% syms z
% W=115;%弯曲波导的x⽅向宽度
% L=383.5;%固定增益腔除去半波耦合器后的腔长
% D=W^2/L^2;
% detaL=436*0.05;%设置腔长差
% Q=(L+detaL)/L;
% a=linspace(-10,55,40);
% b=linspace(5,-25,40);
% [A,B]=meshgrid(a,b);
% y=int(sqrt(D*((6+A.*2+B.*4).*z+(-6-A.*6-B.*9).*z^2+A.*4*z.^3+B.*5*z.^4).^2+1),0,1);
% v=[Q,Q];
% contour(A,B,y,v)
% ------------------------------------------------------根据contour矫正数据
clc;clear;
syms z
a=6;
b=-3.73;
W=115;L=383.5;
D=W^2/L^2;
y=sqrt(D*((6+a*2+b*4)*z+(-6-a*6-b*9)*z^2+a*4*z^3+b*5*z^4)^2+1);
y=matlabFunction(y);
% z=linspace(0,1,10);
% plot(z,y(z))
c=quad(y,0,1);
d=L*c
% f=quadl(@(z)FUN,0,1)
%----------------------然后⽤数据进⾏拟合求解析式,有点笨这个⽅法。
clc;clear;
x=-27:4:65;
y=[11.23003 10.0590 8.76025 7.40112 5.98733 4.5562 3.09032 1.60685 0.10825 -1.4103 -2.9376 -4.
4881 -6.0498 -7.6183 -9.21176 -10.8115 ... -12.4311 -14.064 -15.720 -17.387 -19.087 -20.813 -22.574 -24.394];
y1=[11.18495 7.89177 6.01815 4.21663 2.45929 0.73124 -0.97058 -2.65114 -4.31054 -5.9470 -7.5785 -9.1910 -10.786 -12.374 -
-15.4874 -17.0264 -18.545 -20.049 -21.527 -22.988 -24.410 -25.791 -27.123];
p=polyfit(x,y,2);
p1=polyfit(x,y1,2);
xi=-27:1:65;
yi=polyval(p,xi);
matlab定义函数表达式yi1=polyval(p1,xi);
plot(xi,yi,x,y,'ro');
hold on
plot(xi,yi1,x,y1,'b*');
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论