matlab解三次方程,并且输出图像
一个小程序,输入三次方程,输出:
- 化简形式x^3+px+q=0
- 判别式
- 解
- 图像
>> x = input('[a b c d]=');
a = x(1,1);b=x(1,2);c=x(1,3);d=x(1,4);
p=(- b^2/(3*a) + c)/a;
q=d/a + (2*b^3)/(27*a^3) - (b*c)/(3*a^2);
m = q^2 /4 + p^3 /27 ;
w=-0.5+0.5*sqrt(3)*i ;
x1=(-q/2 + m^0.5)^(1/3) + (-q/2 - m^0.5)^(1/3) ;
x2=w *(-q/2 + m^0.5)^(1/3) +w^2 * (-q/2 - m^0.5)^(1/3) ;
x3=w^2 *(-q/2 + m^0.5)^(1/3) +w * (-q/2 - m^0.5)^(1/3) ;
e=sprintf('化简后的形式为: x^3 + %g x + %g ; 判别式为: %g ', p, q , m );
disp(e);
y=linspace(-5, 5);
f=y.^3 + p*y + 1;
plot(y,f,'LineWidth',1.5);
x1, x2, x3
ax=gca; %控制图像输出
ax.XAxisLocation='origin';
ax.YAxisLocation='origin';
ax.LineWidth=1.5;
box off;
grid on;
让我们以 x 3 + 1 = 0 x^3+1=0 x3+1=0为例: