DearOohDeer

Miejsce Zerowe - Falasi

May 21st, 2021 (edited)
313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 1.61 KB | None | 0 0
  1. SKRYPT.M FALASI
  2. format long
  3. %Zadanie 10.27
  4. function y=f(x)
  5.   y = x^4 - 2*x^3 - 4*x^2 + 4*x + 4;
  6. endfunction
  7. a = 2;
  8. b = 3;
  9. %dk to dokladnosc a takze epsilon
  10. dk = ((10)^(-4));
  11. [wynik_fal,blad_teo] = oblicz_fal(@f,a,b,dk);
  12. %Przyblizenie pierwiastka
  13. wynik_fal
  14. %blad teoretyczny
  15. blad_teo
  16. %funkjca octave
  17. wynik_fzero = fzero(@f,a)
  18. %funkjca octave
  19. wynik_fsolve = fsolve(@f,a)
  20.  
  21. OBLICZ_FAL.M
  22. %dk - dokladnosc a takze epsilon | oblicz_fal = obliczenie Bisection|
  23. function [wynik_fal,blad_teo] = oblicz_bs(f,a,b,dk)
  24. x(1) = a;
  25. n = 1;
  26. if (f(a) * f(b)) < 0
  27.   do
  28.     n++;
  29.      x(n) =a-f(a)*(b-a)/(f(b) - f(a));
  30.      
  31.       if f(x(n)) == 0
  32.         wynik_fal = x(n)
  33.         blad_teo = 0;
  34.         break;
  35.       endif;
  36.      
  37.       if f(a) * f(x(n)) < 0
  38.           b = x(n);
  39.       else    
  40.           a = x(n);
  41.       endif;
  42.   until (abs(x(n-1) - x(n)) ) < dk;
  43.   blad_teo = abs((x(n-1) - x(n)));
  44.   wynik_fal = x(n);
  45. else
  46.     wynik_fal = NaN;
  47.     blad_teo = NaN;
  48.     error('Funkcja posiada jednakowe znaki na krancach przedzialu.')
  49.   endif
  50.   endfunction
  51.  
  52. Sesja Octave
  53. >> format long
  54. >> %Zadanie 10.27
  55. >> function y=f(x)
  56.   y = x^4 - 2*x^3 - 4*x^2 + 4*x + 4;
  57. endfunction
  58. >> a = 2;
  59. >> b = 3;
  60. >> %dk to dokladnosc a takze epsilon
  61. >> dk = ((10)^(-4));
  62. >> [wynik_fal,blad_teo] = oblicz_fal(@f,a,b,dk);
  63. >> %Przyblizenie pierwiastka
  64. >> wynik_fal
  65. wynik_fal = 2.732032423166152
  66. >> %blad teoretyczny
  67. >> blad_teo
  68. blad_teo = 4.835385843682261e-05
  69. >> %funkjca octave
  70. >> wynik_fzero = fzero(@f,a)
  71. wynik_fzero = 2.732050807568879
  72. >> %funkjca octave
  73. >> wynik_fsolve = fsolve(@f,a)
  74. wynik_fsolve = 1.414213563760328
Add Comment
Please, Sign In to add comment