Matlab - interpolacion de lagrange

 
Vista:
sin imagen de perfil

interpolacion de lagrange

Publicado por daniel (4 intervenciones) el 13/02/2015 02:34:00
buena noche , disculpe hize este codigo en matlab de interpolacion de lagrange , pero ahora quiero usar la funcion y=sen(x) e usar este metodo para aproximar esta funcion por polinomios para diferentes puntos igualmente espaciados , me puede ayudar? le mando el código que hize. espero que me pueda ayudar gracias.

solo pude hacer esto alguien que me pueda ayudar


% INTERPOLACION "POLINOMIO DE LAGRAGE"

clc %permite borrar el area de trabajo
clear %permite borrar las variables almacenadas
format long %permite utilizar la maxima capacidad de la maquina

fprintf(' INTERPOLACION "POLINIMIO DE LAGRAGE"\n\n\n');
%fprintf me permite ingresar comentarios de manera textual que pueden
%orientar al usuario en el uso del programa

xi=input('Ingrese los puntos pertenecientes a las x: ');
yi=input('Ingrese los puntos pertenecientes a las y: ');
%input es un comando de solicitud de entrada de datos del usuario.
n=length(xi);
x=sym('x'); %esta funcion nos permite dejar la variable 'x' como simbolica
% y asi poder trabajar con ella, sin tener que asignarle un valor.
for j=1:n
producto=1;
for i=1:j-1
producto=producto*(x-xi(i)); %calculo del producto 1 superior de L
end
producto2=1;
for i=j+1:n
producto2=producto2*(x-xi(i)); %calculo del producto 2 superior de L
end
producto3=1;
for i=1:j-1
producto3=producto3*(xi(j)-xi(i)); %calculo del producto 3 inferior de L
end
producto4=1;
for i=j+1:n
producto4=producto4*(xi(j)-xi(i)); %calculo del producto 4 inferior de L
end
L(j)=(producto*producto2)/(producto3*producto4); %calculos de las L para
fprintf('\n L%d:\n',j-1) %poder hallar el polinomio
disp(L(j)) %la funcion dispo nos permite visualizar varibles o texto
% en el workspace
end
pn=0;
for j=1:n
pn=pn+L(j)*yi(j); %calculo del polinomio interpolante
end
fprintf('\n POLINOMIO INTERPOLANTE: \n')
%disp(pn) % esta ejecucion la podemos utilizar cuando no necesitamos
%simplicar la expresion
pn = simple(pn); %este comando nos permite simplificar toda la expresion
disp(pn)

opc=input('\nDesea aproximar un valor (si/no): ','s');
%este comando nos permite saber si el usuario quiere obtener una
%aproximacion de un punto dado, en el polinomio que se acaba de obtener
if opc=='si'
x=input('\nIngrese el punto a aproximar: ');
y=eval(pn); %evaluar el punto en el polinomio
disp('\nLa aproximacion a f(x) es:')
disp(y)
end
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

interpolacion de lagrange

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 15/02/2015 14:11:10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
>> % INTERPOLACION "POLINOMIO DE LAGRAGE"
 clear %permite borrar las variables almacenadas
 format long %permite utilizar la maxima capacidad de la maquina
 
 fprintf(' INTERPOLACION "POLINIMIO DE LAGRAGE"\n\n');
 %fprintf me permite ingresar comentarios de manera textual que pueden
 %orientar al usuario en el uso del programa
syms x %esta funcion nos permite dejar la variable 'x' como simbolica
fun=input('Ingrese la funcion f(x)=');
xi=input('Ingrese los puntos pertenecientes a las x: ');
 
 %yi=input('Ingrese los puntos pertenecientes a las y: ');
 %input es un comando de solicitud de entrada de datos del usuario.
 n=length(xi);
 
 % y asi poder trabajar con ella, sin tener que asignarle un valor.
 for j=1:n
 producto=1;
 for i=1:j-1
 producto=producto*(x-xi(i)); %calculo del producto 1 superior de L
 end
 producto2=1;
 for i=j+1:n
 producto2=producto2*(x-xi(i)); %calculo del producto 2 superior de L
 end
 producto3=1;
 for i=1:j-1
 producto3=producto3*(xi(j)-xi(i)); %calculo del producto 3 inferior de L
 end
 producto4=1;
 for i=j+1:n
 producto4=producto4*(xi(j)-xi(i)); %calculo del producto 4 inferior de L
 end
 L(j)=vpa(expand((producto*producto2)/(producto3*producto4)),4); %calculos de las L para
 fprintf('\n L%d(x)=',j-1) %poder hallar el polinomio
 LL=vpa(L(j),5); %la funcion dispo nos permite visualizar varibles o texto
 disp(LL)
 % en el workspace
 end
 pn=0;
 for j=1:n
 pn=pn+L(j)*fun(xi(j)); %calculo del polinomio interpolante
 end
 fprintf('\n POLINOMIO INTERPOLANTE: \n')
 %disp(pn) % esta ejecucion la podemos utilizar cuando no necesitamos
 %simplicar la expresion
 pn = vpa(simplify(pn),10); %este comando nos permite simplificar toda la expresion
 disp(pn)
 
 opc=input('\nDesea aproximar un valor (si/no): ','s');
 %este comando nos permite saber si el usuario quiere obtener una
 %aproximacion de un punto dado, en el polinomio que se acaba de obtener
 if strcmp(opc,'si')
 x=input('\nIngrese el punto a aproximar: ');
 y=eval(pn); %evaluar el punto en el polinomio
 fprintf('La aproximacion a f(x) es:')
 disp(y)
 end


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
>> lagranje6
 INTERPOLACION "POLINIMIO DE LAGRAGE"
 
Ingrese la funcion f(x)=@(x)sin(x)
Ingrese los puntos pertenecientes a las x: sort(rand(1,5))
 
 L0(x)=606.4*x^4 - 880.58*x^3 + 379.82*x^2 - 56.048*x + 1.7764
 
 
 L1(x)=- 782.34*x^4 + 1114.5*x^3 - 459.57*x^2 + 60.086*x - 0.82052
 
 
 L2(x)=342.44*x^4 - 422.15*x^3 + 123.03*x^2 - 6.069*x + 0.065815
 
 
 L3(x)=- 172.3*x^4 + 192.02*x^3 - 43.965*x^2 + 2.0615*x - 0.022016
 
 
 L4(x)=5.8106*x^4 - 3.7558*x^3 + 0.68524*x^2 - 0.030413*x + 0.00031928
 
 
 POLINOMIO INTERPOLANTE:
0.01196273883*x^4 - 0.1719095183*x^3 + 0.0008217245657*x^2 + 0.9999649967*x + 0.000000362698541
 
 
Desea aproximar un valor (si/no): si
 
Ingrese el punto a aproximar: 0.9
La aproximacion a f(x) es:   0.783161170732421
 
>> sin(0.9)
 
ans =
 
   0.783326909627483


Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
programador en matlab
Servicios de programación matlab
[email protected]
Estimado Usuario de Matlab, el correo es para servicios de cursos, asesoría y programación. Toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com


http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

interpolacion de lagrange

Publicado por Daniel (4 intervenciones) el 15/02/2015 20:12:50
gracias , pero porque en en las entradas de las x i. Puso sort(rand(1,5))¿? Por ejemplo si el usuario quisiera poner n puntos igualmente espaciados por ejemplo cuando n=2,4,11,16.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar