Algoritma Persamaan Keadaan Gas Nyata Soave

22
1. ALGORITMA PENYELESAIAN PERSAMAAN KEADAAN GAS NYATA SOAVE-REDLICH KWONG MENGGUNAKAN METODE NEWTON-RAPHSON #include "iostream" #include "math.h" using std::cout; using std::cin; int main() { int n,i; double V[1000]; double P,T,fungsi,turunan,galat,alfa,delta,toleransi,R,Pc,Tc,omega,a,b,Tr; //judul cout <<"******************************************************************************* \n"; cout <<"\n Penyelesaian Persamaan Keadaan Soave-Redlich Kwong\n"; cout <<"\n Menggunakan Metode Newton-Raphson Pada Microsoft Visual Studio 2010 C++\n\n"; cout <<"******************************************************************************* \n"; cout <<"\n\nBentuk umum Persamaan Keadaan Gas Nyata : Soave-Redlich Kwong \n\n"; cout <<"P = RT/(V-b) - a*alfa/(V*(V+b))\n\n"; cout <<"\nPersamaan Keadaan Soave-Redlich Kwong dalam fungsi V\n"; cout <<"\nf(V) = P*V^3 + (P*b-P*b-R*T)*V^2 - (P*b*b+b*R*T-a*alfa)*V - a*alfa*b = 0\n\n"; cout <<"\nPersamaan Keadaan Soave-Redlich Kwong dalam fungsi turunan V\n"; cout <<"\nf'(V) = 3*P*V^2 + 2*(P*b-P*b-R*T)*V - (P*b*b+b*R*T-a*alfa)\n\ n"; cout <<"\ n*******************************************************************************\ n\n"; //looping input konstanta cout << "Masukkan nilai P (bar) : "; cin >> P; cout << "Masukkan nilai T (K) : "; cin >> T; cout << "Masukkan nilai R (cm^3 bar mol^(-1) K^(-1)) : "; cin >> R; cout << "Masukkan nilai Pc (bar) : "; cin >> Pc; cout << "Masukkan nilai Tc (K) : ";

description

asdf

Transcript of Algoritma Persamaan Keadaan Gas Nyata Soave

Page 1: Algoritma Persamaan Keadaan Gas Nyata Soave

1. ALGORITMA PENYELESAIAN PERSAMAAN KEADAAN GAS NYATA SOAVE-REDLICH KWONG MENGGUNAKAN METODE NEWTON-RAPHSON

#include "iostream"#include "math.h"

using std::cout;using std::cin;

int main(){

int n,i;double V[1000];double P,T,fungsi,turunan,galat,alfa,delta,toleransi,R,Pc,Tc,omega,a,b,Tr;

//judulcout

<<"*******************************************************************************\n";

cout <<"\n Penyelesaian Persamaan Keadaan Soave-Redlich Kwong\n";cout <<"\n Menggunakan Metode Newton-Raphson Pada Microsoft Visual

Studio 2010 C++\n\n";cout

<<"*******************************************************************************\n";

cout <<"\n\nBentuk umum Persamaan Keadaan Gas Nyata : Soave-Redlich Kwong \n\n";

cout <<"P = RT/(V-b) - a*alfa/(V*(V+b))\n\n";cout <<"\nPersamaan Keadaan Soave-Redlich Kwong dalam fungsi V\n";cout <<"\nf(V) = P*V^3 + (P*b-P*b-R*T)*V^2 - (P*b*b+b*R*T-a*alfa)*V -

a*alfa*b = 0\n\n";cout <<"\nPersamaan Keadaan Soave-Redlich Kwong dalam fungsi turunan V\n";cout <<"\nf'(V) = 3*P*V^2 + 2*(P*b-P*b-R*T)*V - (P*b*b+b*R*T-a*alfa)\n\

n";cout <<"\

n*******************************************************************************\n\n";

//looping input konstantacout << "Masukkan nilai P (bar) : ";cin >> P;cout << "Masukkan nilai T (K) : ";cin >> T;cout << "Masukkan nilai R (cm^3 bar mol^(-1) K^(-1)) : ";cin >> R;cout << "Masukkan nilai Pc (bar) : ";cin >> Pc;cout << "Masukkan nilai Tc (K) : ";cin >> Tc;cout << "Masukkan nilai omega : ";cin >> omega;

a=0.42747*pow(R,2)*pow(Tc,2)/Pc;b=0.08664*R*Tc/Pc;Tr=T/Tc;

Page 2: Algoritma Persamaan Keadaan Gas Nyata Soave

alfa=pow(1+(0.48+1.574*omega-0.176*pow(omega,2))*(1-pow(Tr,0.5)),2);i=0;

//looping mencari Volum Molar toleransi=0.0000001;galat=0.1;i=1;V[i]=R*T/P;

while (galat>=toleransi){

// mencari nilai fungsi turunanfungsi=P*pow(V[i],3)+(P*b-P*b-R*T)*pow(V[i],2)-(P*b*b+b*R*T-

a*alfa)*V[i]-a*alfa*b ;turunan=3*P*pow(V[i],2)+2*(P*b-P*b-R*T)*V[i]-(P*b*b+b*R*T-a*alfa);V[i+1]=V[i]-fungsi/turunan;delta=V[i+1]-V[i];galat=abs(delta);V[i]=V[i+1];i=i+1;

};

//hasil iterasicout <<"\nfungsi = "<<fungsi<<"\n \n";cout <<"\nturunan = "<<turunan<<"\n \n";cout <<"\ndelta = "<<delta<<"\n \n";cout <<"\ngalat = "<<galat<<"\n \n";cout <<"\nVolum Molar = "<<V[i]<<"\n";char wait;cin >> wait;return 0;

}

2. ALGORITMA PERHITUNGAN PERKALIAN MATRIX

#include "iostream"#include "conio.h"

using std::cout;using std::cin;using std::endl;

int main(){

int m,n,p,i,j,k;double A[100][100],B[100][100],C[100][100];double sumC;

// JUDULcout << "PERKALIAN MATRIK A dan B";cout << "Ukuran Matrik A mxn dan Matrik B nxp \n \n";

//INPUT DATA MATRIK A dan Bcout <<"Masukan Jumlah Baris Matrik A = ";cin >>m;

Page 3: Algoritma Persamaan Keadaan Gas Nyata Soave

cout <<"Masukan Jumlah Kolom Matrik A = ";cin >>n;cout <<"Masukan Jumlah Kolom Matrik B = ";cin >>p;

i=1;while (i<=m)

{j=1;while (j<=n)

{cout <<"Masukkan nilai A["<<i<<"]["<<j<<"] = ";cin >> A[i][j];j=j++;};

i=i++;};

i=1;while (i<=n)

{j=1;while (j<=p)

{cout <<"Masukkan nilai B["<<i<<"]["<<j<<"] = ";cin >> B[i][j];j=j++;};

i=i++;};

// PERHITUNGAN KALI MATRIKi=1;while (i<=m)

{sumC=0;k=1;while (k<=p){

j=1;while (j<=n)

{sumC=A[i][j]*B[j][k]+sumC;j=j++;};

C[i][k]=sumC;k=k++;

};i=i++;};

//OUTPUT cout <<"Matriks A" << endl;i=1;while (i<=m)

Page 4: Algoritma Persamaan Keadaan Gas Nyata Soave

{j=1;while (j<=n){

cout <<A[i][j]<<" ";j=j++;

};cout <<endl;i=i++;

};

cout <<"Matriks B" << endl;i=1;while (i<=n){

j=1;while (j<=p){

cout <<B[i][j]<<" ";j=j++;

};cout <<endl;i=i++;

};

cout <<"Hasil kali adalah Matrik C" << endl;i=1;while (i<=n){

j=1;while (j<=p){

cout <<C[i][j]<<" ";j=j++;

};cout <<endl;i=i++;

};

char wait;cin >> wait;return 0;

}

3. ALGORITMA PENYELESAIAN NATURAL CUBIC SPLINE

#include "iostream"

using std::cin;using std::cout;

int main(){

int n,i;double f[1000],t[1000],p[1000],q[1000],r[1000],s[1000],h[1000];

Page 5: Algoritma Persamaan Keadaan Gas Nyata Soave

double a[1000],b[1000],c[1000],d[1000],x[1000],y[1000],alfa[1000],beta[1000];

cout <<"NATURAL CUBIC SPLINE \n \n";cout <<"aturan persamaan output yang digunakan \n";cout <<"g(t[i]) = p + q*(t[i+1]-t[i]) + r*(t[i+1]-t[i])^2 + s*(t[i+1]-

t[i])^3 \n \n";

cout <<"-------------------------------------------------------------------------------- \n \n";

cout <<"masukan jumlah data = ";cin >> n;

//input datai=1;while (i<=n){

cout <<"masukan f["<<i<<"] =";cin >> f[i];cout <<"masukan t["<<i<<"] =";cin >> t[i];cout << "\n \n";i=i++;

};

//PROSEDURE CUBIC SPLINEi=1;while (i<=n){

p[i]=f[i];h[i]=t[i-1]-t[i];i=i++;

};a[1]=1;b[n+1]=0;c[n+1]=0;

i=2;while (i<=n){

a[i]=2*(h[i-1]+h[i]);b[i]=h[i-1];c[i]=h[i];i=i++;

};

d[1]=0;d[n]=0;

i=2;while (i<=n){

d[i]=3*(p[i+1]-p[i])/h[i] - 3*(p[i]-p[i-1])/h[i-1];i=i++;

};

Page 6: Algoritma Persamaan Keadaan Gas Nyata Soave

// PROSEDURE THOMASalfa[1]=a[1];i=2;

while (i<=n){

beta[i]=b[i]/alfa[i-1];alfa[i]=a[i]-beta[i]*c[i-1];i=i+1;

};

y[1]=d[1];i=2;

while (i<=n){

y[i]=d[i]-beta[i]*y[i-1];i=i+1;

};

x[n]=y[n]/alfa[n-1];i=n-1;

while (i>=1){

x[i]=(y[i]-c[i]*x[i+1])/alfa[i];i=i-1;

};

//PROSEDURE CUBIC SPLINE LANJUTAN

i=1;while (i<=n){

r[i]=x[i];i=i++;

};

i=1;while (i<=n){

q[i]=(p[i+1]-p[i])/h[i] - h[i]*(2*r[i]+r[i+1])/3;s[i]=(r[i+1]-r[i])/(3*h[i]);i=i++;

};

//OUTPUT DATAi=1;while (i<=n){

cout << " untuk t["<<t[i-1]<<"] ke t["<<t[i]<<"] maka p = "<<p[i]<<" q = "<<q[i]<<" r = "<<r[i]<<" s = "<<s[i]<<" \n";

i=i++;};

Page 7: Algoritma Persamaan Keadaan Gas Nyata Soave

char wait;cin >> wait;return 0;

}

4. ALGORITMA PERHITUNGAN RATA-RATA

#include "iostream"

using std::cout;using std::cin;

int main(){

char wait;double d[100];int i,n;double rata2;cout <<"Masukan jumlah n data = ";cin >> n;i=1;do{

cout <<"masukan data ke"<< i <<" = \n";cin >> d[i];i=i++;

}while (i<=n);i=1;double sum;sum=0;do{

sum=sum+d[i];i=i++;

}while (i<=n);rata2=sum/n;cout <<"hasil rata-rata adalah \n" <<rata2<<" ";cin >> wait;return 0;

}

5. ALGORITMA PENYELESAIAN METODE RUNGE-KUTTA ORDE 3

#include "iostream"#include "conio.h"#include "math.h"#include "string"

using std::cout;using std::cin;

int main()

Page 8: Algoritma Persamaan Keadaan Gas Nyata Soave

{int i,n;double a,b,p,q,r,s,alfa,h,d,c,k1,k2,k3,fungsi;double y[1000],t[1000];cout <<"PROGRAM PENYELESAIAN DEFERENSIAL \n";cout <<"METODE RUNGE KUTTA 3 \n \n";cout <<"Persamaan yang digunakan adalah dy/dt = p*y + q*t^s + r \n";cout <<"a, b, dan r merupakan konstanta \n \n";

//INPUTcout <<"masukan nilai p = ";cin >> p;cout <<"masukan nilai q = ";cin >> q;cout <<"masukan nilai r = ";cin >> r;cout <<"masukan nilai s = ";cin >> s;

cout <<"masukan batas a = ";cin >> a;cout <<"masukan batas b = ";cin >> b;cout <<"masukan jumlah partisi n = ";cin >> n;cout <<"nilai awal y = ";cin >> alfa;

//RK3h=(b-a)/n;y[1]=alfa;i=1;while(i<=n+1){

t[i]=a+(i-1)*h;

d=y[i];c=t[i];fungsi=p*d + q*pow(c,s) + r;k1=h*fungsi;

d=y[i]+k1*3/4;c=t[i]+h/2;fungsi=p*d + q*pow(c,s) + r;k2=h*fungsi;

d=y[i]-k1+2*k2;c=t[i]+h;fungsi=p*d + q*pow(c,s) + r;k3=h*fungsi;

y[i+1]=y[i]+(k1+4*k2+k3)/6;

i=i++;};

//OUTPUTi=1;

Page 9: Algoritma Persamaan Keadaan Gas Nyata Soave

while (i<=n){

cout <<"y = "<<y[i]<<" pada saat x = "<<t[i]<< " \n";i=i++;

};

char wait;cin >> wait;return 0;

}

6. ALGORITMA PENYELESAIAN METODE RUNGE-KUTTA ORDE 4

#include "iostream"#include "math.h"

using std::cout;using std::cin;

int main(){

int i,n;double a,b,p,q,r,s,alfa,h,d,c,k1,k2,k3,k4,fungsi;double y[1000],t[1000];

cout <<"PROGRAM PENYELESAIAN DEFERENSIAL \n";cout <<"METODE RUNGE KUTTA 4 \n \n";cout <<"Persamaan yang digunakan adalah dy/dt = p*y + q*t^s + r \n";cout <<"a, b, dan r merupakan konstanta \n \n";

//INPUTcout <<"masukan nilai p = ";cin >> p;cout <<"masukan nilai q = ";cin >> q;cout <<"masukan nilai r = ";cin >> r;cout <<"masukan nilai s = ";cin >> s;

cout <<"masukan batas a = ";cin >> a;cout <<"masukan batas b = ";cin >> b;cout <<"masukan jumlah partisi n = ";cin >> n;cout <<"nilai awal y = ";cin >> alfa;

//RK4h=(b-a)/n;y[1]=alfa;t[1]=a;i=2;while(i<=n+1){

Page 10: Algoritma Persamaan Keadaan Gas Nyata Soave

t[i-1]=a+(i-2)*h;

d=y[i-1];c=t[i-1];fungsi=p*d + q*pow(c,s) + r;k1=h*fungsi;

d=y[i-1]+k1/2;c=t[i-1]+h/2;fungsi=p*d + q*pow(c,s) + r;k2=h*fungsi;

d=y[i-1]+k2/2;c=t[i-1]+h/2;fungsi=p*d + q*pow(c,s) + r;k3=h*fungsi;

d=y[i-1]+k3;c=t[i-1]+h;fungsi=p*d + q*pow(c,s) + r;k4=h*fungsi;

y[i]=y[i-1]+(k1+2*k2+2*k3+k4)/6;

i=i++;};

//OUTPUTi=1;while (i<=n){

cout <<"y = "<<y[i]<<" pada saat x = "<<t[i]<< " \n";i=i++;

};

char wait;cin >> wait;return 0;

}

7. ALGORITMA PENYELESAIAN METODE INTEGRASI SIMPSON

#include "iostream"#include "math.h"

using std::cin;using std::cout;

int main(){

int n,i,m;double

p,q,b,h,fungsi1,fungsi2,fungsi3,sigma1,sigma2,sigma3,Integrasi,fungsip,fungsiq;double a[10000],x[10000];

cout <<"PROGRAM PENYELESAIAN INTEGRAL POLINOMIAL PANGKAT 5\n";

Page 11: Algoritma Persamaan Keadaan Gas Nyata Soave

cout <<"METODE SIMPSON38 \n \n";cout <<"Persamaan yang digunakan adalah \n \n";cout <<"a1*x^5 + a2*x^4 + a3*x^3 + a4*x^2 + a5*x + a6 \n \n";cout <<"a merupakan konstanta \n \n";cout <<"dengan integrasi p sampai q dan jumlah partisi adalah m \n \n";

n=5;

cout <<"masukan jumlah partisi m = ";cin >> m;

//input datai=1;while (i<=n){

cout <<"masukan konstanta a["<<i<<"] = ";cin >> a[i];i=i++;

};cout <<"masukan konstanta a["<<n+1<<"] = ";cin >> a[n+1];cout <<"masukan batas p =";cin >> p;cout <<"masukan batas q =";cin >> q;

//perhitungan fungsi

h = (q - p)/m;x[1] = p;x[n+1] = q;sigma1 = 0;sigma2 = 0;sigma3 = 0;

i = 4;while (i <= m){

x[i] = p + (i-1)*h;

fungsi1=a[1]*pow(x[i],5)+a[2]*pow(x[i],4)+a[3]*pow(x[i],3)+a[4]*pow(x[i],2)+a[5]*pow(x[i],1)+a[6];

sigma1 =sigma1 +fungsi1;i = i + 3;

};

i = 2;while (i <= m-1){

x[i] = p + (i-1)*h;

fungsi2=a[1]*pow(x[i],5)+a[2]*pow(x[i],4)+a[3]*pow(x[i],3)+a[4]*pow(x[i],2)+a[5]*pow(x[i],1)+a[6];

sigma2 =sigma2 + fungsi2;i = i + 3;

Page 12: Algoritma Persamaan Keadaan Gas Nyata Soave

};

i = 3;while (i <= m-2){

x[i] = p + (i-1)*h;

fungsi3=a[1]*pow(x[i],5)+a[2]*pow(x[i],4)+a[3]*pow(x[i],3)+a[4]*pow(x[i],2)+a[5]*pow(x[i],1)+a[6];

sigma3 =sigma3 + fungsi3;i = i + 3;

};

fungsip=a[1]*pow(p,5)+a[2]*pow(p,4)+a[3]*pow(p,3)+a[4]*pow(p,2)+a[5]*pow(p,1)+a[6];

fungsiq=a[1]*pow(q,5)+a[2]*pow(q,4)+a[3]*pow(q,3)+a[4]*pow(q,2)+a[5]*pow(q,1)+a[6];

Integrasi = 3*h*(fungsip + 2*sigma1 + 3*sigma2 + 3*sigma3 + fungsiq)/8;

cout <<"Hasil integrasi = "<<Integrasi<<" ";

char wait;cin >> wait;return 0;

}

8. ALGORITMA PENYELESAIAN METODE THOMAS

#include "iostream"

using std::cout;using std::cin;

int main(){

int i,j,n;double

a[1000],b[1000],c[1000],alfa[1000],beta[1000],d[1000],y[1000],x[1000];

cout <<"Thomas \n \n";

cout <<"masukan jumlah data vektor = ";cin >> n;

//input ai=1;while (i<=n){

cout <<"Masukan a["<<i<<"] = ";cin >> a[i];i=i+1;

Page 13: Algoritma Persamaan Keadaan Gas Nyata Soave

};cout <<"\n";

//input bi=1;while (i<=n){

cout <<"Masukan b["<<i<<"] = ";cin >> b[i];i=i+1;

};cout <<"\n";

//input ci=1;while (i<=n){

cout <<"Masukan c["<<i<<"] = ";cin >> c[i];i=i+1;

};cout <<"\n";

//input di=1;while (i<=n){

cout <<"Masukan d["<<i<<"] = ";cin >> d[i];i=i+1;

};cout <<"\n";

//thomasalfa[1]=a[1];i=2;

while (i<=n){

beta[i]=b[i]/alfa[i-1];alfa[i]=a[i]-beta[i]*c[i-1];i=i+1;

};

y[1]=d[1];i=2;

while (i<=n){

y[i]=d[i]-beta[i]*y[i-1];i=i+1;

};

x[n]=y[n]/alfa[n-1];i=n-1;

while (i>=1){

Page 14: Algoritma Persamaan Keadaan Gas Nyata Soave

x[i]=(y[i]-c[i]*x[i+1])/alfa[i];i=i-1;

};

//output

i=1;while (i<=n){

cout << "Hasil x["<<i<<"] = "<<x[i]<< " \n";j=j+1;

};

char wait;cin >> wait;return 0;

}

9. ALGORITMA PENYELESAIAN PERSAMAAN KEADAAN GAS NYATA SOAVE-REDLICH KWONG

#include "iostream"#include "math.h"

using std::cout;using std::cin;

int main(){

int i,n;double T[1000],P[1000];double Tc,Pc,R,b,a,Tr,omega,alfa,V,Ta,Tb,Temp,h;

cout << "PERSAMAAN KEADAAN SOAVE-REDLICH KWONG\n \n";cout << "Hubungan Temperature dan Tekanan Gas pada Volume Reaktor Konstan \

n \n";

cout << "Volume Reaktor (m^3) = ";cin >> V;cout <<"\n \n";

cout <<"critical temperature and pressure and acentric factor \n";cout << " Tc (Kelvin) = ";cin >> Tc;cout << " Pc (Pa) = ";cin >> Pc;cout << " Omega = ";cin >> omega;cout <<"\n \n";

cout << "Input Range Temperature \n";cout << "T awal (Kelvin) = ";cin >> Ta;

Page 15: Algoritma Persamaan Keadaan Gas Nyata Soave

cout << "T akhir (Kelvin)= ";cin >> Tb;cout << "Jumlah partisi = ";cin >> n;

R=8.314;a=0.42747*pow(R,2)*pow(Tc,2)/Pc;b=0.08664*R*Tc/Pc;

i=1;h=(Tb-Ta)/n;Temp=Ta-h;

i=1;while (i<=n+1){

T[i]=Temp+h;Tr=T[i]/Tc;alfa=pow((1+(0.480 + 1.574*omega - 0.176*pow(omega,2))*(1-

pow(Tr,0.5))),2);P[i]=R*T[i]/(V-b) - a*alfa/(V*(V+b));Temp=T[i];i=i++;

};

cout << "Pada Reaktor dengan Fluida ..... , V reaktor = "<<V<<"\n";i=1;while (i<=n+1){

cout << "T operasi = "<<T[i]<<" ; P operasi = "<<P[i]<<"\n";i=i++;

};

char wait;cin >> wait;return 0;

}

10.ALGORITMA PERSAMAAN KEADAAN REDLICH KWONG MENGGUNAKAN NEWTON RAPHSON

#include "iostream"#include "math.h"

using std::cout;using std::cin;

int main(){

int n,i;double V[1000];double P,T,fungsi,turunan,galat,delta,toleransi,R,Pc,Tc,a,b,Tr;

//judulcout

<

Page 16: Algoritma Persamaan Keadaan Gas Nyata Soave

<"*******************************************************************************\n";

cout <<"\n Penyelesaian Persamaan Keadaan Redlich Kwong\n";cout <<"\n Menggunakan Metode Newton-Raphson Pada Microsoft Visual

Studio 2010 C++\n\n";cout

<<"*******************************************************************************\n";

cout <<"\n\nBentuk umum Persamaan Keadaan Gas Nyata : Redlich Kwong \n\n";cout <<"P = RT/(V-b) - a*/(T^1/2*V*(V-b))\n\n";cout <<"\nPersamaan Keadaan Redlich Kwong dalam fungsi V\n";cout <<"\nf(V) = P*V^2*T^1/2 - (P*T^1/2*b + R*T^3/2)*V + a = 0\n\n";cout <<"\nPersamaan Keadaan Redlich Kwong dalam fungsi turunan V\n";cout <<"\nf'(V) = 2*P*V*T^1/2 - (P*T^1/2*b + R*T^3/2) \n\n";cout <<"\

n*******************************************************************************\n\n";

//looping input konstantacout << "Masukkan nilai P (bar) : ";cin >> P;cout << "Masukkan nilai T (K) : ";cin >> T;cout << "Masukkan nilai R (cm^3 bar mol^(-1) K^(-1)) : ";cin >> R;cout << "Masukkan nilai Pc (bar) : ";cin >> Pc;cout << "Masukkan nilai Tc (K) : ";cin >> Tc;

a=0.42747*pow(R,2)*pow(Tc,2)/Pc;b=0.08664*R*Tc/Pc;Tr=T/Tc;i=0;

//looping mencari Volum Molar toleransi=0.0000001;galat=0.1;i=1;V[i]=R*T/P;

while (galat>=toleransi){

// mencari nilai fungsi turunanfungsi=P*pow(V[i],2)*pow(T,0.5)-(P*pow(T,0.5)*b+R*pow(T,1.5))*V[i]+a;turunan=2*P*V[i]*pow(T,0.5)-(P*pow(T,0.5)*b+R*pow(T,1.5));V[i+1]=V[i]-fungsi/turunan;delta=V[i+1]-V[i];galat=abs(delta);V[i]=V[i+1];i=i+1;

};

//hasil iterasicout <<"\nfungsi = "<<fungsi<<"\n \n";

Page 17: Algoritma Persamaan Keadaan Gas Nyata Soave

cout <<"\nturunan = "<<turunan<<"\n \n";cout <<"\ndelta = "<<delta<<"\n \n";cout <<"\ngalat = "<<galat<<"\n \n";cout <<"\nVolum Molar = "<<V[i]<<"\n";char wait;cin >> wait;return 0;

}

11. ALGORITMA PENYELESAIAN RUNGE-KUTTA BUTCHER

#include "iostream"#include "conio.h"#include "math.h"#include "string"

using std::cout;using std::cin;

int main(){

int i,n;double a,b,p,q,r,s,alfa,h,d,c,k1,k2,k3,k4,k5,k6,fungsi;double y[1000],t[1000];cout <<"PROGRAM PENYELESAIAN DEFERENSIAL \n";cout <<"METODE RUNGE KUTTA BUTCHER \n \n";cout <<"Persamaan yang digunakan adalah dy/dt = p*y + q*t^s + r \n";cout <<"a, b, dan r merupakan konstanta \n \n";

//INPUTcout <<"masukan nilai p = ";cin >> p;cout <<"masukan nilai q = ";cin >> q;cout <<"masukan nilai r = ";cin >> r;cout <<"masukan nilai s = ";cin >> s;

cout <<"masukan batas a = ";cin >> a;cout <<"masukan batas b = ";

Page 18: Algoritma Persamaan Keadaan Gas Nyata Soave

cin >> b;cout <<"masukan jumlah partisi n = ";cin >> n;cout <<"nilai awal y = ";cin >> alfa;

//RK BUTCHERh=(b-a)/n;y[1]=alfa;i=1;while(i<=n+1){

t[i]=a+(i-1)*h;

d=y[i];c=t[i];fungsi=p*d + q*pow(c,s) + r;k1=h*fungsi;

d=y[i]+k1*1/4;c=t[i]+h*1/4;fungsi=p*d + q*pow(c,s) + r;k2=h*fungsi;

d=y[i]+k1*1/8+k2*1/8;c=t[i]+h*1/4;fungsi=p*d + q*pow(c,s) + r;k3=h*fungsi;

d=y[i]-k2*h*1/2+k3;c=t[i]+h*1/2;fungsi=p*d + q*pow(c,s) + r;k4=h*fungsi;

d=y[i]+k1*3/16+k4*9/16;c=t[i]+h*3/4;fungsi=p*d + q*pow(c,s) + r;k5=h*fungsi;

d=y[i]-k1*3/7+k2*2/7+k3*12/7-k4*12/7+k5*8/7;c=t[i]+h;fungsi=p*d + q*pow(c,s) + r;k6=h*fungsi;

y[i+1]=y[i]+(7*k1+32*k3+12*k4+32*k5+7*k6)/90;

i=i++;};

//OUTPUTi=1;while (i<=n){

cout <<"y = "<<y[i]<<" pada saat t = "<<t[i]<< " \n";i=i++;

};

char wait;

Page 19: Algoritma Persamaan Keadaan Gas Nyata Soave

cin >> wait;return 0;

}