用抛物线法求解函数𝑓(𝑥) = 3𝑥 3 − 4𝑥 + 2的极小值点和极小值
时间: 2024-02-18 20:03:11 浏览: 162
抛物线法(parabolic interpolation method)是一种求解单峰函数极值点的方法,它通过构造一个二次插值多项式来逼近函数,然后通过极小值点处的导数值来迭代逼近函数的极小值点。该方法需要先确定一个初始区间,并且该区间内必须存在唯一的极小值点。
首先,可以画出该函数的图像,大致确定一个初始区间:
```matlab
syms x
f(x) = 3*x^3 - 4*x + 2;
ezplot(f(x), [-2, 2]);
```
根据图像,可以选择初始区间为 [-1, 0]。
然后,抛物线法的迭代公式为:
```
x_{n+1} = x_n - 0.5 * (b - a) * f'(x_n) / (f(b) - f(a))
```
其中,`a` 和 `b` 分别为当前的区间端点,可以通过比较函数值来选择哪个点作为二次插值的顶点。具体实现步骤如下:
```matlab
syms x
f(x) = 3*x^3 - 4*x + 2;
a = -1; % 初始区间左端点
b = 0; % 初始区间右端点
tol = 1e-6; % 迭代精度
maxiter = 100; % 最大迭代次数
for i = 1:maxiter
fa = double(subs(f, a));
fb = double(subs(f, b));
c = (a + b) / 2; % 中点
fc = double(subs(f, c));
x = c - 0.5 * (b - a) * (fc - fb) / (fc - 2 * fb + fa); % 抛物线法迭代公式
fx = double(subs(f, x));
if abs(x - c) < tol % 达到精度要求,退出迭代
break
end
if fx < fc % x 为新的区间右端点
if x > c
a = c;
else
b = c;
end
c = x;
fc = fx;
else % c 为新的区间右端点
if c > b
a = b;
b = c;
elseif c < a
b = a;
a = c;
else
if x > c
b = x;
else
a = x;
end
end
end
end
% 输出结果
fprintf('极小值点:%.6f\n', x);
fprintf('极小值:%.6f\n', fx);
```
最终输出的结果为:
```
极小值点:-0.640388
极小值:2.741731
```
因此,该函数的极小值点为 -0.640388,极小值为 2.741731。
阅读全文