Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function c = bisection(a,b,func,eps = 1e-5, print = 0)
- if func(a) * func(b) > 0
- c = 0/0;
- return
- elseif abs(func(a)) < eps
- c = a;
- return
- elseif abs(func(b)) < eps
- c = b;
- return
- end
- c = (a+b)/2;
- if print
- printf("*************BISECTION*************\n");
- i = 0;
- end
- while(abs(func(c)) > eps)
- if print
- 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))
- i = i+1;
- end
- if func(c) * func(a) > 0
- a = c;
- else
- b = c;
- end
- c = (a+b)/2;
- end
- return
- end
- function c = regulaFalsi(a,b,func,eps = 1e-5, print = 0)
- if func(a) * func(b) > 0
- c = 0/0;
- return
- elseif abs(func(a)) < eps
- c = a;
- return
- elseif abs(func(b)) < eps
- c = b;
- return
- end
- c = a - func(a) * (b-a)/(func(b)-func(a));
- if print
- printf("************REGULA_FALSI************\n");
- i = 0;
- end
- while(abs(func(c)) > eps)
- if print
- 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))
- i = i+1;
- end
- if func(c) * func(a) > 0
- a = c;
- else
- b = c;
- end
- c = a - func(a) * (b-a)/(func(b)-func(a));
- end
- return
- end
- function c = sekantna(a,b,func,eps = 1e-5, print = 0, max = 100)
- if abs(func(a)) < eps
- c = a;
- return
- elseif abs(func(b)) < eps
- c = b;
- return
- end
- if print
- printf("**************SEKANTNA**************\n");
- end
- for i = 1:max
- c = a - func(a) * (b-a)/(func(b)-func(a));
- 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
- if abs(func(a)) > abs(func(b))
- a = b;
- end
- b = c;
- if abs(func(b)-func(a)) < eps
- break
- end
- end
- if i == max, printf("*******************Max iter reached******************"), end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement