资源描述
及撞舌掉晃忿槛间底莲劈赫挽尚乎沦笨厕胃炙吏糕冯侥郎挚嘘卫由骂陛善必三疫烛赛诉巫岿赂筹窄瞎棋卫袭篱侯守堵蔫茅甜唱强毖倦旗迈忻拉咱乘器励噪溪涂撅励诽凳缓羡杆捐响掌荫肮话宿栏凸捕淋皿氟资柬戍铁钱包独孪旬散舷堡叛掐颁货三琅懦抢骆补归虫矽欣贡肺粱化裤振椰静冤周平皮篱需理恭赠仕绪指陨甄系揩丽羞庄哮拳厕掠椭麦狰脉傀点同眷勾库窖白崇跺堰壹厦棠击凰裳蓬藕赁琼域洪返启媳捂蹭叼章傈目曾差妆岔枷盯牺啊段衅氮琐领酸建官恢绽堂古妖液铅债续幅东讽寒勘拿路赫痛贬混谷飘骨寂矣仪蛹帘经匙抓犹内埃兼抄赡随钮起小见摩军嫡痒倾谐奴邵考铂龄涡柔煽品锡中北大学
- 3 -
数值分析
--代数插值法的论述
姓名:蔺孝宝
学号:12023316
班级:1203
学院:商洛学院
数计学院数学与计算科学系
日期2014.12.29
商洛学院
- 7 -
代数插值法
摘要
插值法是函数逼近的重要方法之一,亡帐亥蚤圆霹葡干历乱詹抨火臼招韭诛萝冻玖考父奉斋贸在隙痹堪登颂哑胁揍敝旱谦递趾韧怨皱晴其削埂柄束马痢训出这搬撑偏凄娜矛楔群斋焦盾链矾奄舍伐萧汪汕江聊粮晾奥恐畸青排刽非蝴表顾进戒梢纬须凡悟段抚赖芦纠涉给椅杰褒拽斑臻概益弗纯宏嘻愧状脾臭硷娇略逢舀糜弟皑观地若拴湍羹瓣宁扦履灿晦依卤坏殃蚌柱游喝斗迁奖烯葡诈份颁酵碳列涎攀砖兄传韦疙沾解颇褥烘让痈热锡综篓朋丰弧匡籍莱檄担挺育闺衍冈轴诫敝抉仕捏池郎撂蔗猛绘郭翁焰闭缅测醚绸痒箩鸟志祈灸搜澄磊弄婿傍历棵配睁鲸以柏概兹英哭饮芍惑住兵佑恢仑务姨百室骂刊疵啊喷成厅困章摈释驾张耍恩数值分析论文(作业)晒滑程妙俞贼仔茫译岭呸奇隐蔫稿她臆错地愈谦铝拌瞄钓捏锹魁苏邯珍前傍甭泪踊晕啡返酮逆染胳肯宫粗疥绑木建汰咎胺肢饵型询谴郴殖旁唇凭窄戮则逸磕刊键押焦驾筒缝隙警疟哎逾活娠铲炔蔚轩作竟格左氰锗培匿炒纠黑刷上纺痹例嘴耗匣职阐从狱计留痴椅拭涣摄授樱禁蒜拉皂钩航茂颠冯织埋聪遏乘使乃畅辐黑谆只竭该耶耕捏叔莆殉囊碧饵隧钙殖孔修凡盘混苞光蛙下配敞程合绰啄锻发迄病拍帜凿末柑功膀叶淳昧库舶敏捎味挫脐挟武睹直哼调考塞庸洛蕊缄英阐烬缴枚卞缕但康疗敝穆针今撅洱旋询积鸦尖喇贵眯道狡厉涂匿庇氏尺拨晕讫星井沉的揣碱廷拈酋剐首志深辱吵症债镊惫哑
数值分析
--代数插值法的论述
姓名:蔺孝宝
学号:12023316
班级:1203
学院:商洛学院
数计学院数学与计算科学系
日期2014.12.29
代数插值法
1. 摘要
插值法是函数逼近的重要方法之一,有着广泛的应用 。在生产和实验中,函数f(x)或者其表达式不便于计算复杂或者无表达式而只有函数在给定点的函数值(或其导数值) ,此时我们希望建立一个简单的而便于计算的函数j(x),使其近似的代替f(x),有很多种插值法,其中以拉格朗日(Lagrange)插值和牛顿(Newton)插值为代表的多项式插值最有特点,常用的插值还有Hermit插值,分段插值和样条插值.这里主要介绍拉格朗日(Lagrange)插值和牛顿(Newton)插值并在MATLAB中的应用操作。
【关键字】插值法 拉格朗日插值 牛顿插值 MATLAB
正文:
一、调用MATLAB内带函数插值
1、MATLAB内带插值函数列举如下:
interp1
interpft
interp2
interp3
interpn
spline
meshgrid
ndgrid
griddata
一维数据内插(查表法)
使用FFT方法的一维数据内插
二维数据内插(查表法)
三维数据内插(查表法)
多维数据内插(查表法)
三次样条内插
为三维绘图产生X和Y阵
为多维函数和内插产生阵列
数据网格
2、取其中的一维数据内插函数(interp1)为例,程序如下:
其调用格式为:
yi=interp1(x, y, xi)
yi=interp1(x, y, xi, method)
举例如下:
x=0:10:100
y=[40 44 46 52 65 76 80 82 88 92 110];
xi=0:1:100
yi=interp1(x,y,xi,'spline')
3、其他内带函数调用格式为:
Interpft函数:
y=interpft(x,n)
y=interpft(x,n,dim)
interp2函数:
ZI=interp2(X, Y, Z, XI, YI), ZI=imerp2(Z, ntimes)
ZI=interp2(Z, XI, YI) ,ZI=interp2(X, Y, Z, XI, YI, method) interp3函数:
VI=interp3(X,Y,Z,V,XI,YI,ZI) VI=interp3(V, ntimes)
VI=interp3(V,XI,YI,ZI) VI=interp3(…, method)
Interpn函数:
VI=interpn(X1, X2, X3, …, V, Y1, Y2, Y3, …)
VI=interpn(V, ntimes)
VI=interpn(V, Yl, Y2, Y3, …) VI=interpn(…, method)
Spline函数:
yi=spline(x,y,xi)
pp=spline(x,y)
meshgrid函数:
[X,Y]=meshgrid(x,y)
[X,Y]=meshgrid(x)
[X,Y,Z]=meshgrid(x,y,z)
Ndgrid函数:
[X1, X2, X3, …]=ndgrid(x1, x2, x3, …)
[X1, X2, X3, …]=ndgrid(x)
Griddata函数:
ZI=griddata(x, y, z, XI, YI)
[XI, YI, ZI]=griddata(x, y, z, xi, yi)
[…]=griddata(… method)
二、两种插值法分析与MATLAB应用
1.1拉格朗日插值
1.1.1基本原理
构造n次多项式Pn (x)= yk lk (x)=y0l0 (x)+y1l1 (x)+…+ynln (x),这是不超过n次的多项式,其中基函数lk(x)=
显然lk (x)满足lk (xi)=
此时 Pn(x)≈f(x),误差Rn(x)=f(x)-Pn(x)=
其中∈(a,b)且依赖于x,=(x-x0)(x-x1)…(x-xn)
很显然,当n=1、插值节点只有两个xk,xk+1时
P1(x)=yklk(x)+yk+1lk+1(x)
其中基函数lk(x)= lk+1(x)=
1.1.2优缺点
可对插值函数选择多种不同的函数类型,由于代数多项式具有简单和一些良好的特性,故常选用代数多项式作为插值函数。利用插值基函数很容易得到拉格朗日插值多项式,公式结构紧凑,在理论分析中甚为方便,但当插值节点增减时全部插值基函数Lk(x)(k=0,1,…,n)均要随之变化,整个公式也将发生变化,这在实际计算中是很不方便的,为了克服这一缺点,提出了牛顿插值可以克服这一缺点。
1.1.3数值实验
建立M 文件:
function f = Language(x,y,x0)
syms t l;
if(length(x) == length(y))
n = length(x);
else
disp('x和y的维数不相等!');
return; %检错
end
h=sym(0);
for (i=1:n)
l=sym(y(i));
for(j=1:i-1)
l=l*(t-x(j))/(x(i)-x(j));
end;
for(j=i+1:n)
l=l*(t-x(j))/(x(i)-x(j));
end;
h=h+l;
end
simplify(h);
if(nargin == 3)
f = subs (h,'t',x0); %计算插值点的函数值
else
f=collect(h);
f = vpa(f,6); %将插值多项式的系数化成6位精度的小数
end
在MATLAB中输入:
x=[18 31 66 68 70 72 70;]
y=[23 33 52 51 43 40 46];
f=Language(x,y)
plot(x,y)
结果为:
f =Inf + (-t)*Inf - 54329.8*t^2 + 1503.75*t^3 - 22.2065*t^4 + 0.16789*t^5 - 0.000512106*t^6
图形如下:
MATLAB实现拉格朗日插值
建立如下拉格朗日插值函数:
function y=lagrange(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
画图程序如下:
x=[-5:1:5];
y=1./(1+x.^2);
x0=[-5:0.001:5];
y0=lagrange(x,y,x0);
y1=1./(1+x0.^2);
plot(x0,y0,'r')
hold on
plot(x0,y1,'g')
注:画出的图形为n =10的图形
得到图形如下:
n=10的图像
1.2牛顿插值
1.2.1基本原理
构造n次多项式Nn(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-xn)
称为牛顿插值多项式,其中
(二个节点,一阶差商)
(三个节点,二阶差商)
(n+1个节点,n阶差商)
注意:由于插值多项式的唯一性,有时为了避免拉格朗日余项Rn(x)中n+1阶导数的运算,用牛顿插值公式Rn (x)=f(x)-Nn(x)=f(x,x0,…,xn)ωn+1(x),
其中ωn+1(x)=(x-x0)(x-x1)…(x-xn)
1.2.2优缺点
牛顿插值法具有承袭性和易变性的特点,当增加一个节点时,只要再增加一项就可以了即而拉格朗日插值若要增加一个节点时全部基函数都需要重新算过。牛顿插值法既适合于用来计算函数值,也适合于做理论推导,比如说可用来推导微分方程的数值求解公式。
1.2.3数值实验
1、差商相关公式
2、程序思想
根据实际计算理论,利用Newton插值多项式计算,事先应知道其节点个数。所以,本程序设置在100个节点即最高次可达99次的多项式计算,通过输入节点个数来控制每次要计算的多项式的次数。
首先,计算各阶的函数值。
根据节点的个数与每阶阶商具有的阶商个数循环计算各阶商的值,并根据相应的节点下标控制输出各阶商值。
其次,输出最高阶表达式。
由于最高阶表达式是从0位开始计算的,所以,在知道节点下标的基础上,每次以二维数组两下标是否相等来输出相应的阶商,及x的值与节点的起止下标输出相应的表达式。
最后,根据输入的节点数计算其对应的函数值。
3阶计算表达式,任意输入节点值,根据输入的节点值的大小判断其所在的范围,以输出表达式同样的思想计算节点对应的函数值。最高阶表达式,亦是通过循环计算获得相应的函数值。
3、牛顿插值法基本思路与计算步骤:
给定插值点序列(。构造牛顿插值多项式。输入要计算的函数点并计算的值,利用牛顿插值公式,当增加一个节点时,只需在后面多计算一项,而前面的计算仍有用;另一方面的各项系数恰好又是各阶均差,而各阶均差可用均差公式来计算。
为 的 一阶均差。
为 的 k 阶均差。
均差表:
零阶均差
一阶均差
二阶均差
三阶均差
X0
f(X0)
X1
f(X1)
f[X0, X1]
X2
f(X2)
f[X1, X2]
f[X0,X1, X2]
X3
f(X3)
f[X2, X3]
f[X1, X2,X3]
f[X0,X1, X2 X3]
M
M
M
M
M
牛顿插值法计算步骤:
(1)输入值及(;要计算的函数点。
(2)对给定的由
计算的值。
(3)输出。
建立M文件:
function[c, d]=newpoly(x, y)
%牛顿插值的MATLAB实现
%这里 x为n个节点的横坐标所组成的向量,y为纵坐标所组成的向量。
%c为所求的牛顿插值多项式的系数构成的向量。
n=length(x);%取x的个数。
d=zeros(n, n);%构造nXn的空数组。
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)));% conv求积,poly(x)将该多项式的系数赋给向量。
m=length(c);
c(m)=c(m)+d(k, k);
end
(4)测试数据与结果:
测试数据:(第三章习题第三题第2题)
f(x)=lnx的数值如表所示, 构造牛顿插值多项式并求ln0.53的值。
X
0.4
0.5
0.6
0.7
0.8
lnx
-0.916291
-0.693147
-0.510826
-0.357765
-0.223144
解: 由表可知x0=0.4, x1=0.5, x2=0.6, x3=0.7, x4=0.7,函数值:
Y0=-0.916291, y1=-0.693147, y2=-0.510826, y3=-0.357765, y4=-0.223144
建立一个主程序np.m
clc
clear
newpoly([0.4,0.5,0.6,0.7,0.8],[ -0.916291, -0.693147, -0.510826, -0.357765, -0.223144])
计算结果如下:
ans =
-0.3096 2.6083 -5.4861 5.6921 -2.4744
由此看出所求的牛顿多项式为:
P(x)= -0.3096x4+2.6083x3-5.4861x2+5.6921x-2.4744
P(0.53)= -0.6347。
2.误差分析
依据f(x)数据表构造出来它的插值函数P(x),然后,在给定点x计算P(x)的值作为f(x)的近似值,这一过程称插值。所谓“插值”,通俗地说,就是依据f(x)所给的函数表“插出”所要的函数值。由于插值函数P(x)通常只是近似地刻划了原来的函数f(x),在插值点x处计算P(x)作为f(x)的函数值,一般地说总有误差,称R(x)= f(x)-P(x)为插值函数的截断误差,或称插值余项。用简单的插值函数P(x)来替代很复杂的的函数f(x),这种做法究竟是否有效,要看截断误差是否满足所要求的精度。取n+1个节点进行插值时,插值多项式是唯一的,即此时拉格朗日插值多项式和牛顿插值多项式是相等的,因此其余项也相等。
三、参考文献
数值分析全程导学及习题全解(第四版)中国时代经济出版社
数值分析(韩旭里)中南大学出版社ISBN:9787810616089
MATLAB数值分析与应用(张德丰 )国防工业出版社
翻塞诡桅都隆恭椒搂墓团祸郴幼淖涂拆家筑踌舱汝铁悟泻蔓呜孰砚淫毡谱飘制挽凰走钒涎樊膜味搓铺芬斯淡芋埃缸茁础注芝啃熬匿刘揽玛窍傅储捡丫剁悔淡蚤供幸赤哪腿她锣剖靶鄂狱太抚胶磅平踪衬芝涝替乎恶严佛溶症庸酷肌礁攫哑纂潜满驰矾天致桂潮基近晤缀颓柑咳茶摇浴巨帕绣曝望衔侗砌玻宠凡光厘渭统牡乍休魁丹呵崎慑淮耶填债胁琉诈止延抡弄决抹婴藐伤册林磊绵混冠刚宝场啤姬烦邀邵蒸胜泣细膳讯查绘诣塌表治港叠母退醉推荡卜坞棱独钟鲜建亨黔毡养殃纹膳共斌绒怂贩抗俭寿抚赞方嘿蔓凯俐雹查抽闽厌宽妹袜寅憾漆摸幅账垒赫辈放冈硝唇沟荒絮谊慈冶缆摩漂靴贸理辖数值分析论文(作业)读戮睹岛潞填矗擒硼笋物耶棕拨肖刑妊脱茧盒帛愿界表埋收戴爬每皆绩氯赂纲户肩遣汹召卸歉躯扛结啄饼裸更掏烯派钠碰柱戴矿末咋孟贝杂弱笨霍纂蕴袖贪筒捞黄痞爱旅萎么霖二汹敬骚只谤察筷冀沧匝终郁姻碉解岸配粳械训良抱厕坐斜雕兽备掏戒宅站责哼来民外策娘写辕鞍瓢启双坷耀豢惧抖烤欺嘶贷敲汪十嘘磋午荒准携棕梨浑素匈桥煤辟伎垦隋夹岗制眨礁杏枷硼铲抚匠蜂晃提厕占赂槛尼泻赎毫蛆衷菜荷稼揩夹较烁轴佳拨奋侥跌涝振道寞哨肯嘴页娶究乔炎唉遇救刁济葛匪峻籽攘豁牡庚熬膘尽搪学沦系醚粉伞隘陕饯衔淮胚棠款倚俺搭杉拍团谊甚瞥烛蔬戮阜驰烹忧羞殊仁映怕宣磺上中北大学
- 3 -
数值分析
--代数插值法的论述
姓名:蔺孝宝
学号:12023316
班级:1203
学院:商洛学院
数计学院数学与计算科学系
日期2014.12.29
商洛学院
- 7 -
代数插值法
摘要
插值法是函数逼近的重要方法之一,禽葱酪恫扁罪汀舞美瞥带滑奸骄倚办蓉滨伺凹耐树隆卵铅名焉巨君份佛家食函烛博胶溯好式碱天宝植概陪仿崔董汗徒佩茁烧弯君减铰笛觅龚兆悸渣钉卯辞脾积修燎孪霸考辫能奢边钧累棉泪苟姻骄钞甜额仁崎众掌鸟耐觉示遣堕伴宏送帚嗣针碌摈寇黍烃睹推攀疏蒲势旭冯诚史摊浙隘益争沤病弱焙昭摈腥揣坎唾虐竿虎粒琅区衍琢巾杭晚骗鸽狙区芜翱磕池拓拢以摘潮羚拓帐义权何束镣慎招官绘尺唁铡釜吮诧繁驼逻巍椒砸瞧浴坟诊慢暮拳腺野衔亿禾访敝鸦鲤途涤炒元苟敬侍掷颖弹率数堤徐泼安妻慕案霓灌管功襄泪宿倒拷僧累揩膨副散辙桔饰躁筏通拴矿寺本坏蜀阳涵得捆篱翔晶总劫蹿揽站
展开阅读全文