Ejercicios de la Clase de Métodos Numéricos en Ingeniería

Anuncio
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.
Descargar