Showing posts with label Metode Numerik. Show all posts

Program Pascal Regula falsi

program regulafalsi;
uses crt;
label ulang;
var
x1,x2,x3,y1,y2,y3 : real;
i : integer;
Ab :char;
data1 : real;
begin
    ulang:
    clrscr;
    writeln('Tentukan nilai akar dari persamaan f(x)=x^3+x^2-3x-3=0 dengan Regula Falsi');
    write('Masukan nilai x1 = ');readln(x1);
    y1 := x1 * x1 * x1 + x1 * x1 - 3 * x1 - 3;
    writeln(' Nilai f(x1)= ',y1:0:4);
    repeat
    begin
      write( 'Masukan nilai x2 = ' ); readln(x2);
      y2 := x2 * x2 * x2 + x2 * x2 - 3 * x2 - 3;
      write(' Nilai f(x2)= ',y2:0:4);
    end;
    if (y1*y2)<0 then
      Writeln(' Syarat Nilai Ok')
    else
      Writeln(' Nilai X2 Belum Sesuai');
    until ( y1 * y2 ) <0;
    writeln;
    writeln('Penyelesaian persamaan karekteristik dengan metoda regula falsi');
    writeln('----------------------------------------------------------------------');
    writeln(' n          x                    f(x)               error ');
    writeln('----------------------------------------------------------------------');
    repeat
    begin
      i:= i + 1; x3 := ( x2-( y2 / ( y2 - y1))*(x2-x1));
      y3 := x3 * x3 * x3 + x3 * x3 - 3 * x3 - 3;
    if i<10 then
      writeln(' ',i,' : ',x3,' : ',y3,' : ',abs(y3),' : ')
    else
      writeln(i,' : ',x3,' : ',y3,' : ',abs(y3),' : ');
    if ( y1 * y3 ) <0 then
      begin
      x2 := x3 ; y2 := y3 ;
      end
    else
    begin
      x1 := x3 ; y1 := y3;
    end;
    end;
    until abs( y3 ) < 1E-07;
    writeln('----------------------------------------------------------------------');
    writeln('Akar persamaannya= ',x3);
    writeln('Errornya=' ,abs( y3 ));
    writeln('----------------------------------------------------------------------');
    write('Apakah anda ingin mengulangi (y/t): ');
    readln(ab);
    if (ab='y') or (ab='Y') then
      begin
      goto ulang;
      end
    else
end.



Hasil Outputnya akan seperti ini : (jika di isi Nilai X1 = 1 & X2 = 2 )





Jika di kerjakan secara manual maka akan seperti ini :


xc = xb - (f(xb) / f(xb) - f(xa)) *(xb - xa)

Carilah penyelesaian dari persamaan nonlinear di bawah ini dengan metode Regula Falsi:
f(x) = x3 + x2 - 3x - 3 = 0

Penyelesaian:

Langkah 1: Menentukan dua titik nilai f(x) awal, f(x1) dan f(x2) dan harus memenuhi hubungan f(x1)*f(x2)<0. misalkan nilai x1 = 1 dan x2 = 2.
f(x1)= 13 + 12 - 3(1) – 3 = -4
f(x2)= 23 + 22 - 3(2) – 3 = 3

Di dapat F(x1)*f(x2)<0 maka titik penyelesaian berada di antara nilai x1 = 1 dan x2 = 2.

Langkah 2: mencari nilai x3 dengan persamaan :
x3 = x2 - (f(x2) / f(x2) - f(x1)) *(x2 - x1)
Dan f(x3)= 1.571423 + 1.57142 2 - 3(1.57142) – 3 = -1.3644314869

