求助 matlab拟合的曲线如何求积分面积?

只知道25个离散点的数据(x,y)不知道函数表达式,用cftool拟合的曲线,type of fit选择的smoothing spline, 如下图所示,我现在想求x从[0,24]曲线与x轴包围的面积,请问 应该怎么做?
刚接触matlab 还不太会 谢谢指导!
哇 好长 我也在查网页
这样写行不行
trapz([0:1:24],[0 0 1.01 1.18 0 1.39 1.97 1.33 2.08 1.22 1.09 0 1.01 0 0.9 1.18 1.13 1.05 1.58 0.94 0 0 1.18 1.01 0.9])
括号中 逗号前是x的离散值,逗号后是x对应的y的离散值,这样求出来对不,求出来个值21.7
谢谢ddb627,你那个求出来是多少? 我试试看 你能用我的值求一下吗

第1个回答  推荐于2018-09-18
S=(L2的曲线积分-L1的曲线积分)
用三次样条插值和复化辛普森公式计算:
例如
x0=[0.9 1.3 1.7 2.1 2.6 3 3.2 3.3 3.5 4.0 4.6 5.0 5.5 6.0 6.3 6.6 7.0 7.3 7.8 8.1 8.4 8.8 9.3 9.6 10.0 10.2 10.6 10.8 11.1 11.5 11.7 12.0 12.5 12.9 13.6 14.0 14.5 15.1 15.6 16.1 16.7 17.0 17.5 17.6 17.8];

y1=[6.5 6.0 5.6 5.6 5.0 4.5 4.2 4.1 4.1 3.9 3.6 3.0 3.4 3.5 3.5 3.5 3.4 3.1 3.2 3.4 3.3 3.3 3.8 3.2 2.8 2.5 2.2 2.4 2.6 2.0 2.6 2.9 2.9 3.4 1.5 1.1 1.0 0.7 1.9 1.8 2.2 2.6 2.6 2.7 3.0]; %已知节点(x0,y1)

y2=[6.5 7.3 7.2 7.3 7.7 7.3 7.6 9.9 10.1 10.5 10.2 9.8 9.7 8.8 8.6 8.2 7.7 7.5 7.7 8.2 8.9 8.2 9.7 9.7 9.7 10.0 10.1 10.4 10.3 10.3 10.5 10.5 10.4 10.2 9.6 9.7 8.9 7.9 7.6 5.9 5.8 3.4 3.3 3.2 3.0]; %已知节点(x0,y2)

h=0.1; %产生插值点的步长

x=0.9:h:17.8; %产生插值点x

y01=interp1(x0,y1,x); %计算L1的分段线性插值

y02=interp1(x0,y2,x); %计算L2的分段线性插值

plot(x,y01,'k',x,y02,'r') %分段线性插值作图

z1=trapz(y01)*h %用梯形公式计算L1 的积分
>> y021=[y02(2:2:k-1)];

>> s021=sum(y021);

>> y022=[y02(3:2:k-1)];

>> s022=sum(y022);

>> z2=(y02(1)+y02(k)+4*s021+2*s022)*h/3 %用辛普森公式计算L2的积分
S=(z2-z1) %代入面积推导公式

>> x0=0:1:24;
y0=[0 0 1.01 1.18 0 1.39 1.97 1.33 2.08 1.22 1.09 0 1.01 0 0.9 1.18 1.13 1.05 1.58 0.94 0 0 1.18 1.01 0.9];
h=0.1; %产生插值点的步长
x=0:h:24; %产生插值点x
y01=interp1(x0,y0,x); %计算L1的分段线性插值
plot(x,y01,'k') %分段线性插值作图
z1=trapz(y01)*h %用梯形公式计算L1 的积分

z1 =

21.7000

样条插值
x0=0:1:24;
y0=[0 0 1.01 1.18 0 1.39 1.97 1.33 2.08 1.22 1.09 0 1.01 0 0.9 1.18 1.13 1.05 1.58 0.94 0 0 1.18 1.01 0.9];
h=0.1; %产生插值点的步长
x=0:h:24; %产生插值点x
y01=spline(x0,y0,x); %计算L1样条插值
plot(x,y01,'k') %分段线性插值作图
z1=trapz(y01)*h %用梯形公式计算L1 的积分

z1 =

21.5442本回答被提问者和网友采纳
相似回答