Polinomio de Lagrange

Responder
Mensaje
Autor
Avatar de Usuario
Echi44
Mensajes: 11
Registrado: 22/06/2004 11:00 pm
Ubicación: Venezuela

Polinomio de Lagrange

#1 Mensaje por Echi44 » 09/02/2005 9:32 pm

Bueno estoy "TRATANDO" d hacer un programa q haga interpolaciones por el polinomio d lagrange. La entrada por teclado es un polinomio normal, lo q no sé hacer es cómo construir el código q arme el polinomio interpolado, me siguen?

la cosa es q por ejemplo, si el polinomio es d grado 2, interpola 2 vcs mostrando la última nada más..... si me pueden ayudar con eso les agradecería mucho, el programa es un poco más complejo, pero eso es lo q me traba. Un saludo!

PD: ah, es en pascal :P
"La luz viaja más rápido que el sonido. Es por eso que muchas personas parecen brillantes. Hasta que hablan."

Avatar de Usuario
soloc
Mensajes: 212
Registrado: 25/01/2005 12:00 am
Ubicación: Bolivia

#2 Mensaje por soloc » 10/02/2005 6:46 am

El truco más simple es que cada parte del polinomio (coeficiente, exponente) se almacene en un arreglo (tal como lo estas haciendo). Pero como debes realizar varias iteraciones debes almacenar cada polinomio en un arreglo bidimensional (Matriz). Cada fila es el polinomio que resulta de cada iteración.

saludos

Avatar de Usuario
Echi44
Mensajes: 11
Registrado: 22/06/2004 11:00 pm
Ubicación: Venezuela

#3 Mensaje por Echi44 » 10/02/2005 9:09 am

gracias..... pero tngo problemas con los arreglos en pascal, no los sé hacer bien, me podrías explicar más o menos?
"La luz viaja más rápido que el sonido. Es por eso que muchas personas parecen brillantes. Hasta que hablan."

Avatar de Usuario
soloc
Mensajes: 212
Registrado: 25/01/2005 12:00 am
Ubicación: Bolivia

#4 Mensaje por soloc » 14/02/2005 4:21 pm

Mira...

Te envio un link para que estudies al respecto...

http://www.itlp.edu.mx/publica/tutorial ... 5_2_2.html

Saludos... ;)

Avatar de Usuario
Echi44
Mensajes: 11
Registrado: 22/06/2004 11:00 pm
Ubicación: Venezuela

#5 Mensaje por Echi44 » 23/02/2005 9:37 pm

bueeeeeeno, no sé por q demonios los arreglos no me sirven, akí les pongo lo q he hecho, a ver si alguien me ayuda!. Por cierto, le voy a dar de entrada los datos d una vez, y no el polinomio, ya un amigo me explicó como se hacía y no entendí mucho, así q haré primero este q es más fácil jeje..... Akí está el código:

Código: Seleccionar todo

program lagrange;
uses crt;
const

     max=5;

var

vectorx, vectory: array[1..max] of real;
n,i, j: integer;
numerador, denominador,s,v,x,num,den,y: real;

Begin
s:= 0; numerador:= 0; denominador:= 0;num:=1; den:=1;
clrscr;
     Writeln('Programa para calcular el polinmomio de Lagrange');
     Writeln('Introduzca el numero de datos: ');
     read(n);

     for i:=1 to (n) do
     Begin
          writeln('Introducir el valor de x',i,': ');
          readln(vectorx[i]);
     end;

     for i:=1 to (n) do
     Begin
          writeln('Introducir el valor de y',i,' :');
          readln(vectory[i]);
     end;

     Writeln('Introduzca el punto a evaluar: ');
     readln(v);

{         if () then
          begin
          writeln('Punto no valido');
          readln;
          halt;
          end
          else
          begin}
          for i:=1 to n do
              for j:=1 to n do
              Begin
                   if (i<>j) then
                   Begin
                        numerador:= (v-vectorx[j]);
                        denominador:= (vectorx[i]-vectorx[j]);
                        WriteLn('numerador: ',numerador:2:2);
                        WriteLn('denominador: ',denominador:2:2);
                        ReadLn;
                        {num:= num*numerador;
                        den:=den*denominador;}
                        num:= num*vectory[i];
                        s:=s+(num/den);

                        end;
              end;
              Writeln('El polinomio de Lagrange de grado ',n,' es: ', s:2:4);
                   ReadLn;
         { end;}
