初中生必看之一元二次方程的根与系数的关系
slzx2022YuYihan
·
·
个人记录
前言
这个推导过程对初中生还是非常有用的,大家记得收藏!
此篇后续
罗氏求根 一元二次方程的根与系数的关系の后续
入门知识
-
(-a)^2 = a^2
-
(\frac{a}{b})^2 = \frac{a^2}{b^2}
-
\sqrt{a}$中,$a \ge 0
-
a^2 = x (x \ge 0)$,那么$a = \pm \sqrt{x}
-
(ab)^2 = a^2b^2
-
(a + b)^2 = a^2 + 2ab + b^2
-
a^2 - b^2 = (a+b)(a-b)
-
(\sqrt{a})^2 = a(a \ge 0)
-
\sqrt{a^2} = |a| =\begin{cases} a & (a \ge 0) \\ -a & (a < 0) \end{cases}
-
\sqrt{ab} = \sqrt{a} \times \sqrt{b} (a \ge 0,b \ge 0)
-
\sqrt {\frac{a}{b}} = \frac{\sqrt {a}}{\sqrt {b}} (a \ge 0,b > 0)
公式推导(看不到的自己去下面找进度条去拉动)
对于一个一元二次方程ax^2 + bx + c = 0 (a,b,c均为常数,且a \ne 0)(任何满足上述要求的一元二次函数都可以转化为ax^2 + bx + c = 0的形式),如果b^2 - 4ac \ge 0,那么:
ax^2 + bx + c = 0
$x^2 + \frac {b}{a}x = - \frac{c}{a}$ //两边同除以a,方便配方
$x^2 + \frac {b}{a}x + (\frac{b}{2a})^2 = - \frac{c}{a} + (\frac{b}{2a})^2$ //配方
$(x + \frac{b}{2a})^2 = - \frac{c}{a} + (\frac{b}{2a})^2
(x + \frac{b}{2a})^2 = - \frac{c}{a} + \frac{b^2}{4a^2}
(x + \frac{b}{2a})^2 = - \frac{4ac}{4a^2} + \frac{b^2}{4a^2}
(x + \frac{b}{2a})^2 = \frac{b^2-4ac}{4a^2}
x + \frac{b}{2a} = \pm \sqrt {\frac{b^2-4ac}{4a^2}}
x + \frac{b}{2a} = \pm \frac{\sqrt {b^2-4ac}}{2a}
x_1 = \frac{\sqrt {b^2-4ac}}{2a} - \frac{b}{2a} = \frac{-b + \sqrt{b^2-4ac}}{2a}
x_2 = - \frac{\sqrt {b^2-4ac}}{2a} - \frac{b}{2a} = \frac{-b - \sqrt{b^2-4ac}}{2a}
so,
x = \frac{-b \pm \sqrt{b^2-4ac}}{2a} (b^2 - 4ac \ge 0)
当然,学过二次函数的也可以这样子推导(我以后写一个二次函数的博客,敬请期待):
基本公式:
$a(x + \frac{b}{2a})^2 + \frac{4ac - b^2}{4a} = 0
a(x + \frac{b}{2a})^2 + \frac{4ac - b^2}{4a} = 0
a(x + \frac{b}{2a})^2 = - \frac{4ac - b^2}{4a}
(x + \frac{b}{2a})^2 = - \frac{4ac - b^2}{4a^2}
(x + \frac{b}{2a})^2 = \frac{b^2 - 4ac }{4a^2}
x + \frac{b}{2a} = \pm \sqrt {\frac{b^2-4ac}{4a^2}}
x + \frac{b}{2a} = \pm \frac{\sqrt {b^2-4ac}}{2a}
x_1 = \frac{\sqrt {b^2-4ac}}{2a} - \frac{b}{2a} = \frac{-b + \sqrt{b^2-4ac}}{2a}
x_2 = - \frac{\sqrt {b^2-4ac}}{2a} - \frac{b}{2a} = \frac{-b - \sqrt{b^2-4ac}}{2a}
so,
x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}
拓展1(可能不算拓展)
· 若b^2 - 4ac > 0,方程ax^2 + bx + c = 0(a \ne 0)有两个不相等的实数根:
$x_2 = \frac{-b - \sqrt{b^2-4ac}}{2a}
· 若b^2 - 4ac = 0,方程ax^2 + bx + c = 0(a \ne 0)有两个相等的实数根:
x = - \frac{b}{2a}
· 若b^2 - 4ac < 0,方程ax^2 + bx + c = 0(a \ne 0)没有实数根.
拓展2(韦达定理)
已知ax^2 + bx + c = 0(a,b,c为常数,且a \ne 0),如果b^2-4ac \ge 0,求x_1 + x_2和x_1 \times x_2
x_1 = \frac{-b + \sqrt{b^2-4ac}}{2a},x_2 = \frac{-b - \sqrt{b^2-4ac}}{2a}
x_1 + x_2 = \frac{-b + \sqrt{b^2-4ac}}{2a} + \frac{-b - \sqrt{b^2-4ac}}{2a} = \frac{-2b}{2a} = - \frac{b}{a}
x_1 \times x_2 = \frac{-b + \sqrt{b^2-4ac}}{2a} \times \frac{-b - \sqrt{b^2-4ac}}{2a} = \frac{(-b + \sqrt{b^2-4ac}) \times (-b - \sqrt{b^2-4ac})}{4a^2} = \frac{(-b)^2 - (\sqrt{b^2-4ac})^2}{4a^2} = \frac{b^2 - (b^2-4ac)}{4a^2} = \frac{4ac}{4a^2} = \frac{c}{a}
例题
说了这么多,大家可能觉得在编程方面可能没有什么帮助,所以我加了一道例题,如下:
【NOIP2003初赛完善程序】一元二次方程
【题目描述】
方程ax^2+bx+c=0,要求给出它的实数解.
【输入格式】
三个实数:a,b,c,是方程的三个系数(a \ne 0).
【输出格式】
如果无实数解,则输出 No solution;
如果有两个相等的实数解,则输出其中一个,四舍五入到小数点后面3位;
如果有两个不等的实数解,则解与解之间用逗号隔开,同样要四舍五入到小数点后3位.
【输入样例】
1 2 1
【输出样例】
-1.000
现在这道题目是不是有点water了!
可以直接用拓展1的结论!
\Huge AC Code
#include<bits/stdc++.h>
#define LL long long
#define rep(i,l,r) for (LL i=(l);i<=(r);++i)
#define per(i,r,l) for (LL i=(r);i>=(l);--i)
#define fre freopen
using namespace std;
inline LL read(){
LL s=0,w=1;
char c=getchar();
for (;!isdigit(c);c=getchar()) if (c=='-') w=-1;
for (;isdigit(c);c=getchar()) s=(s<<1)+(s<<3)+(c^48);
return s*w;
}
double a,b,c,delta;
signed main(){
//fre(".in","r",stdin);
//fre(".out","w",stdout);
a=read(),b=read(),c=read();
delta=b*b-4*a*c;
if (delta>0){
printf("%.3lf",(-1*b+sqrt(delta))/(2*a));
printf(",");
printf("%.3lf",(-1*b-sqrt(delta))/(2*a));
}
else if (abs(delta)<0.0001) //存在精度误差
printf("%.3lf",-1*b/(2*a));
else
puts("No solution");
return 0;
}