Anda di halaman 1dari 2

#include <iostream>

#include <fstream>
using namespace std;
// DEFINISI NILAI sigma, rho, dan beta
#define sigma 8
#define rho 28
#define beta 2.667 // beta = 8/3
// INISIALISASI FUNGSI untuk x, y, dan z
float fx(float,float,float);
float fy(float,float,float,float);
float fz(float,float,float,float);
// FUNGSI UTAMA
int main() {
float h = 0.01; // nilai step h
int i,iter = 10000; // iter = jumlah iterasi
// inisialisasi matriks untuk menampung x,y,z
float xdat[iter],ydat[iter],zdat[iter];
// inisialisasi k1,k2,k3,k4 untuk x,y,z
float kx1,kx2,kx3,kx4;
float ky1,ky2,ky3,ky4;
float kz1,kz2,kz3,kz4;
// nilai awal t,x,y,z
float t=0,x=1,y=1,z=1;
xdat[0]=x;ydat[0]=y;zdat[0]=z;
// iterasi untuk mencari nilai x,y,z
for (i=1;i<iter;i++) {
// NILAI K1
kx1 = fx(t, x, y);
ky1 = fy(t, x, y, z);
kz1 = fz(t, x, y, z);
// NILAI K2
kx2 = fx(t+(0.5*h), x+(0.5*kx1*h), y+(0.5*ky1*h));
ky2 = fy(t+(0.5*h), x+(0.5*kx1*h), y+(0.5*ky1*h), z+(0.5*kz1*h));
kz2 = fz(t+(0.5*h), x+(0.5*kx1*h), y+(0.5*ky1*h), z+(0.5*kz1*h));
// NILAI K3
kx3 = fx(t+(0.5*h), x+(0.5*kx2*h), y+(0.5*ky2*h));
ky3 = fy(t+(0.5*h), x+(0.5*kx2*h), y+(0.5*ky2*h), z+(0.5*kz2*h));
kz3 = fz(t+(0.5*h), x+(0.5*kx2*h), y+(0.5*ky2*h), z+(0.5*kz2*h));
// NILAI K4
kx4 = fx(t+h, x+(kx3*h), y+(ky3*h));
ky4 = fy(t+h, x+(kx3*h), y+(ky3*h), z+(kz3*h));
kz4 = fz(t+h, x+(kx3*h), y+(ky3*h), z+(kz3*h));
// NILAI X, Y, Z
xdat[i] = xdat[i-1] + (0.1667 * (kx1 + 2*kx2 + 2*kx3 + kx4) * h);
ydat[i] = ydat[i-1] + (0.1667 * (ky1 + 2*ky2 + 2*ky3 + ky4) * h);
zdat[i] = zdat[i-1] + (0.1667 * (kz1 + 2*kz2 + 2*kz3 + kz4) * h);
// UPDATE NILAI t, x, y, dan z
t = t + h;
x = xdat[i];
y = ydat[i];
z = zdat[i];
}
// MEMASUKKAN NILAI X,Y,Z YANG DIPEROLEH KE DALAM FILE data.txt
ofstream writefile;
writefile.open("data.txt"); // membuka file data.txt
cout << "x y z";
for (i=0;i<iter;i++) { // mulai memasukkan data x,y,z ke data.txt
writefile << xdat[i];
writefile << " ";
writefile << ydat[i];
writefile << " ";
writefile << zdat[i];
writefile << "\n";
// menampilkan data x,y,z ke commandline
cout << xdat[i] << " " << ydat[i] << " " << zdat[i] << endl;
}
writefile.close(); // menutup file data.txt
// MENAMPILKAN KETERANGAN PROGRAM SELESAI DIJALANKAN
// DAN MENAMPILKAN TAMBAHAN PERINTAH UNTUK MENAMPILKAN GRAFIK
cout << "\nPROGRAM SELESAI DIJALANKAN\n";
cout << "Data x, y, dan z ada dalam file data.txt.\n";
cout << "Untuk menampilkan grafik x-y-z, dapat digunakan aplikasi gnuplot
dengan perintah :\n\n";
cout << "splot \"data.txt\" using 1:2:3 with lines\n\n";
cout << "atau dengan menggunakan MATLAB/Octave dengan perintah : \n\n";
cout << "m = dlmread('data.txt',' ');\n";
cout << "plot3(m(:,1),m(:,2),m(:,3));\n";
}
// FUNGSI X
float fx(float t, float x, float y) {
float valfx;
valfx = sigma * (y - x);
return valfx;
}
// FUNGSI Y
float fy(float t, float x, float y, float z) {
float valfy;
valfy = x * (rho - z) - y;
return valfy;
}
// FUNGSI Z
float fz(float t, float x, float y, float z) {
float valfz;
valfz = (x * y) - (beta * z);
return valfz;
}