宿題見てやるよ

このエントリーをはてなブックマークに追加
966名無し
#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,m,n,na;
float a[10][10],b[10],x[10],e,eps,dd,gb,gg,gx,es;
scanf("%d",&n);
for(m=1;m<=n;m++){
for(k=1;k<=n;k++){
scanf("%f",&a[m][k]);
}
scanf("%f",&b[m]);
}
gb=1;gx=1;es=1;
na=400;eps=1.0e-7;
for(m=1;m<=n;m++){
if(a[m][m]!=0){
x[m]=b[m]/a[m][m];
}
else{
gb=0;
}
}
for(i=1;i<=n;i++){
dd=0;
for(j=1;j<=n;j++){
if(j!=i){
dd=dd+fabs(a[i][j]);
}
else{
}
}
if(fabs(a[i][i])>dd){
}
else{
gx=0;
}
}
if((gb==0)||(gx==0)){
printf("条件を満たさない");
}
else{
printf("収束状態\n");
k=0;
printf("回数:%d\n",k);
for(m=1;m<=n;m++){
printf("x[%d]=%f\n",m,x[m]);
}
967名無し:01/12/11 18:12

while(es>eps){
k=k+1;
e=0;
for(i=1;i<=n;i++){
gg=b[i];
for(j=1;j<=i-1;j++){
gg=gg-a[i][j]*x[j];
}
for(j=j+1;j<=n;j++){
gg=gg-a[i][j]*x[j];
}
gg=gg/a[i][i];
e=e+fabs(x[i]-gg);
x[i]=gg;
}
printf("回数:%d\n",k);
for(i=1;i<=n;i++){
printf("x[%d]=%f\n",i,x[i]);
}
printf("E=%g\n",e);
if(k>=na){
es=0;
}
else{
es=e;
}
}
if(e<eps){
printf("根\n");
for(m=1;m<=n;m++){
printf("x[%d]=%f\n",m,x[m]);
}
printf("回数:%d\n",k);
printf("E=%g",e);
}
else{
printf("収束しない\n");
}
}
}