METODE NUMERIK DAN KOMPUTASI PROSES
TEKNIK KIMIA TA 2023/2024
Picture from: https://www.123rf.com/photo_17350280_children-and-computer.html
Name/NIM: Josua Willem Sigalingging/122280061
SENANG DAN BAHAGIA BERKOMPUTASI DENGAN MATLAB
Session 1 (Pengenalan MATLAB)
1. Case one (Variabel Numerik dan Operasi Matematika serta Perintah Dasar) Masukkan program matlab yang sudah dibuat dikotak ini
clc
clear all a=3
b=[2 4 6 8]
c=[2,4,6,8]
d=[2;4;6;8]
e=[2 4 6 8]'
f=[2,4,6;8,10,12;14,16,18;20,22,24]
A=6;
B=7;
C=A*B
D=[1 2 3 4];
E=[2 3 4 5];
F=D*E'
G=[1 2 3 4;5 6 7 8];
H=[4 3 2 1;8 7 6 5;10 9 8 7];
P=G*H'
Masukkan result yang keluar di command window dan grafiknya a =
3 b =
2 4 6 8 c =
2 4 6 8 d =
2 4
6 8 e = 2 4 6 8 f =
2 4 6 8 10 12 14 16 18 20 22 24 C =
42 F = 40 P =
20 60 80 60 164 216
>>
Session 2 (Pengendalian Alur Perhitungan)
1. Case one (11 anggota pertama deret Fibonacci, For Loops) Masukkan program matlab yang sudah dibuat dikotak ini
%Deret Fibonacci clc
clear all f(1)=0;
f(2)=1;
for i=3:11
f(i)=f(i-2)+f(i-1);
end disp(f)
Masukkan result yang keluar di command window dan grafiknya 0 1 1 2 3 5 8 13 21 34 55
>>
2. Case two (anggota pertama dari deret Fibonacci yang nilainya lebih dari 10.000, while loops)
Masukkan program matlab yang sudah dibuat dikotak ini
%Deret Fibonacci brp anggota pertama nilainya 10000 clc
clear all
i=1 %anggota pertama f(i)=0;
i=i+1 %anggota kedua f(i)=1;
while f(i)<10000 i=i+1
f(i)=f(i-2)+f(i-1);
end disp(f) disp(i)
Masukkan result yang keluar di command window dan grafiknya
i = 1 i = 2
i = 3 i = 4 i = 5 i = 6 i = 7 i = 8 i = 9 i = 10 i = 11 i = 12 i = 13 i = 14 i = 15 i = 16 i = 17 i = 18 i = 19 i = 20 i = 21
i = 22
Columns 1 through 8
0 1 1 2 3 5 8 13 Columns 9 through 16
21 34 55 89 144 233 377 610 Columns 17 through 22
987 1597 2584 4181 6765 10946 22
>>
3.Case 3 (Konversi nilai angka ke huruf dengan if-else-end) Masukkan program matlab yang sudah dibuat dikotak ini
%Program konversi nilai clc
clear all
disp('Program konversi nilai angka kedalam bentuk huruf') nilai=input('Nilai ');
if nilai ==100
disp('Anda mendapat nilai A+') elseif nilai >=75
disp('Anda mendapat nilai A') elseif nilai >=65
disp('Anda mendapat nilai B') elseif nilai >=55
disp('Anda mendapat nilai C') elseif nilai >=45
disp('Anda mendapat nilai D') else
disp('Anda mendapat nilai E') end
Masukkan result yang keluar di command window dan grafiknya
Program konversi nilai angka kedalam bentuk huruf Nilai 88
Anda mendapat nilai A
>>
4. Case 4 (rekomendasi berdasarkan nilai dengan switch-case) Masukkan program matlab yang sudah dibuat dikotak ini
%Rekomendasi berdasarkan nilai clc
clear all nilai='A' switch nilai
case{'A+','A','B'}
Rekomendasi='Lulus, tidak perlu mengulang' case'C'
Rekomendasi='Lulus, disarankan mengulang' otherwise
Rekomendasi='Tidak lulus, harus mengulang' end
fprintf('nilai = %s maka direkomendasikan %s.\n',nilai,Rekomendasi)
Masukkan result yang keluar di command window dan grafiknya
nilai = 'A'
Rekomendasi =
'Lulus, tidak perlu mengulang'
nilai = A maka direkomendasikan Lulus, tidak perlu mengulang.
>>
5. Case 5 (Grafik garis (line chart): plot 1)
Masukkan program matlab yang sudah dibuat dikotak ini
clc
clear all
x = linspace(-pi,pi,101);
y = sin(x);
plot(x,y)
Masukkan result yang keluar di command window dan grafiknya
6. Case 6 (Grafik garis (line chart): plot 2)
Masukkan program matlab yang sudah dibuat dikotak ini
clc
clear all
x = linspace(-pi,pi,101);
f1 = sin(x);
f2 = cos(x);
f3 = sin(x)+cos(x);
plot(x,f1,x,f2,x,f3)
Masukkan result yang keluar di command window dan grafiknya
7. Case 7 (Grafik garis (line chart): plot 3)
Masukkan program matlab yang sudah dibuat dikotak ini
clc
clear all
x = linspace(-pi,pi,101);
f1 = sin(x);
f2 = cos(x);
f3 = sin(x)+cos(x);
plot(x,f1,'*r',x,f2,'ob',x,f3,'dk-') title('Contoh Grafik Trigonometri') xlabel('x, rad')
ylabel('f(x)')
legend('sin(x)','cos(x)','sin(x)+cos(x)')
Masukkan result yang keluar di command window dan grafiknya
Session 3 (Akar-akar Persamaan)
1. Penyeksaian Akar-akar sistem persamaan linear Selesaikan persamaan sebagai berikut:
5x + y + 8z = 46 4x – 2y = 12 6x + 7y + 4z = 50
Masukkan program matlab yang sudah dibuat dikotak ini
%Penyelesaian sistem persamaan linier clc
clear all
a=[5 1 8;4 -2 0;6 7 4];
c=[46;12;50];
b=a\c
%gunakan mengecek kebenaran hasilnya chit=a*b
Masukkan result yang keluar di command window dan grafiknya b =
4.0000 2.0000 3.0000
chit = 46 12 50
>>
2. Akar persamaan non linear dengan EMINSEARCH
Sebuah tangka berbentuk bola dipakai untuk menyimpan cairan. Volume cairan dapat dihitung sebagai berikut:
V=V=π h2(3R−h) 3V
Dimana V=volume (m2), h=kedalaman air di tangki (m), dan R=3m. Seberapa dalam tangki harus harus diisi agar dapat menampung cairan sebanyak 30 m3.
Masukkan program matlab yang sudah dibuat dikotak ini function dua_contoh_fzero
clc
clear all
%akar persamaan nonlinier dengan FMINSEARCH function f=volume(hi)
f=V-pi*hi^2*(3*R-hi)/3;
end
%input data
R=3;%radius tangki,n V=30;%volume cairan,m3 h0=1;%tebakan awal h h=fzero(@volume,h0)
%cetak hasil perhitungan
fprintf('tinggi cairan dalam bola =%4.2f n\n',h) end
Masukkan result yang keluar di command window dan grafiknya h =
2.0269
tinggi cairan dalam bola =2.03 n
>>
3. Persamaan non linear dengan fsolve.
Masukkan program matlab yang sudah dibuat dikotak ini function dua_contoh_fsolve
clc
clear all
%akar persamaan nonlinier dengan FMINSEARCH function f=volume(hi)
f=V-pi*hi^2*(3*R-hi)/3;
end
%input data
R=3;%radius tangki,n
V=30;%volume cairan,m3 h0=1;%tebakan awal h h=fsolve(@volume,h0)
%cetak hasil perhitungan
fprintf('tinggi cairan dalam bola =%4.2f n\n',h) end
Masukkan result yang keluar di command window dan grafiknya Equation solved.
fsolve completed because the vector of function values is near zero
as measured by the value of the function tolerance, and the problem appears regular as measured by the gradient.
<stopping criteria details>
Tinggi cairan dalam tangki bola=2.03 m
4. Sistem Persamaan Nonlinear
Sistem Persamaan nonlinear dapat diselesaikan dengan fungsi fsolve Masukkan program matlab yang sudah dibuat dikotak ini
function dua_nonlin_fsolve
%penyelesaian sistem persamaan linier clc;clear
function f = dcdt(x)
f(1)=u*(CAin-x(1))+v*(-k1*x(1)*x(2));
f(2)=u*(CBin-x(2))+v*(-k1*x(1)-k2*x(3)*x(2));
f(3)=u*(CCin-x(3))+v*(k1*x(1)*x(2)-k2*x(3)*x(2));
f(4)=u*(CDin-x(4))+v*(k2*x(3)*x(2));
end
%input data u=1;
v=100;
k1=1;
k2=1;
CAin=1;
CBin=2;
CCin=0;
CDin=0;
%perhitungan dengan fsolve x0=[.1 .1 .1 .1]';
xi=fsolve(@dcdt,x0);
%cetak hasil perhitungan
fprintf('kosentrasi A=%6.4f\n',xi(1)) fprintf('kosentrasi A=%6.4f\n',xi(2)) fprintf('kosentrasi A=%6.4f\n',xi(3)) fprintf('kosentrasi A=%6.4f\n',xi(4)) end
Masukkan result yang keluar di command window dan grafiknya Equation solved.
fsolve completed because the vector of function values is near zero
as measured by the value of the function tolerance, and the problem appears regular as measured by the gradient.
<stopping criteria details>
Konsentrasi A= 0.0566 Konsentrasi B= 0.1666 Konsentrasi C=
0.0534 Konsentrasi D= 0.8900
Session 4 (PERSAMAAN DIFERENSIAL ORDINER)
1. Penyelesaian persamaan dengan cara integrasi analitis Masukkan program matlab yang sudah dibuat dikotak ini
%menyelesaikan metode intregrasi analitis
%membuat grafik dan tabel clc
clear all
%data
F=11; %L/detik G=10; %L/detik v0=100; %L c0=15; %kg/L Cin=0;
t=0:10;
%menghitung c=f (t) if F~=G
c=Cin-(Cin-c0)./exp(F/(F-G)*log((v0+(F-G)*t)/v0));
else
c=Cin-(Cin-C0)./exp(F/(v0*t));
end
%membuat tabel
fprintf('hasil perhitungan:\n') fprintf('---\n')
fprintf('t(detik) c(kg/liter)\n') fprintf('---\n')
fprintf('%4.if %8.4f\n',[t;c]) fprintf('---\n')
%membuat grafik plot(c,t)
xlabel('waktu,menit')
ylabel('konsentrasi,kg/L')
Masukkan result yang keluar di command window dan grafiknya hasil perhitungan:
--- t(detik) c(kg/liter) --- f 15.0000 1f 13.4449 2f 12.0639 3f 10.8363 4f 9.7437 5f 8.7702 6f 7.9018 7f 7.1264 8f 6.4332 9f 5.8130 10f 5.2574 ---
>>
2. Penyelesaian persamaan dengan cara Penyelesaian PD ordiner Masukkan program matlab yang sudah dibuat dikotak ini
function Tiga_1b_ode
%Penyelesaian 3.1.b. ODE solver clc
clear all
% Data
F=11; %L/det G=10; %L/det V0=100; %L c0=15; %kg/L cin=0;
tf=10;
% fungsi persamaan (3.1) da (3.2) function f=dcdt(ti,ci)
f= F*(cin-ci)/(V0+(F-G)*ti);
end
%penyelesaian dengan ode45 tspan=0:tf;
[t,c]=ode45(@dcdt,tspan, c0);
%membuat grafik plot(t,c)
xlabel('Waktu, menit'); ylabel('Konsentrasi, kg/L') end
Masukkan result yang keluar di command window dan grafiknya
3. Tugas Tambahan 1
Masukkan program matlab yang sudah dibuat dikotak ini clc
clear all
%1 = CH3OH
%2 = H2
%3 = CO
%Data
%CH3OH A1=2.211;
B1=12.216e-3;
C1=-3.45e-6;
D1=0;
%H2
A2=3.249;
B2=0.422e-3;
C2=0;
D2=0.083e5;
%CO
A3=3.376;
B3=0.557e-3;
C3=0;
D3=-0.031e5;
%Temperatur
Ti=298.15; %K
Tf=(273.15+800); %K
%Hitung Cp/R
%Hitung Cp/R CH3OH
Cp1=A1+B1*(Tf-Ti)+C1*(Tf-Ti)^2+D1/((Tf-Ti)^2);
%Hitung Cp/R H2
Cp2=A2+B2*(Tf-Ti)+C2*(Tf-Ti)^2+D2/((Tf-Ti)^2);
%Hitung Cp/R CO
Cp3=A3+B3*(Tf-Ti)+C3*(Tf-Ti)^2+D3/((Tf-Ti)^2);
%Hitung dCp/R dCpR=Cp1-Cp2-Cp3;
%Hitung dHrxn at 298.15 K %dHf0 CH3OH
dHf1=-200660; %J/mol %dHf0 CO
dHf2=-110525; %J/mol %dHrxn at 298.15 K dHrxn=dHf1-dHf2;
%Hitung dHr at 800 oC R= 8.314; %J/mol K dHr=dHrxn+R*(dCpR)
fprintf('Panas Reaksi pada 800 oC = %s J/mol',dHr) Masukkan result yang keluar di command window dan grafiknya
dHr =
-9.0117e+04
Panas Reaksi pada 800 oC = -9.011659e+04 J/mol>>
3. Tugas Tambahan 2
Masukkan program matlab yang sudah dibuat dikotak ini clc; clear all
%Mencari Harga Konversi A pada Kesetimbangan (z)
%Data
Hrxn= -2e4; %cal/gmol Tf= 400; %K
P= 20; %atm Tref= 298; %K
F0= 1000; %gmol/jam A= 83-6; %atm
B= 4500; %K
CpA= 7; %cal/mol.K CpB= 8; %cal/mol.K CpC= 12; %cal/mol.K R= 1,987; %cal/mol.K
% Looping hingga konvergen z= 0.1; % Mulai dari z = 0.1 for i= 1:50
% Konversi mol A
A= 0.25*(1-z)*P/(1-0.5*z);
xB= (1-z)/2;
CpA= F0*(1-z)/(A*R*Tf/1000);
k= A*exp(-B/Tf);
kC= (P/xB^2)*(A^2/k);
znew= (1+kC*(1-z)^2/((1-z)+2*B))^(-0.5);
% Perhitungan entalpi
deltaH = Hrxn/1000 + (CpC-CpA-2*CpB)*(Tf-Tref);
F = deltaH*F0/(0.25*(1-z)*CpA + (0.75-0.5*z)*CpB + 25*z*CpC);
Tf = Tf-F;
% Cek konvergensi if abs(znew-z) < 1e-6 break
end
z = znew;
end
% Hasil Perhitungan
fprintf('Konversi A pada kesetimbangan = %2f%%\n', z);
fprintf('Iterasi yang diperlukan = %d\n', i);
Masukkan result yang keluar di command window dan grafiknya R =
1
Konversi A pada kesetimbangan = 1.000000%
Iterasi yang diperlukan = 7
>>