我想在Matlab中绘制三次方程式x ^ {3} + Ax ^ {2} + 1 = 0的根。我知道A <-1.88有3个实根,如果A> -1.88有1个实根。我想绘制3个实根作为A的函数,当它切换为1个实根和2个复数时,将实根和复共轭解的实部分都绘制在同一图中(也许是2-3)图)。
我是Matlab的初学者。我尝试过
syms x A
r = solve(x^3 + A*x^2+1 == 0, x);
ezplot(vpa(r(1)),[-10,10])
ezplot(vpa(r(2)),[-10,10])
ezplot(vpa(r(3)),[-10,10])
但是vpa不知道如何对r进行数值评估。
答案 0 :(得分:7)
不需要为此做符号数学,
A = (-3:0.01:0)'; % create a vector of values for A
r = arrayfun(@(A)real(roots([1 A 0 1])),A,'uni',false); % calculate the polynomial roots for all values of A
r = [r{:}]; % convert result to a numeric array
plot(A,r'); % plot the result
grid on;
title('Real parts of Polynomial');
xlabel('A');