Accéder au contenu principal Programmation en C++ des méthodes numériques : for

Accéder au contenu principal Programmation en C++ des méthodes numériques : formule des trapèzes ,formule de simpson, triangulaire inférieur , Gauss Pivot Partiel,Cholsky ,Jacobi  Obtenir le lien  Facebook  Twitter  Pinterest  Google+  E-mail 1- FORMULE DES TRAPÈZES 2- FORMULE DE SIMPSON 3- TRIANGULAIRE INFÉRIEUR 4- GAUSS PIVOT PARTIEL 5- CHOLSKY 6- JACOBI 1- FORMULE DES TRAPÈZES // Calcul d'intégral d'après la méthode des trapezes #include <stdio.h> #include <stdlib.h> int main() { Rechercher int n,i=0; float a,S1=0,S2,S,h,f[100],b; printf("saisir les bornes de l'intervalle : \n borne 1 = "); scanf("%f",&a); printf(" borne 2 = "); scanf("%f",&b); printf("\n saisir le nombre des points de la fonction : "); scanf("%d",&n); h=(b-a)/(n-1); do{ printf("f[%f]=",a+i*h); scanf("%f",&f[i]); i++;} while(i!=n); for(i=1;i<=(n-1);i++) S1+=h*f[i]; S2+=(h*(f[0]+f[n-1]))/2; S=S1+S2; printf("\n l'integrale d'apres la methode des trapezes est egale a : %f ",S); system("pause"); } 2- FORMULE DE SIMPSON // Calcul d'integral d'apres la methode de Simpson #include <stdio.h> #include <stdlib.h> float f(float x); main() { int n,i; float a,b,h,S,T=0,L=0,x; printf("saisir les bornes de l'intervalle : \n borne 1 = "); scanf("%f",&a); printf(" borne 2 = "); scanf("%f",&b); printf("\n Saisir un entier n :"); scanf("%d",&n); h=(b-a)/n; S=f(a)+f(b); x=a+2*h; for(i=2;i<n-2;i+=2) { T+=f(x); x+=2*h; } S+=2*T; x=a+h; for(i=1;i<n-1;i++) { L+=f(x); x+=2*h; } S+=4*L; S+=h/3; printf(" l'integrale par la methode de Simpson est egale a : %f ",S); system("pause"); return 0;} float f(float x) { return x*x; } #include <stdio.h> #include <stdlib.h> #include <conio.h> main() {float A[100][100],B[100],X[100],S; int n,i,j; printf("donner le nombre des inconnues:"); scanf("%d",&n); for (i=1; i<=n; i++){ for (j=1; j<=n; j++){ if(i>j){ A[i][j]=0; printf("A[%d][%d]=%f\n",i,A[i][j]);} else { printf("A[%d][%d]=",i,j); scanf("%f",&A[i][j]);} } } for (i=1; i<=n; i++){ for (j=1; j<=n; j++) printf("%f\t",A[i][j]); printf("\n"); } for (i=1; i<=n; i++){ printf("B[%d]=",i); scanf("%f",&B[i]);} for (i=1; i<=n; i++){ printf("%f\n",B[i]); } X[n]=B[n]/A[n][n]; for (i=n-1; i>=1; i--){ S=B[i]; for (j=i+1; j<=n;j++){ S=S-(A[i][j]*X[j]);} X[i]=S/A[i][i];} printf("la solution donne par le programme est :\n"); for (i=n; i>=1; i--){ printf("%f\t",X[i]); } getch(); 3- TRIANGULAIRE INFÉRIEUR #include <stdio.h> #include <stdlib.h> #include <conio.h> main() { float A[100][100],B[100],X[100],S; int n,i,j; printf("donner le nombre des inconnues:"); scanf("%d",&n); for (i=1; i<=n; i++){ for (j=1; j<=n; j++){ if(i<j){ A[i][j]=0; printf("A[%d][%d]=%f\n",i,A[i][j]);} else { printf("A[%d][%d]=",i,j); scanf("%f",&A[i][j]);} } } for (i=1; i<=n; i++){ for (j=1; j<=n; j++) printf("%f\t",A[i][j]); printf("\n"); } for (i=1; i<=n; i++){ printf("B[%d]=",i); scanf("%f",&B[i]);} for (i=1; i<=n; i++){ printf("%f\n",B[i]); } X[1]=B[1]/A[1][1]; for (i=2; i<=n; i++){ S=B[i]; for (j=1; j<=i-1;j++){ S=S-(A[i][j]*X[j]);} X[i]=S/A[i][i];} printf("la solution donne par le programme est :\n"); for (i=1; i<=n; i++){ printf("%f\t",X[i]); } getch(); } 4- GAUSS PIVOT PARTIEL #include <stdio.h> #include <math.h> #include <stdlib.h> // fonction de remplissage void remplissage(float A[50][50],float B[50],int n) { int i,j; printf("\n * La matrice A:\n\n"); for (i=0;i<n;i++) {printf(" | "); for (j=0;j<n;j++) scanf("%f",&A[i][j]); } printf("\n * Le vecteur B:\n\n"); for (i=0;i<n;i++) { printf(" | "); scanf("%f",&B[i]); }} // fonction d'affichage système void aff_syst(float A[50][50],float B[50],int n) { int i,j; printf("\n\n"); for (i=0;i<n;i++) {printf(" ["); for (j=0;j<n;j++) {printf(" %.3f ",A[i][j]);} printf("] [ %.3f ]",B[i]); printf("\n"); }} // Résolution de Gauss avec pivot pariel void gauss_pivot_partiel(float A[50][50],float B[50],int n) { float x[50],p,s,pivot,aide; int i,j,k,ligne; for (k=0;k<n-1;k++) { // Recherche du max pour le pivot partiel pivot=0; for (i=k;i<n;i++) if (fabs(A[i][k])>pivot) { pivot=fabs(A[i][k]); ligne=i; } // pivotation for (j=k;j<n;j++) { aide=A[k][j]; A[k][j]=A[ligne][j] ; A[ligne][j]=aide; } aide=B[k]; B[k]=B[ligne]; B[ligne]=aide; if (A[k][k]==0) {printf("\n\n* MATRICE SINGULIERE\n\n"); } //réduction for (i=k+1;i<n;i++) {p=A[i][k]/A[k][k]; for (j=k;j<n;j++) A[i][j]=A[i][j]-p*A[k][j]; B[i]=B[i]-p*B[k]; } } //Résolution for (i=n-1;i>=0;i--) { s=0; for (j=i+1;j<n;j++) s=s+A[i][j]*x[j]; x[i]=(B[i]-s)/A[i][i]; } printf("\n METHODE DE GAUSS AVEC PIVOT PARTIEL \n"); printf("\n * La matrice apres elimination de Gauss avec pivot partiel est :"); aff_syst(A,B,n); printf("\n * apres resolution on trouve :\n\n"); for (i=0;i<n;i++) printf(" X%d = %.3f ;\n",i+1,x[i]); printf("\n"); } main(){float A[50][50],B[50]; int n,i,j; printf("\n\n * Nombre d'equation-inconues : \n\n * N = "); scanf("%d",&n); remplissage(A,B,n); printf("\n\n * Le systeme est : "); aff_syst(A,B,n); gauss_pivot_partiel(A,B,n); system("pause"); } 5- CHOLSKY #include< stdio.h> #include< math.h> #include <stdlib.h> // fonction de remplissage void remplissage(float A[50][50],float B[50],int n) { int i,j; printf("\n * La matrice A:\n\n"); for (i=0;i<n;i++) {printf(" | "); for (j=0;j<n;j++) scanf("%f",&A[i][j]);} printf("\n * Le vecteur B:\n\n"); for (i=0;i<n;i++) { printf(" | "); scanf("%f",&B[i]); }} // fonction d'affichage systeme void aff_syst(float A[50][50],float B[50],int n) { int i,j; printf("\n\n"); for (i=0;i<n;i++) {printf(" ["); for (j=0;j<n;j++) { printf(" %.4f ",A[i][j]);} printf("] [ %.4f ]",B[i]); printf("\n"); }} // fonction d'affichage matrice void aff_mat(float A[50][50],int n) { int i,j; printf("\n\n"); for (i=0;i<n;i++) {printf(" ["); for (j=0;j<n;j++) {printf(" %.4f ",A[i][j]); } printf("]\n"); } } // Resolution Par decomposition Cholesky void cholesky(float A[50][50],float B[50],int n) { float L[50][50],Lt[50][50],x[50],y[50],s,p; int i,j,k; // verification de la symetrie for (i=0;i<n;i++) for (j=0;j<n;j++) if (A[i][j]!=A[j][i]) {printf("\n\n * votre matrice n'est pas symetrique , cette methode ne peut pas la resoudre\n\n"); break; } for (i=0;i<n;i++) for (j=0;j<n;j++) L[i][j]=0; for (i=0;i<n;i++) { s=0; for (k=0;k<i;k++) s=s+pow(L[i][k],2); p=A[i][i]-s; if (p<=0) {printf("\n\n * votre matrice n'est pas definie positive , cette methode ne peut pas la resoudre\n\n"); } L[i][i]=sqrt(p); for (j=i+1;j<n;j++) { s=0; for (k=0;k<i;k++) s=s+L[i][k]*L[j][k]; L[j][i]=(A[j][i]-s)/L[i][i]; } } for (i=0;i<n;i++) for (j=0;j<n;j++) Lt[i][j]=L[j][i]; // resolution for (i=0;i<n;i++) { s=0; for (j=0;j<i;j++) s=s+L[i][j]*y[j]; y[i]=(B[i]-s)/L[i][i];} for (i=n-1;i>=0;i--) {s=0; for (j=i+1;j<n;j++) s=s+Lt[i][j]*x[j]; x[i]=(y[i]-s)/Lt[i][i]; }printf("\n--------------- Cholesky --------------\n"); printf("\n * A = L * Lt \n"); printf("\n * La matrice L :"); aff_mat(L,n); printf("\n * La matrice Lt :"); aff_mat(Lt,n); printf("\n * La resolution donne :\n\n"); for (i=0;i<n;i++) printf(" X_%d = %f ;\n",i+1,x[i]); }main() { float A[50][50],B[50]; int n,i,j; printf("\n\n * Nombre d'equation-inconues : \n\n * N = "); scanf("%d",&n); remplissage(A,B,n); printf("\n\n * Le systeme est : "); aff_syst(A,B,n); cholesky(A,B,n); system("pause"); } 6- JACOBI #include< stdio.h> #include< math.h> #include< stdlib.h> float norme(float x[50],int n) { float ref; int i; ref=0; for (i=0;i<n;i++) if (x[i]>ref) ref=x[i]; return(ref); } // fonction de remplissage void remplissage(float A[50][50],float B[50],int n) { int i,j; printf("\n * La matrice A:\n\n"); for (i=0;i<n;i++) { printf(" | "); for (j=0;j<n;j++) scanf("%f",&A[i][j]); } printf("\n * Le vecteur B:\n\n"); for (i=0;i<n;i++) { printf(" | "); scanf("%f",&B[i]); } } // fonction d'affichage systeme void aff_syst(float A[50][50],float B[50],int n) { int i,j; printf("\n\n"); for (i=0;i<n;i++) { printf(" ["); for (j=0;j<n;j++) { printf(" %.4f ",A[i][j]); } printf("] [ %.4f ]",B[i]); printf("\n"); } } // fonction d'affichage matrice void aff_mat(float A[50][50],int n) { int i,j; printf("\n\n"); for (i=0;i<n;i++) { printf(" ["); for (j=0;j<n;j++) { printf(" %.4f ",A[i][j]); } printf("]\n"); } } // Resolution Par Jacobie void jacobie(float A[50][50],float B[50],int n) { float x[50],x1[50],x2[50],s,eps=1e-4; int i,j,k,iter=0; //initialisation du vecteur printf("\n * Veuillez initialisez le vecteur solution : \n\n"); for (i=0;i<n;i++) { printf(" X(0)[%d]= ",i+1); scanf("%f",&x1[i]); } do { for (i=0;i<n;i++) { s=0; for (j=0;j<n;j++) if (i!=j) s=s+A[i][j]*x1[j]; x2[i]=(B[i]-s)/A[i][i]; } for (k=0;k<n;k++) { x[k]=fabs(x1[k]-x2[k]); x1[k]=x2[k]; } iter++; }while (norme(x,n)>eps) ; printf("\n-------------- Jacobie -------------\n"); printf("\n * La resolution donne :\n\n"); for (i=0;i<n;i++) printf(" X%d = %.3f ;\n",i+1,x2[i]); printf("\n * Apres %d iteration, precision 10^-4. \n",iter); } main() {float A[50][50],B[50]; int n,i,j; printf("\n\n * Nombre d'equation-inconues : \n\n * N = "); scanf("%d",&n); remplissage(A,B,n); printf("\n\n * Le systeme est : "); aff_syst(A,B,n); jacobie(A,B,n); system("pause"); } Par Michel Delaboure analyse numérique approche C++ les mathématiques méthode numérique Programmation  Obtenir le lien  Facebook  Twitter  Pinterest  Google+  E-mail Commentaires Enregistrer un commentaire Fourni par Blogger Images de thèmes de Petrovich9 Google+ Followers S'abonner par Email Entrez votre adresse email: Delivered by FeedBurner Membres Mathématiques  ➨ Cours analyse 1  ➨ Exercices Analyse 1  ➨ Cours analyse 2  ➨ Cours Alg è bre  ➨ Cours d é nombrement  ➨ Recherche op é rationnelle Électricité cours-et-exercices fr_FR Subscribe  ➨ Electromagn é tisme  ➨ Circuits é lectriques  ➨ le transformateur Thermodynamique  ➨ Machine Thermique  ➨ Cours Thermodynamique Automatisme  ➨ Exercices Grafcet  ➨ Alg è bre de Boule Mécanique  ➨ Fabrication M é canique  ➨ Construction M é canique  ➨ Cour É l é ments Finis  ➨ Chaine de Transmission  ➨ Exo Transmission de puissance Optique  ➨ Cours d ’ optique Cours et Exercices EXERCICES Rechercher uploads/Science et Technologie/ pdf-langagec.pdf

  • 15
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager