Matlab - Maneras de interpolar función

 
Vista:

Maneras de interpolar función

Publicado por holyo (58 intervenciones) el 31/03/2010 11:11:51
Hola, tengo una matriz con dos columnas. Quiero obtener la función que me describa esos puntos, para ello utilizo el comando polyfit. Os pongo mi programita y os los explico.

La matriz la obtengo de un archivo de excel llamado Reynolds200000.xls
escojo format long para que no aproxime sólo con 4 decimales
X,Y son las columnas de la matriz
Defino un grado del polinomio con el que quiero interpolar
Me creo un vector de incognitas, es decir, que esté formado por x: Incog=[1 x x^2....]
Como he explicado en otro post, para obtener la función completa (incógnitas con coeficientes), multiplico la solución de polyfit por mi vectos de incógnitas.


Reynolds200000=xlsread('Reynolds200000.xls');
format long
syms x
display(Reynolds200000)
X=Reynolds200000(:,1);
Y=Reynolds200000(:,2);
grado_polinomio=10; %Grado del polinomio
Incog=[];
for i=grado_polinomio:-1:0
Incog=[Incog;[x^i]];
end
disp(Incog)
%Cl
disp('La función define a Cl es')
p=polyfit(X,Y,grado_polinomio)
plot(X,Y,'ro','LineWidth',2) % Plot data
hold on
xfit = 0:0.01:13;
yfit = polyval(p,xfit);
plot(xfit,yfit,'LineWidth',2) % Plot fit
ylim([0,1.5])
grid on
Cl1=p*Incog
ezplot(Cl1,[0,13])

Al utilizar una ecuación con 10 grados me sale este error:

Warning: Polynomial is badly conditioned. Add points with distinct X
values, reduce the degree of the polynomial, or try centering
and scaling as described in HELP POLYFIT.

Entiendo que quizás esté utilizando demasiados grados, pero es que si no lo hago la ecuación no se aproxima nada bien. El número de puntos que utilizo son 26.

¿Alguien sabe otra manera de interpolar?

Un saludo.
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 Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

RE:Maneras de interpolar función

Publicado por Dave (1094 intervenciones) el 31/03/2010 19:21:47
Hola Holyo,

Si deseas interpolar, te recomiendo que utilizes los comandos "interp" e "interp1", serian los mas adecuados que tratar de ajustar tus datos a un polinomio; algo mas, el hecho que uses un polinomio de mayor orden, no te asegura que sea mas exacta.

Espero que sea de alguna ayuda,
Por otro lado, te comento que realizo servicios de programacion en todo tipo de proyectos relacionados con Matlab, por si desees un ayuda en algo mas complicado.

Saludos
Dave

[email protected]
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

RE:Maneras de interpolar función

Publicado por holyo (58 intervenciones) el 02/04/2010 18:52:15
Hola, el problema que tengo con "interp" o "interp1" es que no me dan una función, es decir, no obtengo un polinomio interpolador.

Lo que quiero tener es una función que interpole todos los datos que tengo.

¿qué puedo hacer?

Muchas gracias por tu ayuda.
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