Professional Documents
Culture Documents
Midiendo la temperatura ambiente a distintas horas del día hemos obtenido la siguiente
tabla
X 6 8 10 12 14 16 18 20
Hora
f(x) 7 9 12 18 21 19 15 10
Grados
1
Laboratorio de métodos numéricos Carrera: ingeniería química gp 231
Universidad autónoma de baja california Alumno: Isael Vázquez González
Facultad de ciencias químicas e ingeniería Prof.: Olivia Mendoza duarte
#include <stdio.h>
#include <stdlib.h>
printf("\t%2.7f",F[i][i]);
#include <string.h> // Aqui formar el polinomio y evluarlo
f[0]=7; mat[z][1]=mat[z][1]+F[i][i]*mul;
f[1]=9;
}
f[2]=12;
mat[z][0]=valx;
f[3]=18; valx=valx+inc;
f[4]=21; }
f[5]=19;
f[6]=15; mat_texto(mat, 100, 2, "salida_xy.txt");
f[7]=10;
return 0;
//Inicializar matriz F y matriz mat
}
for (i=0;i<100;i++)
for (j=0;j<100;j++)
F[i][j]=0;
mat[i][j]=0;
//Paso 1:
Programa principal
for (i=0;i<=n;i++)
F[i][0]=f[i]; for (i=1;i<=n;i++)
for (j=1;j<=i;j++)
F[i][j]=(F[i][j-1]-F[i-
1][j-1])/(x[i]-x[i-j]);
// Paso 2: Salida
for (i=0;i<=n;i++)
2
Laboratorio de métodos numéricos Carrera: ingeniería química gp 231
Universidad autónoma de baja california Alumno: Isael Vázquez González
Facultad de ciencias químicas e ingeniería Prof.: Olivia Mendoza duarte
int i,j;
}
for(j=1;j<=n;j++)
for(i=1;i<=n+1;i++) { int mat_texto(float mat[100][100], int rens,
printf("\t%2.2f",sl[j][i]); int cols, char archivo_texto[20])
if (i==n+1) printf("\n"); {
}
printf("\n"); char valor [10];
} FILE *nuevo;
int i,j;
void columna_ceros_pivote_inferior(float
sl[100][100],int j,int n) nuevo =
{ fopen(archivo_texto,"w");
int i,columna;
float escalar; for (i=0;i<rens;i++)
for (j=0;j<cols;j++)
for(i=j+1;i<=n;i++) {
{ memset(valor,'\0',strlen(valor));
{ if ((j==0)&&(i>0))
escalar=sl[i][j]*(-1); {
fprintf(nuevo,"%s","\n");
for(columna=1;columna<=n+1;columna++) }
sl[i][columna]=sl[j][columna]*escalar+sl[i][co
lumna]; sprintf(valor,"%f",mat[i][j]);
}
} fprintf(nuevo,"%s",valor);
}
void columna_ceros_pivote_superior(float if (j<cols-1)
sl[100][100],int j,int n) {
{ fprintf(nuevo,"%s","\t");
int i,columna; }
float escalar;
}
for(i=j-1;i>=1;i--)
{ fclose(nuevo);
{
escalar=sl[i][j]*(-1); return 0;
for(columna=1;columna<=n+1;columna++) }
sl[i][columna]=sl[j][columna]*escalar+sl[i][co
lumna]; • Programas secundarios dentreo del
} programa principal
}
}
void renglon_por_escalar(float
renglon[100][100], float escalar, int n, int j)
{
int i;
for(i=1;i<=n+1;i++)
3
Laboratorio de métodos numéricos Carrera: ingeniería química gp 231
Universidad autónoma de baja california Alumno: Isael Vázquez González
Facultad de ciencias químicas e ingeniería Prof.: Olivia Mendoza duarte
4
Laboratorio de métodos numéricos Carrera: ingeniería química gp 231
Universidad autónoma de baja california Alumno: Isael Vázquez González
Facultad de ciencias químicas e ingeniería Prof.: Olivia Mendoza duarte
INTERPOLACIÓN DE LAGRANGE
En la interpolación de LaGrange la función f que pasa por los puntos es un polinomio,
pero, el polinomio se calcula utilizando polinomios de LaGrange sin resolver
explícitamente un sistema de ecuaciones. teóricamente, el polinomio obtenido por la
interpolación polinomial (solución de un sistema de ecuaciones) es exactamente el
mimo obtenido por interpolación de LaGrange
Dados n puntos
(x1, y1),(x2,y2)……..(xn,yn) donde yi=f(x)=fi se desea encontrar un polinomio P EPn-
1 ( el conjunto de polinomios de grado menor o igual a n-1) que pase exactamente por
esos puntos, es decir P(xi)=yi, i=1,2,3,4….
Ejemplo: para cierto análisis de producción de desea conocer una función que relacione
parámetros de producción en k=1000 y las ventas netas en k=1000
5
Laboratorio de métodos numéricos Carrera: ingeniería química gp 231
Universidad autónoma de baja california Alumno: Isael Vázquez González
Facultad de ciencias químicas e ingeniería Prof.: Olivia Mendoza duarte
Programa
# include <stdio.h>
# include <conio.h>
# include <malloc.h>
# include <stdio.h>
void lagrange(double x, double X[], double y[], int Lit)
{
int i,j;
double r=0, num=1, den=1;
for(i=0; i<Lit;i++){ //para el total de polinomios
for(j=0; j<Lit;j++){ //para cada polinomio
if (i!=j){ num*=(x - X[j]); den*=(X[i] - X[j] ); }
}
num*=y[i];
printf("Interacion %d valor %lf\n", i, num/den);
getch();
r+=num/den;
num=den=1;
}
printf("\nEl resultado es: %lf", r);
}
void main()
{
int m,i;
double *X,*Y,x;
void clrscr();
printf("cuantas entradas tendra la tabla?\n\t\t");
scanf("%d",&m);
X=(double*)malloc(sizeof(double)*m);
printf("Ingresa la tabla los valores de X:\n");
for(i=0; i<m; i++) scanf("%lf", &X[i]);
printf("\nIngresa la tabla los valores de Y:\n");
Y=(double*)malloc(sizeof(double)*m);
for(i=0; i<m; i++) scanf("%lf", &Y[i]);
printf("Escribe el valor X para el cual se encontrara el valor de Y\n");
scanf("%lf",&x);
lagrange(x, X, Y, m);
getch();
}
6
Laboratorio de métodos numéricos Carrera: ingeniería química gp 231
Universidad autónoma de baja california Alumno: Isael Vázquez González
Facultad de ciencias químicas e ingeniería Prof.: Olivia Mendoza duarte
Bibliografía:
• https://www.uv.es/diazj/practica6.pd
• https://es.slideshare.net/NovatodelaWeebFoxWeeb/130112719-
diferenciasdivididasdenewtonhttps://www.lawebdelprogramador.com/cod
igo/C-Visual-C/266-Metodo-de-interpolacion-de-Lagrange.html