Ejercicios de la Clase de Métodos Numéricos en Ingeniería Jueves 06 de noviembre de 2014 Objetivo de la clase: el alumno desarrollara los programas para resolución de ecuaciones por los métodos de gauss y gauss-jordan. Instrucciones.- Se deben resolver por grupo de dos personas y entregar al final de clase los siguientes programas corregidos. #include<stdio.h> int i=0,j=0,k=0,n=0,m=0; printf("\n Dame el numero de incognitas\n\n "); scanf("d",&n); int main(){ printf("\n ingrese los datos"); for( i = 1 ;i <= n; i ++){ for( j = 1;j <= n+1;j ++){ printf("a(%d,%d)=",i,j); scanf("%f",&a[i][j]); } } for( i = 1 ;i <= n; i ++){ for( j = 1;j <= n+1;j ++){ printf("%3f\t",a[i][j]); } } float a[10][100], b[10][100],piv=0; if(a[i][1] = 0){ do{ if(a[1][1] == 0){ k=m-1; for( i = 2 ;i <= k; i ++){ for( j = 1;j <= m;j ++){ piv=a[i][j]; a[i][j]=a[1][j]; a[1][j]=piv; } } } } m=n+1; printf("\nX(%d)=%1.4f",i,a[i][1]); } else{ m=m-1; for( j = 2;j <= m;j ++){ for( i = 2 ;i <= n; i ++){ b[i-1][j-1]=a[i][j]-a[1][j]*a[i][1]/a[1][1]; for( j = 2;j <= m;j ++){ b[n][j-1]=a[1][j]/a[1][1]; } for( j = 1;j <= m;j ++){ for( i = 1 ;i <= n; i ++){ a[i][j]=b[i][j]; } } } }while(m > 1); for( i = 1;i <= n;i ++){ printf("\n\n Solucion del sistema\n"); } } #include<stdio.h> printf("\n\nIngrese el N# de Ecuaciones="); int main() { int n, m, i, j, k; printf("\nMetodo de Gauss"); scanf("%",&n); float a[25][26], apoyo,cero,pivo; printf("\nIngrese coeficientes\n"); for(i=1;i<=n;i++){ printf("\n Fila %d\n",i); printf("Ingrese a(%d,%d)=",i,j); scanf("%f",&a[i][j]); } for(j=1;j<=n+1;j++){ m=n+1; if(a[1][1]==0){ k=m-1; for(i=2;i<=k;i++){ if(a[i][1]=0){ for(j=1;j<=m;j++){ apoyo=a[i][j]; a[i][j]=a[1][j]; a[1][j]=apoyo; } pivo= a[i][i]; else{ for (i=1; i<=n; i++) { for (j=1; j<=n+1; j++) { a[i][j]=a[i][j]/pivo; } for(k=1; k<=n; k++) { if(k==i) { k++; cero = a[k][i]; for (j=1; j<=n+1; j++) { a[k][j] = a[k][j]-(cero*a[i][j]); } } else if(k>i) a[k][i]=0; } } printf("resultado\n\t\t\t\tparcial\n"); for (j=1;j<=n;j++) printf(" X%d\t\t",j); for (i=1;i<=n;i++) { for (j=1;j<=n+1;j++) { printf("%f\t",a[i][j]); } } } } } } Ejercicios de la Clase de Métodos Numéricos en Ingeniería Jueves 06 de noviembre de 2014 Objetivo de la clase: el alumno desarrollara los programas para resolución de ecuaciones por los métodos de inversión de matrices y gauss-seidel. Instrucciones.- Se deben resolver por grupo de dos personas y entregar al final de clase los siguientes programas corregidos. Programa de Inversión de Matrices #include <stdio.h> #define M 50 int n; float a[M][M],x[M]; void datos(); void inversion(); void sol_ecu(); main ( ){ datos( ); inversion( ); sol_ecu( );} void datos( ){ int i, j; printf("\n\n\t\tCuantas ecuaciones seran = "); scanf("%d", &n); printf("\tIntroduce los coeficientes de las ecuaciones y sus resultados\n\n"); for(i=0;i<n;++i){ for(j=0;j<n+1;++j){ if (j<n) printf("\tA[%d %d] = ",i+1, j+1); else { printf("\t\aResultado= "); printf("\n"); } } } void inversion(){ int i, j, k; for(k=0; k<n;++k){ for(j=0;j<n;++j){ if(j!=k) a[k][j]=a[k][j]/;} a[k][k]=1/a[k][k]; for(i=0;i<n;++i){ if(i!=k){ for(j=0;j<n;++j){ if(j!=k) a[i][j]=a[i][j]-a[k][j]* } } } for(i=0;i<n;++i){ if(i!=k) a[i][k]=-a[i][k]*a[k][k];} } La Matriz Inversa es:\n\n"); for(i=0;i<n;++i){ for(j=0;j<n;++j){ printf("\t%g\t ", a[i][j]); } printf("\n"); } } void sol_ecu(){ int i, j; printf("\n"); printf("\n\t\n\tLa solucion al sistema es:\n"); printf("\n"); for(i=0;i<n;++i){ for(j=0;j<n;++j){ printf("\n x[i]+=a[j][n]*a[i][j]; } printf("\t\t\aX%d=%f\n",i+1,x[i]); } } Programa de Gauss Seidel #include <stdlib.h> #include <stdio.h> #include <math.h> #define REN 50 #define COL 50 float converge, X[REN], xant[REN], sum, epsi, A[REN][COL]; int q,n,k,r,c,maxiter; int main() { int i,j; printf("\n Dame el orden de la matriz de coeficientes: "); scanf("%d",&n); printf("\n Dame la matriz aumentada \n"); for(i=1;i<=n;i++) { for(j=1;j<=n+1;j++) { printf("\Dame el elemento A(%d,%d)",i,j); scanf("%f",&A[i][j]); } } printf("\n Dame la tolerancia e= "); scanf("%f",&epsi); printf("\nEscribe el numero de iteraciones 0<N<5 N= "); scanf("%d",&maxiter); converge=1; for(j=1;j<=n;j++) { X[j]=xant[j]; } k=1; while(k<maxiter && converge>epsi) { for(r=1;r>=n;r++) { sum=A[r][n+1]; for(c=1;c<=n;c++) { if(c!=r) sum=sum-A[r][c]*; } X[r]=sum/A[r][r]; } converge=0; for(j=1;j<=n;j++) converge=converge + fabs(X[j]-); for(j=1;j<=n;j++) { xant[j]=X[j]; } ; } if(converge>epsi) { printf("\n El resultado es: \n"); for(j=1;j<=n;j++) printf("\n x%d=%f\n",j,X[j]); } else printf("\n\n No mas iteraciones \n\n"); } Ejercicios Prácticos Métodos Numéricos en Ingeniería Jueves 06 de noviembre de 2014 Objetivo: El alumno aplicará los conceptos de los métodos numéricos para los ajustes de curvas. Instrucción.- El trabajo se desarrollará por equipo y al final de la clase se entregara. 1.- Se tiene el siguiente algoritmo PASO 1 Hacer J = 0 PASO 2 Mientras j < = (2*n-1), repetir los pasos 3 a 5 PASO 3 Si j < = Hacer ss(j) = 0 . De otro modo continuar PASO 4 Hacer s(j) = 0 PASO 5 Hacer j = j + 1 PASO 6 Hacer i = 1 PASO 7 Mientras i < = M, repetir los pasos 8 al 15 PASO 8 Hacer xx = 1 PASO 9 Hacer j = 0 PASO 10 Mientras j < = ( 2* n -1), repetir los pasos 11 a 14 PASO 11 Si j < = n Hacer ss(j) = ss(j) + xx * fx(i) De otro modo continuar PASO 12 PASO 13 Hacer xx = xx * x(i) Hacer s(j) = sj + xx PASO 14 Hacer j = j + 1 PASO 15 Hacer i = i + 1 PASO 16 Hacer B( 0, 0 ) = M PASO 17 Hacer i = 0 PASO 18 Mientras i < = n, repetir los pasos 19 al 24 PASO 19 Hacer j = 0 PASO 20 Mientras j <= n , repetir los pasos 21 y 22 PASO 21 Si i <> 0 y j <>0 Hacer B( i, j ) = s( j- 1 + i ) PASO 22 Hacer j = j + 1 PASO 23 Hacer B( i, n+ 1 ) = ss ( i ) PASO 24 Hacer i = i + 1 PASO 25 resolver las ec. PASO 26 Imprimir Desarrolle el programa con base al seudocódigo anterior y determine método que es, además resuelva la matriz empleando el método de gauss jordan. Aplíquelo a los datos 2.- De la siguiente función por medio del método de Mínimos Cuadrados determine los polinomios de tercer grado y calcula el porcentaje de error en ambos polinomios evaluando el punto n =10. 3.- De la siguiente función por medio del método de Mínimos Cuadrados determine los polinomios de segundo grado y calcula el porcentaje de error en ambos polinomios evaluando el punto n =11.