if-else-end结构求判别式和一元二次方程的根

 时间:2026-02-14 09:15:32

1、第一,求一元二次方程a*x^2+b*x+c=0的根,判别式delta=b^2-4*a*c,delta>0有两个不同的实根,delta=0有两个相同的实根,delta<0没有实根。

启动MATLAB,新建脚本(Ctrl+N),在脚本编辑区输入如下代码:

close all; clear all; clc

a=input('please input ''a'':');

b=input('please input ''b'':');

c=input('please input ''c'':');

delta=b^2-4*a*c;

syms x

if delta>0

    fprintf('the equation has two different real roots\n')

    X=solve(a*x^2+b*x+c==0);

    x1=X(1),x2=X(2)

    ezplot(a*x^2+b*x+c);hold on

    plot([x1,x2],0,'ro','MarkerSize',10,'MarkerFace','r')

    plot([-2*pi:0.1:2*pi],0,'r')

elseif delta==0

    fprintf('the equation has two same real roots\n')

    X=solve(a*x^2+b*x+c==0);

    x=X

else

    fprintf('the equation does not have real roots\n')

end

其中solve()是MATLAB自带的求解等式的函数。

if-else-end结构求判别式和一元二次方程的根

2、第二,保存和运行上述脚本,命令行窗口提示请输入a,b和c。

以一元二次方程2*x^2+4*x+1=0为例,运行该脚本并输入a=2,b=4和c=1,则会得到如下结果

please input 'a':1

please input 'b':4

please input 'c':2

the equation has two different real roots

x1 =

2^(1/2) - 2

x2 =

- 2^(1/2) - 2

即一元二次方程2*x^2+4*x+1=0有两个不同的实根。

if-else-end结构求判别式和一元二次方程的根

3、第三,以一元二次方程1*x^2+2*x+1=0为例,运行上述脚本,则得到如下结果。

please input 'a':1

please input 'b':2

please input 'c':1

the equation has two same real roots

x =

 -1

 -1

即一元二次方程1*x^2+2*x+1=0有两个相等的实根。

if-else-end结构求判别式和一元二次方程的根

4、第四,以一元二次方程1*x^2+2*x+3=0为例,运行上述脚本,则得到如下结果。

please input 'a':1

please input 'b':2

please input 'c':3

the equation does not have real roots

即一元二次方程1*x^2+2*x+3=0没有实根。

if-else-end结构求判别式和一元二次方程的根

5、第五,在上述脚本的基础上,对于一元二次方程有两个不同实根的情况,要求MATLAB绘制出函数图像和标出两个实数根,只需将脚本改进如下:

close all; clear all; clc

a=input('please input ''a'':');

b=input('please input ''b'':');

c=input('please input ''c'':');

delta=b^2-4*a*c;

syms x

if delta>0

    fprintf('the equation has two different real roots\n')

    X=solve(a*x^2+b*x+c==0);

    x1=X(1),x2=X(2)

    ezplot(a*x^2+b*x+c);hold on

    plot([x1,x2],0,'ro','MarkerSize',10,'MarkerFace','r')

    plot([-2*pi:0.1:2*pi],0,'r')

elseif delta==0

    fprintf('the equation has two same real roots\n')

    X=solve(a*x^2+b*x+c==0);

    x=X

else

    fprintf('the equation does not have real roots\n')

end

相比第一步的脚本而言,只是添加三行代码:

    ezplot(a*x^2+b*x+c);hold on

    plot([x1,x2],0,'ro','MarkerSize',10,'MarkerFace','r')

    plot([-2*pi:0.1:2*pi],0,'r')

用于绘制函数图像和标出两个不同的实数根。

if-else-end结构求判别式和一元二次方程的根

6、第六,依旧以一元二次方程2*x^2+4*x+1=0为例,运行上述改进的脚本,不仅可以在命令行窗口得到方程的两个不同的实根,还可以得到如下图像。

if-else-end结构求判别式和一元二次方程的根

  • 雨课堂错过了扫码怎么办 #校园分享#
  • 如何使用mathematica求解矩阵的特征多项式?
  • 解向量的秩为什么是n-r
  • 雨课堂时间过了怎么答题
  • 幂指函数的求导方法
  • 热门搜索
    什么是散光 舌加一笔是什么字 什么头什么颈 什么是区块链 什么动物没有方向感 居里夫人发明了什么 广告费计入什么科目 tif是什么格式 92和95号汽油有什么区别 cinema是什么意思