数值分析(代码)-Lagrange插值、Newton插值、曲线拟合方法

Lagrange插值-习题4.1
习题代码:
main.h:
clc;clear;format long;
x0=-5:1:5;
y0=cos(x0)./sqrt(1+(sin(x0)).^2);

x=-5:0.1:5;
y=lagrange(x0,y0,x);
figure;
plot(x,y,'r--','LineWidth',3);

hold on
w=-5:0.01:5;
v=cos(w)./sqrt(1+(sin(w)).^2);
plot(w,v,'b-','LineWidth',3);

Lagrange.m:
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
end

运行结果:
 

Newton插值-习题4.2
习题代码:
main.h:
clc;clear;format long;
x0=0.4:0.15:1;
y0=sqrt(1+([exp(x0)-exp(-x0)]./2).^2);
x=0.596;
y=newton_interpolation(x0,y0,x)
n=sqrt(1+([exp(0.596)-exp(-0.596)]./2).^2);
abs(y-n)

ewton_interpolation.m:
function np=newton_interpolation(x0,y0,x)
n=length(x0); a(1)=y0(1);
for k=1:n-1
d(k,1)=(y0(k+1)-y0(k))/(x0(k+1)-x0(k));
end
for j=2:n-1
for k=1:n-j
d(k,j)=(d(k+1,j-1)-d(k,j-1))/(x0(k+j)-x0(k));
end
end
for j=2:n
a(j)=d(1,j-1);
end
b(1)=1;
c(1)=a(1);
for j=2:n
b(j)=(x-x0(j-1)).*b(j-1);
c(j)=a(j).*b(j);
end
np=sum(c)

运行结果:
 

曲线拟合方法-习题4.8
习题代码:
main.h:
x0=[19 25 31 38 41]';
y0=[19 32.3 49 73.3 97.8]';
p=polyfit(x0,y0,2);
x1=19:0.05:41;
y1=polyval(p,x1);
plot(x0,y0,'*r',x1,y1,'-b');
运行结果:
 



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天不熬夜!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值