# include<stdio.h>
# include<math.h>
# define N 3
main(){
float NF2(float *x,float *y);
float A[N][N]={{10,-1,-2},{-1,10,-2},{-1,-1,5}};
float b[N]={7.2,8.3,4.2},sum=0;
float x[N]= {0,0,0},y[N]={0},x0[N]={};
int i,j,n=0;
for(i=0;i<N;i++)
{
x[i]=x0[i];
}
for(n=0;;n++){
//計算下一個值
for(i=0;i<N;i++){
sum=0;
for(j=0;j<N;j++){
if(j!=i){
sum=sum+A[i][j]*x[j];
}
}
y[i]=(1/A[i][i])*(b[i]-sum);
//sum=0;
}
//判斷誤差大小
if(NF2(x,y)>0.01){
for(i=0;i<N;i++){
x[i]=y[i];
}
}
else
break;
}
printf("經過%d次雅可比迭代解出方程組的解:\n",n+1);
for(i=0;i<N;i++){
printf("%f ",y[i]);
}
}
//求兩個向量差的二范數函數
float NF2(float *x,float *y){
int i;
float z,sum1=0;
for(i=0;i<N;i++){
sum1=sum1+pow(y[i]-x[i],2);
}
z=sqrt(sum1);
return z;
}
標簽:
C語言
編寫
迭代
上傳時間:
2019-10-13
上傳用戶:大萌萌撒
THIS PUBLICATION IS COPYRIGHT PROTECTEDCopyright ? 2014 IEC, Geneva, SwitzerlandAll rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized in any formor by any means, electronic or mechanical, including photocopying and microfilm, without permission in writing fromeither IEC or IEC's member National Committee in the country of the requester. If you have any questions about IECcopyright or have an enquiry about obtaining additional rights to this publication, please contact the address below oryour local IEC member National Committee for further information.Droits de reproduction réservés. Sauf indication contraire, aucune partie de cette publication ne peut être reproduiteni utilisée sous quelque forme que ce soit et par aucun procédé, électronique ou mécanique, y compris la photocopieet les microfilms, sans l'accord écrit de l'IEC ou du Comité national de l'IEC du pays du demandeur. Si vous avez desquestions sur le copyright de l'IEC ou si vous désirez obtenir des droits supplémentaires sur cette publication, utilisezles coordonnées ci-après ou contactez le Comité national de l'IEC de votre pays de résidence.
標簽:
iec標準
上傳時間:
2021-10-21
上傳用戶:kent