End.
lo q está en llave no me funciona. Ah, y la formula de lagrange para 3 es así:

P3= [((v-x2)*(v-x3))/((x1-x2)*(x1-x3))]*y1 +[((v-x1)*(v-x3))/((x2-x1)*(x2-x3))]*y2 +[((v-x1)*(v-x2))/((x3-x1)*(x3-x2))]*y3
"La luz viaja más rápido que el sonido. Es por eso que muchas personas parecen brillantes. Hasta que hablan."

AdsBot [Google]
Mensajes: 0
Registrado: 31/08/2016 2:28 am

el programa

#6 Mensaje por AdsBot [Google] » 17/03/2005 8:37 am

sorry la tardansa, pero solo ayer lei tu duda te mando el programa pa que lo compares con el tuyo y veas los errores..

prueballo con:
orden 1,2 ; dependiendo el orden ingresa las variables que te piden
----variable a ingresar y el resultado q te debe dar, por ejemplo:
X =1.0; 4.0; 6.0
Y =0.0; 1.3862944; 1.7917595
evaluado en "2" = 0.4620981;0.5658.

hey si es de orden 2 tonces ingresas 3 variables x e y, pq empieza del 0;

program Polinomio_lagrange;
var i,m,j,op:integer; li,fx,pev:real;
matrx,matry,l:array [1..100] of real ;

begin
writeln('ingrese el orden del polinomio');
readln(op);
for i:=1 to op+1 do
begin
m:=i-1;
writeln ('ingrese X ',m, ' e Y ',m, ' respectivamente');
read(matrx,matry); writeln('');
end;
writeln ('ingrese pto a evaluar ');
readln(pev);
for i:=1 to (op +1) do
l:=1;

for i:=1 to (op+1) do
for j:=1 to (op+1) do
if j<>i then
l:=(pev-matrx[j])/(matrx-matrx[j])*l ;

fx:=0;
for i:=1 to (op+1) do
fx:=l*matry+fx;

writeln ('resultado del P. L. es: ', fx:10:5);
readln;
end.
:D prueba con otros

PD: lo probe y funcionaba!!!! , cualquier duda o error que pueda tirar postealo aqui mismo.
chao suerte!!!!!!

AdsBot [Google]
Mensajes: 0
Registrado: 31/08/2016 2:28 am

bidi ????????????

#7 Mensaje por AdsBot [Google] » 17/03/2005 8:53 am

hola no te compliques con arreglos bidim........... ; el asunto es solo aplicar la formula del P. L. con unos poquitos detalles , yo use 3 arreglos unidimensionales

Avatar de Usuario
Disruption
Mensajes: 14
Registrado: 10/08/2005 11:00 pm

#8 Mensaje por Disruption » 12/08/2005 1:00 am

Mmmm

" Writeln('Introduzca el punto a evaluar: ');
readln(v);

{ if () then
begin

"

Uhmmm, has puesto un if vacio, si lo que quieres comprobar es si V esta vacio deberias poner la condicion no? algo como
"
if ( v:=0) then
begin
...
end
else
"
Otra cosa. En lugar de usar un halt cuando no se introduzca un dato valido, podrias usar un "Repeat [···] until", poniendo la condicion de que v sea distinto de 0, y poner dentro del repeat la peticion del valor, asi no te veras obligado a interrumpir el programa si se introducen mal los datos.

A lo mejor ese If vacio es lo que hace que de algun problema, pero no se, prueba poniendo alguna condicion.
Un saludo (Siento no ser muy explicito ni muy claro, pero estoy algo "Oxidado", cosas del tiempo.... :S)

Benn
Mensajes: 1
Registrado: 07/08/2007 4:23 pm

Re: Polinomio de Lagrange

#9 Mensaje por Benn » 07/08/2007 4:33 pm

Echi44 escribió:Bueno estoy "TRATANDO" d hacer un programa q haga interpolaciones por el polinomio d lagrange. La entrada por teclado es un polinomio normal, lo q no sé hacer es cómo construir el código q arme el polinomio interpolado, me siguen?

la cosa es q por ejemplo, si el polinomio es d grado 2, interpola 2 vcs mostrando la última nada más..... si me pueden ayudar con eso les agradecería mucho, el programa es un poco más complejo, pero eso es lo q me traba. Un saludo!

PD: ah, es en pascal :P

tengo los programas de interpolacion de Lagrange y de Newton en la calculadora hp48g

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado