BAB I
TUJUAN DAN DASAR TEORI
1.1 Tujuan
- Menguasai metode least square line yang digunakan dalam komputasi numerik
- Memahami algoritma pemrograman untuk merancang program metode least square line yang ada dalam komputasi numerik
- Menerapkan algoritma untuk perancangan dan pembuatan program metode least square line.
1.2 Dasar Teori
Metode Least – Squares Line memperkirakan titik-titik (x1,y1),(x2,y2) ... (xn,Yn) mempunyai persamaan:
Y = a + bx
Kemudian kita menggunakan metode dari Least Squares.
Metode ini mencari nilai dari a dan b sebagai:
mempunyai nilai minimum berdasarkan pada grafik di bawah.
BAB II
ALAT DAN BAHAN
II.1 Alat dan Bahan yang perlu dipersiapkan:
1) Buku Teks
2) Unit Pemroses
3) Aplikasi Pembuatan Program
a. Notepad / Notepad++
b. Aplikasi IDE C++ (Bloodsheed Dev C++)
c. Mathematica
d. Matlab
e. IDE Visual Studio 2010
f. Netbeans atau Eclipse
ALAT DAN BAHAN
II.1 Alat dan Bahan yang perlu dipersiapkan:
1) Buku Teks
2) Unit Pemroses
3) Aplikasi Pembuatan Program
a. Notepad / Notepad++
b. Aplikasi IDE C++ (Bloodsheed Dev C++)
c. Mathematica
d. Matlab
e. IDE Visual Studio 2010
f. Netbeans atau Eclipse
BAB III
PROSEDUR PERCOBAAN
III.1 Prosedur Umum
- Memahami formulasi matematis Metode Least Square Line
- Menulis Algoritma penyelesaian masalah (dengan menggunakan teks dan/atau flow chart)
- Menulis pseudocode algoritma
- Menguji pseducode algoritma penyelesaian masalah (misalnya dengan menggunakan prosedur Desk Check)
- Melakukan kodifikasi
- Menguji Program (misalnya dengan menggunakan prosedur Joel Test dan/atau tools seperti NUnit, NCover, NCoverExplorer dan TestDriven.NET, atau menggunakan prosedur pengujian langsung)
- Membuat dokumentasi Praktikum (misalnya dengan menggunakan Version Control Subversion, Mercurial, Gita tau Veracity)
III.2 Prosedur Khusus
III.2.1 Contoh menulis program menggunakan IDE Bloodshed Dev C++
- Untuk menulis program baru caranya tekan CTRL+N atau pilih NEW lalu klik Source File terlebih dahulu sebelum mengetik program.
- Ketikkan program anda.
- Simpan program dengan menekan tombol CTRL+F12, pilih Save kemudian pada kotak dialog yang muncul ketikkan nama program pada tempat yang tersedia misalnya Contoh1.cpp, kemudian klik Save atau tekan <ENTER>
- Jalankan program dengan terlebih dahulu melakukan kompilasi. Hal ini dapat dilakukan sekaligus dengan mengklik Compile & Run (F9) pada menu bar ataulangsung menekan F9 pada keyboard.
- Bila kompilasi tidak berhasil dan memunculkan pesan error, periksa kembali kode program yang ada kemudian perbaiki kesalahan dan lakukan kembali langkah 3 dan 4.
- Untuk membuka arsip yang ada, gunakan OPEN atau tekan CTRL+O pada keyboard.
III.2.2 Contoh Program
#include <iostream>
#include <cmath>
#include<math.h>
using namespace std;
void gauss(int N, // bilangan yg tak diketahui
float A [20] [21], // koefisien constants
float result[20],
bool& err)
// N linear
// metode Gaussian elimination
// baris N dan N+1 kolom A
{
int indx[20];
float scale[20];
float maxRatio;
int maxIndx;
int tmpIndx;
float ratio;
float sum;
for (int i = 0; i < N; i++) indx[i] = i; // inisiasi index array
// skala faktor
for (int row = 0; row < N; row++)
{
scale[row] = abs(A[row][0]);
for (int col = 1; col < N; col++)
{
if (abs(A[row][col]) > scale[row]) scale[row] = abs(A[row][col]);
}
}
// lanjutkan elimination
for (int k = 0; k < N; k++)
{
// index baris pivot
maxRatio = abs(A[indx[k]] [k])/scale[indx[k]];
maxIndx = k;
for (int i = k+1; i < N; i++)
{
if (abs(A[indx[i]] [k])/scale[indx[i]] > maxRatio)
{
maxRatio = abs(A[indx[i]] [k])/scale[indx[i]];
maxIndx = i;
}
}
if (maxRatio == 0) // no pivot available
{
err = true;
return;
}
tmpIndx =indx[k]; indx[k]=indx[maxIndx]; indx[maxIndx] = tmpIndx;
// gunakan baris pivot
for (int i = k+1; i < N; i++)
{
ratio = -A[indx[i]] [k]/A[indx[k]] [k];
for (int col = k; col <= N; col++)
{
A[indx[i]] [col] += ratio*A[indx[k]] [col];
}
}
}
// kembali
for (int k = N-1; k >= 0; k--)
{
sum = 0;
for (int col = k+1; col < N; col++)
{
sum += A[indx[k]] [col] * A[indx[col]] [N];
}
A[indx[k]] [N] = (A[indx[k]] [N] - sum)/A[indx[k]] [k];
}
/*
cout << endl;
for (int r=0; r<N; r++)
{
cout << indx[r];
for (int c=0; c<=N; c++) cout<<" " << A[r][c];
cout << endl;
}
*/
for (int k = 0; k < N; k++) result[k] = A[indx[k]] [N];
}
int main()
{
float A[20][21];
float X[20],C[20],D[20];
float C[8]={-1,0,1,2,3,4,5,6};
float D[8]={10,9,7,5,4,3,0,-1};
float t;
float a,b,c,f;
bool err;
a=0;
b=0;
c=0;
f=0;
for(int l=0; l<=3;l++){
a=a+C[l];
b=b+D[l];
c=c+pow(C[l],2);
f=f+((C[l])*(D[l]));
}
A[0][0] = c;
A[0][1] = a;
A[0][2] = f;
A[1][0] = a;
A[1][1] = t;
A[1][2] = b;
gauss(2, A, X, err);
cout<<endl;
cout<<X[0]<<"X + "<<X[1]<<endl;
std::cin.get();
system("pause");
return 0;
}
Tidak ada komentar:
Posting Komentar