loading...
loading...

Thursday, June 9, 2016

Contoh Coding METODE NEWTON RAPHSON C++


PENYELESAIAN PERSAMAAN NON LINEAR SERENTAK
Persamaan Non Linear serentak adalah dua buah persamaan berordo(pangkat) lebih dari satu. Masing­ masing persamaan memiliki kaitan sehingga penyelesaian persamaan satu dapat digunakan sebagai  penyelesaian dalam persamaan yang lainnya. Salah satu metode yang bisa digunakan untuk  menyelesaikan persamaan non linear serentak adalah Metode Newton Raphson.

METODE NEWTON RAPHSON Metode Newton Raphson ini memiliki proses iterasi yang cepat. Namun hanya terbatas pada persamaan  berordo dua atau tiga. Untuk ordo yang lebih besar, persoalan akan menjadi kompleks dikarenakan ada  penghitungan determinan matriks ordo tinggi.
Algoritma Newton Raphson 1. Menyelesaikan 2 persamaan Non Linear serentak menjadi : Fx1,x2=0  dan  Gx1,x2=0 2. Mencari nilai fungsi  Fx1,x2 dan  Gx1,x2=0 dan turunan fungsi tersebut terhadap  masing­masing variabelnya, yaitu   dF/dx1,dF/dx2,dG/dx1,dG/dx2 pada titik awal  yang ditentukan yaitu  x1 0 dan  x2 0 . 3. Mencari nilai   r1 dan   s1 ( r1 dan   s1 adalah deviasi dari nilai   x1 dan   x2 ),  dengan aturan sbb :
r1= ∣−Fx1,x2 −Gx1,x2
dF/dx2 dG/dx2∣
∣dF/dx1 dG/dx1
dF/dx2 dG/dx2∣
       s1=
∣dF/dx1 dG/dx1
−Fx1,x2 −Gx1,x2∣
∣dF/dx1 dG/dx1
dF/dx2 dG/dx2∣
kemudian dengan pendekatan didapatkan
x1 1=x1 0r1 x2 1=x2 0s1 4. melakukan operasi iterasi dengan mengulang langkah kedua sampai didapatkan nilai r dan s nol  atau mendekati nol/error.
Contoh : Carilah penyelesaian dari persamaan non linear serentak sbb : x2x1=12.6−x1e−x2 4lnx2x1 20.3=3x1x2
Penyelesaiannya adalah : Langkah pertama, menyusun persamaan di atas menjadi bentuk Fx1,x2=0 Gx1,x2=0 yaitu :  Fx1,x2=x1e−x2−x2x1−12.6=0 Gx1,x2=4lnx2x1 20.3−3x1x2 Langkah kedua, Mencari nilai fungsi dan turunannya pada  x1 0 dan  x2 0 misalkan ditentukan nilai  awalnya sebesar  x1 0=4 dan  x2 0=3 akan didapatkan : Fx1,x2=x1e−x2−x2 x1−12.6 Fx1,x2=4exp−3−34−12.6 Fx1,x2=−0.799148273 dan Gx1,x2=4lnx2x1 20.3−3x1x2

Gx1,x2=4ln3420.4−343 Gx1,x2=−0.090160536 nilai turunannya : dF/dx1=−x2e−x2=−3exp−3=2.9590212932 dF/dx2=−x1−x1e−x2=−4−4exp−3=−4.199148273 dG/dx1=2x1−3x2=24−33=2.803847577 dG/dx2=4/x2−3x1/2x2=4/3−34/23=−2.130768282 Langkah ketiga, mencari nilai  r1 dan  s1
r1= ∣−0.799148273 0.090160536
−4.199148273 −2.130768282∣
∣−2.950212932 2.803847577
−4.199148273 −2.130768282∣ =0.115249096
s1=
∣−2.950212932 2.803847577
−0.799148273 0.090160536∣
∣−2.950212932 2.803847577
−4.1994148273 −2.130768282∣
=0.109340978
sehingga  x1 1=x1 0r1=40.115249096=4.115249096 x2 1=x2 0s1=30.109340978=3.109340978 Langkah keempat, mengulang langkah kedua dan ketiga hingga didapatkan nilai  r1 dan  s1 sama  dengan nol. Hasil akhirnya adalah  x1=4.1131531474 dan  x2=3.1080320798

untuk koding C++
dapat disimak dibawah ini

#include <cstdlib>
#include <iostream>
#include <math.h>

using namespace std;

double f(double x) //for the function x^4 - 10
{
       return (x*x*x*x - x - 10);
}

double ff(double x) //Differentiating function f(x)
{
    return (4*x*x*x - 1);
}

void NR(double aerr, int maxitr, double a)
{
     int i = 0;
     double b, prev;
     while (i <= maxitr)
     {
           b = a - (f(a))/ff(a);
           cout << "Iter " << i << ": x = " << b << endl;
           i++;
           if (fabs(b - a) < aerr)
              break;
           a = b;
     }
    
}

int main()
{
    double aerr, a, b;
    int maxitr;
    cout << "Enter aerr, maxitr, a." << endl;
    cin >> aerr;
    cin >> maxitr;
    cin >> a;
    NR(aerr, maxitr, a);
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

terima kasih karena sudah membaca posting saya
jangan lupa like, share dan commend yah
terima kasih

www.ayeey.com www.resepkuekeringku.com www.desainrumahnya.com www.yayasanbabysitterku.com www.luvne.com www.cicicookies.com www.tipscantiknya.com www.mbepp.com www.kumpulanrumusnya.com www.trikcantik.net

0 comments:

Post a Comment