|
解が不定である場合はそのメッセージを出力するというのがどうしたらよいか分かりません。とりあえずここまではいったんですが。どうか教えて下さい。お願いします。
#include<stdio.h>
main()
{
float a[20][21];
float r;
int n, i, j, m, k;
printf("このプログラムは1次連立方程式の解を求めるものです.\n");
printf("nの後に何元かを入力.続けて各々の式の係数と解を,順番をそろえて入力して下さい.\n n=");
scanf("%d\n", &n);
for(i = 0 ; i < n ; ++i)
for(j = 0 ; j < n + 1 ; ++j)
scanf("%f", &a[i][j]);
showmtx(a, n);
/*--------------------pivot操作---------------------------------------*/
k=m=0;
for(i=m+1;i<=n-1;++i)
if(labs(a[k][m])<labs(a[i][m]))
k=i;
if(k!=m)
for(j=m;j<n+1;j++){
r=a[m][j];
a[m][j]=a[k][j];
a[k][j]=r;
}
/*--------------------下三角を0に---------------------------------------*/
for( m = 0 ; m <= n - 2 ; ++m){
for( i = m + 1 ; i <= n - 1 ; ++i) {
r = a[i][m] / a[m][m];
for(j = m ; j <= n ; ++j ) a[i][j] -= r * a[m][j];
}
}
showmtx(a, n);
for( j = n - 1 ; j >= 0 ; --j){
a[j][n] /= a[j][j]; a[j][j] = 1;
for( i = 0; i < j ; ++i){
a[i][n] -= a[i][j] * a[j][n]; a[i][j] = 0;
}
}
showmtx(a, n);
}
showmtx(a,n)
float a[20][21];
int n;
{
int i, j;
for( i = 0 ; i < n ; ++i ){
for(j = 0 ; j <= n ; ++j )
printf("%6.3f ",a[i][j]);
printf("\n");
}
printf("\n");
printf("解は最右列に表示された数字です\n");
}
|