作业帮 > 综合 > 作业

求拉格朗日差值、牛顿插值以及三次样条插值的matlab实现,要求的是源代码.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/04/29 05:34:08
求拉格朗日差值、牛顿插值以及三次样条插值的matlab实现,要求的是源代码.
% Lagrange插值
clear
clc
%-----------------------------
n=10; %结点个数
lb=-1; %下界
ub=1; %上界
step=0.01; %作图点步长
%-----------------------------
% 原始函数图形
x0=lb:step:ub;
y0=1./(1+25*x0.^2);
plot(x0,y0,'r-');
hold on
%-----------------------------
% 插值函数
for i=1:n+1
xi(i)=lb+(ub-lb)*(i-1)/n;
yi(i)=1/(1+25*xi(i)^2);
end
%------------------------------
count=1;
for x=lb:step:ub
fl=0;
%--------------------------
%求出pn(xk)
for k=1:n+1
up=1;
dn=1;
%----------------------
%求出f(xk)
for i=1:n+1
if =i
up=up*(x-xi(i));
dn=dn*(xi(k)-xi(i));
end
end
%----------------------
fl=fl+yi(k)*up/dn;
end
pn(count)=fl;
%--------------------------
fi(count)=1/(1+25*x^2);%求原函数的值
count=count+1;
end
%------------------------------
% L插值函数图
x=lb:step:ub;
plot(x,pn,'g--')
%------------------------------
num=(ub-lb)/step+1;
for i=1:num
p_f(i)=pn(i)-fi(i);
end
center=fix(num/2);
scale=fix(num/10);
a=center-scale;
b=center+scale;
disp ' pn(i)-fi(i) 的值为:'
p_f(a:b)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
clc
%Newton迭代法求解极小值点
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [R,quad,err,h]=Romberg(f,a,b,n,tol)
M=1;
h=b-a;
err=1;
j=0;
R=zeros(n+1,n+1);
R(1,1)=h*(feval(f,a)+feval(f,b))/2;
while((err>tol)&(j