69,373
社区成员
发帖
与我相关
我的任务
分享
#include"stdio.h"
#include"math.h"
#define N 4
void main(void)
{
static float a[N][N+1]={ {9,15,3,-2,7},{7,2,1,-2,4},{1,3,2,13,0},{-2,-2,11,5,-1} };
float x[N]={0},e=0.000001;
float r,t,q;
int i,j,k,lm=100;
for(k=0;k<lm;k++)
{
r=0;
for(i=0;i<N;i++)
{
t=x[i];
q=0;
for(j=0;j<N;j++)
{ if(j!=i)
q=q+a[i][j]*x[j];
}
x[i]=(a[i][N]-q)/a[i][i];
if(fabs(x[i]-t)>r) r=fabs(x[i]-t);
}
if(r<e) break;
}
if(k==lm)
printf("Overflow!\n");
else
for(i=0;i<N;i++)
printf("x(%d)=%f\n",i,x[i]);
}
#include"stdio.h"
#include"stdlib.h"
#include"math.h"
#define N 4
double x[N]={0};
double max_xy(double a[N],double b[N])
{
double max=0;
int i;
for(i=0;i<N;i++)
{
if(max<fabs(a[i]-b[i]))
max=fabs(a[i]-b[i]);
}
return max;
}
void jacobi(double a[N][N],double b[N],double d)
{
int i,j,k,lm=50;
double y[N]={0},sum=0,max=0;
for(k=0;k<lm;k++)
{
for(i=0;i<N;i++)
{
sum=0;
for(j=0;j<N;j++)
{
if(j!=i)
sum=sum+a[i][j]*y[j];
}
x[i]=(b[i]-sum)/a[i][i];
}
printf("\n");
for(i=0;i<N;i++)
printf("y(%d)=%f ",i,y[i]);
printf("\n");
for(i=0;i<N;i++)
printf("x(%d)=%f ",i,x[i]);
printf("\n");
max=max_xy(x,y);
if(max<d) break;
printf("max=%f\n",max);
for(i=0;i<N;i++)
y[i]=x[i];
}
if(k==lm) printf("Overfllow!!\n");
for(i=0;i<N;i++)
printf("x(%d)=%f\n",i+1,x[i]);
}
void main()
{
int i,j;
double d=0.0000001;
static double a[N][N]={ {9,15,3,-2},{7,2,1,-2},{1,3,2,13},{-2,-2,11,5} };
static double b[N]={7,4,0,-1};
jacobi(a,b,d);
for(i=0;i<N;i++)
printf("x(%d)=%lf\n",i+1,x[i]);
}