[matlab] bsc
Viewer
- clear
- clc
- disp('Metode bagi dua - Erina Devianti/21120120140148')
- disp('x^3-2*x^2+3=0')
- a=-10;
- b=20;
- galat1=10^-2; % Galat toleransi
- t = cputime;
- %% Menghitung fungsi di bawah ini
- f= @(x) x.^3-2.*x.^2+3;
- %% Algoritma
- init=[a,b];
- ya=f(a) ; %Nilai f(a)
- yb=f(b); %Nilai f(b)
- iter=0;
- xm1=a;
- galat=abs((b-a)/b);
- while ya*yb>0
- disp('Ingat f(a)*f(b)>0, berarti tidak ada akar dalam selang'),
- break,
- end
- %% Mementukan akar sejati atau akar semu
- if ya-yb>-1 && ya-yb<1
- disp('konvergen, akar sejati')
- elseif ya-yb<=-1 || ya-yb>=1
- disp('divergen, akar semu')
- endif
- printf('\n iterasi a b xm f(xm) Galat\n');
- while galat>galat1
- iter=iter+1;
- xm=(a+b)/2;
- yxm=f(xm);
- a1=a;b1=b; % Inisialisasi untuk tampilan
- while yxm==0, break,
- end
- if ya*yxm<0
- b=xm;
- yb=yxm;
- else
- a=xm;
- ya=yxm;
- end
- galat=abs((xm-xm1)/xm);
- xm1=xm;
- printf('%10.0f %6.10f %6.10f %6.10f %6.10f %6.10f\n',[iter;a1;b1;xm;yxm;galat])
- end
- printf('Akar hampirannya adalah = %6.10f\n', xm)
- printf('Total cpu time: %f seconds\n', cputime-t);
- xx=linspace(init(1),init(2),100);
- yy=f(xx);
- %% Plot kurva dan titik estimasi
- figure(1)
- plot(xx,yy)
- hold on
- scatter(xm1,f(xm1),'filled','p')
- plot(xx,zeros(length(xx),1))
- xlabel('x')
- ylabel('f(x)')
- legend('f(x)','akar persamaan','garis f(x)=0')
- title(sprintf('Metode Bagi dua - Akarnya adalah = %.8f', xm1))
Editor
You can edit this paste and save as new: