初中生必看之一元二次方程的根与系数的关系

· · 个人记录

前言

这个推导过程对初中生还是非常有用的,大家记得收藏

此篇后续

罗氏求根 一元二次方程的根与系数的关系の后续

入门知识

公式推导(看不到的自己去下面找进度条去拉动)

对于一个一元二次方程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_2x_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;
}