JScriptの添削お願いします。
連立一次方程式の解を求めるプログラムです。
下のプログラムで示した部分で2次元配列の行データの初期化をしたいのですがうまくいきません。
たぶんそこだけ間違えているだけだとは思いますが、他に間違えているところもあれば指摘お願いします。
全体的な書き直しで訂正を頂くよりも、今の状態からどこを直せばいいのか教えてもらえると勉強になります。
また、定数が3つから4つに増えた場合は、※(下記参照お願いします)にて単純に数字をコンマで区切って4つに増やせばいいのでしょうか?
例)var A=[
[1,-4,3.3],
[1,-5,2.3],
[1,-1,1.3],
],b=[-1,2,0.3]
他に下の方のプログラムも変えなければいけないのでしょうか?
以上質問2つありますが、片方だけでも結構ですのでよろしくお願いします。
以下がプログラムになります。
var A=[
[1,-4,3],
[1,-5,2],
[1,-1,1],
],b=[-1,2,0] //※
WScript.Echo("ガウスの消去法による解:"+Gauss(A,b));
function Gauss(A,b){
var s,x=new Array(A.length),M=new Array(A.length);
//ガウスの消去法
for(var k=0;k<A.length-1;k++){
for(var i=k+1;i<A.length;i++){
M[i]=new Array() ; // ←ここが違うと思うのですが…
M[i][k]=A[i][k]/A[k][k];
for(var j=k+1; j<A.length;j++)
A[i][j]= A[i][j] - M[i][k]*A[k][j] ;
b[i]=b[i]-M[i][k]*b[k];
}
}
//ガウスの消去法
for(var i=A.length-1;i>=0;i--){
s=0;
for(var k=i+1;k<A.length;k++)
s+= A[i][k]*s ;
x[i]=(1/A[i][i])*(b[i]-s);
}
return x;
}
補足
なんとなくわかる気がしますが。。 つまり、配列の宣言と値の代入は分けて書くしかないのでしょうか?