這幾天有個中學生問我怎麼求一元二次方程的根,我一下子還真傻了,不知道從何下手, 那時候我記得我永遠都記不住公式,考試的時候花了大把時間還去推算公式,結果推算出來的公式經常是少了加號或減號。這次又去推算公式,弄出來之後,
結果那位同學說這個公式好面熟,在書上找出來了,我被BS了一把,哎........
閑來無聊,寫寫代碼打發時間。乾脆把把代碼寫到部落格上來了,我專門寫了一個程式給他看。那位同學他說挺方便的,還說這個程式做題目做得很快。考試時能用就好了,可以節約很多時間。汗.....
我這不是害了他嘛,趕緊收回來。
一元二次方程的一般形式: ax^2+bx+c=0, (a≠0)
解一元二次方程的基本思想是通過“降次”將它化為兩個一元一次方程。
一元二次方程有四種解法: 1、開平方法;2、配方法;3、公式法;4、因式分解法。
具體怎麼解就不多說了,直接上代碼:
#include <iostream.h>
#include <math.h>
int solution(double paraA,double paraB,double paraC,double& x1,double& x2)
{
//delta = b2-4ac
int count;
double delta = paraB*paraB - 4 * paraA * paraC;
if(delta > 0) //具有二個解
{
//根據二元一次求解公式計算出解
x1 = ((-paraB) + sqrt(delta)) / 2 * paraA;
x2 = ((-paraB) - sqrt(delta)) / 2 * paraA;
count = 2;
}
else if(delta == 0)
{
//根據二元一次求解公式計算出解
x1 = (-paraB) / 2 * paraA;
count = 1;
}
else
{
count = 0;
}
return count;
}
int main()
{
double a,b,c;
double x,y;
cout << "請輸入二元一次方程(ax2+bx+c)的三個參數"<<endl;
cin >> a;
cin >> b;
cin >> c;
cout << "a=" << a <<",b=" << b <<",c=" <<c<<endl;
int count = solution(a,b,c,x,y);
if(count == 0)
{
cout << "此方程無解"<<endl;
}
else if(count == 1)
{
cout << "此方程具有一個解: x1=" << x << endl;
}
else if(count == 2)
{
cout << "此方程具有二個解: x1=" << x << ";x2=" << y << endl;
}
else
{
cout << "此方程異常" << endl;
}
return 1;
}
基本上就這樣了!Happy weekend!