MATLAB求积分表达式

解析法适用于函数积分能够求出解析表达式的情况,例如:
 

1
2
3
4
syms x y
f=x^2*y^3;
J=int(f,x,-5,5);
ezplot(J)


如果上述使专用int求积分得不出解析表达式,一般就应该考虑使属用数值方法求解了。这里使用的contour函数将这个函数的具体图形画出来,当然如果数据比较多,运行效果会比较慢,然后可以看出每个点的取值,网上有人说再用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 -13.9380...
    -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);
yi1=polyval(p1,xi);
plot(xi,yi,x,y,'ro');
hold on
plot(xi,yi1,x,y1,'b*');

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值