/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Polinomio de Lagrange

 
      Índice del Foro elrincondelc.com -> Pascal, Ada, Delphi y similares
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
Echi44



Registrado: 22 Jun 2004
Mensajes: 11
Ubicación: Venezuela

MensajePublicado: 09/02/2005 9:32 pm
Título: Polinomio de Lagrange

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 Razz
_________________
"La luz viaja más rápido que el sonido. Es por eso que muchas personas parecen brillantes. Hasta que hablan."
Volver arriba
soloc



Registrado: 25 Ene 2005
Mensajes: 212
Ubicación: Bolivia

MensajePublicado: 10/02/2005 6:46 am
Título:

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
Volver arriba
Echi44



Registrado: 22 Jun 2004
Mensajes: 11
Ubicación: Venezuela

MensajePublicado: 10/02/2005 9:09 am
Título:

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."
Volver arriba
soloc



Registrado: 25 Ene 2005
Mensajes: 212
Ubicación: Bolivia

MensajePublicado: 14/02/2005 4:21 pm
Título:

Mira...

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



Saludos... Wink
Volver arriba
Echi44



Registrado: 22 Jun 2004
Mensajes: 11
Ubicación: Venezuela

MensajePublicado: 23/02/2005 9:37 pm
Título:

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:
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."
Volver arriba
Anonymous



Registrado: 10 Nov 2000
Mensajes: 99

MensajePublicado: 17/03/2005 8:37 am
Título: el programa

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[i],matry[i]); writeln('');
end;
writeln ('ingrese pto a evaluar ');
readln(pev);
for i:=1 to (op +1) do
l[i]:=1;

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

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

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

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



Registrado: 10 Nov 2000
Mensajes: 99

MensajePublicado: 17/03/2005 8:53 am
Título: bidi ????????????

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
Volver arriba
Disruption



Registrado: 10 Ago 2005
Mensajes: 14

MensajePublicado: 12/08/2005 1:00 am
Título:

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)
Volver arriba
Benn



Registrado: 07 Ago 2007
Mensajes: 1

MensajePublicado: 07/08/2007 4:33 pm
Título: Re: Polinomio de Lagrange

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 Razz



tengo los programas de interpolacion de Lagrange y de Newton en la calculadora hp48g
Volver arriba
      Índice del Foro elrincondelc.com -> Pascal, Ada, Delphi y similares
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com