Kod: Zaznacz cały
function [r,v,it,err]= mbisekcji(f1,f2,a,b,delta,epsilon, M)
u1=polyval(f1,a);
v1=polyval(f1,b);
u2=polyval(f2,a)+exp(a);
v2=polyval(f2,b)+exp(b);
printf("dane %e,%e,%e,%e
",u1,u2,v1,v2);
e=b-a;
if(((polyval(f1,a)>(polyval(f2,a)+exp(a)) && (polyval(f1,b)>polyval(f2,b)+exp(b))) || (polyval(f1,a)<(polyval(f2,a)+exp(a)) && polyval(f1,b)<(polyval(f2,b)+exp(b)))))
printf "1
"
break;
else
printf "0
"
endif
for(k=1:M)
e=e/2;
c=a+e;
w=polyval(f2,c);
printf ("punkt=%e, f(r):%e, nr iteracji: %i, a:%e, b:%e
", c,w,k,a,b);
if(abs(e)<delta || abs(w)<epsilon)
break;
endif
if(((polyval(f1,a)<(polyval(f2,a)+exp(a)) && (polyval(f1,b)>polyval(f2,b)+exp(b))) || (polyval(f1,a)>(polyval(f2,a)+exp(a)) && polyval(f1,b)<(polyval(f2,b)+exp(b)))))
b=c;
v=w;
else
a=c;
u=w;
endif
endfor
endfunction
f1=[3,0];
f2=[0];
a=1;
b=2;
delta=10^(-4);
epsilon=10^(-4);
M=100;
mbisekcji(f1,f2,a,b,delta,epsilon, M)