二次方程式の解を求めるサンプルコード メソッドの利用例 - 萌えJava超入門
第十二章 クラスメソッド

二次方程式の解を求める
サンプルコード

各項の係数を配列で与えて、
解を戻り値として得るメソッドを作ってみましょう。

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
なんスよ...。
ルートを計算したらダメなのか!!



つづく。

お疲れ様でした。




© 2019 awasekagami