首页 > 代码库 > 进化版雅可比(有点小错误)
进化版雅可比(有点小错误)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
using namespace std;
int main() {
freopen("in.txt","r",stdin);
int a;
int i,j,s,k=0;
cin>>a;
double x[a]= {0},y[a];
double fc[a][a];
for(i=0; i<a; i++)
for(j=0; j<a; j++) {
cin>>fc[i][j];
}
double g[a];
for(i=0; i<a; i++)
cin>>g[i];
double eps=0.0000001;
double temp;
int flag[a];
for(i=0; i<a; i++)
flag[i]=1;
do {
for(i=0; i<a; i++) {
s=0;
flag[i]=0;
for(j=0; j<a; j++) {
s+=fc[i][j]*x[j]*flag[j];
}
flag[i]=1;
y[i]=(g[i]-s)/fc[i][i];
}
for(i=0; i<a; i++) {
if(temp<fabs(y[i]-x[i])) {
temp=fabs(y[i]-x[i]);
}
}
for(i=0; i<a; i++)
x[i]=y[i];
k++;
if(k==100) {
printf("ERROR!\n");
break;
}
} while(temp>eps);
if(k!=100) {
for(i=0; i<a; i++) {
cout<<x[i]<<endl;
}
}
return 0;
}
进化版雅可比(有点小错误)