/// <summary> /// 式を行列形式で表現します。 /// </summary> private void ExpressInMatrixForm() { int height = ORDER - 1; int width = height + ORDER; mat = new Matrix(height, width); vec = new MatrixExp(width, 1); int c; string var = "f[" + (ORDER - 1).ToString() + "]"; for (c = 0; c < height; c++) { Member mem = Member.EasyParse(var = "h" + var + "'"); vec[c, 0] = (Expression)mem; for (int l = 0; l < height; l++) { mat[l, c] = equations[l].GetFactorOfMember(mem); } } var = "f[{0}]"; int i = 0; for (; c < width; c++, i++) { Member mem = Member.EasyParse(string.Format(var, i)); vec[c, 0] = (Expression)mem; for (int l = 0; l < height; l++) { mat[l, c] = equations[l].GetFactorOfMember(mem); } } }
//=========================================================== // 複製 //=========================================================== /// <summary> /// Matrix のコピーコンストラクタです。 /// </summary> /// <param name="matrix">複製元の Matrix を指定します。</param> public MatrixExp(MatrixExp matrix) { this.vals = new Expression[ this.lines = matrix.lines, this.columns = matrix.columns ]; for (int l = 0; l < this.lines; l++) { for (int c = 0; c < this.columns; c++) { this.vals[l, c] = matrix.vals[l, c]; } } }