Mi profesor ha intentado copiar desde este video para la clase que nos debia impartir, pero ni copiar pudo, me ha salvado encontrar el video original, muchisimo mejor!
%Interpolacion de Newton function[yi,p,b]= pol_newton(x,y,xi) %inicia las variables n=length(x); b=zeros(n); b(:,1)=y(:); for j=2:n for i=1:n-j+1 b(i,j)=(b(i+1,j-1)-(b(i,j-1)))/(x(i+j-1)-x(i)); end end %datos interpolados xt=1; yi=b(1,1); for j=1:n-1 xt=xt.*(xi-x(j)); yi=yi+b(1,j+i)*xt; end %polinomio p=num2str(b(1,1)); xx=x*-1; for j=2:n signo=''; if b(i,j)>=0 signo2=''; end xt=''; for i=1:j-1 if xx(i)>=0 signo2='+'; end xt=strcat(xt,'*(x',signo2,num2str(xx(i)),')'); end p=strcat(p,signo,num2str(b(1,j)),xt); end
%inicio del código %interpolación de Newton function [yi,p,b]= interpolacionnewton(x,y,xi) %iniciamos variables n=length(x); b=zeros(n); b(:,1)= y(:); %obtenemos la tabla de diferencia for j=2:n for i=1:n-j+1 b(i,j)=(b(i+1,j-1)-b(i,j-1))/(x(i+j-1)-x(i)); end end %Calculamos el dato que queremos interpolar xt=1; yi=b(1,1); for j=1:n-1 xt=xt.*(xi-x(j)); yi=yi+(b(1,j+i)*xt); end %Contruimos el polinomio p=num2str(b(1,1)); xx=x*-1; for j=2:n signo=''; if b(i,j)>=0 signo='+'; end
xt=''; for i=1:j-1 signo2=''; if xx(i)>=0 signo2 ='+'; end
xt = strcat(xt,'*(x',signo2,num2str(xx(i)),')'); end
Hola Laura, el problema se puede dar en la declaracion de la funcion, revisa por favor la primera linea del programa function [yi,p,b]=pol_newton(x,y,xi), la otra posibilidad del fallo es al momento de llamar la funcion, debe ser pol_newton(x,y,6) x e y deben ser vectores previamente definidos y 6 es el valor que quieres interpolar. La ultima posibilidad de fallo es que el programa se encuentre en una caarpeta que matlab no tiene identificada, selecciona la carpeta como carpeta de trabajo. salu2
su video es excelente maestro; para todos aquellos que les marca el errores tan solo les digo que tienes que ser muy suspicaces en el codigo, no lo confien todo y lo echen a la borda.
Les comparto un codigo que me sirvio: 'Interpolacion de newton' clear;clc; disp('metodos numericos'); disp('interpolacion'); disp('interpolacion'); n=input('ingrese el grado del polinomio, n='); fprintf('Se necesitan %.0f puntos ',n+1); disp('ingrese los puntos'); for i=1:n+1 fprintf('x%.0f=',i-1); X(i)=input(' '); fprintf('y%.0f=',i-1); Y(i)=input(' '); end DD=zeros(n+1); DD(:,1)=Y; for k=2:n+1 for J=k:n+1 DD(J,k)=[DD(J,k-1)-DD(J-1,k-1)]/[X(J)-X(J-k+1)]; end end disp('La matriz de diferencias divididas es:'); disp(DD); disp('El polinomio de newton es'); syms x; polnew=DD(1,1); P=1; for i=1:n P=P*(x-X(i)); polnew=polnew+P*DD(i+1,i+1); end polnew=expand(polnew); pretty(polnew); x=input('ingrese el valor de x a interpolar,x='); vi=eval(polnew); fprintf('el valor interpolado es %.2f ',vi); hold on; ezplot(polnew,[X(1) X(n+1)]); plot(x,vi,'r+');
length(x) es = 8-1 (YA QUE ES EL x4-x1) ó es = 4 ( x0,x1,x2,x3,x4)??? porque tu matriz con el error dijo que era de 4*4 y no ce como tomarla esta. Muy buen aporte Jc
buen video copie el programa tal cual pero me sale esto Undefined function 'pol_newton' for input arguments of type 'double'. soy nueva programando en matlab asi que no se porque sera
Muy buen vídeo!!! Solamente tengo una duda, lo que pasa es que quiero tomar todos los valores de la segunda columna, en lugar de los del primer renglón,pero al intentarlo cambiar no corre el programa. Si pudiera darme solución se lo agradecería mucho.
a partir del un n=5, o de un vector x de 5 datos, aparece un error en el signo del 4to término del polinomio, aparecen simultáneamente +-...., alguien lo puedo corregir?
Subscript indices must either be real positive integers or logicals. Error in pol_newton (line 10) b(i,j)=(b(i+1,j-i)-b(i,j-1))/(x(i+j-1)-x(i)); me sale este error no entiendo todo el código esta muy bien ya lo verifique varias veces ayuda¡!!!!!!!
Mi profesor ha intentado copiar desde este video para la clase que nos debia impartir, pero ni copiar pudo, me ha salvado encontrar el video original, muchisimo mejor!
%Interpolacion de Newton
function[yi,p,b]= pol_newton(x,y,xi)
%inicia las variables
n=length(x);
b=zeros(n);
b(:,1)=y(:);
for j=2:n
for i=1:n-j+1
b(i,j)=(b(i+1,j-1)-(b(i,j-1)))/(x(i+j-1)-x(i));
end
end
%datos interpolados
xt=1;
yi=b(1,1);
for j=1:n-1
xt=xt.*(xi-x(j));
yi=yi+b(1,j+i)*xt;
end
%polinomio
p=num2str(b(1,1));
xx=x*-1;
for j=2:n
signo='';
if b(i,j)>=0
signo2='';
end
xt='';
for i=1:j-1
if xx(i)>=0
signo2='+';
end
xt=strcat(xt,'*(x',signo2,num2str(xx(i)),')');
end
p=strcat(p,signo,num2str(b(1,j)),xt);
end
%inicio del código
%interpolación de Newton
function [yi,p,b]= interpolacionnewton(x,y,xi)
%iniciamos variables
n=length(x);
b=zeros(n);
b(:,1)= y(:);
%obtenemos la tabla de diferencia
for j=2:n
for i=1:n-j+1
b(i,j)=(b(i+1,j-1)-b(i,j-1))/(x(i+j-1)-x(i));
end
end
%Calculamos el dato que queremos interpolar
xt=1;
yi=b(1,1);
for j=1:n-1
xt=xt.*(xi-x(j));
yi=yi+(b(1,j+i)*xt);
end
%Contruimos el polinomio
p=num2str(b(1,1));
xx=x*-1;
for j=2:n
signo='';
if b(i,j)>=0
signo='+';
end
xt='';
for i=1:j-1
signo2='';
if xx(i)>=0
signo2 ='+';
end
xt = strcat(xt,'*(x',signo2,num2str(xx(i)),')');
end
p= strcat(p,signo,num2str(b(1,j)),xt);
end
Muchas, muchas, muchas gracias por este increible video. Lo felicito y le agradezco mucho
Muchas gracias muy buen video ... Saludos desde Costa Rica
para que funcione deben ingresar en el command window:
x=[1 2 4 8];
y=[5 8 4 2];
pol_newton(x,y,6)
Esto para el ejemplo del video ;)
MUY BUEN APORTE.. EXCELENTE, me dio un poco de gracia tu error de i+i, PERFECTO TE FELICITO.
ya quedo Buena Aporte ... me salvaste la vida Gracias
Buenísimo B-) Me sirvió bastante. Gracias!
muy bien video, bien explicado. Muchas gracias :D saludos
Hola Laura, el problema se puede dar en la declaracion de la funcion, revisa por favor la primera linea del programa function [yi,p,b]=pol_newton(x,y,xi), la otra posibilidad del fallo es al momento de llamar la funcion, debe ser pol_newton(x,y,6) x e y deben ser vectores previamente definidos y 6 es el valor que quieres interpolar. La ultima posibilidad de fallo es que el programa se encuentre en una caarpeta que matlab no tiene identificada, selecciona la carpeta como carpeta de trabajo. salu2
su video es excelente maestro; para todos aquellos que les marca el errores tan solo les digo que tienes que ser muy suspicaces en el codigo, no lo confien todo y lo echen a la borda.
Excelente! Muchas gracias
infinitamente agradecido amigo :)
Les comparto un codigo que me sirvio:
'Interpolacion de newton'
clear;clc;
disp('metodos numericos');
disp('interpolacion');
disp('interpolacion');
n=input('ingrese el grado del polinomio, n=');
fprintf('Se necesitan %.0f puntos
',n+1);
disp('ingrese los puntos');
for i=1:n+1
fprintf('x%.0f=',i-1);
X(i)=input(' ');
fprintf('y%.0f=',i-1);
Y(i)=input(' ');
end
DD=zeros(n+1);
DD(:,1)=Y;
for k=2:n+1
for J=k:n+1
DD(J,k)=[DD(J,k-1)-DD(J-1,k-1)]/[X(J)-X(J-k+1)];
end
end
disp('La matriz de diferencias divididas es:');
disp(DD);
disp('El polinomio de newton es');
syms x;
polnew=DD(1,1);
P=1;
for i=1:n
P=P*(x-X(i));
polnew=polnew+P*DD(i+1,i+1);
end
polnew=expand(polnew);
pretty(polnew);
x=input('ingrese el valor de x a interpolar,x=');
vi=eval(polnew);
fprintf('el valor interpolado es %.2f
',vi);
hold on;
ezplot(polnew,[X(1) X(n+1)]);
plot(x,vi,'r+');
Muy bueno loco ,mejor que el del mismo video
Exceleteee, mil gracias! funciona super bien!
muy bueno graxias por el aporte
Muy buen video todo esta bien :D
excelente video gracias
que tal amigo @jc jimenez fijate q tu archivo no me corre se queda en
Error in pol_newton (line 4)
n=length (n);
por que es (x) no (n)
hola , esta muy bueno el video , me pregunto si se podria ampliar la matriz con la que se trabaja ¡¿?.
¿qué modificaciones debería hacer para interpolar 4 puntos? gracias
¿Me puede dar algún consejo de cómo aprender a hacer eso por favor?
(recursos bibliográficos de programación con matrices o algo así)
Como haces para graficar el polinomio?
plot
oie son diferencias finitas o divididas?
length(x) es = 8-1 (YA QUE ES EL x4-x1) ó es = 4 ( x0,x1,x2,x3,x4)??? porque tu matriz con el error dijo que era de 4*4 y no ce como tomarla esta. Muy buen aporte Jc
buen video
copie el programa tal cual pero me sale esto
Undefined function 'pol_newton' for input arguments of type 'double'.
soy nueva programando en matlab asi que no se porque sera
Muy buen vídeo!!!
Solamente tengo una duda, lo que pasa es que quiero tomar todos los valores de la segunda columna, en lugar de los del primer renglón,pero al intentarlo cambiar no corre el programa.
Si pudiera darme solución se lo agradecería mucho.
hola: tienes algun metodo de extrapolacion, para matlab, que puedas explicar en video?
solo una duda, como imprimo mi tabla de variables divididas que pones como b???
copio todo tal cual y me aparece error en n=length(x);
Error using pol_newton (line 5)
Not enough input argumen
a partir del un n=5, o de un vector x de 5 datos, aparece un error en el signo del 4to término del polinomio, aparecen simultáneamente +-...., alguien lo puedo corregir?
como puedo modificar el codigo para que se desarrolle hasta un polinomio x orden
hola disculpa no me quiere agarrar el comando function me dicen que es invalido y que "]" y ")" lo marca erroneo como puedo corregirlo
Hola, me puedes enviar el archivo de matlab para este ejemplo.
Muchas gracias.
XD
por que no colocas el código para copiarlo y pegarlo nomas -_-
pa' que no seas un pinche vago que todo quiere servido
thug life!!!!!! B| jajajajajajaja
:v es lo mas logico
para graficar?¿
no corre el programa me sale esto:
Undefined function or variable 'pol_newton'.
x2 bro
Hola me puede cotizar un trabajo??
Subscript indices must either be real positive integers or logicals.
Error in pol_newton (line 10)
b(i,j)=(b(i+1,j-i)-b(i,j-1))/(x(i+j-1)-x(i));
me sale este error no entiendo todo el código esta muy bien ya lo verifique varias veces ayuda¡!!!!!!!
cuando subas un codigo haz la prueba, no tiene sentido que los que estan aprendiendo de ti, no les corra. Mejora esa parte
me pudieras pasar porfavor el codigo fuente
amigo disculpa me puedes envar tu archivo m si porfa!!!
A que se debera ? graxias
+aldemar gonzalez
el comando el length, colocastes la "h" antes de la t :)
lo pasas el codigo porfa
Lumix
:D (Y)
me sale error, así que no sirve :v
a quien le importa, nomas queremos copiar y pegar, ni que nos de un titulo un polinomio
No es la respuesta esta mal el codigo el valor que obtienes no pertenece al conjunto de datos