求解一元二次方程的根

#生成式 AI 的发展方向,是 Chat 还是 Agent?#

通用表达式: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′|┛ 嗷~~。

  • 15
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值