使用matlab内置的函数diff来求解函数的一阶和二阶导数。
以下是一个示例代码:
syms x
f(x) = x^3 + 2*x^2 + 3*x + 4; % 定义一个函数
f1(x) = diff(f(x), x, 1); % 求一阶导数
f2(x) = diff(f(x), x, 2); % 求二阶导数
% 输出一阶和二阶导数的符号表达式
disp("一阶导数:")
disp(f1(x))
disp("二阶导数:")
disp(f2(x))
% 在区间[-10, 10]上绘制函数及其一阶、二阶导数
x_vals = -10:0.1:10;
f_vals = double(subs(f(x), x_vals));
f1_vals = double(subs(f1(x), x_vals));
f2_vals = double(subs(f2(x), x_vals));
plot(x_vals, f_vals, 'LineWidth', 2)
hold on
plot(x_vals, f1_vals, 'LineWidth', 2)
plot(x_vals, f2_vals, 'LineWidth', 2)
legend({'f(x)', 'f''(x)', 'f''''(x)'}, 'FontSize', 12)
grid on
运行结果:
一阶导数:
3*x^2 + 4*x + 3
二阶导数:
6*x + 4
绘制的图形如下所示: