三次埃尔米特插值
参数三次埃尔米特插值实例分析

2
公式推导
参数三次曲线,简称 PC 曲线,表示为: ������(t) = ������0 + ������1 t + ������2 ������ 2 + ������3 ������ 3 , ������ ∈ [0,1] 确定四个系数矢量的方法是给定曲线两端点及其切矢。 对函数中参数 t 求导,得: ������������ ������′ (������) = = ������1 + 2������2 ������ + 3������3 ������ 2 ������������ 用������ = 0,1代入以上两式,得: ������0 = ������(0) ������0 + ������1 + ������2 + ������3 = ������(1) ������1 = ������′ (0) ������1 + 2������2 + 3������3 = ������′ (1) 写成矩阵形式: ������(0) 1 0 0 0 ������0 ������ ������(1) 1 1 1 1 1 [ ] [������ ] = ′ ������ (0) 0 1 0 0 2 ������ 0 1 2 3 3 [������′ (1)] 于是可得: ������0 1 0 0 0 ������(0) ������1 0 0 1 0 ������(1) [������ ] = [ ] 2 −3 3 −2 −1 ������′ (0) ������3 2 −2 1 1 [������′ (1)] 将上式代入函数方程,得: 1 0 0 0 ������(0) 0 0 1 0 ������(1) ������(t) = [1 ������ ������ 2 ������ 3 ] [ ] −3 3 −2 −1 ������′ (0) 2 −2 1 1 [������′ (1)] 上式即与标量形式的三次埃尔米特插值相对应的参数形式,即定义在区间������ ∈ [0,1]
三次埃尔米特插值

《计算方法》课程设计报告学生姓名:张学阳学号:1009300132陈洋1009300109刘睿1009300122 学院:理学院班级: 数学101题目: 分段线性及三次埃尔米特插值通用程序指导教师:宋云飞职称:讲师朱秀丽讲师尚宝欣讲师2012年12月30日目录目录 (I)一、摘要 (1)二、算法设计 (1)2.1分段线性插值 (1)2.2分段三次埃尔米特插值 (1)2.3功能框图 (1)三、例题计算 (1)四、误差及结果分析 (9)4.1例题误差分析 (1)4.2结点个数对插值结果的影响 (1)五、总结及心得体会 (12)参考文献 (13)源程序 (14)一、摘要分段线性插值与分段定义的线性插值,在相邻插值节点的区间上对应的是同一个线性函数。
由于它们的表现形式不一样从而产生为两种不同的计算方法,相应的误差表现形式也不一样.拉格朗日插值余项利用f(x)的二阶导数,要f(x)的二阶导数存在,对于二阶导数不存在的情况不能估算出它的误差,所以适用范围比较小.现在我们可以利用一阶导数就估算出误差,给计算带来许多的方便。
为了避免高次插值可能出现的大幅度波动现象,在实际应用中通常采用分段低次插值来提高近似程度,比如可用分段线性插值或分段三次埃尔米特插值来逼近已知函数,但它们的总体光滑性较差。
为了克服这一缺点,一种全局化的分段插值方法——三次样条插值成为比较理想的工具。
在代数插值过程中,人们为了获得较好的近似效果,通常情况下是增加插值节点数.由于二次插值比线性插值近似效果好,因此容易错误地认为插值多项式次数越高越好.事实上,随着插值节点的增多,插值多项式不一定收敛到被插值函数.。
通过分段低次插值或样条插值可以得到较好的近似逼近函数,分段低次插值具有公式简单、运算量小、稳定性好、收敛性有保证等优点.随着子区间长度h取得足够小,分段低次插值总能满足所要求的精度.因此分段低次插值应用十分广泛.。
分段线性插值是分段低次插值中常见的方法之一,在本文中对函数在(-5,5)上进行分段线性插值,取不同节点个数n,得到不同分段线性插值函数.并用MATLAB编写分段线性插值函数,最后比较用不同节点数所得插值函数与真实函数的误差,从而得出节点数与插值效果的关系。
数值分析实验六(分段三次Hermite插值)

数值分析实验六(分段三次Hermite插值)《数值分析》实验报告实验编号:实验六课题名称:分段三次Hermite插值一、算法介绍给定的函数为f(x)=1/(25*x*x+1),将给定区间分成10分,得到11个节点:x[0],x[1],...,x[10],构造插值函数的基函数。
当x在(x[0],x[1])区间上时,H[0] = (x-x[0])*[((x-x[1])/(x[0]-x[1]))^2]。
其余的区间为H[0]=0。
h[0]= [1+2*(x-x[0])/(x[1]-x[0])]*[((x-x[1])/(x[0]-x[1]))^2]。
当x在[x[i-1],x[i]] (i=1,2,3, (9)区间上时,H[i]=(x-x[i])*[((x-x[i-1])/(x[i]-x[i-1]))^2],h[i]=[1+2*(x-x[i])/(x[i-1]-x[i])]*[((x-x[i-1])/(x[i]-x[i-1]))^2)。
当x在(x[i],x[i+1]](i=1,2,3,…,10)区间上其余的区间为H[i]=(x-x[i])[((x-x[i+1])/(x[i]-x[i+1]))^2],h[i]=[1+2*(x-x[i])/(x[i+1]-x[i])]*[((x-x[i+1 ])/(x[i]-x[i+1]))^2]。
其余区间上均为H[i]=0,h[i]=0(i=1,2,…,10)。
当x在(x[9],x[10])区间上时,H[10] = (x-x[9])(((x-x[10])/(x[9]-x[10]))^2).其余的区间为H[10]=0.h[10]= (1+2*((x-x[9])/(x[10]-x[9])))(((x-x[10])/(x[9]-x[10]))^2).其余区间h[10]=0。
构造函数H(x) =∑(y[i]*h[i]+y'[i]*H[i],(i=0,1,…,10)。
二、程序代码// testV iew.cpp : implementation of the CT estV iew class//#include "stdafx.h"#include "test.h"#include "testDoc.h"#include "testView.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////// //////////// CTestV iewIMPLEMENT_DYNCREA TE(CTestView, CView)BEGIN_MESSAGE_MAP(CTestView, CView)//{{AFX_MSG_MAP(CTestView)// NOTE - the ClassWizard will add and remove mapping macros here.// DO NOT EDIT what you see in these blocks of generated code!//}}AFX_MSG_MAP// Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CV iew::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView::OnFilePrintPreview)END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////// //////////// CTestV iew construction/destructionCTestView::CTestV iew(){// TODO: add construction code here}CTestView::~CT estView(){}BOOL CTestView::PreCreateWindow(CREA TESTRUCT& cs){// TODO: Modify the Window class or styles here by modifying // the CREA TESTRUCT csreturn CV iew::PreCreateWindow(cs);}/////////////////////////////////////////////////////////////////// //////////// CTestV iew drawingvoid CTestView::OnDraw(CDC* pDC){CTestDoc* pDoc = GetDocument();ASSERT_V ALID(pDoc);// TODO: add draw code for native data hereint i,j,k;double x,y,p_x,p_y,l,xx[100],f[100],F[100],sum,p_sum;CPen MyPen,*OldPen;pDC->SetViewportOrg(400,400); //定义坐标原点for(i=-500;i<500;i++){pDC->SetPixel(0,i,RGB(0,0,0));pDC->SetPixel(i,0,RGB(0,0,0)); //画出坐标}pDC->TextOut(-210,5,"-1");pDC->TextOut(196,5,"1");//原函数MyPen.CreatePen(PS_SOLID,1,RGB(255,0,0));//定义画笔颜色OldPen=pDC->SelectObject(&MyPen);x=-1.0,y=1/(1+25*x*x);p_x=x*200;p_y=-y*200;pDC->MoveTo(p_x,p_y);for (x=-1.0;x<=1.0;x+=0.0001){y=1/(1+25*x*x);p_x=x*200;p_y=-y*200;pDC->LineT o(p_x,p_y);}pDC->SelectObject(OldPen);MyPen.DeleteObject();//分段三次Hermite插值MyPen.CreatePen(PS_SOLID,1,RGB(0,0,0)); OldPen=pDC->SelectObject(&MyPen); x=-1.0,y=1.0/(1+25*x*x);p_x=x*200;p_y=-y*200;pDC->MoveTo(p_x,p_y);x=-1.0;for(i=0;i<=10;i++){f[i]=1/(1+25*x*x);xx[i]=x;F[i]=-50*x/(1+25*x*x)/(1+25*x*x); //导数x+=0.2;}x=-1.0;for(j=0;j<=1000;j++){sum=0;for(i=0;i<=10;i++){if(x==xx[i]){sum=f[i];p_x=x*200,p_y=-sum*200;pDC->LineT o(p_x,p_y);break;}if(xxx[i]){y=(1+2*(x-xx[i])/(xx[i+1]-xx[i]))*(x-xx[i+1])*(x-xx[i+1])/(xx[i]-xx[i+1])/(xx[i]-xx[i+1]);sum+=f[i]*y;y=(1+2*(x-xx[i+1])/(xx[i]-xx[i+1]))*(x-xx[i])*(x-xx[i])/(xx[i+1]-xx[i])/(xx[i+1]-xx[i]);sum+=f[i+1]*y;y=(x-xx[i])*(x-xx[i+1])*(x-xx[i+1])/(xx[i]-xx[i+1])/(xx[i]-xx[i+1]);sum+=F[i]*y;y=(x-xx[i+1])*(x-xx[i])*(x-xx[i])/(xx[i+1]-xx[i])/(xx[i+1]-xx[i]);sum+=F[i+1]*y;p_x=x*200;p_y=-sum*200;pDC->LineT o(p_x,p_y);break;}}x+=0.002;}pDC->SelectObject(OldPen);MyPen.DeleteObject();/////////////////////////////////////////////////////////////////// //////////// CTestV iew printingBOOL CTestView::OnPreparePrinting(CPrintInfo* pInfo){// default preparationreturn DoPreparePrinting(pInfo);}void CTestView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add extra initialization before printing}void CTestView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add cleanup after printing}/////////////////////////////////////////////////////////////////// //////////// CTestV iew diagnostics#ifdef _DEBUGvoid CTestView::AssertV alid() const{CView::AssertV alid();}void CTestView::Dump(CDumpContext& dc) const{CView::Dump(dc);CTestDoc* CT estV iew::GetDocument() // non-debug version is inline{ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CT estD oc)));return (CT estDoc*)m_pDocument;}#endif //_DEBUG/////////////////////////////////////////////////////////////////// //////////// CTestV iew message handlers三、运算结果截屏红色的曲线为原函数图像,黑色曲线为分段三次Hermite插值曲线四、算法分析上述图像中黑色的曲线为分段分段三次Hermite插值多项式所对应的图像,由图像可看出黑色的分段三次Hermited插值函数图像和拉格朗日、分段线性插值相比与红色被逼近函数的重合度最好,说明分段三次Hermite插值在函数的各节点两边插值函数的导数是相等的,保证了在各节点的平滑性,且不会出现Runge现象。
两点三次埃尔米特插值余项证明

两点三次埃尔米特插值余项证明《两点三次埃尔米特插值余项证明》1. 概述在数值分析中,插值是一种常用的数值计算方法,用于在已知数据点之间估算未知数据点的值。
而埃尔米特插值则是一种特殊的插值方法,可以通过已知点的函数值以及导数值来构造插值多项式,进而进行函数值的估算。
2. 两点三次埃尔米特插值在插值问题中,特别是在微积分和数值分析中,两点三次埃尔米特插值是一种常见且重要的技术。
它通过两个数据点的函数值和导数值,构造出一个三次多项式,可以更加准确地近似原始函数,并且可以保持更高的导数连续性。
这种方法在实际问题中具有很强的适用性,尤其是在需要对曲线进行平滑插值的情况下。
3. 余项证明在使用插值方法进行数据估算时,余项是一个重要的概念。
它代表了插值多项式与原函数之间的差距,可以用来评估插值的准确性和可靠性。
对于两点三次埃尔米特插值而言,余项的证明是一项关键的工作,它可以帮助我们理解插值多项式的误差情况,进而指导我们对插值结果的使用和解释。
4. 个人观点和理解作为一种高级的数值计算方法,两点三次埃尔米特插值在实际问题中的应用非常广泛,尤其是在科学计算和工程领域。
通过对余项的详细证明和分析,我们可以更加深入地理解插值方法的原理和实际效果,进而更加灵活地应用这一技术解决实际问题。
5. 总结两点三次埃尔米特插值作为一种高级的插值方法,通过对已知点的函数值和导数值进行合理的处理,可以构造出一个更加精确的插值多项式,用于估算未知点的函数值。
在实际应用中,我们需要充分理解余项的证明和分析,以便更好地评估插值结果的准确性和可靠性。
通过以上文章内容的布局和深度处理,可以详细解释和讨论所提及的主题,从而全面了解和深入了解其背后的知识和原理。
6. 余项证明的数学推导在两点三次埃尔米特插值中,我们需要构造出一个三次多项式,以满足已知数据点的函数值和导数值。
设两个已知点为(x0, y0)和(x1, y1),以及它们各自的一阶导数值y'0和y'1。
5.4 三次Hermite插值

其中a,b为待定系数。
1 . 由 0 ( x0 ) 1, 可得 a 2 ( x0 x1 ) 2 . ( x0 ) 0, 可得 b 由 0 3 ( x0 x1 )
将a,b代入得
x x0 x x1 0 ( x) 1 2 x1 x0 x0 x1
2
三次Hermite插值多项式 H3 ( x) 的表达式为
H3 ( x) y00 ( x) y11( x) m00 ( x) m11( x)
可以证明,其余项为
f (4) ( ) R3 ( x ) f ( x ) H 3 ( x ) ( x x0 ) 2 ( x x1 ) 2 , 4! 其中 介于 x0 , x1 之间。
0 0
1 ( x)
0
x x0 x x1 0 ( x) 1 2 x1 x0 x0 x1
2
类似地,将 x0 , x1 互换,可得
x x1 x x0 1 ( x ) 1 2 x x x x 0 1 1 0
1
0 0 0
0 0
1 ( x)
0
P ( xi ) f ( xi ) f i P ( xi ) f ( xi ) f , i 0,1, ,n
P( x)可以是最高次数为 2n 1次的多项式
两个节点就可以用 2 1 1 3次多项式作为插值函数
(2) 同样, 若要求P( x)在[a, b]上具有m阶导数(m阶光滑度 ) 即P( x)在节点 x0 , x1 ,, xn处必须满足
并给出余项公式。
( x1 ) m1, (i 0,1,2), H3 ( xi ) yi , H3 H3 ( x) y00 ( x) y11( x) y22 ( x) m11( x)
第三章(二) 埃尔米特-样条插值法

(2n2)
( ) ( x x j )
j0
n
2
(3.4-11)
x x 0 x x1 h0 ( x ) 1 2 . x 0 x1 x 0 x1
H 3 ( x ) h 0 ( x ) 2 h1 ( x ) 2 g 0 ( x ) m 1 g 1 ( x ) x 0 x 1 x 1 x 0 1 2 2 1 2 0 1 0 1 1 0 1 0 2( x 0) x 1 x0 m 1 ( x 1) 0 1 1 0
2
h 1 ( x ) 1 2 l 1 ( x 1 )( x x 1 ) l 1 ( x ),
2
g 0 ( x ) ( x x 0 ) l 0 ( x ), ( x ) ( x x 1 ) l 1 ( x ). g1
2 2Leabharlann Hermite插值余项定理 定理 假设函数f (x)在 x [ a , b ] 上具有(2n+1)阶连续导数,在 x [ a , b ] 内存在(2n+2)阶导数,那么对于x [ a , b ] ,必定存在一点 ( a , b ) 使 得下式成立:
先构造 h0(x), 设
由h0(x0) = 1,
x x1 h0 ( x ) (a bx ) . x 0 x1
2
∵h0(x1)=h'0(x1)=0
h0 ( x 0 ) 0,
同理
x x 0 x x1 h0 ( x ) 1 2 x x . x 0 x1 0 1
有理三次三角Hermite插值样条曲线及其应用

π 2 (4),得:TH(i t)=
a
3
cos
π
2
t,a
3
sin
π
2
t
,它表示星形线,如图 5
所示,图中实线对应 t∈[0,1],虚线对应 t∈[1,4]。
(4)令 qi=qi+1=(0,0),qi+2=(πa,0),qi+3=(0,-πa)(a≠0)及
摘 要:给出一种有理三次三角 Hermite 插值样条曲线,具有三次 Hermite 插值样条相似的性质。该样条含有三角函数和形状参
2
数,利用形状参数的不同取值可以调控插值曲线的形状,甚至不用解方程组,就能使曲线达到 C 连续。此外,选择合适的控制点和 形状参数,这种样条可以精确表示星形线和四叶玫瑰线等超越曲线。 关键词:三次插值样条;有理三次三角插值样条;超越曲线;星形线;四叶玫瑰线 DOI:10.3778/j.issn.1002-8331.2010.05.003 文章编号:1002-8331(2010)05-0007-03 文献标识码:A 中图分类号:TP391
π 2 (2)令 qi=qi+2=(a,a),qi+1=(0,0),qi+3=
-
πa 2
,0
(a≠0),及
π 2 μi=μi+1,代入式(4),得 TH(i t)=
a cos π 2
t,a
3
cos
π
2
t
,它表示一
条三次抛物线,如图 4 所示。
图 3 椭;2=(a,0),qi+1=qi+3=(0,a)(a≠0)及 μi=μi+1,代入式
XIE Jin,TAN Jie-qing,LI Sheng-feng,et al.Rational cubic trigonometric Hermite interpolation spline curves and appli- puter Engineering and Applications,2010,46(5):7-9.
三次Hermite插值

04 实例分析
CHAPTER
实例一:已知数据点的插值
总结词
利用已知数据点进行插值,可三次Hermite插值方法,利用已知的数据点来估计未知点的值。这 种方法能够更好地处理数据点的变化,并提高插值的精度。
CHAPTER
插值多项式的构造
定义
Hermite插值法是一种通过已知的离散数据点来构造一个多 项式,使其能够准确地经过这些数据点,并尽可能地平滑地 连接这些点的方法。
构造方法
Hermite插值多项式由两个部分组成,一个是线性函数,另 一个是二次函数。线性函数部分用于确保插值多项式能够准 确地经过数据点,而二次函数部分则用于保证插值多项式的 平滑性。
实例二:未知数据点的插值
总结词
在未知数据点的情况下,可以通过三次 Hermite插值方法,预测并估计未知点的值。
详细描述
在数据点未知的情况下,可以利用三次 Hermite插值方法,根据已知的数据点来预 测和估计未知点的值。这种方法能够为后续 的数据分析和处理提供重要的参考依据。
实例三:复杂函数的插值
三次Hermite插值能够提供高精度的插值结果,特别是在处理
复杂函数时。
稳定性好
02
该方法在处理大数据集时表现出良好的稳定性,不易受到噪声
和异常值的影响。
易于实现
03
三次Hermite插值的算法相对简单,易于在计算机上实现和优
化。
三次Hermite插值的局限性
对初始数据敏感
三次Hermite插值的结果对初始数据的选择 较为敏感,不同的初始数据可能导致不同的 插值结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算方法》课程设计报告学生姓名:张学阳学号:1009300132陈洋1009300109刘睿1009300122 学院:理学院班级: 数学101题目: 分段线性及三次埃尔米特插值通用程序指导教师:宋云飞职称:讲师朱秀丽讲师尚宝欣讲师2012年12月30日目录目录 (I)一、摘要 (1)二、算法设计 (1)2.1分段线性插值 (1)2.2分段三次埃尔米特插值 (1)2.3功能框图 (1)三、例题计算 (1)四、误差及结果分析 (9)4.1例题误差分析 (1)4.2结点个数对插值结果的影响 (1)五、总结及心得体会 (12)参考文献 (13)源程序 (14)一、摘要分段线性插值与分段定义的线性插值,在相邻插值节点的区间上对应的是同一个线性函数。
由于它们的表现形式不一样从而产生为两种不同的计算方法,相应的误差表现形式也不一样.拉格朗日插值余项利用f(x)的二阶导数,要f(x)的二阶导数存在,对于二阶导数不存在的情况不能估算出它的误差,所以适用范围比较小.现在我们可以利用一阶导数就估算出误差,给计算带来许多的方便。
为了避免高次插值可能出现的大幅度波动现象,在实际应用中通常采用分段低次插值来提高近似程度,比如可用分段线性插值或分段三次埃尔米特插值来逼近已知函数,但它们的总体光滑性较差。
为了克服这一缺点,一种全局化的分段插值方法——三次样条插值成为比较理想的工具。
在代数插值过程中,人们为了获得较好的近似效果,通常情况下是增加插值节点数.由于二次插值比线性插值近似效果好,因此容易错误地认为插值多项式次数越高越好.事实上,随着插值节点的增多,插值多项式不一定收敛到被插值函数.。
通过分段低次插值或样条插值可以得到较好的近似逼近函数,分段低次插值具有公式简单、运算量小、稳定性好、收敛性有保证等优点.随着子区间长度h取得足够小,分段低次插值总能满足所要求的精度.因此分段低次插值应用十分广泛.。
分段线性插值是分段低次插值中常见的方法之一,在本文中对函数在(-5,5)上进行分段线性插值,取不同节点个数n,得到不同分段线性插值函数.并用MATLAB编写分段线性插值函数,最后比较用不同节点数所得插值函数与真实函数的误差,从而得出节点数与插值效果的关系。
二、算法设计2.1 分段线性插值分段线性插值就是通过插值点用折线段连接起来的逼近函数)(x f 。
设已知节点b x x x a n =<<= 10上的函数值,,,,10n f f f 记,1k k k x x h -=+,max k h h =求一折线函数)(x I h 满足:(1)];,[)(b a C x I h ∈(2));,,1,0()(n k f x I k k h ==(3))(x I h 在每个小区间],[1+k k x x 上是线性函数. 则称)(x I h 为分段线性插值函数。
由定义可知)(x I h 在每个小区间],[1+k k x x 上可表示为.1,,1,0,,)(11111-=≤≤--+--=+++++n k x x x f x x x x f x x x x x I k k k kk kk k k k h分段线性插值的误差估计可利用插值余项公式)()()()(11112x l y x l y x l y x L k k k k k k ++--++=得到|))((|max 2|)()(|max 1211+≤≤≤≤--≤-+=k k x x x h x x x x x x x M x I x f k k kx k 或228|)()(|max h M x I x f h bx a ≤-≤≤ 其中.|)(''|max 2x f M bx a ≤≤=由此还可得到)()(lim 0x f x I h h =→在],[b a 上一致成立,故)(x I h 在],[b a 上一致收敛到)(x f 。
2.2 分段三次埃尔米特插值分段线性插值函数)(x I h 的导数是间断的,若在节点),,1,0(n k x k =上除已知函数值kf 外还给出导数值),,1,0('n k m f k k ==这样就可构造一个导数连续的分段插值函数),(x I h 它满足条件:(1)];,[')(b a C x I h ∈(2)),,1,0(')(',)(n k f x I f x I k k h k k h ===; (3))(x I h 在每个小区间],[1+k k x x 上是三次多项式。
根据两点三次插值多项式可知,)(x I h 在区间],[1+k k x x 上的表达式为111211211)21()()21()()(+++++++--+--+--+--=k k x k k k k k k k k x k k h f x x x x x x x x f x x x x x x x x x I')()(')()(1121211+++++---+---+k k kk k k k k k k f x x x x x x f x x x x x x上式对于1,,1,0-=n k 成立。
利用三次埃尔米特插值多项式的余项可得误差估计],[|,)(|max 3841|)()(|1)4(41+≤≤∈≤-+k k z x x k h x x x x f h x I x f k k 其中k k k x x h -=+12.3功能框图程序可以通过输入插值函数,插值结点个数,来实现插值,还可以选择插值方式,具体框图如下三、例题计算1.插值函数为1xf=x)(2+输入6个节点的分段线性插值输入6个节点的分段三次埃尔米特插值请输入插值函数:x^2+1请选择插值法(1为分段线性插值,2为分段三次埃尔米特插值):>> 1 请输入插值节点数N=6是否继续(1为继续):1请输入插值函数:x^2请选择插值法(1为分段线性插值,2为分段三次埃尔米特插值):>> 2 请输入插值节点数N=6是否继续(1为继续):22.插值函数为)fx(xcos()输入节点为8的分段线性插值输入节点为8的分段三次埃尔米特插值请输入插值函数:cos(x)请选择插值法(1为分段线性插值,2为分段三次埃尔米特插值):>> 1 请输入插值节点数N=8是否继续(1为继续):1请选择插值法(1为分段线性插值,2为分段三次埃尔米特插值):>> 2 请输入插值节点数N=83.插值函数为x e(x)f输入节点为10的分段线性插值输入节点为10的分段线三次埃尔米特插值请输入插值函数:exp(x)请选择插值法(1为分段线性插值,2为分段三次埃尔米特插值):>> 1 请输入插值节点数N=10是否继续(1为继续):1请选择插值法(1为分段线性插值,2为分段三次埃尔米特插值):>> 2 请输入插值节点数N=10四、误差及结果分析4.1例题误差分析1. 1)(2+=x x f 误差n 值取8,由分段线性插值余项公式|))((|max 2|)()(|max 1211+≤≤≤≤--≤-+=k k x x x h x x x x x x x M x I x f k k kx k 可得误差限为25.18102)(''max =⨯x f 由插值图像和误差可知误差结果较大由分段三次埃尔米特插值余项公式],[|,)(|max 3841|)()(|1)4(41+≤≤∈≤-+k k z x x k h x x x x f h x I x f k k 可得误差限为00)(384141=⨯-+k k x x 误差为零因此分段三次埃尔米特插值较为精确2. )cos()(x x f =误差n 值取10,分段线性插值误差限为2110102)(''max =⨯x f 分段三次埃尔米特插值误差限为38411)(384141=⨯-+k k x x 由误差结果可知分段三次埃尔米特插值得到的结果更为精确3. x e x f =)(误差n 值取12,分段线性插值误差限为61.838812512102)(''max 5==⨯e x f 分段三次埃尔米特插值误差限为0.1864)65(3841)(384154541=⨯⨯=⨯-+e e x x k k 由误差结果可知分段三次埃尔米特插值得到的结果更为精确综上可知,同等条件下分段三次埃尔米特插值得到的结果更为精确4.2结点个数对插值结果的影响为了进一步研究误差与插值节点的关系,我们以例题3的分段三次埃尔米特插值为例n 值取4时,误差为15.0974,插值图像如下n值取5时,误差为6.1839,插值图像如下n值取6时,误差为2.9822,插值图像如下n值取8时,误差为0.9436,插值图像如下通过误差限和得到的图像可知,插值节点越多,得到的图像越精确。
五、总结及心得体会刚看到题目时,心里一片茫然不知该如何下手,因为计算方法的课程设计和之前做的课程设计有很大的不同,特别是不知论文该写哪些东西,后来通过查阅书籍和网络搜索同类论文了解了它的写作内容。
总是有很多的问题存在,只是大多时候都隐藏了起来,当我们发现问题时,应该以平常的心态去对待,着急是没有用的,我们要做的就是在最短的时间内找出解决的办法。
在学习计算方法课程的时候,发现它确实不好学,只是应付考试就尚且有些费劲,要想真正弄精就更是困难了,不过这也是没有办法的事,毕竟就是有很多东西很难理解甚至是理解不了的,要想比别人更厉害,就得花些时间在难以理解的问题上。
在做课设时有些同学做了界面现一想还急火攻心,开始自己也想着做一下界面,可是有难度,不得不佩服那些能人,既然那东西不会,就只能乖乖用自己会的了。
有时候我不得不再次钦佩自己的团队协作能力,同样又是和不同的人组队,依旧是碰撞出激情的火花,我只想说团结就是力量。
我们最大的敌人是我们自己,我一直深信,在做的过程中,脑海中一直在想别人做的怎么样了,是不是比自己做的更好,当静下心来时,才恢复过来,管别人干什么,尽自己最大的努力把东西最好不就可以了吗,相信自己一定能做好。
有一个伟人曾说过如果给他一把斧头用六个小时去砍柴,他会用四个钟头取磨这把斧头,课设前的准备是很重要的,还好,通过学习计算方法了解了许多计算方法的知识。
我们学习的知识有很多是模糊的,当在规定的时间去完成任务是,我们所要做的就是把可能用到的知识拾起来或是尽快学会一种方法来解决它,这是一种能力,是需要我们通过锻炼去提高的。
参考文献[1]李庆扬,王能超,易大义.数值分析(第5版).北京:清华大学出版社,2008.[2]李庆扬,关治,白峰杉.数值计算原理.北京:清华大学出版社,2000.[3]李海,邓樱.MATLAB程序设计教程.北京:高等教育出版社,2002.[4]张学敏,倪虹霞. MATLAB基础及应用. 中国电力出版社,2009.[5]易大义, 沈云宝, 李有法. 计算方法[M]. 浙江大学出版社, 2002.源程序c=1;while(c==1)syms f x lx;f=input('请输入插值函数');B=input('请选择插值法(1为分段线性插值,2为分段三次埃尔米特插值):'); if B==1N=input('请输入插值节点数N=');xx=-5:10/N:5;ff=zeros(1,length(xx));for i=1:(N+1)x=xx(i);ff(i)=eval(f);endM = -5:0.01:5;output = zeros(1,length(M));n = 1;for i=2:N+1for x=-5:0.01:5if x<xx(i) && x>=xx(i-1)lx(1)=ff(i-1)*(x-xx(i))/(xx(i-1)-xx(i));lx(2)=ff(i)*(x-xx(i-1))/(xx(i)-xx(i-1));output(n) = lx(1)+lx(2);n = n+1;endendendezplot(f,[-5,5])hold onA =-5:0.01:5;plot(A,output,'r');endif B==2N=input('请输入插值节点数N=');f1=diff(f);xx=-5:10/N:5;ff=zeros(1,length(xx));for i=1:(N+1)x=xx(i);ff(i)=eval(f);ff1(i)=eval(f1);endM = -5:0.01:5;output = zeros(1,length(M));n = 1;for i=2:N+1for x=-5:0.01:5if x<xx(i) && x>=xx(i-1)lx(1)=ff(i-1)*(x-xx(i))^2/(xx(i-1)-xx(i))^2*(1+2*(x-xx(i-1))/(xx(i)-xx(i-1)));lx(2)=ff(i)*(x-xx(i-1))^2/(xx(i)-xx(i-1))^2*(1+2*(x-xx(i))/(xx(i-1)-xx(i)));lx(3)=ff1(i-1)*(x-xx(i))^2/(xx(i-1)-xx(i))^2*(x-xx(i-1));lx(4)=ff1(i)*(x-xx(i-1))^2/(xx(i)-xx(i-1))^2*(x-xx(i));output(n) = lx(1)+lx(2)+lx(3)+lx(4);n = n+1;endendendezplot(f,[-5,5])hold onA =-5:0.01:5;plot(A,output,'r');endif B~=1&&B~=2disp('输入有误,请重新输入')endc=input('是否继续(1为继续):');closeend注:设计报告撰写说明一、正文内容要求:正文内容层次序号为:1、1.1、1.1.1……。