牛顿插值上机实验报告 段海蓉

合集下载

数值分析实验报告-插值、三次样条

数值分析实验报告-插值、三次样条

实验报告:牛顿差值多项式&三次样条问题:在区间[-1,1]上分别取n=10、20用两组等距节点对龙格函数21()25f x x作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及()f x 的图形。

实验目的:通过编程实现牛顿插值方法和三次样条方法,加深对多项式插值的理解。

应用所编程序解决实际算例。

实验要求:1. 认真分析问题,深刻理解相关理论知识并能熟练应用;2. 编写相关程序并进行实验;3. 调试程序,得到最终结果;4. 分析解释实验结果;5. 按照要求完成实验报告。

实验原理:详见《数值分析 第5版》第二章相关内容。

实验内容:(1)牛顿插值多项式1.1 当n=10时:在Matlab 下编写代码完成计算和画图。

结果如下:代码:clear allclcx1=-1:0.2:1;y1=1./(1+25.*x1.^2);n=length(x1);f=y1(:);for j=2:nfor i=n:-1:jf(i)=(f(i)-f(i-1))/(x1(i)-x1(i-j+1));endendsyms F x p ;F(1)=1;p(1)=y1(1);for i=2:nF(i)=F(i-1)*(x-x1(i-1));p(i)=f(i)*F(i);endsyms PP=sum(p);P10=vpa(expand(P),5);x0=-1:0.001:1;y0=subs(P,x,x0);y2=subs(1/(1+25*x^2),x,x0);plot(x0,y0,x0,y2)grid onxlabel('x')ylabel('y')P10即我们所求的牛顿插值多项式,其结果为:P10(x)=-220.94*x^10+494.91*x^8-9.5065e-14*x^7-381.43*x^6-8.504e-14*x^5+123.36*x^4+2.0202e-1 4*x^3-16.855*x^2-6.6594e-16*x+1.0并且这里也能得到该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.1)。

插值法实验报告

插值法实验报告

插值法实验报告插值法实验报告一、引言插值法是一种常用的数值分析方法,用于通过已知数据点的函数值来估计在其他位置的函数值。

它在科学计算、图像处理、工程设计等领域有广泛的应用。

本实验旨在通过实际操作,深入理解插值法的原理和应用。

二、实验目的1. 掌握拉格朗日插值法和牛顿插值法的原理和计算方法;2. 通过实验比较不同插值方法的精度和效率;3. 分析插值法在实际问题中的应用。

三、实验步骤1. 收集实验数据:在实验室内设置几个测量点,记录它们的坐标和对应的函数值;2. 使用拉格朗日插值法计算其他位置的函数值:根据已知数据点,利用拉格朗日插值公式计算其他位置的函数值;3. 使用牛顿插值法计算其他位置的函数值:根据已知数据点,利用牛顿插值公式计算其他位置的函数值;4. 比较不同插值方法的精度和效率:通过计算误差和运行时间,比较拉格朗日插值法和牛顿插值法的性能差异;5. 分析插值法在实际问题中的应用:结合实验结果,探讨插值法在实际问题中的优势和局限性。

四、实验结果与分析1. 拉格朗日插值法的计算结果:根据已知数据点,利用拉格朗日插值公式计算其他位置的函数值;2. 牛顿插值法的计算结果:根据已知数据点,利用牛顿插值公式计算其他位置的函数值;3. 误差分析:比较插值结果与真实函数值之间的误差,分析误差的来源和影响因素;4. 运行时间分析:比较不同插值方法的运行时间,分析其效率和适用场景。

五、实验结论1. 拉格朗日插值法和牛顿插值法都是常用的插值方法,它们在不同场景下有各自的优势;2. 插值法在实际问题中的应用需要考虑数据的分布、函数的性质和计算效率等因素;3. 本实验结果表明,拉格朗日插值法和牛顿插值法在精度和效率上存在差异,具体选择哪种方法应根据实际需求进行权衡。

六、实验总结通过本次实验,我们深入了解了插值法的原理和应用。

实验结果表明,插值法在科学计算和工程设计中具有重要的作用。

在实际应用中,我们需要根据具体问题的要求和数据的特点选择合适的插值方法,以达到更好的效果。

newton插值法实验报告

newton插值法实验报告

竭诚为您提供优质文档/双击可除newton插值法实验报告篇一:牛顿插值法matlab程序《计算方法》数值实验报告篇二:数值分析实验报告(插值法)武汉理工大学学生实验报告书实验课程名称数值分析开课学院计算机科学与技术学院指导老师姓名学生姓名学生专业班级20XX—20XX学年第一学期实验课程名称:数值分析篇三:c++实现牛顿插值法实验报告数值实验用newton商差公式进行插值姓名:陈辉学号:13349006院系:数据科学与计算机学院专业:计算机科学与技术班级:计科一班日期:20XX-10-11指导老师:纪庆革目录一、二、三、四、五、六、七、八、实验目的................................................. .........................................3实验题目................................................. .........................................3实验原理与基础理论................................................. .......................3实验内容................................................. .........................................6实验结果................................................. .......................................10心得体会................................................. .......................................14参考资料................................................. .......................................14附录(源代码)............................................... (14)一、实验目的编写一个程序,用牛顿差商公式进行插值。

牛顿插值上机报告

牛顿插值上机报告

x
1.1 1.3 1.6 1.9 2.2 2、给出 f(x)=lnx 的数值表 x 0.4 0.5 lnx -0.916291 -0.693147
f(x)
0.7651977 0.6200860 0.4554022 0.2818186 0.1103623 0.6 -0.510826 0.7 -0.356675 0.8 -0.223144
1
一 实验目的 1.了解并掌握 Newton 插值多项式,根据给定的数值表 ,构造 1,2,3,4 次 Newton 插值多项式, 列出算法并求解。 2.并与 Lagrange 插值多项式比较精度。 实验内容 1、给定数据表, 构造 1,2,3,4 次 Newton 插值多项式, 求 f(1.5)=? 并与 Lagrange 插值多项 式比较精度。
一阶插商 -0.7255585 -0.548946 -0.578612 -0.571521
二阶插商
三阶插商
四阶插商
0.353225 -0.0494433333 -0.5033354166 0.01181833333 0.06806851848 0.5194581228
P n x f x0 f x0 , x1 x x0 f x0 , x1 , x2 x x0 x x1
3
f x0 , x1,
, xn x x0
Hale Waihona Puke x xn1 Rn x f x P n x f x0 , x1 , x2 ,
, xn wn1 x , 其中wn+1 x x x0 x x1
end k k 1; end for k ans 1: 1:1 end resulty resulty y k inputx x k * resulty;

实验指导一

实验指导一

实验指导一实验一 牛顿插值法1.1 实验目的① 掌握牛顿插值法的基本思路和步骤; ② 培养编程与上机调试能力。

1.2 算法描述1.2.1 牛顿插值法基本思路给定插值点序列())(,i i x f x ,,,1,0,n i =。

构造牛顿插值多项式)(u N n 。

输入要计算的函数点,x 并计算)(x N n 的值,利用牛顿插值公式,当增加一个节点时,只需在后面多计算一项,而前面的计算仍有用;另一方面)(x N n 的各项系数恰好又是各阶差商,而各阶差商可用差商公式来计算。

1.2.2 牛顿插值法计算步骤1. 输入n 值及())(,i i x f x ,,,1,0,n i =;要计算的函数点x 。

2. 对给定的,x 由[][][]00010101201101()()(),()(),,()()(),,n n n N x f x x x f x x x x x x f x x x x x x x x x f x x x -=+-+--++---计算()n N x 的值。

3.输出()n N x 。

1.3 实验内容给定sin110.190809,sin120.207912,sin130.224951,o o o===构造牛顿插值函数计算'sin1130o。

实验二 最小二乘法2.1 实验目的① 掌握最小二乘法的基本思路和拟合步骤; ② 培养编程与上机调试能力。

2.2 算法描述1.2.1最小二乘法基本思路 已知数据对()(),1,2,,j jx y j n = ,求多项式()()mii i p x a x m n ==<∑使得20110(,,,)nm i n i j j j i a a a a x y ==⎛⎫Φ=- ⎪⎝⎭∑∑ 为最小,这就是一个最小二乘问题。

2.2.2最小二乘法计算步骤用线性函数()p x a bx =+为例,拟合给定数据(),,1,2,,i i x y i m = 。

数值计算方法-拉格朗日牛顿插值实验

数值计算方法-拉格朗日牛顿插值实验

3.对比牛顿前插和牛顿后插两种方法的差异, 讨论分析同一个数值两种方法的计 算结果。 答:如果插值点 x 离 x0。比较近,则一般使用牛顿前差公式;如果插值点 x
离 x0。比较远,则一般使用牛顿后差公式。但对于同一个插值点 x 来说,不管 用牛顿前差公式还是用牛顿后差公式,得到的结果是一-样的,这两种插值公式 只是形式上的差别。 4.讨论分段插值法的意义。 答:高次插值的收敛性没有保证,实际计算稳定性也没有保证,所以当插值结 点 n 较大时, 通常不采用高次多项式插值, 用低次多项式插值, 它能保证收敛性, 得到的结果也相对稳定。
《计算方法》实验报告
实验二 插值法 实验目的
1. 掌握拉格朗日插值法、牛顿插值法、牛顿前后插值法及分段插值法的原理与算法。 2. 讨论几种方法的计算精度与误差,分析拉格朗日插值与牛顿插值法的差异。 3. 学会使用 Matlab 绘图方法,并以此方法来显示插值函数,使结果更直观更形象。
算法原理
(一)拉格朗日插值法 设 是互异插值节点,则满足插值条件 的插值多项式
是存在且唯一的。那么可以得到 n+1 个插值方程,求解 这个方程组,可以得到 n 次拉格朗日插值公式: ‴ , (二)牛顿插值法
其中:
(三)牛顿前后插值法 牛顿前插法为: th t t t t t t t t t t t t t t t t
牛顿后插法为: th
程序代码
拉格朗日插值 +
牛顿插值法运行脚本
牛顿向前插值法
牛顿向后插值法
牛顿向前插值作业
牛顿向后插值
数据测试结果
(1)选取 n=7,拉格朗日插值结果为:
(2)选取 n=7,牛顿插值法结果为:
(3) (4)X1=1.3,x2=5.6,牛顿向前向后插值法结果为:

拉格朗日插值牛顿插值C语言实验报告

拉格朗日插值牛顿插值C语言实验报告

实验报告:数学与统计学系信息与计算科学专业实验报告一、题目1、上机作业题程序12、上机作业题程序2二、算法1、Lagrange 插值//输入被插值点的数目POINT;int main(){int n;inti,j;POINT points[MAX_N+1];double diff[MAX_N+1];doublex,tmp=0,lagrange=0,tx,ty;printf("\nInput n value:");scanf("%d",&n);if(n>MAX_N){printf("The input n is larger thenMAX_N,please redefine the MAX_N.\n");return 1;}if(n<=0){printf("Please input a number between 1 and %d\n",MAX_N);return 1;}//输入被插值点printf("Now input the (x_i,y_i),i=0,...,%d:\n",n);for(i=0;i<=n;i++)scanf("%lf%lf",&points[i].x,&points[i].y);printf("Now input the x value:"); //输入计算Lagrange插值多项式的x值scanf("%lf",&x);for(i=0;i<=n;i++){diff[i]=0;tx=1;ty=1;for(j=0;j<=n;j++){if(i!=j){tx=tx*(x-points[j].x);ty=ty*(points[i].x-points[j].x);}}diff[i]=tx/ty;}for(i=0;i<=n;i++){tmp=points[i].y*diff[i];printf("%f",tmp);lagrange+=tmp;}printf("lagrange(%f)=%f\n",x,lagrange);return 0;}2、Newton 插值//输入被插值点的数目POINT;int main(){ int n;inti,j;POINT points[MAX_N+1];double diff[MAX_N+1];doublex,tmp,newton=0;printf("\nInput n value: ");scanf("%d",&n);if (n>MAX_N){printf("The input n is larger thenMAX_N,please redefine the MAX_N.\n");return 1;}if(n<=0){printf("Please input a number between 1 and %d\n",MAX_N);// getch(); return 1;}//输入被插值点printf("Now input the (x_i,y_i),i=0,...,%d:\n",n);for (i=0;i<=n;i++)scanf("%lf%lf",&points[i].x,&points[i].y);printf("Now input the x value: ");//输入计算Newton插值多项式的x值scanf("%lf",&x);for (i=0;i<=n;i++)diff[i]=points[i].y;for (i=0;i<n;i++){for (j=n;j>i;j--){diff[j]=(diff[j]-diff[j-1])/(points[j].x-points[j-1-i].x);}//计算f(x_0,…,x_n)的差商}tmp=1;newton=diff[0];for(i=0;i<n;i++){tmp=tmp*(x-points[i].x);newton=newton+tmp*diff[i+1];}printf("newton(%f)=%f\n",x,newton);return 0;}三、C程序1、Lagrange 插值#include <stdio.h>#define MAX_N 20typedefstructtagPOINT{double x;double y;}POINT;int main(){int n;inti,j;POINT points[MAX_N+1];double diff[MAX_N+1];doublex,tmp=0,lagrange=0,tx,ty;printf("\nInput n value:");scanf("%d",&n);if(n>MAX_N){printf("The input n is larger thenMAX_N,please redefine the MAX_N.\n");return 1;}if(n<=0){printf("Please input a number between 1 and %d\n",MAX_N); return 1;}printf("Now input the (x_i,y_i),i=0,...,%d:\n",n);for(i=0;i<=n;i++)scanf("%lf%lf",&points[i].x,&points[i].y);printf("Now input the x value:");scanf("%lf",&x);for(i=0;i<=n;i++){diff[i]=0;tx=1;ty=1;for(j=0;j<=n;j++){if(i!=j){tx=tx*(x-points[j].x);ty=ty*(points[i].x-points[j].x);}}diff[i]=tx/ty;}for(i=0;i<=n;i++){tmp=points[i].y*diff[i];printf("%f",tmp);lagrange+=tmp;}printf("lagrange(%f)=%f\n",x,lagrange);return 0;}2、Newton 插值#include <stdio.h>#define MAX_N 20typedefstructtagPOINT{ double x;double y;} POINT;int main(){ int n;inti,j;POINT points[MAX_N+1];double diff[MAX_N+1];doublex,tmp,newton=0;printf("\nInput n value: ");scanf("%d",&n);if (n>MAX_N){printf("The input n is larger thenMAX_N,please redefine the MAX_N.\n");return 1;}if (n<=0){printf("Please input a number between 1 and %d.\n",MAX_N);return 1;}//输入被插值点(x_i,y_i)printf("Now input the (x_i,y_i),i=0,...,%d:\n",n);for (i=0;i<=n;i++)scanf("%lf%lf",&points[i].x,&points[i].y);printf("Now input the x value: ");scanf("%lf",&x);for (i=0;i<=n;i++)diff[i]=points[i].y;for (i=0;i<n;i++){for (j=n;j>i;j--){diff[j]=(diff[j]-diff[j-1])/(points[j].x-points[j-1-i].x);}}tmp=1;newton=diff[0];for(i=0;i<n;i++){tmp=tmp*(x-points[i].x);newton=newton+tmp*diff[i+1];}printf("newton(%f)=%f\n",x,newton);return 0;}四、运行结果1、Lagrange 插值1910年Larange插值计算得到的人口数:1965年Larange插值计算得到的人口数:2002年Larange插值计算得到的人口数:从插值计算得出的结果1910年的人口数是31872000人,1965年的人口数约为193081511人,2002年的人口数约为26138748,而1910年的实际人口数为91772000人,1960年的实际人口数为179323000人,1970年的人口数为203212000人,所以拉格朗日插值计算得出的结果只有1965年的人口数与实际值相差较近,而1910年和2002年的计算结果都与实际值相差较大,所以插值计算得到的数据准确性并不高。

插值数值实验报告(3篇)

插值数值实验报告(3篇)

第1篇一、实验目的1. 理解并掌握插值法的基本原理和常用方法。

2. 学习使用拉格朗日插值法、牛顿插值法等数值插值方法进行函数逼近。

3. 分析不同插值方法的优缺点,并比较其精度和效率。

4. 通过实验加深对数值分析理论的理解和应用。

二、实验原理插值法是一种通过已知数据点来构造近似函数的方法。

它广泛应用于科学计算、工程设计和数据分析等领域。

常用的插值方法包括拉格朗日插值法、牛顿插值法、样条插值法等。

1. 拉格朗日插值法拉格朗日插值法是一种基于多项式的插值方法。

其基本思想是:给定一组数据点,构造一个次数不超过n的多项式,使得该多项式在这些数据点上的函数值与已知数据点的函数值相等。

2. 牛顿插值法牛顿插值法是一种基于插值多项式的差商的插值方法。

其基本思想是:给定一组数据点,构造一个次数不超过n的多项式,使得该多项式在这些数据点上的函数值与已知数据点的函数值相等,并且满足一定的差商条件。

三、实验内容1. 拉格朗日插值法(1)给定一组数据点,如:$$\begin{align}x_0 &= 0, & y_0 &= 1, \\x_1 &= 1, & y_1 &= 4, \\x_2 &= 2, & y_2 &= 9, \\x_3 &= 3, & y_3 &= 16.\end{align}$$(2)根据拉格朗日插值公式,构造插值多项式:$$P(x) = \frac{(x-x_1)(x-x_2)(x-x_3)}{(x_0-x_1)(x_0-x_2)(x_0-x_3)}y_0 + \frac{(x-x_0)(x-x_2)(x-x_3)}{(x_1-x_0)(x_1-x_2)(x_1-x_3)}y_1 + \frac{(x-x_0)(x-x_1)(x-x_3)}{(x_2-x_0)(x_2-x_1)(x_2-x_3)}y_2 + \frac{(x-x_0)(x-x_1)(x-x_2)}{(x_3-x_0)(x_3-x_1)(x_3-x_2)}y_3.$$(3)计算插值多项式在不同点的函数值,并与实际值进行比较。

实验二 牛顿插值法

实验二 牛顿插值法

实验二 牛顿插值法
一、实验目的:
1、掌握牛顿插值法的基本思路和步骤。

2、 培养编程与上机调试能力。

二、牛顿插值法基本思路与计算步骤:
给定插值点序列())(,i i x f x ,,,1,0,n i =。

构造牛顿插值多项式)(u N n 。

输入要计算的函数点,x 并计算)(x N n 的值,利用牛顿插值公式,当增加一个节点时,只需在后面多计算一项,而前面的计算仍有用;另一方面)(x N n 的各项系数恰好又是各阶均差,而各阶均差可用均差公式来计算。


的 一阶均差。


的 k 阶均差。

均差表:
1. 输入n 值及())(,i i x f x ,,,1,0,n i =;要计算的函数点x 。

2. 对给定的,x 由
[][][]
00010101201101
()()(),()(),,()
()
(),,n n n N x f x x x f x x x x x x f x x x x x x x x x f x x x -=+-+--++---
计算()n N x 的值。

3.输出()n N x 。

三:程序流程图:
四、实验内容
龙格(Runge )给出一个例子是极著名并富有启发性的。

设区间[-1,1]上函数
2
2511
)(x
x f += 考虑区间[-1,1]的一个等距划分,分点为
n i n i
x i ,,2,1,0,21 =+-=
选择不断增大的分点数目n=2,3….,画出原函数f(x)及插值多项式函数)(x L n 在[-1,1]上的图像,比较并分析实验结果。

计算方法报告书

计算方法报告书

实验一 牛顿插值公式求函数值一、实验目的理解插值的基本概念,掌握牛顿插值计算函数值的方法及程序实现。

二、实验内容给定n i y x i i ,,1,0),,( =,构造牛顿插值多项式)(x N n ,使得n i y x N i n ,,1,0,)( ==并用所构造的牛顿插值多项式)(x N n ,对给定的x 计算出)(x N n 的值。

算法描述输入n 值,及n i y x i i ,,1,0),,( =;记i y x f =)(。

for k=0,1,…,n计算差商01102110],,,[],,,[],,,[x x x x x f x x x f x x x f k k k k --=-对给定的x ,由],,,[)())(( ],,[))((],[)()()(10110210101000n n n x x x f x x x x x x x x x f x x x x x x f x x x f x N ----++--+-+=计算出)(x N n 的值。

输出)(x N n 。

计算实例给定sin11o =0.190809,sin12o =0.207912,sin13o =0.224951,构造牛顿插值函数并计算sin11o 30’。

三、实验要求1.独立编写较为通用的用牛顿插值公式求函数值的程序,并上机调试和运行。

至少用编制的程序验证两个函数,各函数节点数n>4。

记录所用的函数,及程序的输入输出数据并分析误差,2.将调试好的程序及有关记录分析存盘,交给任课老师。

四.程序流程图五.源程序#include <iostream.h>main(){float x[10],y[10],ne[10][10];int i,j,n;float newton,xk,t;cout<<"Å£¶Ù²åÖµ¹«Ê½Çóº¯ÊýÖµ"<<endl;cout<<"input x(n)";cin>>n ;for (i=0;i<n;i++){cout<<"x["<<i<<"]";cin>>x[i];}for (i=0;i<n;i++){ cout<<"y["<<i<<"]";cin>>y[i];ne[i][0]=y[i];}for (j=1;j<n;j++)for(i=j;i<n;i++)ne[i][j]=(ne[i][j-1]-ne[i-1][j-1])/(x[i]-x[i-j]);for (i=0;i<n;i++)cout<<"COE("<<i<<")"<<ne[i][i]<<endl;cout<<"XK=";cin>>xk ;newton=ne[0][0];t=1;for (i=1;i<n;i++){t=t*(xk-x[i-1]);newton=newton+ne[i][i]*t;}cout<<"N("<<xk<<")"<<newton;}六、计算实例1、给定sin11o=0.190809,sin12o=0.207912,sin13o=0.224951,构造牛顿插值函数并计算sin11o30’。

实验报告数值分析

实验报告数值分析

《数值分析》实验报告姓 名: 学 号: 专 业:指导教师: 刘 建 生 教 授 日 期: 2015年12月25日实验一 Lagrange/newton 插值一:对于给定的一元函数)(x f y =的n+1个节点值(),0,1,,j j y f x j n ==L 。

试用Lagrange 公式求其插值多项式或分段二次Lagrange 插值多项式。

数据如下: 求计算(0.596)f ,(0.99)f 的值(提示:结果为(0.596)0.625732f ≈,(0.99) 1.05423f ≈ )试构造Lagrange 多项式6L ()x ,计算的(1.8)f ,(6.15)f 值。

(提示:结果为(1.8)0.164762f ≈, (6.15)0.001266f ≈ )二:实验程序及注释MATLAB 程序:function f=lagrange(x0,y0,x )n=length(x0); m=length(y0); format long s=0.0; for k=1:n p=1.0; for j=1:n if j~=kp=p*(x-x0(j))/(x0(k)-x0(j));endends=s+y0(k)*p;Endf=s;end结果运行:结果与提示值完全吻合,说明Lagrange插值多项式的精度是很高的;同时,若采用三点插值和两点插值的方法,用三点插值的精度更高。

若同时采用两点插值,选取的节点距离x越近,精度越高。

三:采用newton插值进行计算算法程序如下:format long;x0=[0.4 0.55 0.65 0.80 0.95 1.05 ];y0=[0.41075 0.57815 0.69675 0.90 1.00 1.25382 ];x=0.596;n=max(size(x0));y=y0(1);%disp(y);s=1;dx=y0;for i=1:n-1dx0=dx; for j=1:n-idx(j)=(dx0(j+1)-dx0(j))/(x0(i+j)-x0(j)); end df=dx(1); s=s*(x-x0(i));y=y+s*df; %计算 %%disp(y); end disp(y)运行结果:绘制出曲线图:与结果相吻合。

数值分析牛顿插值法实验报告

数值分析牛顿插值法实验报告

数值分析牛顿插值法实验报告数值分析牛顿插值法实验报告篇一:数值分析课程实验报告-拉格朗日和牛顿插值法《数值分析》课程实验报告用拉格朗日和牛顿插值法求解函数值算法名称用拉格朗日和牛顿插值法求函数值学科专业机械工程作者姓名程习康作者学号 153711006 作者班级机电院研究生15级C2班中南大学二〇一五年十二月《数值分析》课程实验报告篇二:数值分析实验报告:拉格朗日插值法和牛顿插值法实验一报告拉格朗日插值法一、实验目的1、学习和掌握拉格朗日插值多项式2、运用拉格朗日插值多项式进行计算二、实验原理根据x0,x1,…xn;y0,y1,…yn构造插值多项式其表达式为:将插值点x代入上式,就可得到函数f(x)在点x处的函数值的近似值。

三、运行结果四、代码 using System; using System.Cllectins.Generic; using System.Linq; using System.Text; namespace CnsleApplicatin3 { class Prgram { static duble lglr(duble[] x, duble[] y, duble x1, int n) { duble result = 0.0; fr (int i = 0; i i++) { duble temp = y[i]; fr (int j = 0; j j++) { if (j == i) cntinue; temp = temp * (x1 - x[j]); temp = temp / (x[i] - x[j]); } result = result + temp; } return result; } static vid Main(string[] args) { duble[] x; duble[] y; Cnsle.riteLine( 请输入插值点数:int length = Cnvert.TInt32(Cnsle.ReadLine); x = nei++) { Cnsle.rite( 请输入第{0}个点的x值:, i + 1); x[i] = Cnvert.TDuble(Cnsle.ReadLine);Cnsle.rite( 请输入第{0}个点的y值:, i + 1); y[i] = Cnvert.TDuble(Cnsle.ReadLine); } Cnsle.riteLine( 请输入x1值:duble x1 = Cnvert.TDuble(Cnsle.ReadLine); dubleresult=lglr(x,y,x1,length); Cnsle.rite( 插值计算结果为:{0}:, result); Cnsle.ReadLine; } 牛顿插值法一、实验目的体会并了解牛顿插值法,用计算机插入x值,输出相应的y值。

数值分析实验报告Newton插值法

数值分析实验报告Newton插值法

用 Newton 插值法计算出 x1=0:0.1:1.2 处的值为表 3-2:
0 0.1 0.2 Pn 1 0.995005 0.980067 x 0.7 0.8 0.9 Pn 0.764843 0.696707 0.62161
x
表 3-2 0.3 0.4 0.955337 0.921061 1 1.1 0.540302 0.453596
对于例 3 要画出图像,则应在上述代码中做出改动:
function [A,Pn] = Newton(X,x) %请输入 2*n 矩阵 X,X 中第一行每个元素都是插值节点,X 中第二行每个元素都是插值节点对应的函 数值; %第二章 P36 例三牛顿插值 n=size(X,2); Pn=zeros(1,size(x,2));%存放插值 t=1;s=size(x,2) for k=1:1:s A=zeros(n,n+1);%存放差商表 A(:,1:2)=X'; if x(1,k)==X(1,t); Pn(1,k)=X(2,t); t=t+1; else for i=3:1:n+1 m=1; for j=i-1:1:n A(j,i)=(A(j,i-1)-A(j-1,i-1))/(A(j,1)-A(m,1)); m=m+1; end
xi
0 0.2 0.4 0.6 0.8 1 1.2
f(xi )
1 0.980067 0.921061 0.825336 0.696707 0.540302 0.362358 -0.09966 -0.29503 -0.47863 -0.64315 -0.78203 -0.88972
i 阶差商
t(•) t(0) t(1)
>> X=[0 0.2 0.4 0.6 0.8 1.0 1.2;1 0.980067 0.921061 0.825336 0.696707 0.540302 0.362358]; >> x=0.3; >> format long >> [A,Pn,B]=Newton1(X,x) Pn = 0.955336593750000 表 3-1 差商表

MATLAB牛顿和拉格朗日插值实验报告

MATLAB牛顿和拉格朗日插值实验报告
matlab拉格朗日插值matlab牛顿插值matlab拉格朗日差值拉格朗日插值拉格朗日插值公式matlab拉格朗日拉格朗日插值法拉格朗日插值法程序拉格朗日插值c语言拉格朗日插值定理
数值分析课程实验报告
2012—2013学年度第二学期
系别:数学与计算机科学学院
实验课程
数值分析
班级
10级数学与应用数学2班
fori =1:n
y =y0(i) * l(i) + y;
end
牛顿插值
function[c, d]=newpoly(x, y)
n=length(x);
d=zeros(n, n);
d(:,1)=y';
forj=2 : n
fork=j : n
d(k, j)=(d(k, j-1) - d(k-1, j-1)) / (x(k)-x(k-j+1));
学号
39姓名Biblioteka 指导教师实验题目拉格朗日和牛顿插值
日期
2013年3月27日
实验原理
实验内容及具体步骤:
一、试验环境
计算机MATLAB软件
二、实验目的
1.熟悉启动和退出MATLAB的方法。
2.熟悉MATLAB命令窗口的组成。
3.掌握函数文件的建立及调用。
三、实验内容
四、试验步骤
functiony = lagrange(x0,y0,x)
end
end
c =d(n, n);
fork=(n-1) : - 1 : 1
c =conv(c, poly(x(k)));
m=length(c);
c(m)=c(m)+d(k, k);
end
五、练习

计算方法上机作业插值与拟合实验报告

计算方法上机作业插值与拟合实验报告

计算方法实验题目:班级:学号:姓名:目录计算方法实验 (1)1 实验目的 (3)2 实验步骤 (3)2.1环境配置: (3)2.2添加头文件 (3)2.3主要模块 (3)3 代码 (4)3.1主程序部分 (4)3.2多项式方程部分 (4)3.3核心算法部分 (8)3.4数据结构部分 (13)4运行结果 (19)4.1拉格朗日插值法运行结果 (19)4.2牛顿插值法运行结果 (20)4.3多项式拟合运行结果 (20)5总结 (21)拉格朗日插值法 (21)牛顿插值法 (21)多项式拟合 (21)6参考资料 (22)1 实验目的1.通过编程对拉格朗日插值法、牛顿插值法以及多项式拟合数据的理解2.观察上述方法的计算稳定性和求解精度并比较各种方法利弊2 实验步骤2.1环境配置:VS2013,C++控制台程序2.2添加头文件#include "stdio.h"#include "stdlib.h"#include "stdafx.h"2.3主要模块程序一共分成三层,最底层是数据结构部分,负责存储数据,第二层是交互部分,即多项式方程部分,负责输入输出获得数据,最上层是核心的算法部分,负责处理已获得的数据。

具体功能如下:●数据结构部分数据结构部分是整个程序的最底层,负责存储部分。

因方程系数作为数据元素插入和删除操作较少,而顺序表空间利用率大且查看方便,故此程序选用顺序表保存系数。

数据结构文件中写的是有关顺序表的所有基本操作以供其他文件调用。

本次实验使用列主元高斯消元法作为求解方程组的方法,所以也用了二维顺序表存储数组。

综上,数据结构部分文件是前两个试验的文件内容和,稍作修改。

●常系数微分方程部分多项式方程部分是程序的第二层,内容主要是常系数微分方程导数的计算和显示菜单部分。

●算法部分算法部分分为两个文件,一个是插值部分,一个是拟合部分。

插值部分文件负责有关插值的核心算法,处于整个程序最上层部分,负责拉格朗日插值法和牛顿插值法的具体实现过程。

数值计算实习报告-牛顿插值算法(高分)

数值计算实习报告-牛顿插值算法(高分)

安徽工业大学数理科学与工程学院《数值计算实习》------牛顿插值算法姓名:班级:学号:指导老师:2014年6月23日星期一目录1.提出问题 (2)2.实验目的: (2)3.基础概念: (2)3.1牛顿插值多项式的原理 (2)3.2均差(差商)及其性质 (4)3.3牛顿插值公式及其余项的公式: (5)4.算法设计 (5)5. Matlab程序实现及应用 (6)5.1举例应用 (6)5.2命令执行图: (8)6.结果分析 (9)参考文献 (9)附录一:牛顿插值的MATLAB实现 (10)附录二:误差的Matlab实现 (10)附录三:生成图像 (10)1.提出问题上学期通过对《数值分析》的学习,我们知道可以用插值法求一个待定函数来近似反映函数的特性,使得待定函数在给定点上等于函数值,在其它点上的函数的值作为函数的近似值。

利用差值函数很容易得到Lagrange 插值多项式,公式结构紧凑,在理论分析中甚为方便。

而由Lagrange 插值多项式的插值基函数:可知其公式中的每一项与所有的插值结点有关.因此,Lagrange 插值虽然易算,但若要增加一个节点时,全部基函数 )(x l i 都需重新算过,计算量太大,在实际计算中十分不利,为了克服这一缺点,于是产生了Newton 插值法。

2.实验目的:通过对牛顿插值多项式的Matlab 程序实现,深入了解牛顿插值多项式的原理及编程解决实际问题的能力。

3.基础概念:3.1牛顿插值多项式的原理我们知道两点直线公式)),(),,((11++k k k k y x y x 有:我们考虑点斜式,两点为((x 0,y 0)(x 1,y 1)),则直线方程为:那么,在此基础上增加一个节点(x2,y2),则过这三个点的插值多项式就是:)(x l j 1010010()()y y P x y x x x x -=+--11111111()()(()(k k k k k kk kk k k k k ky y L x y x x x x x x x x L x y y x x x x ++++++-=+----=+--点斜式)两点式)∏≠=--=n ji i i j ix x x x 0)()(c(x)应该是一个二次多项式。

数值分析第五版上机实验答案实验一~实验六

数值分析第五版上机实验答案实验一~实验六

实验一Lagrange插值算法实验目的:掌握拉格朗日(Lagrange)插值算法的基本原理,理解插值基函数的性质,掌握基本的误差概念。

学习用计算机语言编写程序实现算法。

[参考程序]#include "stdio.h"//定义插值节点及所求点数据,根据题目不同而修改double x[]={0.32,0.34,0.36};double y[]={0.314567,0.333487,0.352274};double xx=0.3367;// Lagrange插值算法函数,利用循环计算具有对称性的基函数和最终结果double Lagrange(double xxx,int n){int i;double result=0,temp;for(i=0;i<=n;i++){temp=1;for(int j=0;j<= n;j++){if(j!=i){temp=temp*(xxx-x[j])/(x[i]-x[j]);}}result=result+temp*y[i];}return result;}void main(){int n;printf("Please input n:");scanf("%d",&n);printf("Sin(%f) = %f \n",xx,Lagrange(xx,n));}实验二Newton均差插值算法实验目的:掌握Newton均差插值算法的基本原理,理解均差的概念,掌握均差表的计算方法。

学习用计算机语言编写程序实现算法。

[参考程序]#include "stdio.h"#define N 10double f[N][N];//定义插值节点及所求点数据,根据题目不同而修改double x[]={0.4,0.55,0.65,0.80,0.90,1.05};double y[]={0.41075,0.57815,0.69675,0.88811,1.02652,1.25382};double fx(int i,int j);double S(int start,int end,double xx);main(){int loopi,loopj,n;double result,xx;scanf("%d",&n);scanf("%lf",&xx);for(loopi=0;loopi<=n;loopi++){//零阶均差作为均差表二维数组的第0列f[loopi][0]=y[loopi];}//循环计算均差表中的所有数据for(loopi=1;loopi<=n;loopi++){for(loopj=1;loopj<=loopi;loopj++){f[loopi][loopj]=fx(loopi,loopj);}}result=S(0,n,xx);printf("Result is: %f",result);return 1;}//求均差的函数double fx(int i,int j){if(j==0){return f[i][j];}else{//这种表示方法需要注意两个x的下标return (fx(i,j-1)-fx(i-1,j-1))/(x[i]-x[i-j]);}}//用秦九韶算法计算插值多项式结果double S(int start,int end,double xx){if(start==end){return f[end][end];}else{return (S(start+1,end,xx)*(xx-x[start])+f[start][start]);}}实验三Newton差分插值算法实验目的:掌握Newton差分插值算法的基本原理,理解差分的概念,掌握差分表的计算方法。

牛顿插值的计算实习报告

牛顿插值的计算实习报告

一、实习目的通过本次实习,我深入了解了牛顿插值法的基本原理,掌握了其计算方法,并能够熟练运用牛顿插值法解决实际问题。

实习过程中,我结合实际数据,运用牛顿插值法进行计算,分析了插值结果,并对插值方法进行了总结和评价。

二、实习内容1. 牛顿插值法的基本原理牛顿插值法是一种构建插值多项式的方法,通过计算差商(divided differences)来逐步构建插值多项式。

该方法具有较好的计算效率和承袭性,即在添加或删除数据点时,可以基于已有计算结果进行调整,无需完全重新计算。

2. 牛顿插值法的计算步骤(1)初始化差商表,第0列初始化为ypoints。

(2)计算i阶差商,根据差商计算插值多项式。

(3)根据计算出的差商构造最终的插值多项式。

(4)计算x的估计函数值。

3. 实际应用以一组实际数据为例,运用牛顿插值法进行计算。

(1)选取一组已知数据点,计算差商。

(2)根据差商构造牛顿插值多项式。

(3)利用牛顿插值多项式估算未知点的函数值。

三、实习结果与分析1. 插值结果通过对实际数据的计算,牛顿插值法得到了较为准确的插值结果。

与实际值相比,插值值具有较高的精度。

2. 插值误差分析(1)在数据点较少的情况下,牛顿插值法具有较高的精度。

(2)在数据点较多的情况下,牛顿插值法可能会出现误差,但总体上仍具有较高的精度。

(3)插值误差与数据点的分布、差商的计算精度等因素有关。

四、实习总结与评价1. 牛顿插值法是一种有效的插值方法,具有较好的计算效率和承袭性。

2. 在实际应用中,根据数据点的分布和精度要求,选择合适的插值方法。

3. 牛顿插值法在实际应用中具有较高的精度,但在某些情况下可能会出现误差。

4. 在后续的实习中,我将进一步学习其他插值方法,如拉格朗日插值法、样条插值法等,以便在实际问题中灵活运用。

五、实习体会通过本次实习,我对牛顿插值法有了更深入的了解,掌握了其计算方法,并能够将其应用于实际问题。

在实习过程中,我认识到理论知识与实际应用相结合的重要性,以及选择合适的插值方法对于提高计算精度的重要性。

《牛顿插值及最小二乘法在数据处理中的应用》心得体会

《牛顿插值及最小二乘法在数据处理中的应用》心得体会

数值分析大作业心得体会XXXXXXXXXXX经过几周时间的努力,终于完成了数值分析大作业,在完成数值分析大作业的过程中,我遇到了很多问题,也产生了一些体会。

首先,进入研一首次接触数值分析课程让我明白了数值分析对于数据处理的重要性,对我来说数值分析让我进一步明白了数据处理过程的严谨和科学;然后,数值分析中的内容,尤其是差值函数的运用更使我感觉到在实际运用中数学方法的完美,给我提供了一个极为重要的概念,进过进一步的学习,我知道了单个的插值方法得到的结果虽然不是很理想,但将多个方法按照某种方式结合在一起就能改进实验方法,我们应该触类旁通,在以后的学习中学会使用这种思想;最后,在编写程序方面也给我带来了一些挑战,在数值分析中Matlab程序是常用的一种语言,又一次给我带来了学习编程语言的动力,然我学会了很多知识。

在使用牛顿插值多项式时要计算各阶差商,而各高阶差商可归结为一阶差商的逐次计算。

而有时讨论的插值多项式的节点都是任意分布的,但是在实际应用中,出现了很多等距节点的情形,这时的插值公式可以进一步简化,在牛顿均差插值多项式中各阶均差用相应的差分代替,就得到了各种形式的等距节点插值公式,常用的是牛顿前插与后插公式。

其实一直以来感觉自己对数学还是比较感兴趣的,在大学里面学过高数、数理统计和线性方程,使我对数学有了进一步的认识。

在研究生课程中,我又学到了应用数理统计和数值分析两门课程。

针对自己研究领域的课题中,让我慢慢觉得数学对于课题中数据处理的重要性。

然而在数值分析的学习过程中,有一些知识点可能比较抽象,但是一些算法还是经过自己上机实践过的,所以掌握起来更加透彻容易。

完成大作业的过程中觉得,像牛顿插值法和最小二乘法等数据处理方法,其实用性还是比较大的,对我平常课题的研究学习作用还是比较大的,是我们更加容易发掘出数据内部的规律。

完成数值分析大作业,感觉更像完成一次数学建模任务。

在实际问题中,建立一个数学模型来完成现实的问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
xi
0.2
0.4
0.6
0.8
1.0
f(xi)
0.98
0.92
0.81
0.64
0.38
七:参考程序:Newton插值
function y=Newton(x0,y0)
syms x
n=length(x0)
y=0.0
for i=1:n
f(i,1)=y0(i);
end
p=f(1,1);
xx=1.0;
for k=2:n
牛顿插值上机实验报告
院系数学学院专业信计班级10-1
实验时间2012年10月15日
姓名段海蓉学号20100803211
实验名称牛顿插值法
一实验目的:
1:研究函数的变化规律。
2:求出一个既能反映函数f(x)的特性,又便于计算的简单函数P(x),
用P(x)近似于f(x)。
二实验内容:研究牛顿插值计算
三编程要求:运用matlab
>>
for i=k:n
f(i,k)=(f(i,k-1)-f(i-1,k-1))/(x0(i)-x0(i-k+1));
end
xx=xx*(x-x0(k-1));
p=p+f(k,k)*xx;
end
y=p+y;
八:结果分析
x0=0.2:0.2:1
x0 =
0.2000 0.4000 0.6000 0.8000 1.0000
>> y0=[0.98 0.92 0.81 0.64 0.38]
y0 =
0.9800 0.9200 0.8100 0.6400 0.3800
>> y=Newton(x0,y0)
n =
5
y =
0
y =
26/25 - (5*(x - 1/5)*(x - 2/5))/8 - (5*(x - 1/5)*(x - 2/5)*(x - 3/5))/24 - (25*(x - 1/5)*(x - 2/5)*(x - 3/5)*(x - 4/5))/48 - (3*x)/10
四方法计算公式:f(x)≈
五方法理论计算Biblioteka :通过借助均差的定义,构造牛顿插值多项式:Pn(x)=f(x0)+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+…+f[x0,x1,x2,…xn](x-x0)(x-x1)…(x-x(n-1))
六上机例题:
已知函数在下点的值为:
相关文档
最新文档