Advertisement
fr1sk

Untitled

May 19th, 2018
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.02 KB | None | 0 0
  1. % LAGRANZ
  2.  
  3. function L = lagr(x);
  4. n = length(X);
  5. l = 0;
  6.  
  7. for i=1:n
  8.     p = 1;
  9.     for j=1:n
  10.         if i~=j
  11.             p = p * ((x - X(j)) / (X(i) - X(j)));
  12.         end
  13.     end
  14.     l = l + p * Y(i);
  15. end
  16.  
  17. ---
  18.  
  19. % Lagranz vrednosti polinoma
  20.  
  21. function L = lagr(a, b, n)
  22. L = zeros(1,n);
  23.  
  24. for i=1:n
  25.     p = 1;
  26.     for j=1:n
  27.         if i~=j
  28.             p = conv(p, [1, -X(j)]) / (X(i) - X(j)));
  29.         end
  30.     end
  31.     L = L + p * Y(i);
  32. end
  33. L = polyval(L, x);
  34.  
  35. ---
  36. % da li je tablica ekvidistantna
  37. ekv = all(abs(diff(X)-h) <= eps);  
  38. ---
  39.  
  40. njutn I / II - k i p razlike
  41. function nj = njutn(x)
  42. n = length(X)
  43. k_razlike = zeros(n, n-1)
  44.  
  45. for i=1 : n-1
  46.     k_razlike(i, 1) = Y(i+1) - Y(i) ... / X(i+1) - X(i)
  47. end
  48.  
  49. for j = 2 : n-1
  50.     for i = 1 : n-j
  51.         k_razlike(i, j) = k_razlike(i+1, j-1) - k_razlike(i, j-1) ... / X(i+j) - X(i)
  52.     end
  53. end
  54.  
  55. y = Y(1|end)
  56. h = X(2) - X(1)
  57. q = (x - X(1|end)) / h
  58. Q = q
  59.  
  60. for i = 1:n-1
  61.     y = y + q * k_razlike(1|n-j, j) / factorial(j)
  62.     q = q * (Q+j);
  63. end
  64.  
  65. % Njutnov interpolacioni polinom sa podeljenim razlikama
  66. y = Y(1);
  67. p = 1;
  68. for i = 1 : n-1
  69.     p = p * (x - X(i));
  70.     y = y + p * p_razlike(1, i);
  71. end
  72.  
  73. --
  74. inverz i ondlagranz normanlo
  75.  
  76. [X1, I] = sort(Y);
  77. Y = X(I);
  78.  
  79. --
  80. trapez
  81. L = (h/2) * (Y(1) + Y(n) + 2 * sum(Y(2:n-1)));
  82. simps
  83. L = (h/3) * (Y(1) + Y(n) + 2 * sum(Y(3:2:n-1)) + 4 * sum(Y(2:2:n-1)));
  84. runge - trap
  85. runge = abs(I2 - I1) / 3;
  86. runge - sims
  87. runge = abs(I2 - I1) / 15;
  88. che
  89. C{i+1} = 2 * [C{i},0] - [0,0,C{i-1}];
  90. lezandrov
  91. L{i+1} = ((2 * i-1) * [L{i}, 0] - (i-1) * [0,0,L{i-1}])/i;
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105. function x = polov(tol)
  106.  
  107. tablica;
  108. n = length(X);
  109. a = X(1);
  110. b = X(n);
  111.  
  112. if (funk(a) * funk(b) > 0)
  113.     error('greska');
  114. end
  115.  
  116. if (funk(a) == 0)
  117.     x = a;
  118. elseif (funk(b) == 0)
  119.     x = b;
  120. end
  121.  
  122. if (funk(a) ~= 0 && funk(b) ~= 0)
  123.     while (abs(a-b) > tol)
  124.         x = (a+b) / 2;
  125.         if funk(x) == 0
  126.             break;
  127.         else
  128.             if funk(a) * funk(x) < 0
  129.                 b = x;
  130.             else
  131.                 a = x;
  132.             end
  133.         end
  134.     end
  135.     x = (a+b) / 2;
  136. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement