[matlab] bsc

Viewer

  1. clear
  2. clc
  3.  
  4. disp('Metode bagi dua - Erina Devianti/21120120140148')
  5. disp('x^3-2*x^2+3=0')
  6. a=-10;
  7. b=20;
  8. galat1=10^-2;     % Galat toleransi
  9. t = cputime;
  10.  
  11. %% Menghitung fungsi di bawah ini
  12. f= @(x) x.^3-2.*x.^2+3;
  13.  
  14. %% Algoritma
  15. init=[a,b];
  16. ya=f(a) ;  %Nilai f(a)
  17. yb=f(b);   %Nilai f(b)
  18. iter=0;
  19. xm1=a;
  20. galat=abs((b-a)/b);
  21.  
  22. while ya*yb>0
  23.     disp('Ingat f(a)*f(b)>0, berarti tidak ada akar dalam selang'),
  24.     break,
  25. end
  26. %% Mementukan akar sejati atau akar semu
  27.     if ya-yb>-1 && ya-yb<1
  28.     disp('konvergen, akar sejati')
  29.     elseif ya-yb<=-1 || ya-yb>=1
  30.     disp('divergen, akar semu')
  31.     endif
  32.  
  33. printf('\n     iterasi       a            b            xm            f(xm)           Galat\n');
  34. while galat>galat1
  35.     iter=iter+1;
  36.     xm=(a+b)/2;
  37.     yxm=f(xm);
  38.     a1=a;b1=b;    % Inisialisasi untuk tampilan
  39.     while yxm==0break,
  40.     end
  41.         if ya*yxm<0
  42.         b=xm;
  43.         yb=yxm;
  44.     else
  45.         a=xm;
  46.         ya=yxm;
  47.         end
  48.     galat=abs((xm-xm1)/xm);
  49.     xm1=xm;
  50.     printf('%10.0f   %6.10f   %6.10f   %6.10f    %6.10f   %6.10f\n',[iter;a1;b1;xm;yxm;galat])
  51. end
  52. printf('Akar hampirannya adalah = %6.10f\n', xm)
  53. printf('Total cpu time: %f seconds\n', cputime-t);
  54. xx=linspace(init(1),init(2),100);
  55. yy=f(xx);
  56.  
  57. %% Plot kurva dan titik estimasi
  58. figure(1)
  59. plot(xx,yy)
  60. hold on
  61. scatter(xm1,f(xm1),'filled','p')
  62. plot(xx,zeros(length(xx),1))
  63. xlabel('x')
  64. ylabel('f(x)')
  65. legend('f(x)','akar persamaan','garis f(x)=0')
  66. title(sprintf('Metode Bagi dua - Akarnya adalah = %.8f', xm1))
  67.  

Editor

You can edit this paste and save as new:


File Description
  • bsc
  • Paste Code
  • 20 Sep-2021
  • 1.51 Kb
You can Share it: