求助 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本回答被提问者和网友采纳

求助matlab拟合的曲线如何求积分面积?
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....

怎样用matlab对曲线进行积分
如果你是由仪器测得的曲线数据,要看你的采样频率是否高,如果足够高的话,积分实际上就是各个采样点的和,如果采样频率不高,可以先根据采样点进行曲线拟合或多段曲线拟合,再分别对拟合后的曲线方程求积分

如何使用matlab进行拟合、求导、求定积分
如何使用matlab进行拟合、求导、求定积分?1、拟合 根据X、Y1、Y2三个向量,做出其散点图,判断散点图的曲线趋势,自定义拟合函数,使用lsqcurvefit拟合函数,求出其拟合系数,得到 A函数:y1=fa(x)B函数:y2=fb(x)2、求导 使用diff函数,分别对A函数和B函数求导 Dy1=diff(fa,1)Dy2=diff(fb,...

matlab中怎么对由两个一维数组绘出的曲线求积分
可以先用ployfit将数据拟合成一个多项式,然后再对这个多项式求积分。不过你这个图形很难用多项式进行拟合,所以该方法虽然简单,但在这不可取。自己编写图形积分m函数。这种方法适合用于数据点很密集的情况,即用两个函数值的平均值代替小矩形的高,在乘以矩形的宽就行。这里给个算法流程。1)n=length(x...

用matlab拟合工具箱拟合函数后,如何求这个函数的积分?
复制拟合结果(拟合函数及系数),写成完整的表达式,然后用int()函数计算积分。函数使用格式 int('f(x)') 求不定积分 int('f(x)',a,b) 求定积分

请教:matlab做拟合曲线,及该曲线的积分曲线和求导曲线!跪求,急!_百...
求得拟合曲线为:a1 = 244.7 ;b1 = 0.002618 ;c1 = 1.046 ;a2 = 264.4 ;b2 = 0.007853 ;c2 = 0.6281 ;a3 = 121.9 ;b3 = 0.01312 ;c3 = 0.6719 ;fx = a1*sin(b1*x+c1) + a2*sin(b2*x+c2) + a3*sin(b3*x+c3)拟合优...

matlab拟合离散点曲线
这里采用在椭圆上取足够多的点然后直接计算的距离的方式。4、拟合得到椭圆参数后,面积S=πab直接计算,主轴和X轴的夹角为拟合得到的数据,而关于椭圆的X最大值对应的X,Y坐标的计算,可以把点取密集一些,直接求最大值,也可以对X求导数,然后解X'=0得到对应的t,再计算X、Y。 参考代码...

matlab如何求出图形面积?
你可以把数据按横坐标分段,对每一小块做convhull,然后把每一小块的面积累加起来。这样相对简单,凹包算法比较麻烦

如何用MATLAB拟合曲线来求参数?
所以log(y)与log(x)是线性关系,用p=polyfit(log(xdata),log(y),1)求出 b=p(1);a=exp(p(2))\/252*(2.016129032*10^9); % 因为log(252\/(2.016129032*10^9)*a)=p(2)所以最终程序是如下:clear all c=[2.7,2.8,2.9,3,3.1,3.2,3.45,3.7,3.95,4.2,4.45,4.7,...

...matlab 数据拟合 ,没有经验公式,不知道是几次的函数,该如何拟合?
如果你的公式比较复杂,比如上说是一个积分形式,并且这个积分还不能显示的积出来,需要数值积分才可以积出来的话,用最小二乘法就不行了,这时,matlab是没有现成的函数来进行拟合的,这时就需要自己编程序来实现,比如可以运用“黄金分割法”、“Powell优化”等方法来实现。但,如你所提的问题,多项式...

相似回答