Laporan source code tentang differential
TUGAS REVISI
KOMPUTASI NUMERIK
PERSAMAAN DIFFERENTIAL”
“
dibimbing oleh Bapak Muhammad Jauharul Fuady
PENYUSUN :
1) Akbar Giffary 130533608240
2) Ananda Putri Syaviri 130533608243
3) Gigih Dwi Yuniardi 130533608251
S1 PTI – B 2013
UNIVERSITAS NEGERI MALANG
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA 2013 B
MARET 2015
1) Program Integral dengan C++
a) Sintaks :
//******************************************************* //Menghitung integral dengan metode Trapesium //Compiler : Visual C++ // hasil modifikasi dari: *http://www.adityarizki.net/2012/10/program-c-untuk-
menghitung-akar-persamaan-dengan-metode-newton-raphson/
//*********persamaan : 10+6x^5**************************************** #include <iostream.h> #include <math.h> #include <iomanip.h> int main() { double eps=1e-5; double trap[100]; double x,x1,x2,delt,delx,pita,fx; int i; cout << " Batas Atas : "; cin >>x2; cout << " Batas Bawah : "; cin >>x1; cout <<endl<<endl; i=0; delt=100; //delt = selisih antara 2 hasil integral(iterasi) yg berurutan while (fabs(delt)>eps) //iterasi selama delt lebih besar dari eps { i=i+1; trap[i]=0; x=x1; pita=pow(2,i-1); //2^i-1 (pow = pangkat) delx=(x2-x1)/pita; //pita= jumlah pita while (x<x2) //delx=lebar masing-masing pita; { //*************************** fx=10+6*pow(x,5); //bentuk pers. 10+6x^5 //*************************** //fx=fabs(x); //contoh : pers. garis y=x //fx=1/x ; //contoh : pers. flux magnet pada kawat berarus if (x==x1 || x==x2) trap[i]=trap[i]+fx; else trap[i]=trap[i]+2*fx; x=x+delx; } trap[i]=trap[i]*delx/2; if (i==1) { cout<<setw(10); //10 lokasi digit cout<<setiosflags(ios::left); //rata kiri cout<< pita; cout<<setw(15); cout<<setiosflags(ios::left); cout<< trap[i]; else { delt=trap[i]-trap[i-1]; cout<<setw(10); cout<<setiosflags(ios::left); cout<<pita; cout<<setw(15); cout<<setiosflags(ios::left); cout<<trap[i]; cout<<setw(15); cout<<setiosflags(ios::left); cout<<delt; } cout<<endl; } cout <<endl<<endl; cout<<"Harga Integrasi : "<<trap[i]; cout <<endl<<endl; }
b) Screenshoot :
2) Program persamaan differential trigonometri dengan C++
a) Sintaks :
/*
- Program C++ untuk Menghitung Akar Persamaan dengan Metode Newton-Raphson
- program untuk mencari solusi persamaan
- dari fungsi 8x^4 + 11x^3 + 7x + 3 = cos(x)
- f(x) = 8x^4 + 11x^3 + 7x + 3 - cos(x)
- f(x)' = 32x^3 + 33x^2 + 7 + sin(x)
* hasil modifikasi dari: *http://www.adityarizki.net/2012/10/program-c-untuk-
menghitung-akar-persamaan-dengan-metode-newton-raphson/- / #include <stdio.h>
#define PHI 3.141592654 int main() { // deklarasi variabel int i,j, loop; float init, x, eps, x1, fxi; printf("Mencari Solusi Persamaan f(x) = 8x^4 + 11x^3 + 7x + 3 - cos(x)\n"); printf("Dari persamaan f(x), maka diperoleh f(x)' = 32x^3 + 33x^2 + 7 + sin(x)\n"); printf("====================================================\n"); // meminta input untuk memasukkan nilai awal/nilai tebakan printf("Masukkan bilangan inisiasi : "); scanf("%f", &init); x = init; // meminta input untuk memasukkan banyak pengulangan printf("Masukkan banyak pengulangan : "); scanf("%d", &loop);
printf ("============================================================\n");
printf ("iterasi ke-i | nilai xi | fxi | error semu ((xi- xi+1)/xi+1)\n");printf ("============================================================\n");
// looping untuk menghitung nilai x sesuai dengan nilai tebakan awal dan
banyak pengulangan yang diberikan for(i = 0; i < loop ; i++) { x = x - ((8*x*x*x*x + 11*x*x*x + 7*x + 3 - cos(x * PHI / 180)) / (32*x*x*x + 33*x*x + 7 + sin(x * PHI / 180))); fxi = 32*x*x*x + 33*x*x - 7 + sin(x * PHI / 180);// looping untuk menghitung nilai x selanjutnya, untuk membantu mencari
nilai error semu for(j=i+1; j<loop+1;j++) { x1 = x - ((8*x*x*x*x + 11*x*x*x + 7*x + 3 - cos(x * PHI / 180)) / (32*x*x*x + 33*x*x + 7 + sin(x * PHI / 180))); } // untuk menghitung error semu eps=fabs((x1-x)/x); // menampilkan hasil perhitungan printf("%d | %f | %f | %f\n", i, x,fxi, eps); } printf("==============================================================\n");
printf("Solusi persamaan 8x^4 + 11x^3 + 7x + 3 = cos(x) adalah x = %f\n",
x); }b) Screnshoot :
3) Program persamaan differential pangkat dengan C++
a) Sintaks :
// ********************************************************************** //f(x) = 3x4 - 11x3 +8x2 - 7 // Menghitung akar dari fungsi dengan Newton Rapshon orde-2 // iterasi dibatasi oleh selisih antar 2 nilai yg berurutan // Compiler : Visual C++ // hasil modifikasi dari: *http://www.adityarizki.net/2012/10/program-c-untuk-
menghitung-akar-persamaan-dengan-metode-newton-raphson/
// ********************************************************************** #include <iostream.h> #include <math.h> #include <iomanip.h> int main() { double eps=1e-5; double y[100]; double x,fx,d1,d2,pen,selisih; int n; cout <<endl; cout << " f(x) = 3x4 - 11x3 +8x2 - 7 " ; cout <<endl; cout << "Titik awal xo : "; cin >> y[0]; cout <<endl<<endl; n=0; selisih = 10; while (selisih >= eps) //iterasi sampai selisih 2 nilai berurutan <= eps
{ n=n+1; x=y[n-1]; //bentuk berikut dpt berubah sesuai bentuk fungsinya //***************************** 3x4 - 11x3 +8x2 - 7:: 12x3 - 33x2 +16x :: 36x2 - 66x +16 fx=3*(x*x*x*x)-11*(x*x*x)+8*x*x-7; //Fungsi yg dicari akarnya d1=12*(x*x*x)-33*x*x+ 16*x; //Turunan pertama dari fungsi d2=36*x*x-66*x +16; //Turunan kedua dari fungsi //***************************** pen=d1-d2*fx/(2*d1); y[n]=x-fx/pen; //pers. Iterasi Newton-Rapshon orde-2 cout.width(10); cout << setiosflags(ios::left); cout << n; //tampilkan iterasi ke-n cout.width(15); cout << setiosflags(ios::left); cout << y[n]; //tampilkan nilai iterasi ke-n selisih=fabs(y[n]-x); //selisih 2 nilai iterasi yg berurutan cout.width(15); cout << setiosflags(ios::left); cout << selisih; cout << endl<<endl; } cout << "Jumlah iterasi = "<<n <<endl; cout << "Akar = " << y[n] <<endl; }