Advertisement
Guest User

Untitled

a guest
May 6th, 2015
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. clear
  2.  
  3. ////////////////////////////////////////////////////
  4. // CalculaLagrangeSegundo
  5. // Función que obtiene el valor de f(x) de la funcion
  6. // de interpolacion para el valor dX dado empleando
  7. // el método de interpolacion de Lagrange de segundo
  8. // grado.
  9. // Valores de entrada
  10. // dX, dX0 dX1, dX2, dFx0, dFx1, dFx2
  11. //
  12. // Resultados de la función
  13. // dY - Valor resultante de interpolar dX
  14. ///////////////////////////////////////////////////
  15. //function dY=calculaLagrangeSegundo(dX, dX0 dX1, dX2, dFx0, dFx1, dFx2)
  16. // dY = (dX - dX1)*(dX - dX2) * dFx0 / ((dX0 - dX1)*(dX0 - dX2)) + ..
  17. // (dX - dX0)*(dX - dX2)* dFx1 / ((dX1 - dX0)*(dX1 - dX2)) + ..
  18. // (dX - dX0)*(dX - dX1)* dFx2 / ((dX2 - dX0)*(dX2 - dX1))
  19. //endfunction
  20.  
  21. function lagrangeSegundo(vX, vY)
  22. //checar que sean al menos 3 datos
  23. [vXSort,k] = gsort(vX, 'lc', 'i')
  24. vYSort = [vY(:, k(:,1))]
  25. for i=2:length(vXSort)
  26. vYSort(:, $+1) = vY(:, k(:,i))
  27. end
  28.  
  29. dX= evstr(x_dialog('Que valor deseas interpolar?',''))
  30. valorSuperior = dX
  31. superiorIndice = 0
  32. valorInferior = dX
  33. inferiorIndice = 0
  34. segundoInferior = dX
  35. segundoIndice = 0
  36. for i=1:length(vXSort)
  37. if vXSort(:,i) < dX then
  38. valorInferior = vXSort(:,i)
  39. inferiorIndice = i
  40. elseif vXSort(:,i) > dX then
  41. valorSuperior = vXSort(:,i)
  42. superiorIndice = i
  43. break
  44. end
  45. end
  46.  
  47. if (inferiorIndice == 0) | (superiorIndice == 0) then
  48. //display error
  49. else
  50. if inferiorIndice == 1 then
  51. superiorIndice = superiorIndice+1
  52. segundoIndice = superiorIndice-1
  53. else
  54. inferiorIndice = inferiorIndice - 1
  55. segundoIndice = inferiorIndice+1
  56. end
  57. segundoInferior = vXSort(:,segundoIndice)
  58. valorInferior = vXSort(:,inferiorIndice)
  59. valorSuperior = vXSort(:,superiorIndice)
  60.  
  61.  
  62. messagebox(["Los valores que seran utilizados para la interpolacion son", ..
  63. "(" + string(valorInferior)+","+string(vYSort(:,inferiorIndice))+")", ..
  64. "(" + string(segundoInferior)+","+string(vYSort(:,segundoIndice))+")", ..
  65. "(" + string(valorSuperior)+","+string(vYSort(:,superiorIndice))+")"])
  66.  
  67.  
  68.  
  69.  
  70. end
  71.  
  72.  
  73. endfunction
  74.  
  75.  
  76.  
  77. ////////////////////////////////////////////////////
  78. // LeerArchivo Tipo 1
  79. // Lee el contenido del archivo datos.txt
  80. // Parámetros (valores de entrada):
  81. // ninguno
  82. // Retorno (valores de salida):
  83. // vX Vector de las X
  84. // vY Vector de las Y
  85. ///////////////////////////////////////////////////
  86. function [vX, vY]=LeeArchivoTipo1()
  87. archivo= file('open', 'tipo11.txt', 'old')
  88. numDatos= read(archivo,1,1)
  89. vX = read(archivo, 1, numDatos)
  90. vY = read(archivo, 1, numDatos)
  91. file('close', archivo)
  92. endfunction
  93.  
  94. [vX, vY]=LeeArchivoTipo1()
  95. lagrangeSegundo(vX, vY)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement