?? valp.c
字號:
#include <stdio.h>#include <math.h>#include <stdlib.h>#include <string.h>#define lll 80#define dim 20typedef double matrice[dim][dim];typedef double vecteur[dim];/*donner la fonction de lecture*/int lecture(char name[],matrice A) { FILE *fp; int num,i,j,rang; char dd[2],dum[lll]; double ttt;/*lecture du numero de l'exemple voulu*/printf(" donner le numero de l'exemple voulu (1<num<10):"); scanf("%d",&num); printf(" le numero de l'exemple est %d\n",num); if ((fp = fopen(name,"r+t")) == NULL) { puts(" on ne peut ouvrir le fichier\n" ); exit(1); } do { fgets(dum,lll,fp); dd[0]=dum[24];dd[1]=dum[25]; }while(dum[0] != '$' || atoi(dd)!=num); fscanf(fp,"%d",&rang); printf("\n la valeur du rang est %d\n",rang); for (i=1;i <= rang;i++) { for (j=1;j <= rang;j++) { fscanf(fp,"%lf",&ttt); A[i][j]=ttt; } }for(i=1;i<=rang;i++) { for(j=1;j<=rang;j++) { printf("A[%d][%d]=%lf\n",i,j,A[i][j]); } } fclose(fp); return(rang); }int main(void){ /* declaration des variables */ extern int lecture(); matrice A,U,L,C; char rep,name[25]; int i,j,n,k,rang; double S,E,e;for(i=0;i<=19;i++) { for(j=0;j<=19;j++) { A[i][j]=0.; } } fflush(stdin); printf(" donner le nom du fichier: "); gets(name); printf(" le nom du fichier est %s\n",name); rang=lecture(name,A); n=rang; printf("\n donner l'erreur e:"); scanf("%lf",&e); do{ // decomposition LU A=LU for (i=1;i<=rang;i++) { U[1][i]=A[1][i]; L[i][1]=A[i][1]/U[1][1]; L[i][i]=1.; } for (k=2;k<=rang;k++) { for (i=k;i<=rang;i++) { S=0; for (j=1;j<=k-1;j++) { S=S+L[k][j]*U[j][i]; } U[k][i]=A[k][i]-S; } for (i=k+1;i<=rang;i++) { S=0; for (j=1;j<=k-1;j++) { S=S+L[i][j]*U[j][k]; } L[i][k]=(A[i][k]-S)/U[k][k]; } } // produit de matrice for (i=1;i<=n;i++) { for (j=1;j<=n;j++) { S=0; for (k=1;k<=n;k++) { S=S+U[i][k]*L[k][j]; } C[i][j]=S; } } //calcul erreur E for (i=1;i<=n;i++) { E=0; for (j=1;j<=n;j++) { E=E+fabs(C[i][j]-A[i][j]); } } //echange A et C for (i=1;i<=n;i++) { for(j=1;j<=n;j++) { A[i][j]=C[i][j]; } } }while (E>e);/* affichage resultat*/ printf("\n les valeurs propres sont:" ); for (i=1;i<=n;i++) { for (j=1;j<=n;j++) { printf(" C[%d][%d] = %lf ",i,j,C[i][j]); } }fflush(stdin); printf("\n Voulez vous recommencer?(y/n)?\n"); puts(" fin de fichier \n"); }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -