数学实验“等距节点插值,Hermite插值,分段插值(线性,二次,三次)”实验报告(内含matlab程序)

数学实验“等距节点插值,Hermite插值,分段插值(线性,二次,三次)”实验报告(内含matlab程序)
数学实验“等距节点插值,Hermite插值,分段插值(线性,二次,三次)”实验报告(内含matlab程序)

西京学院数学软件实验任务书

实验十六实验报告

一、实验名称:等距节点插值,Hermite 插值,分段插值(线性,二次,三次)。

二、实验目的:进一步熟悉等距节点插值,Hermite 插值,分段插值(线性,二次,三次)。

三、实验要求:运用Matlab/C/C++/Java/Maple/Mathematica 等其中一种语言完成程序设计。 四、实验原理:

1.等距节点插值:

差分分为前向差分、后向差分和中心差分三种,它们的记法及定义如下所示:

n 阶前向差分公式111()()()n n n i i i f x f x f x --+?=?-? n 阶后向差分公式111()()()n n n i i i f x f x f x ---?=?-?

n 阶中心差分公式11112

2

()()()n n n i i i f x f x f x δδδ--+-=-

其中:? -前向差分;? -后向差分;δ -中心差分。 假设000()()()()i i i i f x f x f x f x δ?=?==,为了方便计算,构造差分表(()i i f f x =)。

这里只说明前向牛顿插值,其多项式可表示为如下形式:

0()()N x N x th =+

20000()()()()12n t t t f x f x f x f x n

??

??

??

=+?+?++? ? ? ???

??

??

其中h 为步长,10h x x =-,且的取值范围为0t n ≤≤。 2.埃尔米特插值:

埃尔米特插值法满足在节点上等于给定函数值,而且在节点上的导数值也等于给定的导数值,对于有高阶导数的情况,埃尔米特插值多项式比较复杂,在实际应用中,常常遇到的是函数值与一阶导数值给定的情况,在这种情况下,n 个节点12,,n x x x 的埃尔米特插值多项式()H x 的表达形式如下所示:

1()[()(2)]n

i i i i i i i H x h x x a y y y ==--+∑

其中(),''()i i i i y y x y y x == 2

111

(

),n

n

j i i j j i j

i j

j i

j i x x h a x x x x ==≠≠-==--∑

3.分段插值:

给定插值节点i x 、节点函数值i y 及对应的导数值

'(0,1,2,,)i y i N = ,则满足下面条件

(),'()'i i i i p x y p x y ==

的分段埃尔米特插值函数()p x 的表达式如下所示:

22

11122111()(12)()(12)()'()(

)'()()i i i i i i i i i i i

i i i i i i i i

x x x x x x x x p x y y h h h h x x x x y x x y x x h h ++++++----=++++----+-

11,(0,1,2,1),[,]i i i i i h x x i N x x x ++=-=-∈

五、实验内容:

%等距节点插值

function [f,f0]= dengjujiedian(x,y,x0)

syms t ;

if (length(x) == length(y)) n = length(x); c(1:n) = 0.0; else

disp('x 和y 的维数不相等!'); return ; end

f = y(1); y1 = 0;

xx =linspace(x(1),x(n),(x(2)-x(1))); if (xx ~= x)

disp('节点之间不是等距的!'); return ; end

for (i=1:n-1)

for (j=1:n-i)

y1(j) = y(j+1)-y(j); end

c(i) = y1(1); l = t;

for (k=1:i-1)

l = l*(t-k); end ;

f = f + c(i)*l/factorial(i); simplify(f);

y = y1;

end

f0=subs(f,'t',(x0-x(1))/(x(2)-x(1)));

%埃尔米特插值

function [f,f0]= Hermite(x,y,y_1,x0)

syms t;

f = 0.0;

if(length(x) == length(y))

if(length(y) == length(y_1))

n = length(x);

else

disp('y和y的导数的维数不相等!');

return;

end

else

disp('x和y的维数不相等!');

return;

end

for i=1:n

h = 1.0;

a = 0.0;

for j=1:n

if( j ~= i)

h = h*(t-x(j))^2/((x(i)-x(j))^2);

a = a + 1/(x(i)-x(j));

end

end

f = f + h*((x(i)-t)*(2*a*y(i)-y_1(i))+y(i)); end

f0=subs(f,'t',x0);

%分段差值

function [f,f0] = fenduan(x,y,y_1,x0)

syms t;

f = 0.0;

f0 = 0.0;

if(length(x) == length(y))

if(length(y) == length(y_1))

n = length(x);

else

disp('y和y的导数的维数不相等!');

return;

end

else

disp('x和y的维数不相等!');

return;

end

for i=1:n

if(x(i)<=x0)&& (x(i+1)>=x0)

index = i;

break;

end

end

h = x(index+1) - x(index);

fl = y(index)*(1+2*(t-x(index))/h)*(t-x(index+1))^2/h/h + ...

y(index+1)*(1-2*(t-x(index+1))/h)*(t-x(index))^2/h/h;

fr = y_1(index)*(t-x(index))*(t-x(index+1))^2/h/h + ...

y_1(index+1)*(t-x(index+1))*(t-x(index))^2/h/h;

f = fl + fr;

f0 = subs(f,'t',x0);

插值法和拟合实验报告(数值计算)

