求解一元二次方程的根

通用表达式:ax^2 + bx + c = 0 (a != 0)

概念

一元:这个词表示方程中只有一个未知数,在通用表达式中唯一的未知数是 x ,其公式称为一元方程。

二次:这个词表示方程中未知数的最高次幂是二次,即 x^2,其公式称为二次方程

一元二次方程:指形如(ax^2 + bx + c = 0)的方程,其中 a为二次项系数,b为一次项系数,c是常数项。

一元二次方程的根:指使方程等式两边成立的未知数x的值。

一元二次方程求根公式

实数求根:

复数求根:-b/2a是实数部分,简称实部,另外部分称为虚数部分,简称虚部,复数 = 实部+虚部;

求解一元二次方程的根需要了解根的情况。

人们根据公式,找到方程规律,△ = b^2  - 4ac;该表达式称为判别式(discriminant)

当 △ > 0,一元二次方程存在两个不同的实根;

当 △ = 0,一元二次方程存在两个相同的实根(重(chong)根);

当 △ < 0,一元二次方程不存在实根,而是存在两个共轭复根;

  1. 重根

    • 当一元二次方程 ( ax^2 + bx + c = 0 ) 的判别式 ( b^2 - 4ac = 0 ) 时,方程有一个重复的实根。这个根被称为“重根”或“单根”。
    • 例如,方程 ( (x - 2)^2 = 0 ) 的根是 ( x = 2 ),这个根的重数是2,因为方程可以看作是 ( (x - 2) ) 的平方。
  2. 实根

    • 实根是指使方程成立的实数值。如果判别式 ( b^2 - 4ac ) 大于零,方程会有两个不同的实根。如果判别式等于零,方程会有一个重根(也是实根)。
    • 实根是与复数相对的概念。例如,方程 ( x^2 - 5x + 6 = 0 ) 的根 ( x = 2 ) 和 ( x = 3 ) 都是实数,所以它们是实根。
  3. 共轭复根

    • 当方程的判别式 ( b^2 - 4ac ) 小于零时,方程没有实根,而有两个复根。这两个复根是复共轭对,即它们的虚部符号相反。
    • 例如,方程 ( x^2 + x + 1 = 0 ) 的判别式是 ( 1^2 - 4*1*1 = - 3 ),小于零,因此有两个复根。具体解是 ( x1 = (-1/2 + i * (√3 / 2))),(x2 = (-1/2 - i * (√3 / 2) ))。这两个根是复共轭对。

c++求解一元二次方程根

discriminant.cpp

#include <iostream>
#include <cmath>
using namespace std;

int main() {

    double a, b, c, x1, x2, discriminant, realPart, imaginaryPart;

    while (true) {
    cout << "请输入一元二次方程的系数:a, b 和 c: ";
    if (!(cin >> a >> b >> c)) {
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(),'\n');
        cout << "输入无效,请确保输入的是三个实数" << endl;
        continue;
    }
    if (a == 0) {
        cout << "二次项系数a不能为零" << endl;
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(),'\n');
        continue;
    }

    break;

    }
    discriminant = b*b - 4*a*c;

    if (discriminant > 0) {
        x1 = (-b + sqrt(discriminant)) / (2*a);
        x2 = (-b - sqrt(discriminant)) / (2*a);
        cout << "\n判别式大于零,存在两个不相同的实数" << endl;
        cout << "x1 = " << x1 << endl;
        cout << "x2 = " << x2 << endl;
    }

    else if (discriminant == 0) {
        cout << "\n判别式等于零,存在两个相同的实数" << endl;
        x1 = (-b + sqrt(discriminant)) / (2*a);
        cout << "x1 = x2 =" << x1 << endl;
    }

    else {
        realPart = -b/(2*a);
        imaginaryPart =sqrt(-discriminant)/(2*a);
        cout << "\n判别式小于零,实数不存在,存在两个共轭复数"  << endl;
        cout << "x1 = " << realPart << "+" << imaginaryPart << "i" << endl;
        cout << "x2 = " << realPart << "-" << imaginaryPart << "i" << endl;
    }

    return 0;
}

运行效果

 

额外收获

什么是实数、复数?

复数和实数是数学中两个重要的数系,它们之间有几个关键的区别:

