Advertisement
gareins

Funkcije iskanja nicle

Dec 10th, 2012
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.29 KB | None | 0 0
  1. function c = bisection(a,b,func,eps = 1e-5, print = 0)
  2.     if func(a) * func(b) > 0
  3.         c = 0/0;
  4.         return
  5.     elseif abs(func(a)) < eps
  6.         c = a;
  7.         return
  8.     elseif abs(func(b)) < eps
  9.         c = b;
  10.         return
  11.     end
  12.     c = (a+b)/2;
  13.     if print
  14.         printf("*************BISECTION*************\n");
  15.         i = 0;
  16.     end
  17.    
  18.     while(abs(func(c)) > eps)
  19.         if print
  20.             printf("ITER%d [%1.10f %1.10f]:\n\tf(a) = %1.15f\n\tf(c) = %1.10f\n\tf(b) = %1.10f\n", i, a, b, func(a), func(c), func(b))
  21.             i = i+1;
  22.         end
  23.         if func(c) * func(a) > 0
  24.             a = c;
  25.         else
  26.             b = c;
  27.         end
  28.         c = (a+b)/2;
  29.     end
  30.     return
  31. end
  32.  
  33. function c = regulaFalsi(a,b,func,eps = 1e-5, print = 0)
  34.     if func(a) * func(b) > 0
  35.         c = 0/0;
  36.         return
  37.     elseif abs(func(a)) < eps
  38.         c = a;
  39.         return
  40.     elseif abs(func(b)) < eps
  41.         c = b;
  42.         return
  43.     end
  44.    
  45.     c = a - func(a) * (b-a)/(func(b)-func(a));
  46.     if print
  47.         printf("************REGULA_FALSI************\n");
  48.         i = 0;
  49.     end
  50.    
  51.     while(abs(func(c)) > eps)
  52.         if print
  53.             printf("ITER%d [%1.10f %1.10f]:\n\tf(a) = %1.10f\n\tf(c) = %1.10f\n\tf(b) = %1.10f\n", i, a, b, func(a), func(c), func(b))
  54.             i = i+1;
  55.         end
  56.         if func(c) * func(a) > 0
  57.             a = c;
  58.         else
  59.             b = c;
  60.         end
  61.         c = a - func(a) * (b-a)/(func(b)-func(a));
  62.     end
  63.     return
  64. end
  65.  
  66. function c = sekantna(a,b,func,eps = 1e-5, print = 0, max = 100)
  67.     if abs(func(a)) < eps
  68.         c = a;
  69.         return
  70.     elseif abs(func(b)) < eps
  71.         c = b;
  72.         return
  73.     end
  74.    
  75.      if print
  76.         printf("**************SEKANTNA**************\n");
  77.     end
  78.    
  79.     for i = 1:max
  80.         c = a - func(a) * (b-a)/(func(b)-func(a));
  81.         if print, printf("ITER%d T1:%1.10f, T2:%1.10f ::\n\tf(a) = %1.10f\n\tf(c) = %1.10f\n\tf(b) = %1.10f\n", i, a, b, func(a), func(c), func(b)), end
  82.         if abs(func(a)) > abs(func(b))
  83.             a = b;
  84.         end
  85.         b = c;
  86.        
  87.         if abs(func(b)-func(a)) < eps
  88.             break
  89.         end
  90.     end
  91.     if i == max, printf("*******************Max iter reached******************"), end
  92. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement