Download - Contoh analisa numerik dengan C++
-
INTEGRASI NUMERIK
TEORI DASAR
1. Metode Gauss Quadrature
Tinjauan Gauss dalam perhitungan integral =b
a
dxxfI )( berdasarkan nilai F(x)
dalam sub-interval yang tidak berjarak sama, melainkan simetris terhadap titik tengah
interval. Jika =b
a
dxxfI )( sebagai fungsi integran, maka dengan mengubah variabeL bebas
x dengan t dalam hubungan 2
)()( tabbax
++= , batasan integrasi menjadi 1=t dan
1=t . Nilai )(xf menjadi
)(2
)()()( tftabbafxf =
++= (1)
Karena dtabdx2
)( = , maka I menjadi
=
1
1
)(2
)( dttfabI (2)
Dengan menyatakan
1
1
)( dttf sebagai
++++=1
1332211 )(...)()()()( nn tfwtfwtfwtfwdttf (3)
Dengan ntttt ,...,, 321 adalah titik dalam interval t=-1 ke t=1 dengan hubungan variabel x
dengan t :
11 2)()(
tabba
x++
= , 22 2)()(
tabba
x++
= , dan seterusnya, maka
+++
=
b
a
nn tfwtfwtfwabdxxf )](...)()([2)()( 2211 (4)
-
Atau persamaan (4) diatas dapat ditulis sebagai
=
=
b
a
n
iii tfwabdxxf
1)(
2)()( (5)
a) untuk orde 1 = 0.33332
b) untuk orde 2 =0.495447
c) untuk orde 3 = 7.819479
2. Metode Monte Carlo
Dengan menggunakan metode ini, kita bisa mengatur kehalusan data yang dihasilkan dengan mengubah-ubah jumlah segmentasi yang diinginkan
n
xfxf
xfxf
xfabdxxfIb
a
=
=
==
)()(
)()(
,)()()(
HASIL PRAKTIKUM
Didapatkan hasil integrasi dari fungsi-fungsi berikut :
Didapatkan hasil integrasi dari fungsi-fungsi berikut : Waktu Komputasi
Metoda GK (t1) Waktu Komputasi Metoda MC (t2)
t1 : t2
dxx1
0
2 0.000000 0.016 dengan jumlah
segmentasi 1 0:0.016
dydxxy 1
0
2
1
2 0.000000 55.578 dengan
jumlah segmentasi 1
0:55
Nilai Integral Metoda Gauss
Waktu Komputasi Metoda MC (t2)
dxx1
0
2 2.3333333 2.4012
dydxxy 1
0
2
1
2 13.999999 13.881316
- // Integrasi Numerik //Metode Gauss Quadrature //Integral lipat 1 untuk fungsi f(x)=x^2 terhadap dx #include #include #include #include #include /* Daftar Variable a,b : batas integral n : orde */ int main() { clock_t awal, akhir; float w[10], t[10], a, b, f; int i,n; printf("Fungsi yang akan diintegrasikan adalah f(x)=x*x\n"); printf("Masukkan batas bawah : "); scanf("%f",&a); printf("Masukkan batas atas : "); scanf("%f",&b); printf("Masukan orde n yang akan dipilih 2 atau 3 \n"); scanf("%i",&n); if (n == 2){ w[1]= 1.; w[2]= 1.; t[1]= -0.577350269; t[2]= 0.577350269; f=0.; awal = clock(); for(i=1;i
- f=0.; awal = clock(); for(i=1;i
- awal = clock(); for(i=1;i
-
//Modul 6 Integrasi Numerik Metode Monte Carlo //Integral lipat untuk fungsi f(x)=x*x terhadap dx #include #include #include #include #include int main () { clock_t awal, akhir; printf ("Diketahui Bentuk Fungsi: f(x)=x*x\n\n"); float a,b,Fo,F,dF; int i,n; printf ("Tentukan batas bawah :"); scanf ("%f",&a); printf ("Tentukan batas atas :"); scanf ("%f",&b); printf ("Tentukan jumlah segmentasi awal :"); scanf ("%i",&n); Fo = 0.; awal = clock(); do { F = 0; for (i=1;i1e-3); akhir = clock(); printf ("\n\nHasil Integral = %f", F); printf("\nWaktu : %f detik\n",(akhir-awal)*1./CLK_TCK); getch(); return 0; }
//Modul 6 Integrasi Numerik Metode Monte Carlo //Integral lipat 2 untuk fungsi f(x)=x*y*y terhadap dxdy #include #include #include #include #include
- int main () { clock_t awal, akhir; printf ("Diketahui Bentuk Fungsi: f(x,y)=x*y*y\n\n"); double a,b,c,d,Fo,F,dF,x,y; int nx, ny, i, j; printf ("Tentukan batas bawah integrasi x :"); scanf ("%lf",&a); printf ("Tentukan Batas atas integrasi x :"); scanf ("%lf",&b); printf ("Tentukan jumlah segmentasi awal x:"); scanf ("%i",&nx); printf ("Tentukan batas bawah integrasi y :"); scanf ("%lf",&c); printf ("Tentukan batas atas integrasi y :"); scanf ("%lf",&d); printf ("Tentukan jumlah segmentasi awal y:"); scanf ("%i",&ny); Fo = 0.; awal = clock(); do { F = 0.; for (i=1;i
-
METODE DEKOMPOSISI MATRIKS LU
Contoh aplikasi dari system persamaan linear yaitu sebagai berikut :
Gambar 1. rangkaian dengan 8R dan 4E
Dari hukum Kirchoff I dan II diperoleh :
Loop I :
]2....[]1...[
00
321
1443311
1443311
iiiERiRiRiERiRiRi
iRE
+=
=++
=++
=+
Loop II :
]4...[)3...(
00
652
2335522
2335522
iiiERiRiRiERiRiRi
iRE
+=
=+
=+
=+
-
Loop III :
]6...[)5...(
00
741
3778844
3778844
iiiERiRiRiERiRiRi
iRE
+=
=++
=++
=+
Loop IV :
)8...()7...(
00
867
4668855
4668855
iiiERiRiRi
ERiRiRiiRE
+=
=+
=++
=+
Dari 8 persamaan tersebut, kita dapatkan 4 persamaan linear dengan 8 variabel. Untuk dapat
membentuk sebuah matrik bujur sangkar, maka kita harus mereduksi 4 persamaan dengan 8
variabel tersebut menjadi 4 persamaan linear dengan 4 variabel. Sehingga persamaan-
persamaan diatas menjadi :
Loop I : 1443311 ERiRiRi =++ (9)
Loop II : 2445322 2 ERiRiRi =+ (10)
Loop III : 37448322871 )()( ERRiRiRiRRi =++ (11) Loop IV : 4654865386211 )()()( ERRiRRRiRRiRi =+++++++ (12) Persamaan-persamaan tersebut dapat dibuat matrik sebagai berikut :
=
++++
++
4
3
2
1
4
3
2
1
65865861
748287
452
431
)()()()()(
200
EEEE
iiii
RRRRRRRRRRRRRR
RRRRRR
Dan matriks tersebut dapat diselesaikan menggunakan metode dekomposisi LU dengan
rumusan sebagai berikut :
ELYYUI
LURERI
=
=
=
=
(13)
Untuk menghitung besarnya masing-masing arus, digunakan program devC++ yaitu :
- //Sistem Persamaan Linear //Rangkaian dengan 8 buah sumber tegangan (baterai) dan 4 buah tegangan #include #include #include #include int main() { float R[8], E[4], A[4][4], U[4][4], L[4][4], I[8], Y[4], D, X, F, G; int i, j, k; FILE *coba; if((coba = fopen("candra.txt", "w")) == NULL){ printf("File tidak dapat dibuka\n"); } printf ("C! \n"); for (i=1;i
- { F = F + L[i][k]*U[k][j]; } U[i][j] = A[i][j] - F; } for (i=j+1;i
- printf("I=%f",I[4]); for (i=3;i>=1;i--) { X=0.; for (j=i+1;j
- } printf ("\n"); fprintf (coba,"\n"); } printf ("\nMaka Matriks U: \n"); fprintf (coba,"\nMaka Matriks U: \n"); for (i=1;i
-
PERSOALAN NILAI EIGEN
Pada pengerjaan ini saya menggunakan nilai dari A adalah 2 sehingga vektornya menjadi:
=
/4/3/2/1
/4/3/2/1
2/00002/002/00002/
E
AAAAA
A
=
/4/3/2/1
/4/3/2/1
1000012002100001
E
Secara analitik kita mendapatkan nilai eigen dari persamaan di atas adalah dengan cara
menghitung determinan matriks berikut:
0
1000012002100001
=
EE
EE
Determinan dari matriks ini akan didapat:
3211
0)3()1()3()1(
3
3
=
=
=+
+=
EEsehingga
EE
EEDet
Metode Shifted-Inverse Power Method ini hanya bisa menghitung nilai eigen yang berbeda. Jika nilai eigen ada yang sama maka kita harus menggunakan cara yang lain.
Secara analitik maka kita akan dapatkan nilai vektor eigen adalah
Untuk nilai eigen 1:
Vektor eigen =
222221212121
)1()1()1()1(||1||1||1||11
+++
>>+>>++>+>+>+>+=
zzzzzzzzX
-
Untuk nilai eigen 3:
Vektor eigen =
222121
)1()1(||1||11
+
>>+>+>=
zzzzX
Dengan menggunakan program dan nilai tebakan X mula-mula adalah [1 1 1 1]. Kita dapat memperoleh nilai eigen yang cocok dengan teori asalah kita menebak nilai alfa yang cukup dekat dengan nilai eigen tersebut (jangan tebak sama dengan nilai eigennya, hal ini akan membuat perhitungan error). Misalkan kita tebak alfa= 1.1 maka kita akan dapatkan nilai eigen 1 sedangkan kita tebak alfa =-3.1 maka kita akan dapatkan nilai eigen -3.
Vektor eigen yang didapat dari perhitungan program adalah sama dengan teori yaitu Untuk nilai eigen 1
222221212121
)1()1()1()1(||1||1||1||11
+++
>>+>>++>+>+>+>+=
zzzzzzzzX
Untuk nilai eigen -3
222121
)1()1(||1||11
+
>>+>+>=
zzzzX
Sebenarnya perhitungan dari computer tidaklah memberikan nilai yang selalu tepat 1. terkadang nilainya adalah 0.99999, namun kita pahami bahwa dalam numeric kita melakukan pendekatan, jadi tidak eksak lagi 100%.
Dari semua hal ini dapat disimpulakan bahwa perhitungan nilai dan vektor eigen yang dilakukan dengan computer adalah benar karena cocok dengan hasil teori.
#include #include #include #include
int main()
-
{ int i,j,k,l; float A[5][5],X0[5],Y0[5],X1[5],Y1[5],alfa,B[5][5],L[5][5],U[5][5],Y[5],C1,C0,delta,lamda;
for(i=1;i
-
U[i][j]= B[i][j];
for(k=1;k
-
for(j=4;j>=(i+1);j--){
Y0[i]=Y0[i]-U[i][j]*Y0[j]; } Y0[i]=Y0[i]/U[i][i]; }
C1=Y0[1]; for(i=2;i
-
Persamaan Differensial Biasa : Shooting Method
DATA
Shooting Method merupakan metode numerik untuk menerapkan syarat betas pada
solusi persamaan differensial biasa.
Diberikan contoh soal sebagai berikut : Benda bermassa 1 kg diikatkan pada pegas tak bermassa secara horizontal dengan
konstanta pegas 50 N/m, pegas tersebut diikatkan pada sebuah dinding kemudian system benda pegas disimpangkan sejauh 10 cm, jika tidak ada gesekan antara benda dengan lantai tentukan berapa sajakah kelajuan awal yang mungkin diberikan agar pada saat 10 detik dari simpangan awal tersebut benda berada pada titik kesetimbangan.
Metode ini memilih harga v1 awal dan v2 awal. Kemudian solusi y1 dan y2 dicari dari persamaan euler. Sehingga secara analitik dapat dianalisis sebagai berikut :
y = f (x,y,y) dimana y (x1) = y1 dan y(x2) = y2 Persamaan gerak diturunkan 2 kali terhadap waktu t, yaitu :
vdtdyyvtf ==),,(1 Dan y
m
kdt
ydyvtf == 22
2 ),,(
Dengan k = 50 N/m dan m = 1 kg, maka didapatkan persamaan Euler (untuk orde pertama) yaitu,
tyvtyvtfvv iiii =+=+ 50),,(21 dan,
tvytyvtfyy iiii +=+=+ ),,(11
-
Simpangan awal pada saat t = 0, adalah y = 0.1 dan saat t = 10, y = 0. kecepatan awal dalam persoalan kali ini ditebak jadi setelah mendapatkan nilainya digunakanlah persamaaan dibawah untuk mengetahui kecepatan awalnya :
112
1210 yyy
vvvv
=
Setelah didapatkan kecepatan awalnya, dengan metode euler dihitung simpangannya untuk setiap dx tertentu dengan progam yang telah dibuat. Dari penghitungan komputasi yang dilakukan didapatkan bahwa kecepatan awal yang diperlukan agar pada saat t = 10 simpangan y = 0, yaitu v = Nilai v = 0.052989959717, v = 0.0201873, v = 0.013320922, v = 0.01264953 m/s. Nilai kecepatan awal ini selalu didapatkan untuk setiap tebakan dua kecepatan yang berbeda tanda karena program
dibuat seperti itu, dengan nilai dt yang berbeda-beda didapatkan nilai kecepatan yang berbeda pula dan terdapat 4 nilai kecepatan yang memenuhi syarat , Dari penghitungan
secara komputasi menggunakan didapatkan plot grafik simpangan terhadap waktu sebagai berikut:
Pada percobaan kali ini, diberi suatu permasalahan nilai eigen yang digunakan untuk menyelesaikan persamaan diferensial. Dari grafik ini dapat dilihat bahwa pada saat waktu adalah 10 detik maka simpangannya adalah 0. Ini sesuai dengan syarat batas yang diberikan. Satu hal yang juga membuktikan bahwa metode komputasi yang digunakan
Grafik t terhadap y dengan v = 0.0529899
-0.15
-0.1
-0.05
0
0.05
0.1
0.15
0 2 4 6 8 10 12
waktu (s)
Sim
pan
gan
Pe
gas
(m)
-
benar adalah dari hasilnya yaitu grafik simpanganya sinusoidal. Hasil ini sesuai dengan teori bahwa persamaan untuk benda adalah persamaan osilasi. // Shooting methode #include #include #include #include double f(double v) { double y,t,dt,k ; //masukan variable yang diketahui //dengan simpangan pegas = 10cm = 0.1 m y = 0.1; t = 0; dt = 0.00001; k = 50; do { v = v - k*y*dt; y = y + v*dt; t = t + dt; } while(t0) { printf ("Maaf anda coba lagi!\n"); goto coba; } do { y1 = f(v1);
-
y2 = f(v2); printf ("y1=%lf\tv1=%lf\ty2=%lf\tv2=%lf\n",y1,v1,y2,v2); if(fabs(y2)>fabs(y1)) { v2 = (v1+v2)/2; } else { v1 = (v1+v2)/2; } } while(fabs(y2)>1e-6&&fabs(y1)>1e-6); printf ("Maka didapat hasil:\ny1=%5.12lf\t\tv1=%5.12lf\ny2=%5.12lf\t\tv2=%5.12lf",y1,v1,y2,v2); getch (); return 0; }
INTERPOLASI DATA
Pada percobaan kali ini mengenai Interpolasi yang memiliki pengertian yang lebih luas
merupakan upaya mendefinisikan suatu fungsi dekatan suatu fungsi analitik yang tidak
diketahui atau pengganti fungsi rumit yang tak mungkin diperoleh persamaan analitiknya
dengan masalah umum interpolasi ini yaitu menjabarkan data-data fungsi dalam fungsi
dekatan.
Berikut ini adalah tabel data dari hasil eksperimen :
NO Besaran Fisis X
Besaran Fisis Y
1 1 2.5 2 3 2.5 3 4 3.0 4 6 8.0 5 9 12.0 6 12 16.0 7 20 18.0 8 25 17.5 9 30 15.5 10 40 8.5 11 50 1.5
Maka dari bantuan Microsoft excel didapatkan grafik sebagi berikut :
-
Grafik 1. Grafik data hasil analitik
Setelah dibuat dari grafik tersebut, Langkah-langkah selanjutnya dalam melakukan
interpolasi pada data adalah membagi data-data sesuai dengan karakteristiknya untuk didekati
dengan interpolasi tertentu. Pada praktikum disini kita membagi data-data menjadi empat
bagian yaitu untuk range x dari 1 sampai 3, dilakukan interpolasi linier. Untuk range x dari 4
sampai 9, dilakukan interpolasi Lagrange dengan polinomial tingkat 2. Begitu juga dengan
data x dari 10 sampai 30 menggunakan interpolasi Lagrange polinomial tingkat 2. Kemudian,
data x dari 30 sampai 50 menggunakan interpolasi Linier. Hal tersebut untuk mendefinisikan
fungsi dekatan.
Maka setelah langkah tersebut dilakukan pemograman menggunakan dev C++ yaitu
sebagai berikut :
#include
#include
#include
#include
int main()
{
int i ;
float x1[100], x2[100], y1[100], y2[100], c0, c1, c2, L0, L1, L2;
Grafik Besaran Fisis X terhadap Y (Analitik)
0.02.04.06.08.0
10.012.014.016.018.020.0
0 5 10 15 20 25 30 35 40 45 50 55Besaran Fisis X
Be
sara
n Fi
sis
Y
-
FILE *hasil_candra;
if((hasil_candra = fopen("hasil.txt", "w")) == NULL){
printf("file tidak dapat dibuka\n");
}
//Dari hasil grafik kita menggunakan 4 range data yaitu sebagai berikut ini :
//1.grafik linier dengan Range data (1 - 3)
y1[1] = 2.5; x1[1] = 1.;
y1[3] = 2.5; x1[3] = 3.;
c0 = ((y1[1]*x1[3])-(y1[3]*x1[1]))/(x1[3]-x1[1]);
c1 = (y1[3]-y1[1])/(x1[3]-x1[1]);
for(i=1; i
-
//Grafik yang Linier dengan Range data (30 - 50)
y1[30] = 15.5; x1[30] = 30;
y1[50] = 1.5; x1[50] = 50;
c0 = ((y1[30]*x1[50])-(y1[50]*x1[30]))/(x1[50]-x1[30]);
c1 = (y1[50]-y1[30])/(x1[50]-x1[30]);
for(i=30; i
-
28 16.606060
29 16.090910
30 15.500000
31 14.800000
32 14.100000
33 13.400001
34 12.700001
35 12.000000
36 11.300000
37 10.600000
38 9.900001
39 9.200001
40 8.500000
41 7.800001
42 7.100000
43 6.400001
44 5.700001
45 5.000000
46 4.300001
47 3.600001
48 2.900001
49 2.200001
50 1.500001
Maka kembali dengan bantuan Microsoft excel kita dapat membuat grafik yaitu :
Grafik 2. Grafik data hasil pemograman
Grafik Besaran Fisis X terhadap Y (Hasil Program)
0.02.04.06.08.0
10.012.014.016.018.020.0
0 5 10 15 20 25 30 35 40 45 50 55Besaran Fisis X
Be
sa
ran
Fi
sis
Y
-
ANALISIS
Dari grafik dapat dilihat bahwa grafik data diatas yang didapat dari hasil
pemrograman mendekati atau hampir sama dengan hasil analitik. Dari praktikum ini dengan
melakukan pendekatan interpolasi pada data-data diatas, maka kita dapat memperoleh nilai
dari tiap x yang belum diketahui. Jadi kita dapat melakukan interpolasi pada data dengan
menggunakan interpolasi linier, dan Interpolasi lagrange, Namun dalam pemograman,
praktikan tidak menggunakan Interpolasi kuadratik disebabkan menghindari rumitnya
program eliminasi gauss untuk mencari konstanta c0, c1, dan c2 secara berturut-turut,
sehingga resolusi dari hasil pemograman mungkin tidak seakurat menggunakan Interpolasi
kuadratik. Namun dalam hal ini praktikan mengetahui bahwasanya kita dapat menggunakan
pendekatan dengan Interpolasi Linier dan Interpolasi Lagrange.
PERSAMAAN DIFFERENSIAL BIASA
DATA
Metode Euler merupakan metode numerik yang paling sederhana untuk menyelesaikan
persamaan differensial. Dengan persamaan rekursifnya :
dxdyyxf
xyxfyy iiii=
++=+
),(
)(1..........................(1)
Pada percobaan ini diberikan kasus sebagai berikut :
Seorang penerjun payung memiliki massa efektif 80 kg, apabila gaya tahanan udara yang
dialaminya sebanding dengan laju jatuhnya penerjun dengan koefisien gesekan udara b=0.1.
Hitunglah berapa lama waktu yang diperlukanya untuk mencapai tanah jika ia melompat dari
ketinggian 1000m.
-
PENGOLAHAN DATA
Secara analitik :
= maF
010
0
0
42
2
2
2
2
2
2
2
=+
=+
=+
=
gdtdy
tdyd
gdtdy
m
btdyd
mgdtdyb
tdyd
m
tdyd
mdtdybmg
........................................................................................................(2)
Dalam bentuk lain menjadi :
010 4 =+ gvdtdv
Untuk Menyelesaikan persoalan differensial diatas maka menggunakan metode Euler yang
secara analitik sebagai berikut :
( )yxf ,1 : dtdyf y = (3) dan 2
2
dtydf v = (4) ,dan untuk turunan keduanya yaitu
( )yxf ,2 : 22
dtydfff vy == dan
=
m
bvmgm
bff v ..(5)
Maka berdasarkan persamaan 1 dan 2 didapatkan nilai ketinggian, waktu dan kecepatan :
Misalkan kita menggunakan nilai awal dengan i=0
Ketinggian
2802.08.91000
2)(
2),,(),,(
2
1
2
1
2
1
tvtvy
t
m
bvmgtvyy
tvyxfftvyxfyy
o
iiyiiiyii
++=
++=
++=+
-
Dengan i=0,1,2,3,
Kecepatan
2802.08.9
802.0
802.08.9
2)()(
2),,(),,(
2
1
2
1
2
1
tvtvvv
t
m
bvmgm
bt
m
bvmgvv
tvyxfftvyxfvv
o
o
iiviiivii
+=
++=
++=+
Waktu
ttt ii +=+1
ttt += 01
tt
tt
=+=
1
1 0
dengan n
ttt awalakhir
=
n adalah jumalah partisi
Persamaan-persamaan diatas dapat kita masukkan kedalam sebuah program agar takhir dapat
diketahui. Programnya adalah sebagai berikut:
//Nama : Candra Mecca Sufyana
//NIM : 10204039
//Praktikum Fiskom Modul07 Persamaan diferensial biasa
#include
#include
#include
#include
int main()
{
float m,b,g,v0,v,y0,y,dt,t;
-
FILE *hasil_039;
// biar umum maka h di soal = y aja di pemograman = ketinggian ;makasih mosi-mosi.
v0=0; y0=1000; g=9.8; m=80; t=0;
hasil_039=fopen("hasil_039.csv","w");
printf("Masukkan selang waktu yang anda inginkan!");
scanf("%f", &dt);
printf("Masukkan koefisien gesekan kinetik udara!");
scanf("%f", &b);
do{
fprintf(hasil_039,"%f,%f,%f\n", t,v0,y0);
// ngitungnya disini ah...
v = v0-(g+b*v0/m)*dt;
y = y0 + (v0+v)*dt/2;
t = t + dt;
v0 = v;
y0 = y;
}while(y0>=0);
fprintf(hasil_039,"%f,%f,%f\n", t,v0,y0);
fclose(hasil_039);
}
Dari pemograman tersebut maka didapatkan nilai kecepatan, ketinggian dan waktu yang
dapat dilihat dari microsoft excel dengan dt = 0.01 dan b=0.1, tidak dicantumkan dalam
laporan karena ga tau jadi ngeheng.
Maka didapatkan grafik sebagai berikut :
-
Dari hasil grafik yang didapat dapat dianalisa bahwa hasil yang didapatkan dari pemograman sesuai dengan persoalan kasus gerak jatuh bebas yang diberikan dalam artian semakin lama waktu maka semakin rendah pula ketinggian, dan hubungan antara waktu dan kecepatan adalah linear walaupun seharusnya kecepatan bernilai positif, dalam hal ini kita tidak mengabsolutkan nilai kecepatan sehingga grafik kecepatan yang didapat negative.
Grafik waktu terhadap ketinggian
-200
0
200
400
600
800
1000
1200
0 2 4 6 8 10 12 14 16
waktu t
ketin
ggia
n y
Grafik waktu terhadap kecepatan
-160-140-120-100-80-60-40-20
00 2 4 6 8 10 12 14 16
waktu (s)
kece
pata
n
-
AKAR PERSAMAAN
Metode Newton Rapshon dan Iterasi Langkah langkah : Hal-hal yang diketahui : Benda 1 Benda 2
Massa : 1 kg
Mengalami gaya pegas dalam arah sumbu y dengan k =1 N/m
Kecepatan awal : jiv 5.01 +=
Massa : 1 kg
Mengalami gaya konstan sebesar 16 N dalam arah x
Kecepatan awal : jiv 242 +=
I. MENCARI PERSAMAAN GERAK BENDA I DAN BENDA II
Benda 1 :
022
2
2
2
2
2
=+
=
=
ydt
yd
dt
ydmky
dt
ydmF y
Solusi dari persamaan diferensial tersebut adalah : )sin( tAy =
dan
tx
tvx x
=
= ,1
Dari hukum kekekalan energi didapat :
22
2
1
2
1kymv =
Karena m=k=1, maka y=v1,x Sehingga persamaan gerak untuk benda 1 adalah
jtits )sin(2
11 +=v
Benda 2 :
1;016
16
2
2
2
2
2
2
==
=
=
mmdt
xd
dt
xdm
dt
xdmFx
-
162
2
=
dt
xd
Maka solusi persamaan tersebut adalah
ttx 48 2 += Dan
ty 2=
Sehingga persamaan gerak untuk benda 2 adalah
jtitts 2)48( 22 ++=v
Dengan mengeliminasi t didapatkan
xy
xy
212
1
2
1
)sin(2
1
2
1
++=
=
Karena benda tersebut bertemu disatu titik, berarti y1=y2, didapat
xxxxf 2)sin(2)(sin)( 2 +=
II. PROGRAM :
//MELIHAT GRAFIK DARI BENDA 1 DAN 2 dan MENENTUKAN TITIK TEMU KEDUA BENDA #include #include #include #include //MENENTUKAN TITIK int main () { float x, c, x0, y, y1, y2, dx, a, b, n, e, eps; int i; FILE *f; printf(" grafik lintasan kedua benda!\n"); printf (" Masukkan nilai x awal = "); scanf ("%f",&a); printf (" Masukkan nilai x akhir = "); scanf ("%f",&b); printf ("Silakan masukkan banyaknya titik yang akan digambar!\n"); printf (" n = "); scanf ("%f",&n); f = fopen ("plot39.xls","w"); for (i=0; i
-
printf (" x = %f y1 = %f y2 = %f \n",x,y1,y2); fprintf (f,"%f %f %f \n",x,y1,y2); }; fclose (f); //MENENTUKAN TITIK PERTEMUAN KEDUA BENDA printf ("\nGrafik dapat dilihat di file : grafik39.xls"); printf ("\n\n\n"); printf ("Saatnya menebak pertemuan kedua benda\n"); printf ("Tebak titik pertemuan kedua benda pada sumbu x!\n"); printf (" x = "); scanf ("%f",&c); e = 0.000001; do { x0 = c; c = c - (0.5*pow(sin(c),2.)+sin(c)-c)/(sin(c)*cos(c)+cos(c)-1.); eps = fabs(c-x0); } while (eps>e); y = 0.5*sin(c); printf ("\nmaka titik temu kedua benda tersebut adalah: \n"); printf (" x = %f y = %f \n\n",c,y); getch (); return 0; }
III. MENGGAMBAR GRAFIK KEDUA BENDA Untuk melihat r grafik kedua benda, dibutuhkan titik-titik yang melalui
persamaan garis diatas. Dan untuk menentukan titik-titknya digunakan komputasi dan dalam hal ini digunakan metode Newton Raphson. Dari program tersebut didapat 100 titik untuk membuat grafik. Kemudian 100 titik tersebut membentuk grafik seperti ini.
Gambar1. Grafik 2 benda
Grafik 2 benda
-0.6-0.4-0.2
00.20.40.60.8
11.2
0 1 2 3 4
x
f(x) Series1
Series2
-
IV. MENCARI TITIK TEMU KEDUA BENDA Didapatkan titik temu kedua benda menurut metode Newton Rapshon adalah x = 1.494129, y = 0498531 Sedangkan berdasarkan didapat : x = 1.48 dan y = 0.49