三次样条函数的求导过程,及程序请帮忙指导一下

三次样条函数的求导过程,及程序请帮忙指导一下,第1张

这个可以参考一下。

已知速度曲线v(t) 上的四个数据点下表所示

基本原理:

利用插值(即求过已知有限个数据点的近似函数)的基本原理,用多项式作为研究插值的工具,进行代数插值。其基本问题是:已知函数f (x)在区间[a,b]上n +1个不同点x0,…,xn处的函数值 (i = 0,1,…,n),求一个至多n 次多项式 ψn(x)

使其在给定点处与 f (x)同值,即满足插值条件: ψn(x)= = .

许多工程技术中提出的计算问题对插值函数的光滑性有较高要求,如飞机的机翼外

形,内燃机的进、排气门的凸轮曲线,都要求曲线具有较高的光滑程度,不仅要连续,

而且要有连续的曲率,这就导致了样条插值的产生。

数学上将具有一定光滑性的分段多项式称为样条函数。具体地说,给定区间[a,b]

的一个分划

Δ:

如果函数s(x) 满足:

(i)在每个小区间[ ](i=0,1,…,n)上s(x)是k 次多项式;

(ii)s(x)在[a,b]上具有k −1阶连续导数。

则称s(x)为关于分划Δ 的k 次样条函数,其图形称为k 次样条曲线。

基本思路:

根据插值的基本原理,先对v进行三次样条插值,可以得到许多v(t)的值;然后根据积分的基本原理,分割、近似、求和、取极限,可以求得积分。根据求导原理,因变量的微小变化量与自变量变化量的商,可以求得所求点的导数值。

程序代码:

t0=[0.15 0.16 0.17 0.18]v0=[3.5 1.5 2.5 2.8]

t=0.15:0.0001:0.18

%三次样条插值;

v=interp1(t0,v0,t,'spline')

v=spline(t0,v0,t)

pp=csape(t0,v0,'second')v=ppval(pp,t)% 使用csape函数;

S=sum(v)*0.0001%求积分值

T=(v(301)-v(300))/0.0001%求导数值

Plot(t0,v0,’*’,t,v)

#include<iostream.h>

#include<iomanip.h>

#include<math.h>

void main()

{

float a[37],b[37]

cout<<""<<"度数"<<" "<<"sin(x)值"<<" "<<"一阶导值"<<""<<"二阶导值"<<endl

for(int i=0i<37i++)

cout<<setw(11)<<setprecision(3)

<<10*i

<<setw(11)<<setprecision(3)

<<sin(i*31.4/180)

<<setw(11)<<setprecision(3)

<<cos(i*31.4/180)

<<setw(11)<<setprecision(3)

<<-sin(i*31.4/180)

<<endl

cout<<"一个周期内的积分值:0"<<endl

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7857434.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存