用matlab写代码:考虑已知函数y=sin(x) (1)取5个等距节点形成列向量x0,试估计出在节点x0(i),i=1,2,…,5上的函数值y0(i)组成的列向量y。 (2)找到如下4次多项式P(x)=a1x^4+a2x^3+a3x^2+a4x+a5作为(x0(i),y0(i)),i =1,2,…,5的插值函数,并绘制数据点及插值函数的曲线(注意分别使用两种方法,线性插值和拉格朗日插值法)
时间: 2024-03-17 09:41:36 浏览: 16
以下是matlab代码:
(1)
```matlab
% 定义节点个数
n = 5;
% 定义节点间隔
h = 2*pi/(n-1);
% 定义节点向量
x0 = (0:h:2*pi)';
% 计算y值
y0 = sin(x0);
```
(2)
线性插值法:
```matlab
% 定义插值点个数
m = 100;
% 定义插值点向量
x = linspace(0,2*pi,m)';
% 计算插值函数值
y = zeros(m,1);
for i=1:m
if x(i)<=x0(1)
y(i) = y0(1) + (x(i)-x0(1))/(x0(2)-x0(1))*(y0(2)-y0(1));
elseif x(i)>=x0(n)
y(i) = y0(n) + (x(i)-x0(n))/(x0(n)-x0(n-1))*(y0(n)-y0(n-1));
else
for j=2:n-1
if x(i)>=x0(j) && x(i)<=x0(j+1)
y(i) = y0(j) + (x(i)-x0(j))/(x0(j+1)-x0(j))*(y0(j+1)-y0(j));
end
end
end
end
% 绘图
figure;
plot(x0,y0,'o',x,y);
legend('原函数','插值函数');
```
拉格朗日插值法:
```matlab
% 定义插值点个数
m = 100;
% 定义插值点向量
x = linspace(0,2*pi,m)';
% 计算插值函数值
y = zeros(m,1);
for i=1:m
for j=1:n
L = 1;
for k=1:n
if k~=j
L = L*(x(i)-x0(k))/(x0(j)-x0(k));
end
end
y(i) = y(i) + L*y0(j);
end
end
% 绘图
figure;
plot(x0,y0,'o',x,y);
legend('原函数','插值函数');
```