第十二章 クラスメソッド
二次方程式の解を求める
サンプルコード
各項の係数を配列で与えて、
解を戻り値として得るメソッドを作ってみましょう。
ax2+bx+c = 0 の解
(x≠0)
目次
1. ax2+bx+c=0 の解の公式
マジっスか!
できるんスか!
もう私数学の勉強やめるわ!
まてまて!!
早まるな!
でも、こんなのができるんだったら
結構実用性高いわよね。
とりあえず
解の公式から確認してみよう。
二次方程式の解の公式(a≠0)
あっゴメン。
式に「√」ルートが入ってた。
でででっできないんスか?!
大丈夫だから少し落ち着いてくれ。
「√」ルートは Math.sqrt() で
求めることができる。
以前、Mathクラスを利用して平方根を求める方法をご紹介いたしましたね。
こちらを参照してみてください。
→ ご参考
平方根を求める Math.sqrt()
2. ax2+bx+c=0 の解を求めるメソッド
引数は、a,b,c の3つです。
「√」ルートは、Math.sqrt()で求めることができます。
解は ± があるので、2つでしたね。
式も + と - の2種類用意しました。
解の公式
x1 = (-b + Math.sqrt(b*b-4*a*c)) / (2*a)
x2 = (-b - Math.sqrt(b*b-4*a*c)) / (2*a)
Math.sqrt() の引数はdoubleなので、引数の a,b,c はdoubleにしましょうか。
//Sample07_123.java
class Sample07_123 {
static double[] method_03(double a, double b, double c){
double x1 = (-b + Math.sqrt(b*b-4*a*c)) / (2*a);
double x2 = (-b - Math.sqrt(b*b-4*a*c)) / (2*a);
double[] ans = {x1 , x2};
return ans;
}
public static void main(String[] args){
int a=2;
int b=3;
int c=-4;
System.out.println(
(int)a + "xx+" + (int)b +"x+" +(int)c +"=0 の解は"
);
/*doubleの変数は intを代入できます。*/
double[] ans = method_03(a, b, c);
System.out.println(""+ ans[0] + "と" + ans[1]);
}
}
コマンドライン
>javac Sample07_123.java
>java Sample07_123
2xx+3x+-4=0 の解は
0.8507810593582121と-2.350781059358212
どうだろう?
え、合ってるんじゃね?
マジっスか?!
ホントなの?
すごっ!
でもですねぇ。言いにくいんですが。
ん?
...答えは
x = -[√(41)-3] / 4
と
x = [√(41)+3] / 4
なんスよ...。
ルートを計算したらダメなのか!!
つづく。
お疲れ様でした。