文档库 最新最全的文档下载
当前位置:文档库 › 牛顿插值法matlab程序

牛顿插值法matlab程序

牛顿插值法matlab程序
牛顿插值法matlab程序

《计算方法》数值实验报告

牛顿插值法原理及应用

牛顿插值法 插值法是利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值。如果这特定函数是多项式,就称它为插值多项式。当插值节点增减时全部插值基函数均要随之变化,这在实际计算中很不方便。为了克服这一缺点,提出了牛顿插值。牛顿插值通过求各阶差商,递推得到的一个公式: f(x)=f[x0]+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+...f[x0,...xn](x-x0 )...(x-xn-1)+Rn(x)。 插值函数 插值函数的概念及相关性质[1] 定义:设连续函数y-f(x) 在区间[a,b]上有定义,已知在n+1个互异的点 x0,x1,…xn上取值分别为y0,y1,…yn (设a≤ x1≤x2……≤xn≤b)。若在函数类中存在以简单函数P(x) ,使得P(xi)=yi,则称P(x) 为f(x)的插值函数. 称x1,x2,…xn 为插值节点,称[a,b]为插值区间。 定理:n次代数插值问题的解存在且唯一。

牛顿插值法C程序 程序框图#include void main() { float x[11],y[11][11],xx,temp,newton; int i,j,n; printf("Newton插值:\n请输入要运算的值:x="); scanf("%f",&xx); printf("请输入插值的次数(n<11):n="); scanf("%d",&n); printf("请输入%d组值:\n",n+1); for(i=0;i

牛顿插值法matlab程序解析

牛顿插值法在MATLAB 中的实现 经过n+1个不同的插值点12n+1,,x x x …,,构造牛顿插值公式 1211231212n+112n =[,]()[,,]()()[,,]()()()N f x x x x f x x x x x x x f x x x x x x x x x -+--++---(x )……… 注:牛顿插值法中,用到了插值公式 %我们以二次牛顿插值公式为例解析牛顿插值法的matlab 程序 function[c,d]=newpoly(x,y) %这里x 为3个节点的横坐标组成的向量,即()123,,x x x x =,y 为纵坐标的组成向量,即()()()()123,,y f x f x f x = %c 为所得的牛顿插值多项式的系数组成的向量 n=length(x); %测量向量x 的长度,即向量x 中元素i x 的个数,赋值给n ,所以n=3,注:这里的“n ”仅为变量,和公式中的次数n 不一样 d=zeros(n,n); d=zeros(3,3) %把变量d 定义为一个n 行,n 列的零矩阵,此矩阵用来储存各阶差商,格式完全等同于书中21页的表 d(:,1)=y ’; %此句是把向量y 的转置,即123()()()f x y f x f x ?? ?= ? ?? ?,赋值给零矩阵d 的第一列 %下面运用两个for 循环来构造书中21页的差商表 %第一个循环(父循环),循环变量为k for k=2:n %用来表示零矩阵d 中的第几行 %第二个循环(父循环),循环变量为k for j=k:n %用来表示零矩阵d 中的第几列 d(k,j)=(d(k,j-1)-d(k-1,j-1))/(x(k)-x(k-j+1)); %差商公式,其中d(k,j)表示零矩阵d 中的第k 行,第j 列的元素,d(k,j-1),d(k-1,j-1)等也类似,它们代表的元素随着双循环而变化,x(k-1)表示1k x -,这种计算差商的方法是根据差商表的排列位置而得来,具体解释见下面。 end end %下面以二次牛顿插值公式为例解析双循环构造差商表,让我们先来看看构造好的差商表 121232312333 () () [,] ()[,][,,]X f x d f x f x x f x f x x f x x x ????=??????

matlab实现数值分析报告插值及积分

Matlab实现数值分析插值及积分 摘要: 数值分析(numerical analysis)是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科,是数学的一个分支,它以数字计算机求解数学问题的理论和方法为研究对象。在实际生产实践中,常常将实际问题转化为数学模型来解决,这个过程就是数学建模。学习数值分析这门课程可以让我们学到很多的数学建模方法。 分别运用matlab数学软件编程来解决插值问题和数值积分问题。题目中的要求是计算差值和积分,对于问题一,可以分别利用朗格朗日插值公式,牛顿插值公式,埃特金逐次线性插值公式来进行编程求解,具体matlab代码见正文。编程求解出来的结果为:=+。 其中Aitken插值计算的结果图如下: 对于问题二,可以分别利用复化梯形公式,复化的辛卜生公式,复化的柯特斯公式编写程序来进行求解,具体matlab代码见正文。编程求解出来的结果为: 0.6932 其中复化梯形公式计算的结果图如下:

问题重述 问题一:已知列表函数 表格 1 分别用拉格朗日,牛顿,埃特金插值方法计算。 问题二:用复化的梯形公式,复化的辛卜生公式,复化的柯特斯公式计算积分,使精度小于5。 问题解决 问题一:插值方法 对于问题一,用三种差值方法:拉格朗日,牛顿,埃特金差值方法来解决。 一、拉格朗日插值法: 拉格朗日插值多项式如下: 首先构造1+n 个插值节点n x x x ,,,10 上的n 插值基函数,对任一点i x 所对应的插值基函数 )(x l i ,由于在所有),,1,1,,1,0(n i i j x j +-=取零值,因此)(x l i 有因子 )())(()(110n i i x x x x x x x x ----+- 。又因)(x l i 是一个次数不超过n 的多项式,所以只 可能相差一个常数因子,固)(x l i 可表示成: )())(()()(110n i i i x x x x x x x x A x l ----=+- 利用1)(=i i x l 得:

MAAB牛顿插值法例题与程序

题目一:多项式插值 某气象观测站在8:00(AM )开始每隔10分钟对天气作如下观测,用三次多项式插值函数(Newton )逼近如下曲线,插值节点数据如上表,并求出9点30分该地区的温度(x=10)。 二、数学原理 假设有n+1个不同的节点及函数在节点上的值(x 0,y 0),……(x n ,y n ),插值多项式有如下形式: )() )(()()()(n 10n 102010n x -x )(x -x x -x x P x x x x x x -??-+??+-++=αααα(1) 其中系数i α(i=0,1,2……n )为特定系数,可由插值样条i i n y x P =) ((i=0,1,2……n )确定。 根据均差的定义,把x 看成[a,b]上的一点,可得 f(x)=f (0x )+f[10x x ,](0x -x ) f[x,0x ]=f[10x x ,]+f[x,10x x ,](1x -x ) …… f[x,0x ,…x 1-n ]=f[x,0x ,…x n ]+f[x,0x ,…x n ](x-x n ) 综合以上式子,把后一式代入前一式,可得到: f(x)=f[0x ]+f[10x x ,](0x -x )+f[210x x x ,,](0x -x )(1x -x )+ …+f[x,0x ,…x n ](0x -x )…(x-x 1-n )+f[x,0x ,…x n ,x ])(x 1n +ω=N n (x )+) (x n R 其中 N n (x )=f[0x ]+f[10x x ,](0x -x )+f[210x x x ,,](0x -x )(1x -x )+ …+f[x,0x ,…x n ](0x -x )…(x-x 1-n )(2) )(x n R =f(x)-N n (x )=f[x,0x ,…x n ,x ]) (x 1n +ω(3) ) (x 1n +ω=(0x -x )…(x-x n ) Newton 插值的系数i α(i=0,1,2……n )可以用差商表示。一般有 f k =α[k 10x x x ??,](k=0,1,2,……,n )(4)

拉格朗日插值、牛顿插值的matlab代码

实验五多项式插值逼近 信息与计算科学金融崔振威201002034031 一、实验目的: 拉格朗日插值和牛顿插值的数值实现 二、实验内容:p171.1、p178.1、龙格现象数值实现 三、实验要求: 1、根据所给题目构造相应的插值多项式, 2、编程实现两类插值多项式的计算 3、试分析多项式插值造成龙格现象的原因 主程序 1、拉格朗日 function [c,l]=lagran(x,y) %c为多项式函数输出的系数 %l为矩阵的系数多项式 %x为横坐标上的坐标向量 %y为纵坐标上的坐标向量 w=length(x); n=w-1; l=zeros(w,w); for k=1:n+1 v=1; for j=1:n+1 if k~=j v=conv(v,poly(x(j)))/(x(k)-x(j)) %对多项式做卷积运算end end l(k,:)=v; end c=y*l; 牛顿插值多项式主程序 function [p2,z]=newTon(x,y,t) %输入参数中x,y为元素个数相等的向量 %t为插入的定点 %p2为所求得的牛顿插值多项式 %z为利用多项式所得的t的函数值。 n=length(x); chaS(1)=y(1); for i=2:n x1=x;y1=y; x1(i+1:n)=[];

y1(i+1:n)=[]; n1=length(x1); s1=0; for j=1:n1 t1=1; for k=1:n1 if k==j %如果相等则跳出循环 continue; else t1=t1*(x1(j)-x1(k)); end end s1=s1+y1(j)/t1; end chaS(i)=s1; end b(1,:)=[zeros(1,n-1) chaS(1)]; cl=cell(1,n-1); %cell定义了一个矩阵 for i=2:n u1=1; for j=1:i-1 u1=conv(u1,[1 -x(j)]); %conv()用于多项式乘法、矩阵乘法 cl{i-1}=u1; end cl{i-1}=chaS(i)*cl{i-1}; b(i,:)=[zeros(1,n-i),cl{i-1}]; end p2=b(1,:); for j=2:n p2=p2+b(j,:); end if length(t)==1 rm=0; for i=1:n rm=rm+p2(i)*t^(n-i); end z=rm; else k1=length(t); rm=zeros(1,k1); for j=1:k1 for i=1:n rm(j)=rm(j)+p2(i)*t(j)^(n-i); end

牛顿插值MATLAB算法

MATLAB程序设计期中作业 ——编程实现牛顿插值 成员:刘川(P091712797)签名_____ 汤意(P091712817)签名_____ 王功贺(P091712799)签名_____ 班级:2009信息与计算科学 学院:数学与计算机科学学院 日期:2012年05月02日

牛顿插值的算法描述及程序实现 一:问题说明 在我们的实际应用中,通常需要解决这样的问题,通过一些已知的点及其对应的值,去估算另外一些点的值,这些数据之间近似服从一定的规律,于是,这就引入了插值法的思想。 插值法是利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值。如果这特定函数是多项式,就称它为插值多项式。利用插值基函数很容易得到拉格朗日插值多项式,公式结构紧凑,在理论分析中甚为方便,但当插值节点增减时全部插值基函数均要随之变化,整个公式也将发生变化,这在实际计算中是很不方便的,为了克服这一缺点,提出了牛顿插值。 二:算法分析 newton 插值多项式的表达式如下: 010011()()()()()n n n N x c c x x c x x x x x x -=+-+???+--???- 其中每一项的系数c i 的表达式如下: 12011010 [,,,][,,,] [,,,]i i i i i f x x x f x x x c f x x x x x -???-???=???= - 即为f (x)在点01,,,i x x x ???处的i 阶差商,([]()i i f x f x =,1,2,,i n = ),由差商01[,,,]i f x x x ???的性质可知: () 010 1 [,,,]()i i i j j k j k k j f x x x f x x x ==≠???=-∑∏ 牛顿插值的程序实现方法: 第一步:计算[][][][]001012012,,,,,,,n f x f x x f x x x f x x x x 、、、 、。 第二步:计算牛顿插值多项式中01[,,,]i f x x x ???011()()()i x x x x x x ---???-,1,2,,i n = ,得到n 个多项式。

牛顿插值法的MATLAB综合程序

6.3.5 牛顿插值法的MATLAB 综合程序 求牛顿插值多项式、差商、插值及其误差估计的MATLAB 主程序 function [y,R,A,C,L]=newdscg(X,Y,x,M) n=length(X); m=length(x); for t=1:m z=x(t); A=zeros(n,n);A(:,1)=Y'; s=0.0; p=1.0; q1=1.0; c1=1.0; for j=2:n for i=j:n A(i,j)=(A(i,j-1)- A(i-1,j-1))/(X(i)-X(i-j+1)); end q1=abs(q1*(z-X(j-1)));c1=c1*j; end C=A(n,n);q1=abs(q1*(z-X(n))); for k=(n-1):-1:1 C=conv(C,poly(X(k))); d=length(C);C(d)=C(d)+A(k,k); end y(k)= polyval(C, z); end R=M*q1/c1;L(k,:)=poly2sym(C); 例6.3.6 给出节点数据00.27)00.4(=-f ,00.1)00.0(=f ,00.2)00.1(=f ,00.17)00.2(=f ,作三阶牛顿插值多项式,计算)345.2(-f ,并估计其误差. 解 首先将名为newdscg.m 的程序保存为M 文件,然后在MATLAB 工作窗口输入程序 >> syms M,X=[-4,0,1,2]; Y =[27,1,2,17]; x=-2.345; [y,R,A,C,P]=newdscg(X,Y,x,M) 运行后输出插值y )345.2(-≈f 及其误差限公式R ,三阶牛顿插值多项式P 及其系数向量C ,差商的矩阵A 如下 y = 22.3211 R = 65133/562949953421312*M (即R =2.3503*M ) A= 27.0000 0 0 0 1.0000 -6.5000 0 0 2.0000 1.0000 1.5000 0 17.0000 15.0000 7.0000 0.9167 C = 0.9167 4.2500 -4.1667 1.0000 P = 11/12*x^3+17/4*x^2-25/6*x+1

matlab_牛顿插值法_三次样条插值法

(){} 2 1 ()(11),5,10,20: 1252 1()1,(0,1,2,,)()2,(0,1,2,,)() ()2 35,20:1100 (i i i i n n k k k Newton f x x n x f x x i i n f x n x y i n Newton N x S x n x k y f x = -≤≤=+=-+====-+ = 题目:插值多项式和三次样条插值多项式。已知对作、计算函数在点处的值;、求插值数据点 的插值多项式和三次样条插值多项式;、对计算和相应的函数值),()() (1,2,,99)4:()max ()()max ()n k n k n k n k n k n k k k N x S x k E N y N x E S y S x ==-=- 和; 、计算,; 解释你所得到的结果。 算法组织: 本题在算法上需要解决的问题主要是:求出第二问中的Newton 插值多项式 )(x N n 和三次样条插值多项式()n S x 。如此,则第三、四问则迎刃而解。计算两 种插值多项式的算法如下: 一、求Newton 插值多项式)(x N n ,算法组织如下: Newton 插值多项式的表达式如下: )())(()()(110010--???--+???+-+=n n n x x x x x x c x x c c x N 其中每一项的系数c i 的表达式如下: 1102110) ,,,(),,,(),,,(x x x x x f x x x f x x x f c i i i i i -???-???= ???=- 根据i c 以上公式,计算的步骤如下: ?? ??? ?? ?????+??????? ???????????----) ,,,,(1) ,,,(),,,,(),(,),,(2)(,),(),(11101111011010n n n n n n n n x x x x f n x x x f x x x f n x x f x x f x f x f x f 、计算、计算、计算、计算 二、求三次样条插值多项式)(x S n ,算法组织如下:

matlab计算拉格朗日牛顿及分段线性插值的程序

《工程常用算法》综合实践作业二 完成日期: 2013年 4月 14 日 班级 学号 姓名 主要工作说明 自评成绩 0718 2010071826 崔洪亮 算式与程序的编写 18 0718 2010071815 侯闰上 流程图的编辑,程序的审查 0718 2010071809 赵化川 报告的整理汇总 一.作业题目:三次样条插值与分段插值 已知飞机下轮廓线数据如下: x 3 5 7 9 11 12 13 14 15 y 0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6 飞机下轮廓线形状大致如下图所示: 要求分别用拉格朗日插值法、Newton 插值法、分段线性插值法和三次样条插值法计算x 每改变0.5时y 的值,即x 取 0.5, 1, 1.5, … , 14.5 时对应的y 值。比较采用不同方法的计算工作量、计算结果和优缺点。 二.程序流程图及图形 1.拉格朗日插值法 开始 x,y,x0 Length (x)==l Ength (y)? n=length (x) i=1:n,l=1。 j=1:i-1&j=i+1:n l=l.*(x0-x(j)/x(i)-x(j) f=f+l*y(i) 结束 否 是 机翼 下轮廓线

2.牛顿插值法 开始 x,y,xi Length(x)==l ength(y)? n=length(x)Y=zeros (n),Y (:1)=y,f=0 a=1:n-1,b=1:n-a,Y(b,a+1)=(Y (b+1,a)-Y(b,a))/(x (b+a)-x(b)) i=1:n,z=1 结束 j=1:i-1,z=z.*(xi-x(j)) f=f+Y(1,i)*z 否 是 3.分段线性插值法 开始 x ,y ,x0 length (x )==length(y)? k=1:n-1 x(k)<=x0&x0《=x(k+1) temp=x(k)-x(k+1) f=(x0-x(k+1))/temp*y(k)+(x0-x(k))/(-temp)*y(k+1) 结束 否否 是 是 三.matlab 程序及简要的注释(m 文件) 1.拉格朗日插值法 2.牛顿插值法 function f=newdun(x,y,xi) %x 为已知数据点的x 坐标向量 %y 为已知数据点的y 坐标向量 function f=lang(x,y,x0) %x 为已知数据点的x 坐标向量 %y 为已知数据点的y 坐标向量

均差牛顿插值MATLAB,M文件

%均差牛顿插值 function [ f y f0 ] = newton1( X,Y,x0 ) if nargin<3 error('Requires at least three input arguments.'); end if length(X)==length(Y) n=length(X); else error('length must equal') end syms x s=Y(1); l=1.0; y=zeros(n); y(1:n,1)=Y'; for i=2:n for j=2:i y(i,j)=(y(i,j-1)-y(j-1,j-1))/(X(i)-X(j-1)); if i==j l=l*(x-X(i-1)); s=s+y(i,i)*l; end end end f=simple(s); f0=subs(f,x0); function [ f f0 y] = newton2( X,Y,x0 ) if nargin<3 error('Requires at least three input arguments.'); end if length(X)==length(Y) n=length(X); else error('length must equal') end syms x s=Y(1); l=1.0; y=zeros(n) y(1:n,1)=Y'; for i=2:n for j=2:i y(i,j)=(y(i,j-1)-y(i-1,j-1))/(X(i)-X(i-j+1)); if i==j l=l*(x-X(i-1)); s=s+y(i,i)*l; end end end f=simple(s); f0=subs(f,x0);

插值MATLAB程序-数值分析

插值MATLAB程序(可以输出多项式)—数值分析 1.拉格朗日多项式逼近 function [C,L,y]=lagran(X,Y) %拉格朗日多项式逼近 w=length(X); L=zeros(w,w); for k=1:w V=1; for j=1:w if k~=j V=conv(V,poly(X(j)))/(X(k)-X(j)); end end L(k,:)=V; end C=Y*L; y=poly2sym(C,'x'); 2.牛顿插值多项式 function [C,D,y]=newpoly(X,Y) %牛顿插值多项式 n=length(X); D=zeros(n,n); D(:,1)=Y'; for j=2:n for k=j:n D(k,j)=(D(k,j-1)-D(k-1,j-1))/(X(k)-X(k-j+1)); end end C=D(n,n); for k=(n-1):-1:1 C=conv(C,poly(X(k))); m=length(C); C(m)=C(m)+D(k,k); end y=poly2sym(C,'x'); 3.切比雪夫逼近 function [C,X,Y]=cheby(fun,n,a,b) %切比雪夫逼近 if nargin==2 a=-1;b=1; end

d=pi/(2*n+2); C=zeros(1,n+1); for k=1:n+1 X(k)=cos((2*k-1)*d); end X=(b-a)*X/2+(a+b)/2; x=X; Y=eval(fun); for k=1:n+1 z=(2*k-1)*d; for j=1:n+1 C(j)=C(j)+Y(k)*cos((j-1)*z); end end C=2*C/(n+1); C(1)=C(1)/2;

MATLAB拉格郎日插值法与牛顿插值法构造插值多项式

姓名:樊元君学号:2012200902 日期:2012.10.25 1.实验目的: 掌握拉格郎日插值法与牛顿插值法构造插值多项式。 2.实验内容: 分别写出拉格郎日插值法与牛顿插值法的算法,编写程序上机调试出结果,要求所编程序适用于任何一组插值节点,即能解决这一类问题,而不是某一个问题。实验中以下列数据验证程序的正确性。 已知下列函数表 求x=0.5635时的函数值。

3.程序流程图: ●拉格朗日插值法流程图:

●牛顿插值法流程图:

4.源程序: ●拉格朗日插值法:function [] = LGLR(x,y,v) x=input('X数组=:'); y=input('Y数组='); v=input('插值点数值=:'); n=length(x); u=0; for k=1:n t=1; for j=1:n if j~=k t=t*(v-x(j))/(x(k)-x(j)); end end u=u+t*y(k); end disp('插值结果=');disp(u); end

●牛顿插值法: function [] = Newton(x,y,v) x=input('X数组=:'); y=input('Y数组=:'); v=input('插值点数值=:'); n=length(x); t=zeros(n,n); u=0; for i=1:n t(i,1)=y(i); end for j=2:n for i=2:n if i>=j t(i,j)=(t(i,j-1)-t(i-1,j-1))/(x(i)-x(i-j+1)); end end end for k=1:n s=1; m=1; for j=1:k if j

MATLAB 牛顿插值法例题与程序

题目一:多项式插值 某气象观测站在8:00(AM)开始每隔10分钟对天气作如下观测,用三次多项式插值函数(Newton)逼近如下曲线,插值节点数据如上表,并求出9点30分该地区的温度(x=10)。 二、数学原理 假设有n+1个不同的节点及函数在节点上的值(x 0,y 0),……(x n ,y n ),插值多项式有如下形式: )() )(()()()(n 10n 102010n x -x )(x -x x -x x P x x x x x x -??-+??+-++=αααα (1) 其中系数i α(i=0,1,2……n)为特定系数,可由插值样条i i n y x P =) ((i=0,1,2……n)确定。 根据均差的定义,把x 瞧成[a,b]上的一点,可得 f(x)= f(0x )+f[10x x ,](0x -x ) f[x, 0x ]= f[10x x ,]+f[x,10x x ,] (1x -x ) …… f[x, 0x ,…x 1-n ]= f[x, 0x ,…x n ]+ f[x, 0x ,…x n ](x-x n ) 综合以上式子,把后一式代入前一式,可得到: f(x)= f[0x ]+f[10x x ,](0x -x )+ f[210x x x ,,](0x -x )(1x -x )+ …+ f[x, 0x ,…x n ](0x -x )…(x-x 1-n )+ f[x, 0x ,…x n ,x ]) (x 1n +ω= N n (x)+) (x n R 其中 N n (x)= f[0x ]+f[10x x ,](0x -x )+ f[210x x x ,,](0x -x )(1x -x )+ …+ f[x, 0x ,…x n ](0x -x )…(x-x 1-n ) (2)

matlab 牛顿插值法 三次样条插值法

(){} 21 ()(11),5,10,20: 1252 1()1,(0,1,2,,)()2,(0,1,2,,)() ()2 35,20:1100 (i i i i n n k k k Newton f x x n x f x x i i n f x n x y i n Newton N x S x n x k y f x =-≤≤=+=-+====-+ = 题目:插值多项式和三次样条插值多项式。 已知对作、计算函数在点处的值;、求插值数据点 的插值多项式和三次样条插值多项式;、对计算和相应的函数值),()() (1,2,,99)4:()max ()()max ()n k n k n k n k n k n k k k N x S x k E N y N x E S y S x ==-=- 和; 、计算,; 解释你所得到的结果。 算法组织: 本题在算法上需要解决的问题主要是:求出第二问中的Newton 插值多项式 )(x N n 和三次样条插值多项式()n S x 。如此,则第三、四问则迎刃而解。计算两种插值多项式的算法如下: 一、求Newton 插值多项式)(x N n ,算法组织如下: Newton 插值多项式的表达式如下: )())(()()(110010--???--+???+-+=n n n x x x x x x c x x c c x N 其中每一项的系数c i 的表达式如下: 1102110) ,,,(),,,(),,,(x x x x x f x x x f x x x f c i i i i i -???-???= ???=- 根据i c 以上公式,计算的步骤如下: ?? ??? ?? ?????+??????? ???????????----) ,,,,(1) ,,,(),,,,(),(,),,(2)(,),(),(11101111011010n n n n n n n n x x x x f n x x x f x x x f n x x f x x f x f x f x f 、计算、计算、计算、计算 二、求三次样条插值多项式)(x S n ,算法组织如下:

matlab(迭代法_牛顿插值)

实验报告容: 一:不动点迭代法解方程 二:牛顿插值法的MA TLAB实现 完成日期:2012年6月21日星期四 数学实验报告一 日期:2012-6-21

所以,确定初值为x0=1 二:不断迭代 算法: 第一步:将f(x0)赋值给x1 第二步:确定x1-x0的绝对值大小,若小于给定的误差值,则将x1当做方程的解,否则回到第一步 编写计算机程序: clear f=inline('0.5*sin(x)+0.4'); x0=1; x1=f(x0); k=1; while abs(x1-x0)>=1.0e-6 x0=x1; x1=f(x0); k=k+1; fprintf('k=%.0f,x0=%.9f,x1=%.9f\n',k,x0,x1) end 显示结果如下: k=2,x0=0.820735492,x1=0.765823700 k=3,x0=0.765823700,x1=0.746565483 k=4,x0=0.746565483,x1=0.739560873 k=5,x0=0.739560873,x1=0.736981783

k=6,x0=0.736981783,x1=0.736027993 k=7,x0=0.736027993,x1=0.735674699 k=8,x0=0.735674699,x1=0.735543758 k=9,x0=0.735543758,x1=0.735495216 k=10,x0=0.735495216,x1=0.735477220 k=11,x0=0.735477220,x1=0.735470548 k=12,x0=0.735470548,x1=0.735468074 k=13,x0=0.735468074,x1=0.735467157 >>。。。 以下是程序运行截图:

matlab实现插值法和曲线拟合

插值法和曲线拟合 电子科技大学 摘要:理解拉格朗日多项式插值、分段线性插值、牛顿前插,曲线拟合,用matlab编程求解函数,用插值法和分段线性插值求解同一函数,比较插值余项;用牛顿前插公式计算函数,计算函数值;对于曲线拟合,用不同曲线拟合数据。 关键字:拉格朗日插值多项式;分段线性插值;牛顿前插;曲线拟合 引言: 在数学物理方程中,当给定数据是不同散点时,无法确定函数表达式,求解函数就需要很大的计算量,我们有多种方法对给定的表格函数进行求解,我们这里,利用插值法和曲线拟合对函数进行求解,进一步了解函数性质,两种方法各有利弊,适合我们进行不同的散点函数求解。 正文: 一、插值法和分段线性插值 1拉格朗日多项式原理 对某个多项式函数,已知有给定的k + 1个取值点: 其中对应着自变量的位置,而对应着函数在这个位置的取值。 假设任意两个不同的x j都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为: 其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为: [3] 拉格朗日基本多项式的特点是在上取值为1,在其它的点上取值为0。2分段线性插值原理 给定区间[a,b], 将其分割成a=x 0

(1) I h (x k )=y k ,(k=0,1,…,n) ; (2) 在每个区间[x k ,x k+1 ] 上,I h (x)是个一次函数。 易知,I h (x)是个折线函数, 在每个区间[x k ,x k+1 ]上,(k=0,1,…,n) k 1k k 1k 1 k k 1k k k ,1) () ()(x x x x x f x x x x x f x L --+--=++++, 于是, I h (x)在[a,b]上是连续的,但其一阶导数是不连续的。 3拉格朗日插值多项式算法 ○1输入,(0,1,2,,)i i x y i n = ,令0)(=x L n 。 ○ 2对0,1,2,,i n = ,计算 0,()()/() n i j i j j j i l x x x x x -≠= --∏ ()()()n n i i L x L x l x y ←??+ 4分段线性插值算法 ○1输入(x k ,y k ),k=0,1,…,n; ○2计算k 1k k 1k 1 k k 1k k k ,1) () ()(x x x x x f x x x x x f x L --+--=++++ 5插值法和分段线性插值程序 按下列数据分别作五次插值和分段线性插值,画出两条插值曲线以及给定数据点。求x 1=0.32, functionlagrint xi=[0.32,0.55,0.68]; %xi=[0.2:0.001:0.8]; x=[0.3,0.42,0.50,0.58,0.66,0.72]; y=[1.04403,1.08462,1.11803,1.15603,1.19817,1.23223]; L=zeros(size(y)); m=length(xi); fori=1:m dxi=xi(i)-x; L(1)=prod(dxi(2:6))/prod(x(1)-x(2:6)); L(6)=prod(dxi(1:6-1))/prod(x(6)-x(1:6-1)); for j=2:6-1

MATLAB牛顿插值法例题与程序

MATLAB牛顿插值法例题与程序 题目一:多项式插值 某气象观测站在8:00(AM)开始每隔10分钟对天气作如下观测,用三次多项式插值函数(Newton)逼近如下曲线,插值节点数据如上表,并求出9点30分该地区的温度(x=10) 0 、数学原理 假设有n+1个不同的节点及函数在节点上的值(x 0,y 0), ...... (x n ,y n ),插值多项式有如下形式: Pn(X) 0 1(X-X°) 2(X-X°)(X X1 ) n(X-X°)( X X1) (X X n) (1) 其中系数i (i=0,1,2 .... n)为特定系数,可由插值样条 P n(xJ y i (i=0,1,2 .... n)确定。 根据均差的定义,把x瞧成[a,b]上的一点,可得 f(X)= f( X°)+f[ X。, X』(X-X o) f[X, X°]= f[ X0, X1〕+f[X, X0, X1] ( X -X1) f[X, X0,…X n-1 ]= f[X, X0,…X n]+ f[X, X。,…X n ](X-X n) 综合以上式子,把后一式代入前一式,可得到: f(x)= f[ X°]+f[ X0, X』(X-X°)+ f[ X0, X1, X2〕( X-X°)( X-X1)+ …+ f[X, X0 ,…X n ]( X-X0)…(X-X n-1)+ f[X, X° ,…X n , X ] n 1( X)= N n (X)+ R(X) 其中 N n (X)= f[ X°]+f[ X0, X1]( X-X°)+ f[ X0, X1, X2]( X-X°)( X-XJ +

…+ f[x, X0,…X n]( X-X0)…(X-X n-1) MATLAB牛顿插值法例题与程序 R n(x) = f(x)- N n (x)= f[X, X。,…X n ,X ] n 1(X) ⑶ n 1(X)=(X-X o)…(X-X n) Newton插值的系数i(i=0,1,2 ...... n)可以用差商表示。一般有 k f [ X o, X1 X k ] (k=0,1,2, ...... ,n ) ⑷ 把⑷ 代入⑴ 得到满足插值条件N(X i)f &丿(i=0,1,2,……n)的n次 Newton插值多项式 N n(x)=f( x°)+f[ X0, xj( x -X1 )+f[ X0, X1, X2K x -X1)( x -x2)+ .................. +f[ X0, X1 X n]( x -x1)( x -x2)…(X-X n-1)、 其中插值余项为: n \ ) f R n(X) f(X)-N ( X ) -^―)n 1(X ) n(n 1)! n1 介于X0, X1 X k之间。 三、程序设计 fun ctio n [y,A,C, L]=newdscg(X,Y,x,M) % y为对应x的值,A为差商表,C为多项式系数丄为多项式 % X为给定节点,Y为节点值,x为待求节点 n=length(X); m=length(x); % n 为X 的长度 for t=1:m z=x(t); A=zeros( n,n) ;A(:,1)=Y'; s=0、0; p=1、0; q1=1、0; c1=1、0; for j=2: n for i=j:n A(i,j)=(A(i,j-1)- A(i-1,j-1))/(X(i)-X(i-j+1)); end q1=abs(q1*(z-X(j-1)));c1=c1*j; end

相关文档
相关文档 最新文档