插值法-第二次程序题

合集下载

数值方法课后习题答案

数值方法课后习题答案

数值方法课后习题答案习题1:插值法给定一组数据点 \((x_1, y_1), (x_2, y_2), \ldots, (x_n, y_n)\),使用拉格朗日插值法构造一个多项式 \(P(x)\),使其通过所有给定的数据点。

答案:拉格朗日插值法的多项式 \(P(x)\) 可以表示为:\[ P(x) = \sum_{i=1}^{n} y_i \prod_{\substack{j=1 \\ j \neq i}}^{n} \frac{x - x_j}{x_i - x_j} \]习题2:数值积分使用梯形法则和辛普森法则分别计算定积分 \(\int_{0}^{1} x^2 dx\) 的近似值。

答案:- 梯形法则的近似值:\[ \text{Trapezoidal Rule} \approx \frac{h}{2}(y_0 + 2y_1 +2y_2 + \ldots + y_{n-1}) \]- 辛普森法则的近似值:\[ \text{Simpson's Rule} \approx \frac{h}{3}(y_0 + 4y_1 +2y_2 + 4y_3 + \ldots + y_{n-1}) \]习题3:微分方程数值解考虑常微分方程 \(y' = f(x, y)\),其中 \(f(x, y) = x^2 - y^2\),初始条件 \(y(0) = 1\)。

使用欧拉方法和改进的欧拉方法分别计算\(y(0.1)\) 的近似值。

答案:- 欧拉方法:\[ y_{n+1} = y_n + h \cdot f(x_n, y_n) \]- 改进的欧拉方法:\[ y_{n+1} = y_n + \frac{h}{2} \cdot (f(x_n, y_n) + f(x_{n+1}, y_{n+1})) \]习题4:线性方程组的数值解给定线性方程组 \(Ax = b\),其中 \(A\) 是一个 \(n \times n\)的矩阵,\(b\) 是一个 \(n \times 1\) 的向量。

插值法-第二次程序题

插值法-第二次程序题

插值法题目1:对Runge 函数22511)(xx R +=在区间[-1,1]作下列插值逼近,并和R(x)的图像进行比较,并对结果进行分析。

(1)用等距节点,200,1.0,-1≤≤=+=i h ih x i 绘出它的20次Newton 插值多项式的图像。

(2)用节点)20,,2,1,0(,)4212cos(⋅⋅⋅=+=i i x i π,绘出它的20次Lagrange 插值多项式的图像。

(3)用等距节点,200,1.0,-1≤≤=+=i h ih x i 绘出它的分段线性插值函数的图像。

(4)用等距节点,200,1.0,-1≤≤=+=i h ih x i 绘出它的三次自然样条插值函数的图像。

程序及分析:(1)用等距节点,200,1.0,-1≤≤=+=i h ih x i 绘出它的20次Newton 插值多项式的图像。

Matlab 程序如下:%计算均差x=[-1:0.1:1]; n=length(x); syms z for i=1:ny(i)=1/(1+25*x(i)*x(i)); endN=zeros(n,n); N(:,1)=y'; for j=2:n for k=j:nN(k,j)=(N(k,j-1)-N(k-1,j-1))/(x(k)-x(k-j+1)); end end for t=1:n c(t)=N(t,t) end%构造插值多项式 f=N(1,1); for k=2:n a=1;for r=1:(k-1) a=a*(z-x(r)); endf=f+N(k,k)*a; end%作图a=[-1:0.001:1]; n=length(a); for i=1:nb(i)=1/(1+25*a(i)*a(i)); endfx=subs(f,z,a); subplot(2,1,1);plot(a,b,'k',a,fx,'r'); c=[-0.6:0.001:0.6]; n=length(c); for i=1:nd(i)=1/(1+25*c(i)*c(i)); endfx=subs(f,z,c); subplot(2,1,2);plot(c,d,'k',c,fx,'r');结果与分析:由下图可以看出,在区间[-0.6,0.6]上,插值多项式可以很好的逼近被插值函数。

MAAB牛顿插值法例题与程序

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 )可以用差商表示。

16章 插值法

16章 插值法

第16章插值法Lagrange插值求n次Lagrange插值多项式算法1.输入n+1个插值点:(x i, y i),i=0,1,…,n2.计算插值基函数l0n(x), l1n(x) ,…, l nn(x)3.给出n次Lagrange插值多项式:L n(x)= y0 l0n(x)+ y1 l1n(x) +…+y n l nn(x)求Lagrange插值多项式程序Clear[lag,xi,x,yi];xi=Input["xi="]yi=Input["yi="]n=Length[xi]-1;p=Sum[yi[[i]]*(Product[(x-xi[[j]])/(xi[[i]]-xi[[j]]),{j,1,i-1}]*Product[(x-xi[[j]])/(xi[[i]]-xi[[j]]),{j,i+1,n+1}]),{i,1,n+1}];lag[x_]=Simplify[p]说明:本程序用于求n次Lagrange插值多项式。

程序执行后,按要求通过键盘输入插值基点xi:{x0 , x1, ... , x n }和对应函数值yi:{ y0 , y1, … , y n }后,程序即可给出对应的n次Lagrange插值多项式lag[x]。

程序中变量说明xi:存放插值基点{x0 , x1, ... , x n }yi: 存放对应函数值{y0 , y1, … , y n}lag[x]: 存放求出的n次Lagrange插值多项式Ln(x)注:语句lag[x_]=Simplify[p]用简化形式给出对应的n次Lagrange插值多项式。

例题与实验例1.给定数据表x 0 1 2 3y=f(x) 1 3 5 12用Lagrange插值法求三次插值多项式,并给出函数f(x)在x =1.4的近似值。

解:执行Lagrange插值程序后,在输入的两个窗口中按提示分别输入{0, 1, 2, 3}、{1, 3, 5, 12},每次输入后用鼠标点击窗口的“OK”按扭,得如下插值函数。

牛顿插值法matlab程序例题

牛顿插值法matlab程序例题

牛顿插值法是一种常用的数值分析方法,用于构造一个多项式函数,以便在给定的数据点上进行插值。

这个主题在数学和工程领域中有着广泛的应用,特别是在数据拟合和函数逼近方面。

牛顿插值法的核心思想是通过不断地添加新的数据点来构造一个多项式,并利用已知数据点来确定多项式的系数,从而实现对未知数据点的插值预测。

在Matlab中,实现牛顿插值法并不困难,我们可以利用已有的函数和工具来简化计算过程。

下面,我们将通过一个具体的例题来讲解如何使用Matlab编写牛顿插值法的程序,并分析其结果。

我们需要明确牛顿插值法的数学原理。

给定n个互不相同的节点\(x_0, x_1, ... , x_n\),以及在这些节点上的函数值\(f(x_0), f(x_1), ... , f(x_n)\),我们希望构造一个n次插值多项式p(x),满足p(x_i) = f(x_i),i=0,1,...,n。

牛顿插值多项式的一般形式为:\[p(x) = a_0 + a_1(x - x_0) + a_2(x - x_0)(x - x_1) + ... + a_n(x -x_0)(x - x_1)...(x - x_{n-1})\]其中,\[a_i\]表示插值多项式的系数。

通过牛顿插值法的迭代过程,可以逐步求解出这些系数,进而得到插值多项式的表达式。

接下来,我们将以一个具体的例题来演示如何在Matlab中实现牛顿插值法。

假设我们有如下的数据点和函数值:\(x = [1, 2, 3, 4]\)\(f(x) = [1, 4, 9, 16]\)我们希望利用这些数据点来构造一个插值多项式,并在给定的区间上进行插值计算。

在Matlab中,可以通过interp1函数来进行插值计算,该函数支持多种插值方法,包括牛顿插值法。

下面是一个简单的Matlab程序示例:```matlabx = [1, 2, 3, 4];y = [1, 4, 9, 16];xi = 2.5;yi = interp1(x, y, xi, 'spline');disp(['在x=',num2str(xi),'处的插值结果为:',num2str(yi)]);```在这段代码中,我们首先定义了给定的数据点x和对应的函数值y,然后利用interp1函数对x=2.5处的插值结果进行计算。

第2章 插值法例题

第2章  插值法例题


f ( x )
3 8

5 2
x
x
R 2 (115 )
0 . 0017
例5.13 2, 5 ,
已知 x=0, 2, 3, 5 对应的函数值为 y=1, 3, 4.4 .1 差商及其性

作三次Newton插值多项式。
xi
三阶差商
f ( x i)
1
3
一阶差商
二阶差商
0
2
1
3
-2/3 5 5/6
x

x


45 8
x
2
91 4
2
2
3 x
3
8x
2
9x 5
例5.3
已知x=1, 4, 9 的平方根值, 用抛
7
物插值公式,
(求 x1)(x–x2) x– (x–x0)(x–x2) p2(x) = (x –x )(x –x ) y0 + y1 0 1 0 2 (x1–x0)(x1–x2) (x–x0)(x–x1) + y2 (x2–x0)(x2–x1)
2
求满足条件的
解: x 0 1, x 1 2 , h 2 1 1
2
A 1 ( 1 2 ( x 1 ))( x 2 ) ( 2 x 1 )( x 2 ) A 2 ( 1 2 ( x 2 ))( x 1 ) ( 2 x 3 )( x 1 )
3 x1 33 49 x 2 9
求得法方程组的解为
x 1 2 . 979 x 2 1 . 2259
这也就是超定方程组的最小二乘解。
例题

插值法的程序实现

插值法的程序实现

插值法的程序实现一实验目的1.熟悉Matlab编程;2.学习插值方法及程序设计算法二实验题目分别用拉格朗日插值、牛顿插值、自然样条函数对1910、1965、2002的人口进行估算。

三实验原理与理论基础1.拉格朗日插值算法设计①利用已知条件得到xi,yi,i=0,1,2,… ②由Lk(x)=((x-x0)*…*(x-x(k-1))*(x-x(k+1))…(x-xn))/ ((xk-x0)*…*(xk-x(k-1))*(xk-x(k+1))…(xk-xn))得出Li(x);③由Y=y1* L1(x)+…+yn*Ln(x)得出Y关于x的表达式。

④带值计算即可。

2. 牛顿插值算法设计①利用已知条件得到xi,yi,i=0,1,2,… ②利用差商公式f[x0,…xk]=(f[x0,…,x(k-2),xk]-f[x0,…,x(k-1)])/(xk-x(k-1))各阶差商。

③利用牛顿插值公式f(x)=f(x0)-f[x0,x1]*(x-x0)+…f[x0,x1,…xn]*(x-x0)*…(x-x(n-1)).④带值计算即可。

3. 自然样条函数算法设计①利用已知条件得到xi,yi,i=0,1,2,… ②利用公式求出h(i) u(i) k(i);di; ③利用h(i) u(i) k(i);di解出向量M;④ 将相关变量带入自然样条表达式中即可。

⑤带值计算即可。

四实验内容(一)问题重述:下面给出美国从1920年到1970年的人口表: 1920 1930 1940 1950 1960 1970 年份 105711 123203 131669 150697 179323 203212 人口 (千人) 1.用表中数据构造一个5次拉格朗日插值多项式,并用此估计1910,1965和2002年的人口。

在1910年的实际人口约为91772000,请判断插值计算得到的1965年和2002年的人口数据准确性是多少?2 用牛顿插值估计:(1)1965年的人口数;(2)2002年的人口数。

数值分析---2插值与拟合习题课

数值分析---2插值与拟合习题课

插值与拟合习题课一、已知sin x 在30,45,60的值分别为1,,222,分别用一次插值和二次插值求sin 50的近似值,并估计截断误差.解:一次插值时,取靠近50 的两个角度45,60作节点,将角度化为弧度为5,,1843πππ,此时有()134224334x x L x ππππππ--=+--55sin 50sin 0.7600801818L ππ⎛⎫=≈=⎪⎝⎭由截断误差公式()()()()()()()101...1!n n n f R x x x x x x xn ξ+=---+ 有()()()101"()2f R x x x x x ξ=--代入值即得5155()sin 0.006595161823184183R ππππππ⎛⎫⎛⎫⎛⎫≤---= ⎪⎪⎪⎝⎭⎝⎭⎝⎭二次插值时,取012,,643x x x πππ===,此时有214363()22646346433634x x x x L x ππππππππππππ⎛⎫⎛⎫⎛⎫⎛⎫---- ⎪⎪ ⎪⎪⎝⎭⎝⎭⎝⎭⎝⎭=++⎛⎫⎛⎫⎛⎫⎛⎫------ ⎪⎪ ⎪⎪ ⎪⎪⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭55sin 50sin ()0.7654341818L ππ∴=≈=+其截断误差为351555()cos 183!618618418315550.767382103!186184183R ππππππππππππππ-⎛⎫⎛⎫⎛⎫≤---- ⎪⎪⎪⎝⎭⎝⎭⎝⎭⎛⎫⎛⎫⎛⎫≤---=⨯ ⎪⎪⎪⎝⎭⎝⎭⎝⎭()二、设2()[,]f x C a b ∈且()()0f a f b ==,求证:21max ()()max ()8a xb a x b f x b a f x ≤≤≤≤''≤-证:以a ,b 为插值节点进行线性插值,有1()()()()()(,)2!f f x L x x a x b a b ξξ''-=--∈因为1()()()0x b x aL x f a f b a b b a--=+=--,有进而1max ()max ()max ()()2a x b a x ba xb f x f x x a x b ≤≤≤≤≤≤''≤⋅--21()max ()8a xb b a f x ≤≤''=- 因为函数()()x a x b --在1()2x a b =+处取最大值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

插值法题目1:对Runge 函数22511)(x x R +=在区间[-1,1]作下列插值逼近,并和R(x)的图像进行比较,并对结果进行分析。

(1)用等距节点,200,1.0,-1≤≤=+=i h ih x i 绘出它的20次Newton插值多项式的图像。

(2)用节点)20,,2,1,0(,)4212cos(⋅⋅⋅=+=i i x i π,绘出它的20次Lagrange 插值多项式的图像。

(3)用等距节点,200,1.0,-1≤≤=+=i h ih x i 绘出它的分段线性插值函数的图像。

(4)用等距节点,200,1.0,-1≤≤=+=i h ih x i 绘出它的三次自然样条插值函数的图像。

程序及分析:(1)用等距节点,200,1.0,-1≤≤=+=i h ih x i 绘出它的20次Newton插值多项式的图像。

Matlab 程序如下:%计算均差x=[-1::1];n=length(x);syms zfor i=1:ny(i)=1/(1+25*x(i)*x(i));endN=zeros(n,n);N(:,1)=y';for j=2:nfor k=j:nN(k,j)=(N(k,j-1)-N(k-1,j-1))/(x(k)-x(k-j+1));endendfor t=1:nc(t)=N(t,t)end%构造插值多项式f=N(1,1);for k=2:na=1;for r=1:(k-1)a=a*(z-x(r));endf=f+N(k,k)*a;end%作图a=[-1::1];n=length(a);for i=1:nb(i)=1/(1+25*a(i)*a(i)); endfx=subs(f,z,a);subplot(2,1,1);plot(a,b,'k',a,fx,'r');c=[::];n=length(c);for i=1:nd(i)=1/(1+25*c(i)*c(i));endfx=subs(f,z,c);subplot(2,1,2);plot(c,d,'k',c,fx,'r');结果与分析:由下图可以看出,在区间[,]上,插值多项式可以很好的逼近被插值函数。

而在边界附近,插值多项式与被插值函数的差别很大。

即出现了Runge现象。

主要原因是被插值函数的任意阶导数不能达到一致有界。

其插值余项)()!1()()(1)1(x n f x R n n n +++=ϖξ不趋近零。

插值多项式不能收敛到被插值函数。

(2) 用节点)20,,2,1,0(,)4212cos(⋅⋅⋅=+=i i x i π,绘出它的20次Lagrange 插值多项式的图像。

Matlab 程序如下:clear;%插值点Runge 函数插值多项式for i=1:21x(i)=cos((2*(i-1)+1)*pi/42);endn=length(x);for i=1:ny(i)=1/(1+25*x(i)*x(i));end%构造插值基函数syms z;temp=1;for i=1:nlx=1;for j=1:nif i~=jtemp=(z-x(j))/(x(i)-x(j));lx=lx*temp;endendl(i)=lx;end%插值多项式l=l';L=y*l;%作图a=[-1::1];n=length(a);for i=1:nb(i)=1/(1+25*a(i)*a(i)); endfx=subs(L,z,a);subplot(2,1,1);plot(a,b,'k',a,fx,'x r');结果与分析:如下图所示,使用Chebyshev 多项式零点构造的Lagrange 插值多项式比较接近原函数,没有出现Runge 现象。

主要原因是其多项式误差为∞++≤)1()!1(21)(-)(n n n f n x L x f 。

(3)用等距节点,200,1.0,-1≤≤=+=i h ih x i 绘出它的分段线性插值函数的图像。

Matlab程序如下:clc;clear;x=[-1::1];n=length(x);syms zfor i=1:ny(i)=1/(1+25*x(i)*x(i));end%构造分段线性插值多项式for i=1:n-1l(i)=(z-x(i+1))/(x(i)-x(i+1))*y(i)+(z-x(i))/(x(i+1)-x(i))*y (i+1)% l(i)=y(i)+(y(i+1)-y(i))/(x(i+1)-x(i))*(z-x(i))end%作图for i=1:n-1a=[x(i)::x(i+1)];f=subs(l(i),z,a)plot(a,f,'k')hold onend结果与分析:如下图所示,分段线性插值多项式比较接近原函数,没有出现Runge现象。

利用线性插值多项式的误差估计: )2(2max 8h )(f x R n ≤(4)用等距节点,200,1.0,-1≤≤=+=i h ih x i 绘出它的三次自然样条插值函数的图像。

Matlab 程序如下:clc;clear;x=[-1::1];n=length(x);syms z ;for i=1:ny(i)=1/(1+25*x(i)*x(i)); endfor i=1:n-1h(i)=x(i+1)-x(i);endfor i=1:n-2u(i)=h(i)/(h(i+1)+h(i));r(i)=1-u(i);endG=zeros(n,n);for i=1:nG(i,i)=2;endfor i=2:n-1G(i,i-1)=u(i-1);G(i,i+1)=r(i-1);endG(n,n-1)=1;G(1,2)=1;d=zeros(1,n);for i=2:n-1d(i)=6*((y(i+1)-y(i))/h(i)-(y(i)-y(i-1))/h(i-1))/(h(i)+h(i-1));endsyms u v;u=diff(1/(1+25*v*v),v);a=subs(u,v,x(1));b=subs(u,v,x(n));d(1)=((y(2)-y(1))/h(1)-a)/h(1)*6;d(n)=(b-(y(n)-y(n-1))/h(n-1))/h(n-1)*6;d=d';M=inv(G)*d;for i=1:n-1s(i)=M(i)*(x(i+1)-z)^3/+M(i+1)*(z-x(i))^3/+(y(i)-M(i)*6)*(x (i+1)-z)/+(y(i+1)-M(i+1)*6)*(z-x(i))/;endfor i=1:n-1a=[x(i)::x(i+1)];f=subs(s(i),z,a);plot(a,f,'x r')hold onend结果与分析:三次样条插值函数得到的图像如下:可以看出,三次样条插值函数的曲线及其光滑。

得到的函数十分接近被插值函数。

题目2:对函数:在区间[-1,1]作下列插值逼近,并和被插值函数的图像进行比较,并对结果进行分析。

(1)用等距节点,200,1.0,-1≤≤=+=i h ih x i 绘出它的20次Newton插值多项式的图像。

(2)用节点)20,,2,1,0(,)4212cos(⋅⋅⋅=+=i i x i π,绘出它的20次Lagrange 插值多项式的图像。

(3)用等距节点,200,1.0,-1≤≤=+=i h ih x i 绘出它的分段线性插值函数的图像。

(4)用等距节点,200,1.0,-1≤≤=+=i h ih x i 绘出它的三次自然样条插值函数的图像。

程序及分析:(1)用等距节点,200,1.0,-1≤≤=+=i h ih x i 绘出它的20次Newton插值多项式的图像。

Matlab 程序如下:clc;clear;%计算均差x=[-1::1];n=length(x);syms z;y=zeros(1,n)for i=1:10y(i)=sin(pi*x(i)); endfor i=11:15y(i)=cos(pi*x(i)); endfor i=15:ny(i)=0;endN=zeros(n,n);N(:,1)=y';for j=2:nfor k=j:nN(k,j)=(N(k,j-1)-N(k-1,j-1))/(x(k)-x(k-j+1));endendfor t=1:nc(t)=N(t,t);end%构造插值多项式f=N(1,1);for k=2:na=1;for r=1:(k-1)a=a*(z-x(r));endf=f+N(k,k)*a; end%作图v=linspace(-1,0,50); u=sin(pi*v);plot(v,u,'k')hold onv=linspace(0,,25);u=cos(pi*v);plot(v,u,'k')hold onv=linspace,1,10000); u=0;plot(v,u,'k')hold ona=[-1::1];fx=subs(f,z,a);plot(a,fx,'r');结果与分析:等距节点20次Newton 插值得到的函数图像如下:可以看出,在整个区间上,插值多项式精度都不是很高。

出现了Runge 现象。

被插值函数插值多项式(2)用节点)20,,2,1,0(,)4212cos(⋅⋅⋅=+=i i x i π,绘出它的20次Lagrange 插值多项式的图像。

Matlab 程序如下: clc;clear; %求插值节点 for i=1:21x(i)=cos((2*(i-1)+1)*pi/42); endn=length(x);被插值函数 插值多项式y=zeros(1,n);for i=1:nif x(i)<0y(i)=sin(pi*x(i));elseif x(i)>y(i)=0;elsey(i)=cos(pi*x(i));endend%插值基函数syms z;temp=1;for i=1:nlx=1;for j=1:nif i~=jtemp=(z-x(j))/(x(i)-x(j)); lx=lx*temp;endendl(i)=lx;end%插值多项式l=l';L=y*l;%作图a=[-1::1];fx=subs(L,z,a);plot(a,fx,'x r');结果与分析:如下图所示,使用Chebyshev 多项式零点构造的Lagrange 插值多项式比Newton 插值多项式接近原函数,没有出现Runge 现象。

(3)用等距节点,200,1.0,-1≤≤=+=i h ih x i 绘出它的分段线性插值函数的图像。

相关文档
最新文档