# include <stdio.h>
# include <conio.h>
# include <graphics.h>
# include <malloc.h>
# include <stdio.h>
void lagranja(double x, double X[], double y[], int Lit)
{
double r=0, num=1, den=1;
for(int i=0; i<Lit;i++){ //para el total de polinomios
for(int 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, modo=DETECT, medio;
double *X,*Y,x;
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(int i=0; i<m; i++) scanf("%lf", &X[i]);
printf("\nIngresa la tabla los valores de Y:\n");
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);
lagranja(x, X, Y, m);
getch();
}
Comentarios sobre la versión: Versión 1 (5)
ADEMAS NO ESTA VALIDADO Y MUCHO CODIGO BASURA!!!!
# include <conio.h>
# include <malloc.h>
# include <stdio.h>
void lagrange(double x, double X[], double y[], int Lit)
{
double r=0, num=1, den=1;
for(int i=0; i<Lit;i++){ //para el total de polinomios
for(int 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;
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(int 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();
}
//Nota: el codigo estaba bien solo tenia q modificarse en lagranja q el correcto era "lagrange" y poner la variable "Y" q faltaba.
Este es el programa modificado
#include <winbgim.h>
# include <stdio.h>
# include <conio.h>
# include <malloc.h>
# include <stdio.h>
void lagrange(double x, double X[], double y[], int Lit)
{
double r=0, num=1, den=1;
for(int i=0; i<Lit;i++){ //para el total de polinomios
for(int 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 ", i, num/den);
getch();
r+=num/den;
num=den=1;
}
printf(" El resultado es: %lf", r);
}
main()
{
int m,i;
double *X,*Y,x;
void clrscr();
printf("cuantas entradas tendra la tabla? ");
scanf("%d",&m);
X=(double*)malloc(sizeof(double)*m);
printf("Ingresa la tabla los valores de X: ");
for(int i=0; i<m; i++) scanf("%lf", &X[i]);
printf(" Ingresa la tabla los valores de Y: ");
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 ");
scanf("%lf",&x);
lagrange(x, X, Y, m);
getch();
}
# 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();
}
(para algunos no les sirve el tener el int i o int j.) por eso lo modifique solo eso y ya funciono gracias