- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Runge函数的插值方法对比
一、对Runge函数的牛顿插值
等距牛顿插值图像
编制程序计算均差
clear,clc
a=-l;
b=l;
n=20;
x=a:(b-a)/n:b; %插值节点
%y=sin(x);
y=l./(l+25*x.A2);
plot(x,y/b*) %用蓝色线作被插函数图象
hold on
z=a:(b-a)/(2*n):b;
n=length(x);
for j=2:n
for i=n:-l:j y(i)=(y(i)?y(i?l))/(x(i)?x(i?j+l));% 计算差商 end
end
u=y(n);
m=lcngth(z);
for j=l:m
for i=n-l:-l:l
u二y(i)+u*(z(j)?x(i)); %计算牛顿插值多项式的值
V(j)=U;
end
u=y(n);
end
plot(z, V,巧 %用红色线作牛顿插值多项式图象
hold off
得20次多项式为
Ln(x)= 1.-.101 e7*xA 18+.260e6*xA20-. 144e7*xA 14+.164e7*xA 16+47 l.*xA4-.612e4*xA6
+.493e5*xA8-.245e6*xA 10+.757e6*xA 12-24.1 *xA2
Chebyshev多项式零点插值
由于算式结果比较复杂,Subs命令不太好使,得修改程序如下 clear,clc
close all t=cos((2*(0:l:20)+l)/42*pi);
%t=-l:().l:l;
Rx=l./(l+25*t.A2);
%Rx=sin(t);
n=length(t)-l;
k=l;
for x=-l:0.01:l
for i=l:n+l
temp= 1;
for j=l:n+l
ifQ~=i)
temp=l(i);
end
end
end
Ln=Rx*l; yi(k)=Ln;
k=k+1;
end % Ln=simple(Ln);
% cof=sym2poly(Ln);
%vpa(Ln,3);
plot(t Rx,To) hold on
% yi = interp 1 (x^Rx^xi/spline*); xi=-1:0.01:1
plot(xi,yi,b*)
hold off
插值结果
等距分段线性插值
这个可以直接连线接起来就可以了
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
-1
-0.8
-0.6
*
*
*
4-
*
*
-0.4
-0.2
0
0.2
0.4
0.6
0.8
f
三次样条插值
function yi=cubic_spline(x,y,ydot,xi)
%三次样条插值公式(三弯矩方程,笫一类边界条件),-其中,
%x为向量,全部的插值节点;
%y为向虽,插值节点处的函数值;
%ydot为向屋,端点处的导数值,
%如果此处值缺省,则用均差代替导数,
%xi为标量,自变量x;
%yi为xi处的两数估计值。
n=length(x); ny=length(y);
%输入的插值点与它的函数值应冇相同的个数。
if n ?二 ny
errorCThe lengths of X and Y must be equal!1);
return;
end
%如果没冇给出y的导数值,则用均差代替导数
if iscmpty(ydot)==l
ydot=[(y(2)-y( 1 ))/(x(2)-x( 1)) (y(n)-y(n-l))/(x(n)-x(n-l))];
end
h=zeros( 1 ,n);lambda=ones(l ,n);mu=ones(l ,n);
M=zeros(n,l );d=zeros(n, 1);
for k=2:n
h(k)=x(k)-x(k?l);
%插值点必须互异
if abs(h(k))eps
crror(thc DATA is error!);
return;
end
end
for k=2:n-l
lambda(k)=h(k+ l)/(h(k)+h(k+1)); mu(k)= 1 -lambda(k);
d(k)=6/(h(k)+h(k+l))...
*((y(k+ l)-y(k))/h(k+ l)-(y(k)-y(k-1 ))/h(k));
end
d( 1 )=6/h(2)*((y(2)-y(l ))/h(2)-ydot( 1 ));
d(n)=6/h(n)*(ydot(2)-(y(n)-y(n-l ))/h(n));
A=diag(2*ones( 1 ,n));
for i=l :n-l
A(i,i+ l)=lambda(i);A(i+1 ,i)=mu(i+1);
end
M=A\d;
for k=2:n
if x(k-l)=xi xi=x(k)
文档评论(0)