• ベストアンサー

連立方程式を解法するjavaプログラム

連立方程式を解法するjavaプログラムを教えてください。宜しく、お願いします。 5a + 2b + 3c = 30 3a + 5b +4c = 20 2a + 3b + 5c = 50

質問者が選んだベストアンサー

  • ベストアンサー
  • java0218
  • ベストアンサー率100% (1/1)
回答No.1

質問内の方程式ですが「解」はありますか? 一応プログラムを作ってはみたのですが、解が出てこないです。 作ったプログラムに自分なりの方程式を組み込んで実行したら解が出てきたのであってると思います。 class Test{ public static void main(String[] args){ int a = 1; int b = 1; int c = 1; int maxA,maxB,maxC; boolean ok = false; final int AA = 5; final int AB = 2; final int AC = 3; final int AANS = 30; final int BA = 3; final int BB = 5; final int BC = 4; final int BANS = 20; final int CA = 2; final int CB = 3; final int CC = 5; final int CANS = 50; //a,b,cに入る最大数を確認 maxA = AANS/AA; if(maxA<BANS/BA){ maxA = BANS/BA; }else if(maxA<CANS/CA){ maxA = CANS/CA; } maxB = BANS/AB; if(maxB<BANS/BB){ maxB = BANS/BB; }else if(maxB<CANS/CB){ maxB = CANS/CB; } maxC = AANS/AC; if(maxC<BANS/BC){ maxC = CANS/BC; }else if(maxC<CANS/CC){ maxC = CANS/CC; } //ここで総当たり for(a=1; a<=maxA; a++){ if(ok){ a--; break; } for(b=1; b<=maxB; b++){ if(ok){ b--; break; } for(c=1; c<=maxC; c++){ if( (AA*a)+(AB*b)+(AC*c)==AANS && (BA*a)+(BB*b)+(BC*c)==BANS && (CA*a)+(CB*b)+(CC*c)==CANS){ ok = true; break; } } } } System.out.println("連立方程式の解"); System.out.println(AA + "a + " + AB + "b + " + AC + "c = " + AANS); System.out.println(BA + "a + " + BB + "b + " + BC + "c = " + BANS); System.out.println(CA + "a + " + CB + "b + " + CC + "c = " + CANS + "\n"); if(ok){ System.out.println("解:a=" + a + " b=" + b + " c=" + c); }else{ System.out.println("解無し"); } } } ちなみに今回、すべての数字を総当たりでチェックしています。 他に公式を使った方法等もありますが、質問者様は恐らくJava初心者と思われますので まずは上記ソースでどこで何をしてどうなっているかを確認された上で次のステップに進むのが良いと思います。

ta246890
質問者

お礼

大変に丁寧な解説、有難うございました。 独立した式を解く場合は、プログラムの一部を修正すればよいのですね。

その他の回答 (2)

  • axsies
  • ベストアンサー率64% (38/59)
回答No.3

連立方程式を解くアルゴリズムとしては、掃き出し法がもっとも有名です。 ソースコードなら、”掃き出し法 java”とか”ガウスの消去法 java”とかで検索すれば一杯でてきます。 http://www1.bbiq.jp/sekiya_z/na/gaus_joa.html http://www.geocities.jp/supermisosan/gaussjava.html

ta246890
質問者

お礼

貴重な、情報提供有難うございます。

ta246890
質問者

補足

連立方程式の解き方に、いくつかの方法があることが、解りました。

  • java0218
  • ベストアンサー率100% (1/1)
回答No.2

投稿してから気がついたのですが、上記の3つの式はそれぞれ独立した方程式なのでしょうか? 下記ソースは3つの式が共通した方程式と思いコーディングしたものです。 もし、独立した方程式ならば、下記ソースをいじってください。

ta246890
質問者

補足

共通した方程式です。

専門家に質問してみよう