METODE NUMERIK DAN KOMPUTASI PROSES
TEKNIK KIMIA TA 2023/2024
Picture from: https://www.123rf.com/photo_17350280_children-and-computer.html
Name/NIM: Hanif Fawaz Za’im/122280097
SENANG DAN BAHAGIA BERKOMPUTASI DENGAN MATLAB
Session 1 (Pengenalan MATLAB)
1. Case one Case one (Variabel Numerik dan Operasi Matematika serta Perintah Dasar) Tuliskan Soal
Masukkan program matlab yang sudah dibuat dikotak ini clc
clear all a=2
b=[4 2 6 8]
c=[4;2;6;8]
d=[4 2 6 8]'
e=[1,2,3;4,5,6;7,8,9;10,11,12]
pi
5+5*2/2
%Operasi Skalar A=9;
B=10;
C=A*B %KATA KATA HARI INI, GUNAKAN ";" PADA AKHIR UNTUK TIDAK MENAMPILKANNYA PADA COMMAND WINDOWS
%Operasi Vektor D=[1 2 3 4];
E=[3 4 5 6]';
F=D*E %KATA KATA HARI INI, DALAM PERKALIAN VEKTOR HARUS MEMENUHI KAIDAH BARIS DAN KOLOM DIMANA BARIS HARUS DIKALIKAN DENGAN KOLOM
%Operasi perkalian matrix 2 baris 3 kolom G=[1 2 3 4; 5 6 7 8];
H=[4 3 2 1;8 7 6 5;10 9 8 7];
I=G*H'
Masukkan result yang keluar di command window dan grafiknya
a = 2
b =
4 2 6 8
c =
4 2 6 8
d =
4 2 6 8
e =
1 2 3 4 5 6 7 8 9
10 11 12
ans = 3.1416
ans = 10
C = 90
F = 50
I =
20 60 80 60 164 216
Session 2 (Pengendalian Alur Perhitungan)
1. Case one (11 anggota pertama deret Fibonacci)
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('Anjay Anda mendapat nilai A+') elseif nilai >=75
disp('Bolehlaa Anda mendapat nilai A') elseif nilai >=65
disp('Lumayan Anda mendapat nilai B') elseif nilai >=55
disp('Bjirr Anda mendapat nilai C') elseif nilai >=45
disp('Kasian amat Anda mendapat nilai D') else
disp('Anda mendapat nilai E mending ngulang wkwkwk') end
Masukkan result yang keluar di command window dan grafiknya Program konversi nilai angka kedalam bentuk huruf
Nilai 88
Bolehlaa 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,'*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 linear clc
clear all
A=[5 1 8;4 -2 0;6 7 4]
C=[46;12;50];
B = A\C
%untuk mengecek kebenaran hasilnya chit =A*B
Masukkan result yang keluar di command window dan grafiknya A =
5 1 8 4 -2 0 6 7 4
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
%Akar persamaan nonlinier dengan FMINSEARCH function f=volume(hi)
f=V-pi*hi^2*(3*R-hi)/3;
end
%Data
R=3; %Radius tangki, m V=30; %Volume tangki, m3 h0=1; %tebakan awal h h=fzero(@volume,h0);
%Catat hasil perhitungan
fprintf('Tinggi cairan dalam tangki bola=%4.2f m\n',h) end
Masukkan result yang keluar di command window dan grafiknya Tinggi cairan dalam tangki bola =2.03 m
3. Persamaan non linear dengan fsolve.
Masukkan program matlab yang sudah dibuat dikotak ini function DUA_CONTOH_fsolve
clc
clear all
%akar persamaan nonlinear dengan FMINSEARCH function f = volume(hi)
f=V-pi*hi^2*(3*R-hi)/3;
end
%Data
R = 3; %radius tangki, m V = 30; %volume cairan, m3 h0= 1; %tebakan awal h h= fsolve (@volume, h0);
%cetak hasil perhitungan
fprintf('Tinggi cairan dalam tangki bola=%4.2f m\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 persamaan sistem nonliear clc;clear all
function f=dcdt(x) f=zeros(4,1);
f(1)=u*(CAin-x(1))+V*(-k1*x(1)*x(2));
f(2)=u*(CBin-x(2))+V*(-k1*x(1)*x(2)-2*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
%Data u=1;
V=100;
k1=1;
k2=1;
CAin=1;
CBin=2;
CCin=0;
CDin=0;
%Perhitungan dengan FZERO x0=[.1 .1 .1 .1]';
xi = fsolve(@dcdt,x0);
%cetak hasil perhitungan
fprintf ('Konsentrasi A= %6.4 f \n',xi(1)) fprintf ('Konsentrasi B= %6.4 f \n',xi(2)) fprintf ('Konsentrasi C= %6.4 f \n',xi(3)) fprintf ('Konsentrasi D= %6.4 f \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
Masukkan program matlab yang sudah dibuat dikotak ini clc
clear all
%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;
%T
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
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
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
>>