Advertisement
Guest User

Untitled

a guest
Sep 19th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. %Polinomio de interpolaci�n de Lagrange paracaidista...
  2. %Lagrange 544 pdf;
  3. format short
  4.  
  5. evaluado_en = 10;
  6. grados = [1:4];
  7. datos_x = [1 3 5 7 13];
  8. datos_y = [800 2310 3090 3940 4755];
  9.  
  10. n = length(datos_x);
  11.  
  12. evals = datos_y;
  13. equs = string.empty(0,length(grados));
  14.  
  15. for x=1:length(grados)
  16. g = x+1;
  17. vals = lagrange(g, datos_x, evals);
  18. equs(x) = strcat("@(x) ", vals);
  19. fplot(matlabFunction(str2sym(vals)), [1,datos_x(end)], '--*');
  20. hold on
  21. disp(strcat('La ecuaci�n de grado ', " ", string(g), " es: ", vals));
  22. end
  23.  
  24. for i=1:length(equs)
  25. fx = str2func(equs(i));
  26. disp(strcat("X evaluado en ",string(evaluado_en)," con la ecuaci�n de grado ", string(i+1), " es: ", string(fx(evaluado_en))));
  27. end
  28.  
  29.  
  30. plot(datos_x, datos_y, 'r--X');
  31. legend(equs, 'Location','southwest')
  32. hold off
  33.  
  34.  
  35. function vals = lagrange(grado, puntos, evals)
  36. vals = "";
  37. for i=1:grado
  38. denominador = "";
  39. numerador = "";
  40.  
  41. for j=1:grado
  42.  
  43. if i~=j
  44. numerador = strcat(numerador, "(x-", string(puntos(j)), ")*");
  45. denominador = strcat(denominador, "(", string(puntos(i)), "-", string(puntos(j)), ")*");
  46. end
  47.  
  48. end
  49.  
  50. if length(string(numerador)) && length(string(denominador))
  51. vals = strcat(vals, "(",numerador, "*", string(evals(i)),")/(",denominador,")");
  52.  
  53. vals = strrep(vals, "**", "*");
  54. vals = strrep(vals, "*)", ")");
  55. if i ~= grado
  56. vals = strcat(vals, "+");
  57. end
  58. end
  59. end
  60. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement