编制matlab程序,实现函数f(x)=1/(1+x^2)在区间[-5,5]上分别采用10次、15次、20次等距节点差值公式,观察察龙格现象,要求龙格现象图像在在同一窗口的不同部分显示多个绘图。
时间: 2024-03-19 12:44:27 浏览: 51
MATLAB非线性最小二乘法【L-M算法程序】 利用 LM 方法求解非线性方程组F(x)= 0, 可适用于未知数的个数与方程的个
以下是实现该程序的 Matlab 代码:
```matlab
% 定义函数
f = @(x) 1./(1+x.^2);
% 定义区间和节点数
a = -5;
b = 5;
n1 = 10;
n2 = 15;
n3 = 20;
% 定义等距节点
x1 = linspace(a, b, n1+1);
x2 = linspace(a, b, n2+1);
x3 = linspace(a, b, n3+1);
% 计算差值多项式
p1 = polyfit(x1, f(x1), n1);
p2 = polyfit(x2, f(x2), n2);
p3 = polyfit(x3, f(x3), n3);
% 计算插值结果
y1 = polyval(p1, x1);
y2 = polyval(p2, x2);
y3 = polyval(p3, x3);
% 计算理论值
x = linspace(a, b, 1000);
y = f(x);
% 计算龙格现象
R1 = abs(y - polyval(p1, x));
R2 = abs(y - polyval(p2, x));
R3 = abs(y - polyval(p3, x));
% 绘制图像
figure;
subplot(3,1,1);
plot(x, R1, 'r');
title('龙格现象图像(n=10)');
xlabel('x');
ylabel('R(x)');
subplot(3,1,2);
plot(x, R2, 'g');
title('龙格现象图像(n=15)');
xlabel('x');
ylabel('R(x)');
subplot(3,1,3);
plot(x, R3, 'b');
title('龙格现象图像(n=20)');
xlabel('x');
ylabel('R(x)');
```
在这个程序中,我们使用 `subplot` 函数在一个窗口中绘制了三个子图,每个子图分别显示了不同节点数下的龙格现象。运行该程序,即可得到在同一窗口不同部分显示的龙格现象图像。
阅读全文