实数

  1. 定义

    • 实数是所有可以在数轴上表示的数,包括正数、负数、零、整数、分数和无理数(如 (\sqrt{2}))。
  2. 形式

    • 实数的标准形式就是通常我们所见的普通数字,如 (1)、(-2)、(0.5) 等。
  3. 表示

    • 实数可以用单一的数值表示,没有虚部。例如,实数 ( x ) 可以写成 ( x + 0i ),其中虚部为零。
  4. 运算

    • 实数可以进行加法、减法、乘法、除法等基本运算,其结果仍然是实数。

复数

  1. 定义

    • 复数是由实数和虚数组成的数。形式上,复数可以表示为 ( a + bi ),其中 ( a ) 和 ( b ) 都是实数,( i ) 是虚数单位,满足 ( i^2 = -1 )。
  2. 形式

    • 复数包括两个部分:实部 ( a ) 和虚部 ( b )。例如,复数 ( 3 + 4i ) 的实部是 3,虚部是 4。
  3. 表示

    • 复数的标准形式为 ( a + bi ),其中 ( a ) 是实部,( b ) 是虚部。如果 ( b = 0 ),复数就是实数;如果 ( a = 0 ),复数就是纯虚数。
  4. 运算

    • 复数的加法、减法、乘法和除法规则与实数类似,但涉及到虚部的运算。例如,复数乘法要用到分配律和虚数单位的性质。

关键区别

  1. 虚部

    • 实数:虚部为零。
    • 复数:虚部可以是非零的实数。
  2. 数轴与复平面

    • 实数:可以在一维的数轴上表示。
    • 复数:需要在二维的复平面上表示,实部在横轴上,虚部在纵轴上。
  3. 解方程

    • 实数:有时不能解决所有方程,例如方程 ( x^2 + 1 = 0 ) 在实数范围内没有解。
    • 复数:可以解决所有二次方程,例如 ( x^2 + 1 = 0 ) 在复数范围内的解是 ( i ) 和 ( -i )。
  4. 集合

    • 实数:是复数的一个子集,所有实数都是复数,但并不是所有复数都是实数。

复数包含了实数,在实数的基础上扩展了虚数部分。

小结

一元二次方程的图像直观求根

 

找规律,解决问题,编写的程序通过求判别式 △ = b^2  - 4ac的值是否等于和小于或大于零结合求根公式得到一元二次方程的根,其中使用了头文件cmatch的数学函数sqrt(),该函数接受一个参数,用来计算参数的平方根;另需要注意二次项系数不可以为零,换位思考,二次项系数a==0,那么一元二次方程还能叫一元二次方程吗?当a=0,就成了一元一次方程。a、b等于0,就剩下常数了┗|`O′|┛ 嗷~~。

相关推荐

  1. 实验3-11 求二次方程(PTA)

    2024-07-21 06:12:06       41 阅读
  2. 二次方程---PTA实验C++

    2024-07-21 06:12:06       37 阅读
  3. C练习——二次方程求解

    2024-07-21 06:12:06       51 阅读
  4. c语言:二次方程(有实

    2024-07-21 06:12:06       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 06:12:06       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 06:12:06       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 06:12:06       45 阅读
  4. Python语言-面向对象

    2024-07-21 06:12:06       55 阅读

热门阅读

  1. Perl文件系统过滤:数据筛选的艺术

    2024-07-21 06:12:06       20 阅读
  2. 【音视频】AAC编码器与ffmpeg生成AAC数据

    2024-07-21 06:12:06       16 阅读
  3. 求职学习day7

    2024-07-21 06:12:06       18 阅读
  4. 算法学习2——排序算法(2)

    2024-07-21 06:12:06       15 阅读
  5. Jupyter Notebook与机器学习:使用Scikit-Learn构建模型

    2024-07-21 06:12:06       18 阅读
  6. C#面:ASP.NET Core项目如何设置IP地址和端口号

    2024-07-21 06:12:06       13 阅读
  7. 有关css的题目

    2024-07-21 06:12:06       15 阅读
  8. Go: IM系统接入ws进行消息发送以及群聊功能 (5)

    2024-07-21 06:12:06       14 阅读
  9. Perl编程秘籍:匿名数组与哈希的隐秘力量

    2024-07-21 06:12:06       15 阅读