C言語のコンパイラは持っているけれど、Fortranのコンパイラなんて持っていないというヒトもいるかもしれないので、C言語による掃き出し法のプログラムを紹介するにゃ。
#include <stdio.h>
#define N 20 //20元連立1次方程式まで解ける
void Hakidashi(double a[][N+1],int n) { // 掃き出し法
double piv, t;
int i, j, k;
for (k=0; k < n; k++) {
piv = a[k][k];
for (j=k; j<n+1;j++) {
a[k][j]=a[k][j]/piv;
}
for (i = 0; i < n; i++) {
if (i != k) {
t=a[i][k];
for (j=k; j < n+1; j++) {
a[i][j]=a[i][j]-t*a[k][j];
}
}
}
}
}
main() {
double a[N][N+1];
int i, n;
a[0][0]=2; a[0][1]=3; a[0][2]=1; a[0][3]=4;
a[1][0]=4; a[1][1]=1; a[1][2]=-3 ; a[1][3]=-2;
a[2][0]=-1; a[2][1]=2; a[2][2]=2; a[2][3]=2;
n=3;
Hakidashi(a,n);
for (i=0; i < n; i++) {
printf("x[%d] = %f\n",i,a[i][n]);
}
}
1次元の配列ならば、C言語で数値計算のプログラムを書いてもいいのだけれど、C言語は、そもそもUNIXというOS開発用のために作られたアセンブラ的な言語なので、配列の始まりが1ではなく0からとか、2次元以上の配列の場合、配列の大きさをあらかじめ他のプログラムに知らせないといけないなど、多次元配列を用いた数値計算には向いていないように思うんだよね。この他にデータの入出力もC言語は面倒。やっぱ、本格的な数値計算をする場合、科学技術用の数値計算をするためだけに開発されたFortranにまさるプログラミング言語は存在しないんだにゃ。
Fortranが一番だけれど、コンソール画面からのデータの入力は面倒というデメリットはあるけれど、数値計算をするならば、CよりはJavaの方がいいと思うにゃ。
Fortranから十進BASICなどのBASICへのプログラムの書き換えは楽なので、BASICのプログラムはここでは示さないケロ。十進BASICには、掃き出し法のサンプルプログラムがあったような気もするし・・・。
Fortranから十進BASICなどのBASICへのプログラムの書き換えは楽なので、BASICのプログラムはここでは示さないケロ。十進BASICには、掃き出し法のサンプルプログラムがあったような気もするし・・・。