- 締切済み
連立方程式を解くプログラムの後退代入の所
連立方程式を解くプログラムで前進消去の部分はできたのですが、後退代入の所がうまくいきません。教えて!gooを通して皆さまの力をお借りできればと思います。よろしくお願いいたします。 import java.io.*; import java.util.*; import java.math.*; //連立方程式を解くプログラム class krm3{ public static void main(String args[]){ System.out.println("連立方程式を求めます。"); //declaring and allocating2> double[][] A = null; try{ BufferedReader br = new BufferedReader (new FileReader("renritu.txt")); String s; String[] vals; int rows = 0,cols = 0; while((s = br.readLine()) !=null){ vals = s.split(" ");//split the line with space cols = Math.max(cols,vals.length); rows++; } System.out.println(rows+"×"+cols+" array found"); A = new double[rows][cols]; br.close(); br = new BufferedReader(new FileReader("renritu.txt")); rows = cols = 0; while((s = br.readLine()) !=null){ vals =s.split(" ");//split the line with space cols = vals.length; for(int i=0; i<cols;i++) A[rows][i]=Double.parseDouble(vals[i]); rows++; } }catch (IOException e){ System.out.println(e); } for(int i = 0;i<A.length;i++){ for(int j=0;j<A[i].length;j++){ System.out.print(A[i][j]+" "); } System.out.println(); } System.out.println(); //掃き出し法 //前進消去 //行i=0~n-2に対してi+1行目以降のi列目を消去する(ただしnは行の数) // //i行目をピポッド(i,i)で正規化(割る) // 1行目に(j,i)要素をかけてj行目から引く for(int i = 0;i<A.length-1;i++){ double P = A[i][i];//pivot for(int j=0;j<A[i].length;j++) A[i][j]/= P; for(int k=i+1;k<A.length;k++){ double v = A[k][i]; for(int j=0;j<A[i].length;j++){ A[k][j]-= A[i][j]*v; } } } for(int i = 0;i<A.length;i++){ for(int j=0;j<A[i].length;j++){ System.out.print(A[i][j]+" "); } System.out.println(); } System.out.println(); // eqs= // 1 2 3 4 // 0 1 7 8 // 0 0 1 2 //後退代入 //行i=n-1~1に対してi-1行目以前のi列目を消去する for(int i = A.length;2<i;i--){ double P2 = A[i-1][i-1] ;//pivot for(int j=A[i-1].length;j>2;j--) A[i-1][j-1]/= P2; for( int k=i-1;k>2;k--){ double v2 = A[k-1][i-1]; for(int j=A[i].length;j>2;j--){ A[k][j]-= A[i][j]*v2; } } } for(int i = 0;i<A.length;i++){ for(int j=0;j<A[i].length;j++){ System.out.print(A[i][j]+" "); } System.out.println(); } System.out.println(); } }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
具体的にはなにがどう「うまくいかない」んでしょうか?