Langkah 3: Melakukan Iterasi dengan persamaan 2.1 pada hasil langkah 2 nilai f(x3) hasilnya negative, dan untuk memnentukan nilai x4 harus f(xa*f(xb)<10 maka yang memenuhi syarat nilai yang digunakan yaitu x2 dan x3 karena nilai f(x2)*f(x3)<0 maka :

x4 = 2 - (3 / 3 - (-1.3644)) *(3 - 1.57142) = 1.7054108216
Dan f(x4) = 1.705413 + 1.705412 - 3(1.70541) – 3 = -0.247745

Iterasi selanjutnya mencari nilai x5 dan f(x5) dan begitu seterusnya sampai didapatkan nilai error lebih kecil dari 10-7. Maka dari hasil perhitungan didapatkan nilai x = 1.7320508074.
dengan nilai errornya f(x)= 2.0008883439E-09


sumber : http://myleaf-clover.blogspot.com/2013/04/la-matlan-2-iii.html
Continue Reading »

Program Pascal Metode Biseksi

program biseksi;
uses wincrt;
label ulang;
var
x1,x2,x3,y1,y2,y3 : real;
i : integer;
ab : char;
begin
ulang :
clrscr;
writeln('Tentukan nilai akar dari persamaan f(x)=x^3+x^2-3x-3=0 dengan Metode Biseksi');
write( 'Masukan nilai x1 = ' );
readln( x1 );
y1 := x1 * x1 * x1 + x1 * x1 - 3 * x1 -3;
writeln(' Nilai f(x1)= ',y1:0:4);
repeat
begin
write( 'Masukan nilai x2 = ');
readln(x2);
y2 := x2 * x2 * x2 + x2 * x2 - 3 * x2 - 3;
write(' Nilai f(x2)= ',y2:0:4);
end;
if (y1*y2)<0 then
Writeln(' Syarat Nilai Ok')
else
Writeln(' Nilai X2 Belum Sesuai');
until ( y1 * y2 ) < 0;
I :=2;
Writeln;
writeln('Penyelesaian Persamaan Dengan Metode Biseksi, Nilai x1= ',x1:0:2,' & x2= ',x2:0:2);
writeln('--------------------------------------------------------------------------');
writeln('n x f(x) error ');
writeln('--------------------------------------------------------------------------');
repeat
begin
i :=i + 1 ; x3 := ( x1 + x2) / 2;
y3 := x3 * x3 * x3 + x3 * x3 - 3 * x3 -3;
if (i mod 10)=0 then readln;
if i<10 then
writeln(' ',i,' :: ',x3,' :: ',y3,' :: ',abs( y3 ),' ::')
else writeln(i,' :: ',x3,' :: ',y3,' :: ',abs( y3 ),' ::');
if ( y1* y3) <0 then
begin
x2 :=x3;
end else
begin
x1 := x3;
end;
end;
until abs( y3 )<1E-07;
writeln('-------------------------------------------------------------------------');
writeln('akar persamaanya = ',x3);
writeln('errornya =',abs( y3 ));
writeln('-------------------------------------------------------------------------');
write('Apakah anda ingin mengulanginya (y/t): ');
readln(ab);
if (ab='y') or (ab='Y') then
begin
goto ulang;
end
end.


Outputnya :




Continue Reading »

Program Pascal Metode Newton Raphson

program Newton_raphson;
uses crt;
label ulang;
var
x, x1, y, y1, z, f, f1, f2 : real;
i:integer;
ab : char;
begin
ulang:
clrscr;
repeat
begin
writeln('tentukan akar persamaan dari (x)=3x+sin(x)+exp x dengan metode newton raphson');
writeln;
write('masukan nilai x1= ');
readln(x1);
y1 := 3 * x1+ sin(x1) - exp(x1);
f1 := 3 + cos(x1) - exp(x1);
f2 := -sin(x1) - exp(x1);
z :=(y1*f2)/(f1*f1);
writeln('nilai f(x1) = ',y1:0:5);
writeln('nilai f^(x1) = ',f1:0:5);
writeln('nilai f^^(x1) = ',f2:0:5);
if abs(z) < 1 then
writeln('nilai x1 OK (',z:0:5,') <1');
end;
until abs(z)<1;
readln;
i := 1;
writeln('penyelesaian persamaan karakteristik dengan  newton raphson');
writeln('-----------------------------------------------------------');
writeln('      n                  x          F(x)             error ');
repeat
begin
i:= i + 1 ; x := x1-(y1/f1);
y:= 3* x + sin(x) - exp(x);
f:= 3 + cos(x) -exp(x);
if i < 10 then
writeln('::',i,'::',x,'::',y,'::',abs(y),':')
else
writeln('::',i,'::',x,'::',y,'::',abs(y),':');
x1:= x;
y1:= y;
f1:=f;
end;
until abs(y) < 1E-08;
writeln('--------------------------------------------------------------');
writeln('akar persamaannya x= ',x);
writeln('errornya = ',abs(y));
write('apakah anda ingin mengulanginuya (y/t) =');
readln(ab);
if (ab='y') or (ab='Y') then
begin
goto ulang;
end
end.

Hasil Outputnya adalah :


ketika kita menginput x1 = 1, maka akan muncul hasil seperti di atas, hasil di atas menunjukan bahwa nilai 1, tidak memenuhi persamaan di atas.


Ketika Kita menginput Nilai X1 = 2 maka akan muncul tabel yang menunjukan letak persamaan dan errornya.

Continue Reading »