插值法和拟合实验报告 一、 实验目的 1.通过进行不同类型的插值,比较各种插值的效果,明确各种插值的优越性; 2.通过比较不同次数的多项式拟合效果,了解多项式拟合的原理; 3.利用matlab 编程,学会matlab 命令; 4.掌握拉格朗日插值法; 5.掌握多项式拟合的特点和方法。 二、 实验题目 1.、插值法实验 将区间[-5,5]10等分,对下列函数分别计算插值节点 k x 的值,进行不同类型 的插值,作出插值函数的图形并与)(x f y =的图形进行比较: ;11)(2x x f += ;a r c t a n )(x x f = .1)(42 x x x f += (1) 做拉格朗日插值; (2) 做分段线性插值; (3) 做三次样条插值. 2、拟合实验 给定数据点如下表所示: 分别对上述数据作三次多项式和五次多项式拟合,并求平方误差,作出离散函数 ),(i i y x 和拟合函数的图形。 三、 实验原理 1.、插值法实验

∏∑∏∏∏∑∑≠==≠=≠=≠=+-==--= =-= ==-=-=----==++==j i j j i i i i i n i i n n j i j j n j i j j i i n j i j j n i i i n i i n n n o i n i i n x x x x x y x l x L x x c n i x x c x x x c x x x x x x x x c y x l x L y x l y x l y x l x L ,00 ,0,0,01100 00 )(l )()() (1 ,1,0, 1)()(l ) ()())(()()()()()()()(, 故, 得 再由,设 2、拟合实验

大学数学实验 插值与拟合

一、实验目的 (1)掌握用MATLAB计算拉格朗日,分段线性,三次样条三种插值的方法,改变节点的数目,对三种插值结果进行初步分析。(2)掌握用MTLABLE作线性最小二乘拟合的方法。 (3)通过实例学习如何用插值方法与拟合方法解决实际问题,注意二者的联系和区别。 二、实验内容 2.用y=x^1/2在向,4,9,16产生5个节点P1,……P5.用不同的节点构造插值公式来计算x=5处的插值,与精确值比较并进行分析。 3.用给定的多项式,如y=x^3-6*x^2+5*x-3,产生一组数据(Xi,Yi,i=1,2,……,n),再在Yi上添加随机干扰(可用rand产生(0,1)均匀分布随机数,或用randn产生N(0,1)分布随机数),然后用Xi和添加了随机干扰项的Yi作3次多项式拟合,与原系数比较,如果作2或4次多项式拟合,结果如何? 8弹簧在力F的作用下伸长x,F数据,一定范围内服从胡克定律:F与x成正比,即F=kx,k为弹簧系数。现在得到下面一组数据,并在(x,F)坐标下作图。可以看出,当F大到一定数值(如x=9以后)后,就不服从这个定律了。试由数据拟合直线F=kx,并给出不服从胡克定律时的近似公式(曲线)。 1)要求直线与曲线在x=9处相连接。 2)要求直线与曲线在x=9处光滑连接。 三.实验过程与结果 2. 程序: syms x y x0=[ 0 1 4 9 16]; y0=[ 0 1 2 3 4]; x=5; y=x^0.5; y1=interp1(x0,y0,x); y2=spline(x0,y0,x); [x y y1 y2]'; 结果: ans: 5.0000 2.2361 2.2000 2.1633 lagr在matlab中没有定义 用不同节点构造插值方法与上述程序一样

插值法实验报告

实验二插值法 1、实验目的: 1、掌握直接利用拉格郎日插值多项式计算函数在已知点的函数值;观察拉格郎日插值的龙格现象。 2、了解Hermite插值法、三次样条插值法原理,结合计算公式,确定函数值。 2、实验要求: 1)认真分析题目的条件和要求,复习相关的理论知识,选择适当的解决方案和算法; 2)编写上机实验程序,作好上机前的准备工作; 3)上机调试程序,并试算各种方案,记录计算的结果(包括必要的中间结果); 4)分析和解释计算结果; 5)按照要求书写实验报告; 3、实验内容: 1) 用拉格郎日插值公式确定函数值;对函数f(x)进行拉格郎日插值,并对f(x)与插值多项式的曲线作比较。 已知函数表:(0.56160,0.82741)、(0.56280,0.82659)、(0.56401,0.82577)、(0.56521,0.82495)用三次拉格朗日插值多项式求x=0.5635时函数近似值。 2) 求满足插值条件的插值多项式及余项 1) 4、题目:插值法 5、原理: 拉格郎日插值原理: n次拉格朗日插值多项式为:L n (x)=y l (x)+y 1 l 1 (x)+y 2 l 2 (x)+…+y n l n (x)

n=1时,称为线性插值, L 1(x)=y (x-x 1 )/(x -x 1 )+y 1 (x-x )/(x 1 -x )=y +(y 1 -x )(x-x )/(x 1 -x ) n=2时,称为二次插值或抛物线插值, L 2(x)=y (x-x 1 )(x-x 2 )/(x -x 1 )/(x -x 2 )+y 1 (x-x )(x-x 2 )/(x 1 -x )/(x 1 -x 2 )+y 2 (x -x 0)(x-x 1 )/(x 2 -x )/(x 2 -x 1 ) n=i时, Li= (X-X0)……(X-X i-1)(x-x i+1) ……(x-x n) (X-X0)……(X-X i-1)(x-x i+1) ……(x-x n) 6、设计思想: 拉格朗日插值法是根据n + 1个点x0, x1, ... x n(x0 < x1 < ... x n)的函数值f (x0), f (x1) , ... , f (x n)推出n次多項式p(x),然后n次多項式p (x)求出任意的点x对应的函数值f (x)的算法。 7、对应程序: 1 ) 三次拉格朗日插值多项式求x=0.5635时函数近似值 #include"stdio.h" #define n 5 void main() { int i,j; float x[n],y[n]; float x1; float a=1; float b=1; float lx=0; printf("\n请输入想要求解的X:\n x="); scanf("%f",&x1); printf("请输入所有点的横纵坐标:\n"); for(i=1;i

Hermite插值方法

数值分析实验报告五 一、实验目的 理解Hermite插值方法,掌握Hermite插值算法设计 二、实验内容 使用vc++编程,实现该方法,即Hermite插值法 三、实验步骤 #include double herm(double x0,double x1,double y0,double y1,double h0,double g0,double g1,double x) { d oubl e alp0,alp1,bta0,bta1,t;double s; t=h0*h0; a lp0=(x-x1)*(x-x1)*(h0+2*(x-x0))/t/h0; a lp1=(x-x0)*(x-x0)*(h0-2*(x-x1))/t/h0; b ta0=(x-x0)*(x-x1)*(x-x1)/t; b ta1=(x-x1)*(x-x0)*(x-x0)/t; s=y0*alp0+y1*alp1+g0*bta0+g1*bta1; r eturn(s); } void main() { int n=7;double p0;double pn; double aa[8],bb[8],s=0; double xx[8]={0.5,0.7,0.9,1.1,1.3,1.5,1.7,1.9}; double yy[8]={0.4794,0.6442,0.7833,0.8912,0.9636,0.9975,0.9917,0.9463}; double g[8]; int i; double a[8],c[8],h[8]; cout<<"Please input p0 and pn"<>p0;cin>>pn; for(i=0;i<=n-1;i++) { h[i]=xx[i+1]-xx[i]; c out<<"h["<

数学实验

1、设A=??? ? ??5241,则det(A)= -3 , rank(A)= 2 . 2、设A=??? ? ??4321,则A 3= [37, 54;81, 118] , A.^3= [1, 8;27 ,64] . 3、在matlab 中输入等差数组x (首项为7,尾项为1,公差为2)的命令是 a=7:-2:1 linspace(7,1,4) . 4、在matlab 中,查询函数log 的详细说明,可输入命令 help log . 5、在matlab 中,用于画空间曲面的命令是 mesh 或 surf . 6、设A=??? ? ??5421,则size(A)= 2 2 , inv(A)= -1.6667 0.6667 1.3333 -0.3333 . 7、设A=??? ? ??5421,则A 2= 9 12 24 33 , A.^2= 1 4 16 25 . 8、在matlab 中输入等差数组x (首项为1,尾项为7,公差为2)的命令是 a=1:2:7 . 9、在matlab 中,查询函数sqrt 的详细说明,可输入命令 help sqrt . 10、在matlab 中,用于画平面曲线的命令是 plot . 二、简答 11. 设1010)(?=j i a A 和1010)(?=j i b B 是两个10行10列的矩阵(数组),试说明命 令A*B, A\B, A .*(B.^A), A ./B, A .\B 的涵义 A*B A 矩阵和B 矩阵作乘法运算 A\B A 左除B A .*(B.^A) A 点乘 B 的A 次幂 A ./ B A 点右除B ,也就是A 乘以B 的逆矩阵,即 A B -1 A .\ B A 点左除B ,也就是A 的逆矩阵乘以矩阵B ,即A -1B 12. (1) 写出关系运算符中的等号、不等号、小于号、大于号、小于等于号和大 于等于号; 等号==、不等号~=、小于号<、大于号>、小于等于号<=、大于等于号>=

线性插值法计算公式解析

线性插值法计算公式解析 LELE was finally revised on the morning of December 16, 2020

线性插值法计算公式解析 2011年招标师考试实务真题第16题:某机电产品国际招标项目采用综合评价法评标。评标办法规定,产能指标评标总分值为10分,产能在100吨/日以上的为10分,80吨/日的为5分,60吨/日以下的为0分,中间产能按插值法计算分值。某投标人产能为95吨/日,应得()分。A. B.8.75 C. D. 分析:该题的考点属线性插值法又称为直线内插法,是评标办法的一种,很多学员无法理解公式含义,只能靠死记硬背,造成的结果是很快会遗忘,无法应对考试和工作中遇到的问题,对此本人从理论上进行推导,希望对学员有所帮助。 一、线性插值法两种图形及适用情形 F F F2

图一:适用于某项指标越低得分越高的项目 评分计算,如投标报价得分的计算 图二:适用于某项投标因素指标越高,得分越高的 情形,如生产效率等 二、公式推导 对于这个插值法,如何计算和运用呢,我个人认为考生在考试时先试着画一下上面的图,只有图出来了,根据三角函数定义,tana=角的对边比上邻边,从图上可以看出,∠A是始终保持不变的,因此,根据三角函数tana,我们可以得出这样的公式

图一:tana=(F1-F2)/(D2-D1)=(F-F2)/(D2-D)=(F1-F)/(D-D1),通过这个公式,我们可以进行多种推算,得出最终公式如下 F=F2+(F1-F2)*(D2-D)/ (D2-D1) 或者F= F1-(F1-F2)*(D-D1)/(D2-D1) 图二:tana=(F1-F2)/(D2-D1)=(F-F2)/ (D-D1)=(F1-F) /(D2-D) 通过这个公式我们不难得出公式: F= F2+(F1-F2)*(D-D1)/(D2-D1) 或者F=F1-(F1-F2)*(D2-D)/(D2-D1) 三:例题解析 例题一:某招标文件规定有效投标报价最高的得30分,有效投标报价最低的得60分,投标人的报价得分用线性插值法计算,在评审中,评委发现有效的最高报价为300万元,有效最低的报价为240万元,某A企业的有效投标报价为280万元,问他的价格得分为多少 分析,该题属于图一的适用情形,套用公式 计算步骤:F=60+(30-60)/(300-240)*(280-240)=40 例题二:某招标文件规定,水泵工作效率85%的3分,95%的8分,某投标人的水泵工作效率为92%,问工作效率指标得多少分

实验3 插值方法

0实验3 Matlab编程实现Lagrange插值算法 复习: 1、输出一个正整数,求该正整数的阶乘。 函数参考: 2、编写函数实现对任意输入一个向量的排序(向量里的元素从小到大)函数参考:

Lagrange 插值算法 一、理论知识: 1、线性插值 101001011)(y x x x x y x x x x x L ???? ??--+???? ??--= 2、二次插值 2211002)()()()(y x l y x l y x l x L ++= ))(() )(()(2010210x x x x x x x x x l ----= ,) )(())(()(2101201x x x x x x x x x l ----=, ))(())(()(1202102x x x x x x x x x l ----= 3、n 次Lagrange 插值 ∑==+++=n k k k n n n y x l y x l y x l y x l x L 01100)()()()()( ) ())(())(() ())(())(()(111111n k k k k k k o k n k k o k x x x x x x x x x x x x x x x x x x x x x l ----------= +-+- ∑∏=≠=???? ? ?????--=n k k n k j j j k j n y x x x x x L 00)()()( 二、实验题目: 1、 已知11=,24=,39=,用线性和二次插值求5的近似值。 线性插值 你选择的节点是: 你的程序: 插值结果:

计算方法-插值方法实验

实验一插值方法 一. 实验目的 (1)熟悉数值插值方法的基本思想,解决某些实际插值问题,加深对数值插值方法 的理解。 (2)熟悉Matlab 编程环境,利用Matlab 实现具体的插值算法,并进行可视化显示。 二. 实验要求 用Matlab 软件实现Lagrange 插值、分段线性插值、三次Hermite 插值、Aitken 逐步插值算法,并用实例在计算机上计算和作图。 三. 实验内容 1. 实验题目 (1 ) 已 知概 率积 分dx e y x x ?-= 2 2 π 的数据表 构造适合该数据表的一次、二次和三次Lagrange 插值公式,输出公式及其图形,并计算x =0.472时的积分值。 答: ①一次插值公式: 输入下面内容就可以得到一次插值结果 >> X=[0.47,0.48];Y=[0.4937452,0.5027498]; >> x=0.472; >> (x-X(2))/(X(1)-X(2))*Y(1)+(x-X(1))/(X(2)-X(1))*Y(2) ans =0.495546120000000 >> ②两次插值公式为: 输入下面内容就可以得到两次插值结果 >> X=[0.46,0.47,0.48];Y=[0.4846555,0.4937452,0.5027498]; >> x=0.472; >>(x-X(2))*(x-X(3))/((X(1)-X(2))*(X(1)-X(3)))*Y(1)+(x-X(1))*(x-X(3))/((X(2)-X(1))*(X(2)-X(3)))*Y(2)+(x-X(2))*(x-X(1))/((X(3)-X(2))*(X(3)-X(1)))*Y(3) i 0 1 2 3 x 0.46 047 0.48 0.49 y 0.4846555 0.4937452 0.5027498 0.5116683

实验5 插值方法

实验5 插值方法 一、实验目的及意义 [1] 了解插值的基本原理 [2] 了解拉格朗日插值、线性插值、样条插值的基本思想; [3] 了解三种网格节点数据的插值方法的基本思想; [4] 掌握用MATLAB 计算三种一维插值和两种二维插值的方法; [5] 通过范例展现求解实际问题的初步建模过程; 通过自己动手作实验学习如何用插值方法解决实际问题,提高探索和解决问题的能力。通过撰写实验报告,促使自己提炼思想,按逻辑顺序进行整理,并以他人能领会的方式表达自己思想形成的过程和理由。提高写作、文字处理、排版等方面的能力。二、实验内 容 1.编写拉格朗日插值方法的函数M 文件;2.用三种插值方法对已知函数进行插值计算,通过数值和图形输出,比较它们的效果;3.针对实际问题,试建立数学模型,并求解。 三、实验步骤 1.开启软件平台——MATLAB ,开启MATLAB 编辑窗口; 2.根据各种数值解法步骤编写M 文件 3.保存文件并运行; 4.观察运行结果(数值或图形); 5.写出实验报告,并浅谈学习心得体会。 四、实验要求与任务 根据实验内容和步骤,完成以下具体实验,要求写出实验报告(实验目的→问题→数学模型→算法与编程→计算结果→分析、检验和结论→心得体会) 基础实验 1. 一维插值 利用以下一些具体函数,考察分段线性插值、三次样条插值和拉格朗日多项式插值等三种插值方法的差异。 1) 2 11 x +,x ∈[-5,5]; 2)sin x , x ∈[0,2π]; 3)cos 10 x , x ∈[0,2π]. 注意:适当选取节点及插值点的个数;比较时可以采用插值点的函数值与真实函数值的 差异,或采用两个函数之间的某种距离。 2.高维插值 对于二维插值的几种方法:最邻近插值、分片线性插值、双线性插值、三次插值等,利用如下函数进行插值计算,观察其插值效果变化,得出什么结论? 1) ())(sin ),(px t t x f -=ω,参数p =1/2000~1/200;采样步长为:t =4ms~4s ;

数学实验-实验2 插值与拟合

广州大学学生实验报告 开课学院及实验室: 2014年 月 日 学院 数学与信息科学学院 年级、专业、班 姓名 学号 实验课程名称 数学实验 成绩 实验项目名称 实验2 插值与拟合 指导老师 一、实验目的 1、掌握用MATLAB 计算拉格朗日、分段线性、三次样条三种插值的方法,改变节点的数目,对三种插值结果进行初步分析。 2、掌握用MATLAB 作线性最小二乘拟合的方法。 3、通过实例学习如何用插值方法与拟合方法解决实际问题,注意二者的联系和区别。 二、实验设备 电脑、MATLAB 三、实验要求 1..选择一些函数,在n 个节点上(n )不要太大,如5~11)用拉格朗日,分段线性,三次样条三种插值方法,,计算m 各插值点的函数值(m 要适中,如50~100).通过数值和图形的输出,将三种插值结果与精确值进行比较.适当增加n ,再作比较,由此作初步分析.下列函数供选择参考: a. y=sin x ,0≦x ≦2π; 2.用 1 2 y x =在x=0,1,4,9,16产生5个节点15,...,P P .用不同的节点构造插值公式来计算x=5处的插值(如用 15,...,P P ;14,...,P P ;24,...,P P 等)与精确值比较进行分析。 5.对于实验1中的录像机计数器,自己实测一组数据(或利用给出的数据),确定模型2 t an bn =+中的系数a,b. 6.用电压V=10伏的电池给电容器充电,电容器上t 时刻的电压为 0()()t v t V V V e -τ =--,其中 0V 是电容器的初始 电压,τ是充电常数。试由下面一组t ,V 数据确定0V 和τ. t/s 0.5 1 2 3 4 5 7 9 V/V 6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63 8. 弹簧在力F 的作用下伸长x ,一定范围内服从胡克定律:F 与x 成正比,即F=kx,k 为弹性系数.现在得到下面一组x ,F 数据,并在(x,F )坐标下作图(图13).可以看出,当F大到一定数值(如x=9以后)后,就不服从这个定律了。试由数据拟合直线F=kx,并给出不服从胡克定律时的近似公式(曲线)。 1)要求直线与曲线在x=9处相连接。 2)要求直线与曲线在x=9处光滑连接. 四、实验程序 预备: function y=lagr1(x0,y0,x) n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=s+p*y0(k); end y(i)=s; end 五、实验操作过程 当n=5时 clear; n=5; %在n 个节点上进行插值 m=75; %产生m 个插值点,计算函数在插值点处的精确值,将来进行对比 x=0:4/(m-1):2*pi; y=sin(x); z=0*x; x0=0:4/(n-1):2*pi; y0=sin(x0); y1=lagr1(x0,y0,x); % y1为拉格朗日插值 y2=interp1(x0,y0,x); % y2为分段线性插值 y3=spline(x0,y0,x); % y3为三次样条插值 [x' y' y1' y2' y3'] plot(x,z,'k',x,y,'r:',x,y1,'g-.',x,y2,'b',x,y3,'y--') gtext('Lagr.'), gtext('Pieces. linear'), gtext('Spline'), gtext('y=sin(x)') hold off; %比较插值所得结果与函数在插值点处的精确值 s = ' x y y1 y2 y3' [x' y' y1' y2' y3'] 结果 ans = 0 0 0 0 0 0.0541 0.0540 0.0495 0.0455 0.0611 0.1081 0.1079 0.0999 0.0910 0.1207 0.1622 0.1615 0.1510 0.1365 0.1787 0.2162 0.2145 0.2025 0.1819 0.2350 0.2703 0.2670 0.2541 0.2274 0.2896 0.3243 0.3187 0.3054 0.2729 0.3425 0.3784 0.3694 0.3563 0.3184 0.3936 0.4324 0.4191 0.4066 0.3639 0.4429 0.4865 0.4675 0.4559 0.4094 0.4904 0.5405 0.5146 0.5040 0.4548 0.5359 0.5946 0.5602 0.5508 0.5003 0.5796 0.6486 0.6041 0.5961 0.5458 0.6212 0.7027 0.6463 0.6396 0.5913 0.6609 0.7568 0.6866 0.6812 0.6368 0.6985 0.8108 0.7248 0.7208 0.6823 0.7341 0.8649 0.7610 0.7583 0.7278 0.7675

计算方法实验报告 插值

实验名称:插值计算 1引言 在生产和科研中出现的函数是多种多样的。常常会遇到这样的情况:在某个实际问题中,虽然可以断定所考虑的函数f(x)在区间[a,b]上存在且连续,但却难以找到它的解析表达式,只能通过实验和观测得到在有限个点上的函数值。用这张函数表来直接求出其他点的函数值是非常困难的,在有些情况下,虽然可以写出f(x)的解析表达式,但由于结构十分复杂,使用起来很不方便。面对这些情况,构造函数P(x)作为f(x)的近似,插值法是解决此类问题比较古老却目前常用的方法,不仅直接广泛地应用与生产实际和科学研究中,而且是进一步学习数值计算方法的基础。 设函数y=f(x)在区间[a,b]上连续,且在n+1个不同的点a≤x0,x1……,xn≤b上分别取值y0,y1……,yn. 插值的目的就是要在一个性质优良、便于计算的函数φ中,求一简单函数P(x),使P(xi)=yi(i=0,1…,n)而在其他点x≠xi上,作为f(x)的近似。 通常,称区间[a,b]为插值区间,称点x0,x1,…,xn为插值节点,上式为插值条件,称函数类φ为插值函数类,称P(x)为函数f(x)在节点x0,x1,…,xn处的插值函数,求插值函数P(x)的方法称为插值法。 2实验目的和要求 用matlab定义分段线性插值函数、分段二次插值函数、拉格朗日插值函数,输入所给函 数表,并利用计算机选择在插值计算中所需的节点,计算f(0.15),f(0.31),f(0.47)的近似值。

3算法描述 1.分段线性插值流程图

2.分段二次插值流程图

3.拉格朗日插值流程图

4程序代码及注释 1.分段线性插值

第二章 函数的插值

第二章函数的 插值 学习目标:掌握多项式插值的Lagrange插值公式、牛顿插值公式等,等距节点插值、差分、差商、重节点差商与埃米特插值。重点是多项式插值方法。

§2.1 多项式插值 一、插值问题的基本概念: 设有函数 ,只知道它在n+1个不同的点 上的函数值,y 是另外一点。 不知道,如何求它的近似值?插值就是一种办法,它的思想是:找一个简单的已知解析表达式的函数 ,使得 (1) 并且 容易计算,我们就用 来代替 。 )(x f 121,,,+n x x x )(y f )(x p , 1,,2,1),()(+==n i x f x p i i )(y p )(y p )(y f 称为插值函数, 称为被插值函数, 称为节点或结点。如果限制 为n 次多项式,那么上述问题称为多项式插值, 称为 的n 次插值多项式。 )(x p )(x f 1 21,,,+n x x x )(x p )(x p )(x f 本节主要介绍插值问题的基本概念、方法和理论。

对于多项式插值,我们主要讨论以下几个问题: 插值问题是否可解,如果有解,解是否唯一? 插值多项式的常用构造方法有哪些? 插值函数逼近的误差如何估计,即截断误差的估计; 当插值节点无限加密时,插值函数是否收敛于 。 本节主要讨论前三个问题。 二、多项式插值的方法 令 是n 次多项式: (1) 考察(1)式,就有方程组: (2) n n n k k k x a x a a x a x p +++==∑= 100 )(1,,2,1,0 +==∑=n i f x a i n k k i k )(x p )(x f

ok数学实验+插值方法

数学实验插值方法导言 【请选择合适的字体阅读:小大】 作者:张建生改… 文章来源:本站原创点击数:530 更新时间:2006-12-4 在工程实践和科学实验中,常常需要从一组实验观测数据 (x i,y i), i=0,1,…,n,... 揭示出自变量x与因变量y之间的关系. 一般可以用一个近似的函数关系式y=f(x)来处理这一问题。给出函数关系式的方法,因观测数据与要求的不同而异,通常可以采用两种方法:曲线拟合和插值。 拟合主要是考虑到观测数据受随机误差的影响,寻求整体误差最小、较好地反映观测数据的近似函数,并不保证或追求所得到的函数一定满足y i=f(x i)。侧重于从整体上把握问题,拟合的方法将在下一章讨论。 插值则要求函数在每个观测点处一定要满足y i=f(x i).,本章主要介绍插值方法。 插值函数一般是已知函数的线性组合或者称为加权平均。插值在工程实践和科学实验中有着非常广泛而又十分重要的应用。例如,信息技术中的图像重建、图像放大中为避免图像的扭曲失真的而做的插值补点、建筑工程的外观设计、物理、化学工程实验数据与模型的分析、天文观测数据、地理信息数据的处理(如天气预报)以及社会经济现象的统计分析等等。 本章主要介绍插值的思想、方法和技术;如何利用MATLAB软件作插值计算;针对实际问题,进行建模、求解与分析;最后给出实验题目。 数学实验插值方法引例 【请选择合适的字体阅读:小大】 作者:张建生改… 文章来源:本站原创点击数:769 更新时间:2006-12-4 4.2.1 引例1:函数查表问题 标准正态分布函数值Φ(2.3456789)等于多少? 一般是通过查表的方法.先对自变量作近似,2.3456789≈2.35,再查表得到Φ(2.35)=0.99061,所以(2.3456789)≈Φ(2.35)=0.99061. 在对精度要求较高时,这种处理方法可能受到质疑,2.3456789介于2.34与2.35之间,不适于用 Φ(2.35)作为近似值吗.于是改进,函数值取二者的中点,即 Φ(2.3456789)≈[(Φ(2.34)+Φ(2.35))]/2=0.990485

matlab数学实验练习题

Matlab 数学实验 实验一 插值与拟合 实验内容: 预备知识:编制计算拉格朗日插值的M 文件。 1. 选择一些函数,在n 个节点上(n 不要太大,如5 ~ 11)用拉格朗日、分段线性、三次样条三种插值方法,计算m 个插值点的函数值(m 要适中,如50~100)。通过数值和图形输出,将三种插值结果与精确值进行比较。适当增加n ,再做比较,由此作初步分析。下列函数任选一种。 (1)、 ;20,sin π≤≤=x x y (2)、;11,)1(2/12≤≤--=x x y (3)、;22,cos 10≤≤-=x x y (4)、22),ex p(2≤≤--=x x y 2.用电压V=10伏的电池给电容器充电,电容器上t 时刻的电压为 ) (0)()(τt e V V V t v ---=,其中0V 是电容器的初始电压,τ是充电常数。试由下面 一组t ,V 数据确定0V 和τ。 实验二 常微分方程数值解试验 实验目的: 1. 用MATLAB 软件求解微分方程,掌握Euler 方法和龙格-库塔方法; 2. 掌握用微分方程模型解决简化的实际问题。 实验内容: 实验三 地图问题 1. 下图是一个国家的地图,为了计算出它的国土面积,首先对地图作如下测量:以由西向东方向为x 轴,由南到北方向为y 轴,选择方便的原点,并将从最西边界点到最东边界点在x 轴上的区间适当地划分为若干段,在每个分点的y 方向测出南边界点和北边界点的y 坐标y1和y2,这样就得到了表中的数据(单位mm )。

根据地图的比例我们知道18mm相当于40km,试由测量数据计算该国土 2 实验四狼追兔问题 狼猎兔问题是欧洲文艺复兴时代的著名人物达.芬奇提出的一个数学问题。当一个兔子正在它的洞穴南面60码处觅食时,一只恶狼出现在兔子正东的100码处。当两只动物同时发现对方以后,兔子奔向自己的洞穴,狼以快于兔子一倍的速度紧追兔子不放。狼在追赶过程中所形成的轨迹就是追击曲线。狼是否会在兔子跑回洞穴之前追赶上兔子? 为了研究狼是否能够追上兔子,可以先考虑求出狼追兔子形成的追击曲线,然后根据曲线来确定狼是否能够追上兔子。 试验五:开放式基金的投资问题 某开放式基金现有总额为15亿元的资金可用于投资,目前共有8个项目可供投资者选择。每个项目可以重复投资,根据专家经验,对每个项目投资总额不能太高,且有个上限。这些项目所需要的投资额已经知道,在一般情况下,投资一年后各项目所得利润也可估计出来(见表一), 表一: 投资项目所需资金及预计一年后所得利润(单位:万元)

数值计算方法实验报告

差值法实验日志 实验题目:插值法 实验目的: 1.掌握拉格朗日插值、牛顿插值、分段低次插值和样条插值的方法。 2.对四种插值结果进行初步分析。 实验要求: (1)写出算法设计思想; (2)程序清单; (3)运行的结果; (4)所得图形; (5)四种插值的比较; (6)对运行情况所作的分析以及本次调试程序所取的经验。如果程序未通过,应分析其原因。 实验主要步骤: 1.已知函数) f满足: (x x0.0 0.1 0.195 0.3 0.401 0.5 f(0.39894 0.39695 0.39142 0.38138 0.36812 x ) 0.35206 (1)用分段线性插值; 打开MATLAB,按以下程序输入: x0=-5:5; y0=1./(1+x0.^2); x=-5:0.1:5; y=1./(1+x.^2); y1=lagr(x0,y0,x); y2=interp1(x0,y0,x); y3=spline(x0,y0,x);

for k=1:11 xx(k)=x(46+5*k); yy(k)=y(46+5*k); yy1(k)=y1(46+5*k); yy2(k)=y2(46+5*k); yy3(k)=y3(46+5*k); end [xx;yy;yy2;yy3]' z=0*x; plot(x,z,x,y,'k--',x,y2,'r') plot(x,z,x,y,'k--',x,y1,'r') pause plot(x,z,x,y,'k--',x,y3,'r') 回车得以下图形:

(2) 拉格朗日插值。 创建M 文件,建立lagr 函数: function y=lagr1(x0,y0,x) n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s; end 新建一个M 文件,输入: x0=[0.0 0.1 0.195 0.3 0.401 0.5]; y0=[0.39894 0.39695 0.39142 0.38138 0.36812 0.35206]; x=0.0:0.01:0.5; y1=lagr1(x0,y0,x); 00.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

计算方法实验一

江苏科技大学 电子信息学院 实验报告 实验名称:插值方法 学号:姓名:班级: 完成日期:2014年10月20日

实验一 插值方法 一、实验目的及意义 [1] 了解插值的基本原理 [2] 了解拉格朗日插值、线性插值、样条插值的基本思想; [3] 了解三种网格节点数据的插值方法的基本思想; [4] 掌握用MATLAB 计算三种一维插值和两种二维插值的方法; [5] 通过范例展现求解实际问题的初步建模过程; 通过自己动手作实验学习如何用插值方法解决实际问题,提高探索和解决问题的能力。通过撰写实验报告,促使自己提炼思想,按逻辑顺序进行整理,并以他人能领会的方式表达自己思想形成的过程和理由。提高写作、文字处理、排版等方面的能力。 二、实验内容 1.用MATLAB 或Visual C++实现拉格朗日插值方法;2.用三种插值方法对已知函数进行插值计算,通过数值和图形输出,比较它们的效果;3.针对实际问题,试建立数学模型, 并求解。 三、实验步骤 1.开启软件平台——MATLAB 或Visual C++,开启其编辑窗口; 2.根据各种数值解法步骤编写成代码文件; 3.保存文件并运行; 4.观察运行结果(数值或图形); 5.写出实验报告,并浅谈学习心得体会。 四、实验要求与任务 根据实验内容和步骤,完成以下具体实验,要求写出实验报告(实验目的→问题→数学模型→算法与编程→计算结果→分析、检验和结论→心得体会) 基础实验 1. 一维插值 利用以下一些具体函数,考察分段线性插值、三次样条插值和拉格朗日多项式插值等三种插值方法的差异。 1) 2 11 x +,x ∈[-5,5]; 2)sin x , x ∈[0,2π]; 3)cos 10 x , x ∈[0,2π]. 注意:适当选取节点及插值点的个数;比较时可以采用插值点的函数值与真实函数值的 差异,或采用两个函数之间的某种距离。 附上你的源代码和比较结果。

实习:Matlab作业hermite插值

题目:利用Matlab实现数据的Hermite插值和分段三次Hermite插值 小组成员:王晓波(38) 蔡明宇(20) 一、程序实现意义: 一般的,从各种试验得来的数据总有一定的数量,而利用插值技术能够从有限的数据中获取整体的状态。而Hermite插值不仅保证了插值函数与原函数在给定数据点处得拟合,同时保证了在相应点处导数的相同,从而在很大程度上保证了曲线的“光滑性”。因此,通过Matlab实现Hermite插值具有很普遍的意义。 二、实现过程: 1、Hermite插值 由于并不是所有的Matlab版本都提供现有的Hermite插值函数包,故我们首先编写了实现给定五个观测点的Hermite插值的M程序,代码如下: function [f,f0] = Hermite1(x,y,y_1) syms t; f = ; ! if(length(x) == length(y)) if(length(y) == length(y_1)) n = length(x); else disp('y和y的导数的维数不相等'); return; end else disp('x和y的维数不相等! '); return; end * for i=1:n h = ; a = ; for j=1:n if( j ~= i) h = h*(t-x(j))^2/((x(i)-x(j))^2); a = a + 1/(x(i)-x(j)); end end

f = f + h*((x(i)-t)*(2*a*y(i)-y_1(i))+y(i)); < end f0 = subs(f,'t'); 其中x为给定点横坐标数组,y为给定点纵坐标数组,y_1为原函数在给定点处的导数数组。测试证明该程序可以实现,例如输入如下数组: x=1::; y_1=[ ]; y=[1 ]; >> [f,f0] = Hermite1(x,y,y_1); 运行结果如下: f = $ (390625*((3972231*t)/35 - 28321/0000)*(t - 1)^2*(t - 7/5)^2*(t - 8/5)^2*(t - 9/5)^2)/36 - (390625*(t - 1)^2*(t - 6/5)^2*(t - 7/5)^2*(t - 9/5)^2*((28557*t)/28 - 23/2000))/36 + (390625*((64*t)/3 - 61/3)*(t - 6/5)^2*(t - 7/5)^2*(t - 8/5)^2*(t - 9/5)^2)/576 + (390625*((763*t)/1984 + 043/6240000)*(t - 1)^2*(t - 6/5)^2*(t - 8/5)^2*(t - 9/5)^2)/16 - (390625*((77623*t)/28 - 931/60000)*(t - 1)^2*(t - 6/5)^2*(t - 7/5)^2*(t - 8/5)^2)/576 f0 = . 利用matlab绘制图像:

数值分析拉格朗日插值法上机实验报告

课题一:拉格朗日插值法 1.实验目的 1.学习和掌握拉格朗日插值多项式。 2.运用拉格朗日插值多项式进行计算。 2.实验过程 作出插值点(,),(,),(,) 二、算法步骤 已知:某些点的坐标以及点数。 ( 输入:条件点数以及这些点的坐标。 输出:根据给定的点求出其对应的拉格朗日插值多项式的值。 3.程序流程: (1)输入已知点的个数; (2)分别输入已知点的X坐标; (3)分别输入已知点的Y坐标; 程序如下: #include #include <> #include <> float lagrange(float *x,float *y,float xx,int n) /*拉格朗日

插值算法*/ 《 { int i,j; float *a,yy=; /*a作为临时变量,记录拉格朗日插值多项*/ a=(float*)malloc(n*sizeof(float)); for(i=0;i<=n-1;i++) { a[i]=y[i]; for(j=0;j<=n-1;j++) if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]); yy+=a[i]; } free(a); $ return yy; } int main() { int i; int n; float x[20],y[20],xx,yy;

printf("Input n:"); scanf("%d",&n); if(n<=0) { ( printf("Error! The value of n must in (0,20)."); getch();return 1; } for(i=0;i<=n-1;i++) { printf("x[%d]:",i); scanf("%f",&x[i]); } printf("\n"); for(i=0;i<=n-1;i++) { printf("y[%d]:",i);scanf("%f",&y[i]); } printf("\n"); printf("Input xx:"); ( scanf("%f",&xx); yy=lagrange(x,y,xx,n); printf("x=%f,y=%f\n",xx,yy); getch();

Matlab插值实验

Matlab插值实验 一、实验目的 1.熟悉MATLAB的运行环境. 2.学会使用MATLAB作图. 3.学会使用MATLAB编程. 二、实验内容 实验一:几何物理中的插值问题 1. 轮船的甲板成近似半椭圆面形,为了得到甲板的面积。首先测量得到横向最大相间8.534米;然后等间距地测得纵向高度,自左向右分别为: 0.914, 5.060, 7.772, 8.717, 9.083, 9.144, 9.083, 8.992, 8.687, 7.376, 2.073, 计算甲板的面积。 2. 物体受水平方向外力作用,在水平直线上运动。测得位移与受力如下表 X0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 F 20 21 21 20 19 18.5 18.0 13.5 9 4.5 0 求 (1) 物体从位移为0到0.4所做的功;(2) 位移为0.4时的速度是多少? 3.火车行驶的距离(路程)﹑速度数据如下,计算从静止开始20 分钟内走过的路程。 t(分) 2 4 6 8 10 12 14 16 18 20 v(km/h) 10 18 25 29 32 20 11 5 2 0 4. 确定地球与金星之间的距离 天文学家在1914年8月份的7次观测中,测得地球与金星之间距离(单位:米),并取其常用对数值,与日期的一组历史数据如下表: 日期 (号) 18 20 22 24 26 28 30 距离对数9.961772 4 9.954364 5 9.946806 9 9.939095 9.931224 5 9.923191 5 9.914992 5 由此推断何时金星与地球的距离(米)的对数值为9.9351799? 实验二 1.山区地貌图 在某山区(平面区域(0,2800) (0,2400)内,单位:米)测得一些地点的高程(单位:米)如表4.12所示,试作出该山区的地貌图和等高线图。 表4.12 2400 2000 1600 1430 1450 1470 1320 1280 1200 1080 940 1450 1480 1500 1550 1510 1430 1300 1200 1460 1500 1550 1600 1550 1600 1600 1600

相关文档
最新文档