求解一元二次方程的根

凢曐 2024-10-16 17:01:01 阅读 89

通用表达式: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,一元二次方程不存在实根,而是存在两个共轭复根;

重根

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

实根

实根是指使方程成立的实数值。如果判别式 ( b^2 - 4ac ) 大于零,方程会有两个不同的实根。如果判别式等于零,方程会有一个重根(也是实根)。实根是与复数相对的概念。例如,方程 ( x^2 - 5x + 6 = 0 ) 的根 ( x = 2 ) 和 ( x = 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

<code>#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;

}

运行效果

 

额外收获

什么是实数、复数?

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

实数

定义

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

形式

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

表示

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

运算

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

复数

定义

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

形式

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

表示

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

运算

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

关键区别

虚部

实数:虚部为零。复数:虚部可以是非零的实数。

数轴与复平面

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

解方程

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

集合

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

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

小结

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

 

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。