Advertisement
n0g3

interp

May 21st, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scilab 1.92 KB | None | 0 0
  1. //------------Vandermonde mátrix felépítése
  2. function V=vand(x)
  3. n=length(x);
  4. for i=1:n
  5.   for j=1:n
  6.     V(i,j)=x(i)^(j-1);
  7.   end
  8. end
  9.  
  10. if abs(det(V))<10^-10
  11.     d=0
  12. else
  13.     d=det(V)
  14. end
  15. if d==0
  16.   disp('Rossz adatok')
  17.   abort
  18. end
  19. endfunction
  20.  
  21. //-----------------Interpoláció-------
  22.  
  23. function interp(x,y)
  24.     if length(x) ~= length(y)
  25.         disp('Nem egyforma hosszúak!')
  26.         abort
  27.     end
  28. V=vand(x)
  29. //rgauss(V,y) // amennyiben van működőképes gauss elimináció
  30. disp(V^-1*y) //- beépített utasítással
  31. endfunction
  32.  
  33. //--------------Lagrange interpoláció Newton féle alakja------------------
  34.  
  35. function NewtIntp(x,y)
  36. if length(x)~=length(y)
  37.   printf('Rossz vektorokat adott meg!')
  38.   abort
  39. end
  40. n=length(x);
  41. for i = 1 : n
  42.   a(i) = y(i)
  43. end
  44. for j=2:n
  45.   for i=n:-1:j
  46.     a(i)=(a(i)-a(i-1))/(x(i)-x(i-j+1));
  47.   end
  48. end
  49. disp('A Newton-polinom együtthatói: ')
  50. disp(a)
  51. endfunction
  52.  
  53. //xd=[0;2;4]
  54. //y=[1;5;17]
  55.  
  56.  
  57. //function y=fg(x)
  58.     //y=1+2*x+x*(x-2)
  59. //endfunction
  60.  
  61. //plot(xd,y)
  62. //plot(-1:0.01:5,fg)
  63. //------------------Hermite interpoláció
  64.  
  65. function Hermite(x,y,yd)
  66. if length(x)~=length(y) & length(y)~=length(yd)
  67.   printf('Rossz vektorokat adott meg!')
  68.   abort
  69. end
  70. n=length(x)
  71. O=zeros(2*n)
  72. for i=1:n
  73. // első oszlop
  74.   xx(2*i -1)= x(i)
  75.   xx(2*i)=x(i)
  76. // 0. rendű osztott differenciák, kiegészítve a deriváltértékekkel
  77.   O(2*i-1 ,1)=y(i)
  78.   O(2*i,1)= y(i)
  79.   O(2*i,2)= yd(i)
  80. end
  81. // 1. rendű osztott differenciák
  82. for i=2:n
  83.   O(2*i-1,2)=(O(2*i-1,1)-O(2*i-2,1))/(xx(2*i-1)-xx(2*i-2))
  84. end
  85. // magasabbrendű osztott differenciák
  86. for j =3:2* n
  87.   for i=j :2*n
  88.     O(i,j)=(O(i,j-1)-O(i-1,j-1))/(xx(i)-xx(i-j+1))
  89.   end
  90. end
  91. printf ('A megoldás :')
  92. disp(O)
  93. endfunction
  94.  
  95. function y=fg(x)
  96.     y=x+(4-2*%pi)/%pi^2*x^2+((-8-2*%pi)/%pi^2)/(%pi/2)*x^2*(x-%pi/2)
  97. endfunction
  98.  
  99. xs=[0;%pi/2]
  100. ys=[0;1]
  101. yd=[1;0]
  102. plot(xs,ys)
  103. plot(0:0.01:%pi/2,fg)
  104. Hermite(xs,ys,yd)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement