f(x)=exp(x)在[-1,1]上的二、三次最佳平方逼近多项式。 并画图进行比较。给出matlab代码
时间: 2024-10-17 16:06:26 浏览: 25
在MATLAB中,为了找到指数函数 `f(x) = exp(x)` 在区间 `[-1, 1]` 上的最佳平方逼近的二次和三次多项式,我们可以使用泰勒级数展开或者数值方法如最小二乘法。这里我们选择最小二乘法,因为它是解决此类问题的标准方法。
首先,我们需要计算多项式系数,通常使用 `polyfit` 函数。对于二次多项式 (a*x^2 + b*x + c),三次多项式 (a'*x^3 + b'*x^2 + c'*x + d'),它们的系数可以通过以下公式计算:
二次多项式:
```math
y = a*x^2 + b*x + c
a = -(Σ((x_i - x_mean)^2 * exp(x_i))) / (Σ(exp(x_i)) * (x_i - x_mean)^2)
b = 2 * Σ((x_i - x_mean) * exp(x_i)) / (Σ(exp(x_i)) * (x_i - x_mean)^2) - a * Σ(x_i) / Σ(1)
c = Σ(exp(x_i)) / Σ(1) - a * Σ(x_i^2) / Σ(1) - b * Σ(x_i) / Σ(1)
```
其中,`x_mean` 是 `[x_min, x_max]` 区间的平均值。
三次多项式类似,但有更多的项:
```math
y = a'*x^3 + b'*x^2 + c'*x + d'
a' = ...
b' = ...
c' = ...
d' = ...
```
计算这些系数的具体过程需要编程实现,这里假设已经得到了系数a, b, c 和 a', b', c', d'。
接下来,使用 `polyval` 函数分别评估二次和三次多项式,以及原始指数函数,然后绘制比较图:
```matlab
% 定义输入范围
x = linspace(-1, 1, 100); % 细化采样点
% 转换到实际的多项式形式
y_exp = exp(x); % 原始指数函数
y_quad = polyval([c, b, a], x); % 二次多项式
y_cubic = polyval([d, c', b', a'], x); % 三次多项式
% 绘制比较图
figure;
hold on;
plot(x, y_exp, 'r', 'LineWidth', 2, 'DisplayName', 'Original Function exp(x)');
plot(x, y_quad, 'b--', 'LineWidth', 2, 'DisplayName', 'Quadratic Approximation');
plot(x, y_cubic, 'g:', 'LineWidth', 2, 'DisplayName', 'Cubic Approximation');
hold off;
% 添加标题和轴标签
title('Comparison of Best-Square Approximating Polynomials for exp(x)');
xlabel('x');
ylabel('y');
legend show;
% 显示图表
grid on;
```
这段代码会生成一张图像,展示了指数函数及其与二次和三次多项式拟合的对比。
阅读全文