前言
这个推导过程对初中生还是非常有用的,大家记得收藏!
前往题解部分的链接(我把题解做成了连续剧一样的东西)
上文链接
下文链接
此篇后续
入门知识
-
(−a)2=a2
-
(ab)2=a2b2
-
√a中,a≥0
-
a2=x(x≥0),那么a=±√x
-
(ab)2=a2b2
-
(a+b)2=a2+2ab+b2
-
a2−b2=(a+b)(a−b)
-
(√a)2=a(a≥0)
-
√a2=|a|={a(a≥0)−a(a<0)}(LaTex爆了,只能写成这样)
-
√ab=√a×√b(a≥0,b≥0)
-
√ab=√a√b(a≥0,b>0)
公式推导(看不到的自己去下面找进度条去拉动)
对于一个一元二次方程ax2+bx+c=0(a,b,c均为常数,且a≠0)(任何满足上述要求的一元二次函数都可以转化为ax2+bx+c=0的形式),如果b2−4ac≥0,那么:
ax2+bx+c=0
ax2+bx=−c //移项
x2+bax=−ca //两边同除以a,方便配方
x2+bax+(b2a)2=−ca+(b2a)2 //配方
(x+b2a)2=−ca+(b2a)2
(x+b2a)2=−ca+b24a2
(x+b2a)2=−4ac4a2+b24a2
(x+b2a)2=b2−4ac4a2
x+b2a=±√b2−4ac4a2
x+b2a=±√b2−4ac2a
x1=√b2−4ac2a−b2a=−b+√b2−4ac2a
x2=−√b2−4ac2a−b2a=−b−√b2−4ac2a
so,
x=−b±√b2−4ac2a(b2−4ac≥0)
当然,学过二次函数的也可以这样子推导(我以后写一个二次函数的博客,敬请期待):
基本公式:
ax2+bx+c=a(x+b2a)2+4ac−b24a (a,b,c均为常数,a≠0),如果b2−4ac≥0,那么:
a(x+b2a)2+4ac−b24a=0
a(x+b2a)2+4ac−b24a=0
a(x+b2a)2=−4ac−b24a
(x+b2a)2=−4ac−b24a2
(x+b2a)2=b2−4ac4a2
x+b2a=±√b2−4ac4a2
x+b2a=±√b2−4ac2a
x1=√b2−4ac2a−b2a=−b+√b2−4ac2a
x2=−√b2−4ac2a−b2a=−b−√b2−4ac2a
so,
x=−b±√b2−4ac2a
拓展1(可能不算拓展)
· 若b2−4ac>0,方程ax2+bx+c=0(a≠0)有两个不相等的实数根:
x1=−b+√b2−4ac2a,
x2=−b−√b2−4ac2a
· 若b2−4ac=0,方程ax2+bx+c=0(a≠0)有两个相等的实数根:
x=−b2a
· 若b2−4ac<0,方程ax2+bx+c=0(a≠0)没有实数根.
拓展2(韦达定理)
已知ax2+bx+c=0(a,b,c为常数,且a≠0),如果b2−4ac≥0,求x1+x2和x1×x2
x1=−b+√b2−4ac2a,x2=−b−√b2−4ac2a
x1+x2=−b+√b2−4ac2a+−b−√b2−4ac2a=−2b2a=−ba
x1×x2=−b+√b2−4ac2a×−b−√b2−4ac2a=(−b+√b2−4ac)×(−b−√b2−4ac)4a2=(−b)2−(√b2−4ac)24a2=b2−(b2−4ac)4a2=4ac4a2=ca
例题
说了这么多,大家可能觉得在编程方面可能没有什么帮助,所以我加了一道例题,如下:
【NOIP2003初赛完善程序】一元二次方程
【题目描述】
方程ax2+bx+c=0,要求给出它的实数解.
【输入格式】
三个实数:a,b,c,是方程的三个系数(a≠0).
【输出格式】
如果无实数解,则输出 Nosolution;
如果有两个相等的实数解,则输出其中一个,四舍五入到小数点后面3位;
如果有两个不等的实数解,则解与解之间用逗号隔开,同样要四舍五入到小数点后3位.
【输入样例】
1 2 1
【输出样例】
-1.000
现在这道题目是不是有点water了!
可以直接用拓展1的结论!
ACCode
#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;
}
啊这,就不能难一点的东东写一点吗?
我是蒟蒻,比不上你们这些大佬
GZA是将来AKIOI的人
更新啦!
qwq我也是蒟蒻qwq
加编程例题啦~
好简单,其实这道题目还有一个解法,因为要求精确到小数点后3位,直接枚举解就可以了
好的,谢谢,但是我为了与拓展1联系
我建议你把盛金公式也讲了
炒鸡简单,乱搞就弄出来了
nbnb
大佬能告诉我一下3√43为什么等于3√363吗
花括号可以用:
\\{ \\}
或者
\lbrace \rbrace
这个不是初三的基础知识吗qwq
有点简单qwq加编程例题啦~
更新啦!
欧耶(^o^)/
欧耶(^o^)/
欧耶(^o^)/
加编程例题啦~
这不是贼水吗?
是的
qwq,不要啊,skb联盟!
qwq
哈喽啊yyh
更新啦!
加编程例题啦~
报数!!!
1
2
3
更新啦!
加编程例题啦~
加编程例题啦~
加编程例题啦~
加编程例题啦~
牛逼
更新啦!
我又注册了一个^-^
收到,牛逼
盖亚
更新啦!
孙莰博小菜鸡2也发一个!
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
qwq qwq qwq qwq
qwq
qwq
qwq qwq qwq qwq
牛逼
不要啊!
更新啦!
牛逼
aaaaaaaaa
Δ去哪了?
我是新初一的蒟蒻
Δ我不搞,我只是用所学到的知识去推导
一元二次方是初3的知识……
浙江这里是八下
更新啦!
八下 不等于 新初一
加编程例题啦~
acw不是学编程的嘛???
不过这样也不错hhh
嘻嘻嘻
更新啦!
加编程例题啦~
https://www.luogu.com.cn/user/579035
更新啦!
加编程例题啦~
很可以
谢谢肯定
更新啦!
欧耶(^o^)/
欧耶(^o^)/
加编程例题啦~
评论第一!!!!!沙发
是的呢
更新啦!
加编程例题啦~