利用MATLAB计算下列高等数学问题 设f(x)=x²*sin(x)+e^(x+x²)*cos(2x)+x (1)求x属于[-10,10]区间内可能存在的极值,绘制f(x)图形,并在图形上标出f(根号2)的值.
时间: 2023-10-07 09:12:36 浏览: 92
可以使用MATLAB中的符号计算工具箱来求解该问题。
首先,定义符号变量x和函数f(x):
```
syms x
f(x) = x^2*sin(x) + exp(x+x^2)*cos(2*x) + x;
```
接着,求导并解出导数为0的点:
```
df = diff(f, x);
s = solve(df == 0, x, 'Real', true);
```
这里使用`solve`函数求解方程`df = 0`,限定解的类型为实数(`Real`),并将结果保存在`s`中。
下一步,判断解的有效性,并找到极值:
```
extrema = [];
for i = 1:length(s)
if abs(imag(s(i))) < eps && -10 <= s(i) && s(i) <= 10
extrema(end+1) = s(i);
end
end
values = subs(f, extrema);
[fmax, idxmax] = max(values);
[fmin, idxmin] = min(values);
xmax = extrema(idxmax);
xmin = extrema(idxmin);
```
这里使用`eps`来判断解的虚部是否接近于0。如果解在区间[-10,10]内且为实数,则认为它是一个可能存在的极值点。接着,使用`subs`函数计算出这些点对应的函数值,并找到其中的最大值和最小值。最后,将最大值和最小值对应的自变量值保存在`xmax`和`xmin`中。
最后,绘制函数图形并在图中标出最小值和最大值:
```
fplot(f, [-10, 10]);
hold on;
plot(xmax, fmax, 'ro');
plot(xmin, fmin, 'ro');
text(xmax, fmax, ['(' num2str(xmax) ', ' num2str(fmax) ')']);
text(xmin, fmin, ['(' num2str(xmin) ', ' num2str(fmin) ')']);
```
这里使用`fplot`函数绘制函数图形,然后使用`plot`函数在最大值和最小值对应的点上绘制红色圆圈,并使用`text`函数在圆圈旁边标出点的坐标和函数值。
完整代码如下:
```
syms x
f(x) = x^2*sin(x) + exp(x+x^2)*cos(2*x) + x;
df = diff(f, x);
s = solve(df == 0, x, 'Real', true);
extrema = [];
for i = 1:length(s)
if abs(imag(s(i))) < eps && -10 <= s(i) && s(i) <= 10
extrema(end+1) = s(i);
end
end
values = subs(f, extrema);
[fmax, idxmax] = max(values);
[fmin, idxmin] = min(values);
xmax = extrema(idxmax);
xmin = extrema(idxmin);
fplot(f, [-10, 10]);
hold on;
plot(xmax, fmax, 'ro');
plot(xmin, fmin, 'ro');
text(xmax, fmax, ['(' num2str(xmax) ', ' num2str(fmax) ')']);
text(xmin, fmin, ['(' num2str(xmin) ', ' num2str(fmin) ')']);
```
阅读全文