http://air.eng.ui.ac.id/api.php?action=feedcontributions&user=Muhammad.syariifi&feedformat=atomccitonlinewiki - User contributions [en]2024-03-29T14:27:50ZUser contributionsMediaWiki 1.30.0http://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=18488Muhammad Syariifi Muflih2019-12-17T10:11:17Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, saya mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut saya, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, saya mengunduh python terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, python dapat digunakan dengan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang saya unduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''<br />
<br />
<br />
<br />
== UTS 23 Oktober 2019 ==<br />
<br />
<br />
===Muhasabah===<br />
<br />
[[File:Muhasabah uts muhammad.syariifi.mp4]]<br />
<br />
<br />
===Soal A : Mencari T1, T2, T3, T4 jika diketahui m1, m2, m3, m4===<br />
<br />
[[File:Uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung T1, T2, T3, T4 seperti perhitungan di atas:<br />
<br />
import math<br />
<br />
m1 = float(input('Massa M1 (dalam kg): ')) #Menginput nilai m1<br />
m2 = float(input('Massa M2 (dalam kg): ')) #Menginput nilai m2<br />
m3 = float(input('Massa M3 (dalam kg): ')) #Menginput nilai m3<br />
m4 = float(input('Massa M4 (dalam kg): ')) #Menginput nilai m4<br />
g = float(input('Gravitasi (dalam m/s^2): ')) #Menginput nilai g<br />
alfa = float(input('Kemiringan bidang miring (dalam derajat): ')) #Menginput nilai alfa (sudut kemiringan)<br />
<br />
cosalfa = math.cos(math.radians(alfa)) #perhitungan cos alfa<br />
sinalfa = math.sin(math.radians(alfa)) #perhitungan sin alfa<br />
<br />
w1 = m1 * g #perhitungan w1<br />
w2 = m2 * g #perhitungan w2<br />
w3 = m3 * g #perhitungan w3<br />
w4 = m4 * g #perhitungan w4<br />
<br />
N1 = w1 * cosalfa #perhitungan gaya normal benda 1<br />
N2 = w2 * cosalfa #perhitungan gaya normal benda 2<br />
N3 = w3 * cosalfa #perhitungan gaya normal benda 3<br />
<br />
koefisien = float(input("Koefisien gesek: ")) #menginput koefisien gesek<br />
<br />
Fges1 = N1 * koefisien #perhitungan gaya gesek 1<br />
Fges2 = N2 * koefisien #perhitungan gaya gesek 2<br />
Fges3 = N3 * koefisien #perhitungan gaya gesek 3<br />
<br />
F1 = w1 * sinalfa #perhitungan gaya menurun benda 1 (F1)<br />
F2 = w2 * sinalfa #perhitungan gaya menurun benda 2 (F2)<br />
F3 = w3 * sinalfa #perhitungan gaya menurun benda 3 (F3)<br />
<br />
T1 = F1 - Fges1 #perhitungan T1<br />
T2 = F2 - Fges2 + T1 #perhitungan T2<br />
T3 = F3 - Fges3 + T2 #perhitungan T3<br />
T4 = w4 #perhitungan T4<br />
<br />
print("Nilai T1 (dalam Newton) :", T1) #menampilkan nilai T1<br />
print("Nilai T2 (dalam Newton) :", T2) #menampilkan nilai T2<br />
print("Nilai T3 (dalam Newton) :", T3) #menampilkan nilai T3<br />
print("Nilai T4 (dalam Newton) :", T4) #menampilkan nilai T4<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal A muhammad,syariifi.mp4]]<br />
<br />
<br />
===Soal B : Mencari t yang diperlukan mobil dari diam hingga mencapai top speed===<br />
<br />
[[File:Uts_soal_b_muhammad.syariifi.jpg|900px]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung t yang diperlukan mobil dari diam hingga mencapai top speed (diketahui) seperti perhitungan di atas:<br />
<br />
Torsimesin = float(input('Torsi dari mesin (Nm): ')) #menginput nilai torsi dari mesin di ban<br />
Ukuranban = float(input('Ukuran ban (inch): ')) #menginput diameter ukuran ban dalam inch<br />
massamobil = float(input('Massa mobil (kg): ')) #menginput massa mobil<br />
<br />
g = float(input('Gravitasi (m/s^2): ')) #menginput nilai gravitasi<br />
N = massamobil * g #perhitungan gaya normal<br />
koefgesek = float(input('Koefisien gesek: ')) #menginput koefisien gesek jalanan<br />
Fgesek = N * koefgesek #perhitungan gaya gesek<br />
<br />
RUB = Ukuranban * 0.0254 / 2 #mengkonversi diameter ban dalam inch ke jari-jari dalam meter<br />
Froda = Torsimesin / RUB #perhitungan gaya ke depan dari roda<br />
<br />
if Fgesek > Froda: #jika gaya gesek lebih besar dari gaya roda, mobil dapat melaju<br />
kmh = float(input('Top speed (km/h): ')) #menginput nilai top speed dalam km/h<br />
topspeed = kmh / 3.6 #mengkonversi top speed dari km/h ke m/s<br />
<br />
Cd = float(input('Coefficient of drag: ')) #menginput coefficient of drag<br />
A = float(input('Area (m^2): ')) #menginput luas area drag<br />
rho = float(input('Massa jenis udara (kg/m^3): ')) #menginput massa jenis udara<br />
Fdrag = Cd * A * rho * topspeed ** 2 / 2 #perhitungan gaya drag<br />
<br />
atot = (Froda - Fdrag) / massamobil #perhitungan a total, yaitu a dari roda dikurang a dari drag<br />
<br />
t = topspeed / atot #perhitungan t<br />
print('t (s): ', t) #menampilkan nilai t<br />
<br />
if Froda > Fgesek:<br />
print('Torsi mobil terlalu besar sehingga ban berdecit')<br />
<br />
#jika gaya gesek lebih kecil dari gaya roda, ban berdecit sehingga mobil tidak dapat melaju<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_b_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal B muhammad.syariifi.mp4]]<br />
<br />
<br />
<br />
== Contoh soal dengan menggunakan metode Runge-Kutta Orde Ke-4 ==<br />
<br />
=== Soal dan penyelesaian ===<br />
<br />
[[File:Metnum 05-11-2019 muhammad.syariifi.jpg|900px]]<br />
<br />
Dari soal tersebut, setelah mempertimbangkan gaya hambatan udara (Fdrag), nilai v (kecepatan) pada t (waktu) tertentu dapat ditemukan dengan metode Runge-Kutta Orde Ke-4, dengan persamaan '''a = 2145 t - 0.0000179 v^2''' untuk '''0 <= t < 0.1''', dan '''a = 214.5 t - 0.0000179 v^2''' untuk '''t >= 0.1'''<br />
<br />
Dengan menggunakan python:<br />
<br />
# t0 dan v0 sebagai keadaan awal, t sebagai t yang diinput, dan h sebagai increment<br />
t0 = 0<br />
v0 = 0<br />
h = 0.01 # di sini digunakan h = 0.01<br />
t = float(input("Nilai t: ")) # perintah untuk memasukkan nilai t<br />
<br />
if 0 <= t < 0.1: # untuk 0 <= t < 0.1<br />
def F(t, v):<br />
return (2145 * t - 0.0000179 * (v**2)) # persamaan a yang telah diperoleh<br />
<br />
def rungeKutta(t0, v0, t, h): # perhitungan Runge-Kutta<br />
n = (int)((t - t0) / h)<br />
v = v0<br />
for i in range(1, n + 1):<br />
k1 = h * F(t0, v)<br />
k2 = h * F(t0 + 0.5 * h, v + 0.5 * k1)<br />
k3 = h * F(t0 + 0.5 * h, v + 0.5 * k2)<br />
k4 = h * F(t0 + h, v + k3)<br />
v = v + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
t0 = t0 + h<br />
return v<br />
<br />
print("Nilai v pada t =", t, "adalah", rungeKutta(t0, v0, t, h), "m/s") # menampilkan nilai v<br />
<br />
elif t >= 0.1: # untuk t >= 0.1<br />
def F(t, v):<br />
return (214.5 - 0.0000179 * (v**2)) # persamaan a yang telah diperoleh<br />
<br />
def rungeKutta(t0, v0, t, h): # perhitungan Runge-Kutta<br />
n = (int)((t - t0) / h)<br />
v = v0<br />
for i in range(1, n + 1):<br />
k1 = h * F(t0, v)<br />
k2 = h * F(t0 + 0.5 * h, v + 0.5 * k1)<br />
k3 = h * F(t0 + 0.5 * h, v + 0.5 * k2)<br />
k4 = h * F(t0 + h, v + k3)<br />
v = v + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
t0 = t0 + h<br />
return v<br />
<br />
print("Nilai v pada t =", t, "adalah", rungeKutta(t0, v0, t, h), "m/s") # menampilkan nilai v<br />
<br />
else:<br />
print("Nilai t harus positif.")<br />
<br />
Berikut run dari kode di atas:<br />
<br />
[[File:Metnum 05-11-2019-2 muhammad.syariifi.png]]<br />
<br />
ketika t = 2 s, nilai v adalah '''426.81718605720295 m/s'''<br />
<br />
=== Video pembahasan ===<br />
<br />
[[File:Metnum 05-11-2019 video muhammad.syariifi.mp4]]<br />
<br />
<br />
<br />
== Optimasi Angle of Attack pada Airfoil ==<br />
<br />
<br />
<br />
=== Airfoil ===<br />
<br />
Pada tugas kali ini, kami mendesain sebuah airfoil dengan menggunakan program Autodesk Inventor untuk dites seberapa besar gaya angkat (lift force) dan gaya hambatan udara (drag force) yang dihasilkan ketika menabrak udara dengan kecepatan 100 m/s. Berikut adalah bentuk desain airfoil yang kami buat:<br />
<br />
[[File:Airfoil_kelompok_14.png]]<br />
<br />
<br />
<br />
=== Data Drag Force & Lift Force ===<br />
<br />
Dengan menggunakan software CFDSOF-NG V1.00, diperoleh data besarnya drag force & lift force terhadap kemiringan sudut airfoil sebagai berikut:<br />
<br />
[[File:Data_airfoil_kelompok_14.png]]<br />
<br />
<br />
<br />
=== Kurva drag force & lift force terhadap kemiringan sudut airfoil ===<br />
<br />
Berikut kurva dari drag force & lift force terhadap kemiringan sudut airfoil:<br />
<br />
[[File:Kurva_airfoil_kelompok_14.png]]<br />
<br />
<br />
<br />
=== Optimasi ===<br />
<br />
Dari persamaan kurva tersebut, kami mencari nilai optimasi dari masing-masing force dengan menggunakan kode berikut:<br />
<br />
import numpy as np<br />
from scipy.optimize import minimize<br />
<br />
def cdrag(x):<br />
x1 = x[0]<br />
drag = 0.0000005*x1**6-0.0001*x1**5+0.012*x1**4-0.3478*x1**3-0.0472*x1**2+107.02*x1+227.44<br />
return drag<br />
<br />
def clift(x):<br />
x1 = x[0]<br />
lift = 0.00000009*x1**6-0.000003*x1**5-0.0015*x1**4+0.1116*x1**3-0.6026*x1**2-116.06*x1+393.04<br />
return lift<br />
<br />
def objective(x):<br />
return cdrag(x)<br />
<br />
def constraint1(x): <br />
return 90 - cdrag(x)<br />
def constraint2(x):<br />
return 90 - clift(x)<br />
<br />
con1=({'type':'ineq','fun':constraint1})<br />
con2=({'type':'ineq','fun':constraint2})<br />
cons = (con1,con2)<br />
<br />
x1_guess = 50<br />
<br />
x0 = np.array([x1_guess]) <br />
<br />
sol = minimize(objective,x0, method='SLSQP',constraints=cons, options={'disp':True})<br />
<br />
xopt = sol.x<br />
forceopt = -sol.fun <br />
<br />
dragopt = cdrag(xopt)<br />
liftopt = clift(xopt) <br />
<br />
print ("")<br />
print ("Hasil optimasi:")<br />
print ("Sudut optimal = "+str(-xopt[0]))<br />
print ("Total force optimal = "+str(forceopt))<br />
print ("Drag force optimal = "+str(-dragopt))<br />
print ("Lift force optimal = "+str(liftopt))<br />
<br />
'''Hasil optimasi''':<br />
<br />
Sudut optimal = -18.824361039981582 °<br />
Total force optimal = -1197.981206594249 N<br />
Drag force optimal = -1197.981206594249 N<br />
Lift force optimal = -1452.2582614781118 N<br />
<br />
<comments voting"plus" /></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Kelompok_14&diff=17923Kelompok 142019-12-16T12:11:14Z<p>Muhammad.syariifi: </p>
<hr />
<div><br />
=== Anggota Kelompok 14 ===<br />
<br />
Muhammad Syariifi Muflih (1806149210)<br />
<br />
Fabio Almer Agoes (1806201296)<br />
<br />
Oimolala Putrawan (1706036412)<br />
<br />
== Eliminasi Gauss-Jordan ==<br />
<br />
=== Pengertian ===<br />
<br />
Eliminasi Gauss-Jordan adalah prosedur pemecahan sistem persamaan linear dengan mengubahnya menjadi bentuk matriks '''eselon baris tereduksi''' dengan metode '''operasi baris elementer'''.<br />
<br />
Contoh soal:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
Pertama, sistem persamaan linear yang ingin dipecahkan diubah ke matriks:<br />
<br />
[[File:K14-mengubah_spl_ke_matriks.png|thumb|center]]<br />
<br />
Kemudian, dengan operasi baris elementer, matriks tersebut diubah menjadi matriks eselon baris '''(gauss)''', kemudian diubah lagi menjadi matriks eselon baris tereduksi '''(gauss-jordan)'''.<br />
<br />
[[File:K14-Ilustrasi-eliminasi-gauss-jordan.jpg|thumb|center]]<br />
<br />
Berikut penyelesaian secara manual:<br />
<br />
[[File:K14-obe.png]]<br />
<br />
<br />
=== Menyelesaikan SPL dengan Eliminasi Gauss-Jordan menggunakan Python ===<br />
<br />
Contoh soal sistem persamaan linear 3 variabel:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
<br />
Berikut kode yang kami gunakan di python:<br />
<br />
[[File:K14-gauss-jordan elimination.png]]<br />
<br />
=== Video ===<br />
<br />
[[File:K14-metnum_gauss-jordan.mp4]]<br />
<br />
<br />
<br />
== Menyelesaikan Soal dengan Runge-Kutta ==<br />
<br />
[[File:K14-Runge_kutta_2.png]]<br />
<br />
<br />
=== Kode di python ===<br />
<br />
# x0 dan y sebagai titik asal, x sebagai t yang diinput, dan h sebagai tingkat peningkatan, di sini digunakan h = 0.001 supaya cukup akurat<br />
x0 = 0<br />
y = 0<br />
h = 0.001<br />
x = float(input("Nilai t: ")) # perintah untuk memasukkan nilai t sebagai x<br />
<br />
if 0 <= x < 2: # untuk 0 <= t < 2<br />
def dydx(x, y): # dydx menyatakan persamaan awal dalam soal<br />
return (4 * x - 30 * y) # diperoleh 4x - 30y karena diketahui di soal m = 2,5 kg dan k = 75 N/m, P(t) dinyatakan dalam x<br />
<br />
def rungeKutta(x0, y0, x, h): # perhitungan Runge-Kutta<br />
n = (int)((x - x0) / h)<br />
y = y0<br />
for i in range(1, n + 1):<br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
x0 = x0 + h<br />
return y<br />
<br />
print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h))<br />
<br />
elif x >= 2: # untuk t > 2<br />
def dydx(x, y): # dydx menyatakan persamaan awal dalam soal<br />
return (8 - 30 * y) # diperoleh 8 - 30y karena diketahui di soal P(t) = 20 N , m = 2,5 kg , k = 75 N/m<br />
<br />
def rungeKutta(x0, y0, x, h): # perhitungan Runge-Kutta<br />
n = (int)((x - x0) / h)<br />
y = y0<br />
for i in range(1, n + 1):<br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
x0 = x0 + h<br />
return y<br />
<br />
print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h)) # print nilai y pada t yang diinput<br />
<br />
else:<br />
print("Nilai t harus positif.") # memberitahu nilai t harus positif jika t yang dimasukkan negatif<br />
<br />
[[File:K14-Runge_kutta.png]]<br />
<br />
Run dari kode di atas, ketika dimasukkan t = 2, program menampilkan nilai y pada t = 2 yaitu 0.2666666666666658<br />
<br />
<br />
<br />
== Optimasi Angle of Attack pada Airfoil ==<br />
<br />
=== Airfoil ===<br />
<br />
Pada tugas kali ini, kami mendesain sebuah airfoil dengan menggunakan program Autodesk Inventor untuk dites seberapa besar gaya angkat (lift force) dan gaya hambatan udara (drag force) yang dihasilkan ketika menabrak udara dengan kecepatan 100 m/s. Berikut adalah bentuk desain airfoil yang kami buat:<br />
<br />
[[File:Airfoil_kelompok_14.png]]<br />
<br />
<br />
<br />
=== Data Drag Force & Lift Force ===<br />
<br />
Dengan menggunakan software CFDSOF-NG V1.00, diperoleh data besarnya drag force & lift force terhadap kemiringan sudut airfoil sebagai berikut:<br />
<br />
[[File:Data_airfoil_kelompok_14.png]]<br />
<br />
<br />
<br />
=== Kurva drag force & lift force terhadap kemiringan sudut airfoil ===<br />
<br />
Berikut kurva dari drag force & lift force terhadap kemiringan sudut airfoil:<br />
<br />
[[File:Kurva_airfoil_kelompok_14.png]]<br />
<br />
<br />
<br />
=== Optimasi ===<br />
<br />
Dari persamaan kurva tersebut, kami mencari nilai optimasi dari masing-masing force dengan menggunakan kode berikut:<br />
<br />
import numpy as np<br />
from scipy.optimize import minimize<br />
<br />
def cdrag(x):<br />
x1 = x[0]<br />
drag = 0.0000005*x1**6-0.0001*x1**5+0.012*x1**4-0.3478*x1**3-0.0472*x1**2+107.02*x1+227.44<br />
return drag<br />
<br />
def clift(x):<br />
x1 = x[0]<br />
lift = 0.00000009*x1**6-0.000003*x1**5-0.0015*x1**4+0.1116*x1**3-0.6026*x1**2-116.06*x1+393.04<br />
return lift<br />
<br />
def objective(x):<br />
return cdrag(x)<br />
<br />
def constraint1(x): <br />
return 90 - cdrag(x)<br />
def constraint2(x):<br />
return 90 - clift(x)<br />
<br />
con1=({'type':'ineq','fun':constraint1})<br />
con2=({'type':'ineq','fun':constraint2})<br />
cons = (con1,con2)<br />
<br />
x1_guess = 50<br />
<br />
x0 = np.array([x1_guess]) <br />
<br />
sol = minimize(objective,x0, method='SLSQP',constraints=cons, options={'disp':True})<br />
<br />
xopt = sol.x<br />
forceopt = -sol.fun <br />
<br />
dragopt = cdrag(xopt)<br />
liftopt = clift(xopt) <br />
<br />
print ("")<br />
print ("Hasil optimasi:")<br />
print ("Sudut optimal = "+str(-xopt[0]))<br />
print ("Total force optimal = "+str(forceopt))<br />
print ("Drag force optimal = "+str(-dragopt))<br />
print ("Lift force optimal = "+str(liftopt))<br />
<br />
'''Hasil optimasi''':<br />
<br />
Sudut optimal = -18.824361039981582 °<br />
Total force optimal = -1197.981206594249 N<br />
Drag force optimal = -1197.981206594249 N<br />
Lift force optimal = -1452.2582614781118 N</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=17922Muhammad Syariifi Muflih2019-12-16T12:05:37Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, saya mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut saya, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, saya mengunduh python terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, python dapat digunakan dengan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang saya unduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''<br />
<br />
<br />
<br />
== UTS 23 Oktober 2019 ==<br />
<br />
<br />
===Muhasabah===<br />
<br />
[[File:Muhasabah uts muhammad.syariifi.mp4]]<br />
<br />
<br />
===Soal A : Mencari T1, T2, T3, T4 jika diketahui m1, m2, m3, m4===<br />
<br />
[[File:Uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung T1, T2, T3, T4 seperti perhitungan di atas:<br />
<br />
import math<br />
<br />
m1 = float(input('Massa M1 (dalam kg): ')) #Menginput nilai m1<br />
m2 = float(input('Massa M2 (dalam kg): ')) #Menginput nilai m2<br />
m3 = float(input('Massa M3 (dalam kg): ')) #Menginput nilai m3<br />
m4 = float(input('Massa M4 (dalam kg): ')) #Menginput nilai m4<br />
g = float(input('Gravitasi (dalam m/s^2): ')) #Menginput nilai g<br />
alfa = float(input('Kemiringan bidang miring (dalam derajat): ')) #Menginput nilai alfa (sudut kemiringan)<br />
<br />
cosalfa = math.cos(math.radians(alfa)) #perhitungan cos alfa<br />
sinalfa = math.sin(math.radians(alfa)) #perhitungan sin alfa<br />
<br />
w1 = m1 * g #perhitungan w1<br />
w2 = m2 * g #perhitungan w2<br />
w3 = m3 * g #perhitungan w3<br />
w4 = m4 * g #perhitungan w4<br />
<br />
N1 = w1 * cosalfa #perhitungan gaya normal benda 1<br />
N2 = w2 * cosalfa #perhitungan gaya normal benda 2<br />
N3 = w3 * cosalfa #perhitungan gaya normal benda 3<br />
<br />
koefisien = float(input("Koefisien gesek: ")) #menginput koefisien gesek<br />
<br />
Fges1 = N1 * koefisien #perhitungan gaya gesek 1<br />
Fges2 = N2 * koefisien #perhitungan gaya gesek 2<br />
Fges3 = N3 * koefisien #perhitungan gaya gesek 3<br />
<br />
F1 = w1 * sinalfa #perhitungan gaya menurun benda 1 (F1)<br />
F2 = w2 * sinalfa #perhitungan gaya menurun benda 2 (F2)<br />
F3 = w3 * sinalfa #perhitungan gaya menurun benda 3 (F3)<br />
<br />
T1 = F1 - Fges1 #perhitungan T1<br />
T2 = F2 - Fges2 + T1 #perhitungan T2<br />
T3 = F3 - Fges3 + T2 #perhitungan T3<br />
T4 = w4 #perhitungan T4<br />
<br />
print("Nilai T1 (dalam Newton) :", T1) #menampilkan nilai T1<br />
print("Nilai T2 (dalam Newton) :", T2) #menampilkan nilai T2<br />
print("Nilai T3 (dalam Newton) :", T3) #menampilkan nilai T3<br />
print("Nilai T4 (dalam Newton) :", T4) #menampilkan nilai T4<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal A muhammad,syariifi.mp4]]<br />
<br />
<br />
===Soal B : Mencari t yang diperlukan mobil dari diam hingga mencapai top speed===<br />
<br />
[[File:Uts_soal_b_muhammad.syariifi.jpg|900px]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung t yang diperlukan mobil dari diam hingga mencapai top speed (diketahui) seperti perhitungan di atas:<br />
<br />
Torsimesin = float(input('Torsi dari mesin (Nm): ')) #menginput nilai torsi dari mesin di ban<br />
Ukuranban = float(input('Ukuran ban (inch): ')) #menginput diameter ukuran ban dalam inch<br />
massamobil = float(input('Massa mobil (kg): ')) #menginput massa mobil<br />
<br />
g = float(input('Gravitasi (m/s^2): ')) #menginput nilai gravitasi<br />
N = massamobil * g #perhitungan gaya normal<br />
koefgesek = float(input('Koefisien gesek: ')) #menginput koefisien gesek jalanan<br />
Fgesek = N * koefgesek #perhitungan gaya gesek<br />
<br />
RUB = Ukuranban * 0.0254 / 2 #mengkonversi diameter ban dalam inch ke jari-jari dalam meter<br />
Froda = Torsimesin / RUB #perhitungan gaya ke depan dari roda<br />
<br />
if Fgesek > Froda: #jika gaya gesek lebih besar dari gaya roda, mobil dapat melaju<br />
kmh = float(input('Top speed (km/h): ')) #menginput nilai top speed dalam km/h<br />
topspeed = kmh / 3.6 #mengkonversi top speed dari km/h ke m/s<br />
<br />
Cd = float(input('Coefficient of drag: ')) #menginput coefficient of drag<br />
A = float(input('Area (m^2): ')) #menginput luas area drag<br />
rho = float(input('Massa jenis udara (kg/m^3): ')) #menginput massa jenis udara<br />
Fdrag = Cd * A * rho * topspeed ** 2 / 2 #perhitungan gaya drag<br />
<br />
atot = (Froda - Fdrag) / massamobil #perhitungan a total, yaitu a dari roda dikurang a dari drag<br />
<br />
t = topspeed / atot #perhitungan t<br />
print('t (s): ', t) #menampilkan nilai t<br />
<br />
if Froda > Fgesek:<br />
print('Torsi mobil terlalu besar sehingga ban berdecit')<br />
<br />
#jika gaya gesek lebih kecil dari gaya roda, ban berdecit sehingga mobil tidak dapat melaju<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_b_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal B muhammad.syariifi.mp4]]<br />
<br />
<br />
<br />
== Contoh soal dengan menggunakan metode Runge-Kutta Orde Ke-4 ==<br />
<br />
=== Soal dan penyelesaian ===<br />
<br />
[[File:Metnum 05-11-2019 muhammad.syariifi.jpg|900px]]<br />
<br />
Dari soal tersebut, setelah mempertimbangkan gaya hambatan udara (Fdrag), nilai v (kecepatan) pada t (waktu) tertentu dapat ditemukan dengan metode Runge-Kutta Orde Ke-4, dengan persamaan '''a = 2145 t - 0.0000179 v^2''' untuk '''0 <= t < 0.1''', dan '''a = 214.5 t - 0.0000179 v^2''' untuk '''t >= 0.1'''<br />
<br />
Dengan menggunakan python:<br />
<br />
# t0 dan v0 sebagai keadaan awal, t sebagai t yang diinput, dan h sebagai increment<br />
t0 = 0<br />
v0 = 0<br />
h = 0.01 # di sini digunakan h = 0.01<br />
t = float(input("Nilai t: ")) # perintah untuk memasukkan nilai t<br />
<br />
if 0 <= t < 0.1: # untuk 0 <= t < 0.1<br />
def F(t, v):<br />
return (2145 * t - 0.0000179 * (v**2)) # persamaan a yang telah diperoleh<br />
<br />
def rungeKutta(t0, v0, t, h): # perhitungan Runge-Kutta<br />
n = (int)((t - t0) / h)<br />
v = v0<br />
for i in range(1, n + 1):<br />
k1 = h * F(t0, v)<br />
k2 = h * F(t0 + 0.5 * h, v + 0.5 * k1)<br />
k3 = h * F(t0 + 0.5 * h, v + 0.5 * k2)<br />
k4 = h * F(t0 + h, v + k3)<br />
v = v + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
t0 = t0 + h<br />
return v<br />
<br />
print("Nilai v pada t =", t, "adalah", rungeKutta(t0, v0, t, h), "m/s") # menampilkan nilai v<br />
<br />
elif t >= 0.1: # untuk t >= 0.1<br />
def F(t, v):<br />
return (214.5 - 0.0000179 * (v**2)) # persamaan a yang telah diperoleh<br />
<br />
def rungeKutta(t0, v0, t, h): # perhitungan Runge-Kutta<br />
n = (int)((t - t0) / h)<br />
v = v0<br />
for i in range(1, n + 1):<br />
k1 = h * F(t0, v)<br />
k2 = h * F(t0 + 0.5 * h, v + 0.5 * k1)<br />
k3 = h * F(t0 + 0.5 * h, v + 0.5 * k2)<br />
k4 = h * F(t0 + h, v + k3)<br />
v = v + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
t0 = t0 + h<br />
return v<br />
<br />
print("Nilai v pada t =", t, "adalah", rungeKutta(t0, v0, t, h), "m/s") # menampilkan nilai v<br />
<br />
else:<br />
print("Nilai t harus positif.")<br />
<br />
Berikut run dari kode di atas:<br />
<br />
[[File:Metnum 05-11-2019-2 muhammad.syariifi.png]]<br />
<br />
ketika t = 2 s, nilai v adalah '''426.81718605720295 m/s'''<br />
<br />
=== Video pembahasan ===<br />
<br />
[[File:Metnum 05-11-2019 video muhammad.syariifi.mp4]]<br />
<br />
<br />
<br />
== Optimasi Angle of Attack pada Airfoil ==<br />
<br />
<br />
Dapat dilihat di: [[Kelompok 14]]<br />
<br />
<comments voting"plus" /></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=17921Muhammad Syariifi Muflih2019-12-16T11:58:21Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, Ia mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut Riifi, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, unduh terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, gunakan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang bisa diunduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''<br />
<br />
<br />
<br />
== UTS 23 Oktober 2019 ==<br />
<br />
<br />
===Muhasabah===<br />
<br />
[[File:Muhasabah uts muhammad.syariifi.mp4]]<br />
<br />
<br />
===Soal A : Mencari T1, T2, T3, T4 jika diketahui m1, m2, m3, m4===<br />
<br />
[[File:Uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung T1, T2, T3, T4 seperti perhitungan di atas:<br />
<br />
import math<br />
<br />
m1 = float(input('Massa M1 (dalam kg): ')) #Menginput nilai m1<br />
m2 = float(input('Massa M2 (dalam kg): ')) #Menginput nilai m2<br />
m3 = float(input('Massa M3 (dalam kg): ')) #Menginput nilai m3<br />
m4 = float(input('Massa M4 (dalam kg): ')) #Menginput nilai m4<br />
g = float(input('Gravitasi (dalam m/s^2): ')) #Menginput nilai g<br />
alfa = float(input('Kemiringan bidang miring (dalam derajat): ')) #Menginput nilai alfa (sudut kemiringan)<br />
<br />
cosalfa = math.cos(math.radians(alfa)) #perhitungan cos alfa<br />
sinalfa = math.sin(math.radians(alfa)) #perhitungan sin alfa<br />
<br />
w1 = m1 * g #perhitungan w1<br />
w2 = m2 * g #perhitungan w2<br />
w3 = m3 * g #perhitungan w3<br />
w4 = m4 * g #perhitungan w4<br />
<br />
N1 = w1 * cosalfa #perhitungan gaya normal benda 1<br />
N2 = w2 * cosalfa #perhitungan gaya normal benda 2<br />
N3 = w3 * cosalfa #perhitungan gaya normal benda 3<br />
<br />
koefisien = float(input("Koefisien gesek: ")) #menginput koefisien gesek<br />
<br />
Fges1 = N1 * koefisien #perhitungan gaya gesek 1<br />
Fges2 = N2 * koefisien #perhitungan gaya gesek 2<br />
Fges3 = N3 * koefisien #perhitungan gaya gesek 3<br />
<br />
F1 = w1 * sinalfa #perhitungan gaya menurun benda 1 (F1)<br />
F2 = w2 * sinalfa #perhitungan gaya menurun benda 2 (F2)<br />
F3 = w3 * sinalfa #perhitungan gaya menurun benda 3 (F3)<br />
<br />
T1 = F1 - Fges1 #perhitungan T1<br />
T2 = F2 - Fges2 + T1 #perhitungan T2<br />
T3 = F3 - Fges3 + T2 #perhitungan T3<br />
T4 = w4 #perhitungan T4<br />
<br />
print("Nilai T1 (dalam Newton) :", T1) #menampilkan nilai T1<br />
print("Nilai T2 (dalam Newton) :", T2) #menampilkan nilai T2<br />
print("Nilai T3 (dalam Newton) :", T3) #menampilkan nilai T3<br />
print("Nilai T4 (dalam Newton) :", T4) #menampilkan nilai T4<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal A muhammad,syariifi.mp4]]<br />
<br />
<br />
===Soal B : Mencari t yang diperlukan mobil dari diam hingga mencapai top speed===<br />
<br />
[[File:Uts_soal_b_muhammad.syariifi.jpg|900px]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung t yang diperlukan mobil dari diam hingga mencapai top speed (diketahui) seperti perhitungan di atas:<br />
<br />
Torsimesin = float(input('Torsi dari mesin (Nm): ')) #menginput nilai torsi dari mesin di ban<br />
Ukuranban = float(input('Ukuran ban (inch): ')) #menginput diameter ukuran ban dalam inch<br />
massamobil = float(input('Massa mobil (kg): ')) #menginput massa mobil<br />
<br />
g = float(input('Gravitasi (m/s^2): ')) #menginput nilai gravitasi<br />
N = massamobil * g #perhitungan gaya normal<br />
koefgesek = float(input('Koefisien gesek: ')) #menginput koefisien gesek jalanan<br />
Fgesek = N * koefgesek #perhitungan gaya gesek<br />
<br />
RUB = Ukuranban * 0.0254 / 2 #mengkonversi diameter ban dalam inch ke jari-jari dalam meter<br />
Froda = Torsimesin / RUB #perhitungan gaya ke depan dari roda<br />
<br />
if Fgesek > Froda: #jika gaya gesek lebih besar dari gaya roda, mobil dapat melaju<br />
kmh = float(input('Top speed (km/h): ')) #menginput nilai top speed dalam km/h<br />
topspeed = kmh / 3.6 #mengkonversi top speed dari km/h ke m/s<br />
<br />
Cd = float(input('Coefficient of drag: ')) #menginput coefficient of drag<br />
A = float(input('Area (m^2): ')) #menginput luas area drag<br />
rho = float(input('Massa jenis udara (kg/m^3): ')) #menginput massa jenis udara<br />
Fdrag = Cd * A * rho * topspeed ** 2 / 2 #perhitungan gaya drag<br />
<br />
atot = (Froda - Fdrag) / massamobil #perhitungan a total, yaitu a dari roda dikurang a dari drag<br />
<br />
t = topspeed / atot #perhitungan t<br />
print('t (s): ', t) #menampilkan nilai t<br />
<br />
if Froda > Fgesek:<br />
print('Torsi mobil terlalu besar sehingga ban berdecit')<br />
<br />
#jika gaya gesek lebih kecil dari gaya roda, ban berdecit sehingga mobil tidak dapat melaju<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_b_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal B muhammad.syariifi.mp4]]<br />
<br />
<br />
<br />
== Contoh soal dengan menggunakan metode Runge-Kutta Orde Ke-4 ==<br />
<br />
=== Soal dan penyelesaian ===<br />
<br />
[[File:Metnum 05-11-2019 muhammad.syariifi.jpg|900px]]<br />
<br />
Dari soal tersebut, setelah mempertimbangkan gaya hambatan udara (Fdrag), nilai v (kecepatan) pada t (waktu) tertentu dapat ditemukan dengan metode Runge-Kutta Orde Ke-4, dengan persamaan '''a = 2145 t - 0.0000179 v^2''' untuk '''0 <= t < 0.1''', dan '''a = 214.5 t - 0.0000179 v^2''' untuk '''t >= 0.1'''<br />
<br />
Dengan menggunakan python:<br />
<br />
# t0 dan v0 sebagai keadaan awal, t sebagai t yang diinput, dan h sebagai increment<br />
t0 = 0<br />
v0 = 0<br />
h = 0.01 # di sini digunakan h = 0.01<br />
t = float(input("Nilai t: ")) # perintah untuk memasukkan nilai t<br />
<br />
if 0 <= t < 0.1: # untuk 0 <= t < 0.1<br />
def F(t, v):<br />
return (2145 * t - 0.0000179 * (v**2)) # persamaan a yang telah diperoleh<br />
<br />
def rungeKutta(t0, v0, t, h): # perhitungan Runge-Kutta<br />
n = (int)((t - t0) / h)<br />
v = v0<br />
for i in range(1, n + 1):<br />
k1 = h * F(t0, v)<br />
k2 = h * F(t0 + 0.5 * h, v + 0.5 * k1)<br />
k3 = h * F(t0 + 0.5 * h, v + 0.5 * k2)<br />
k4 = h * F(t0 + h, v + k3)<br />
v = v + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
t0 = t0 + h<br />
return v<br />
<br />
print("Nilai v pada t =", t, "adalah", rungeKutta(t0, v0, t, h), "m/s") # menampilkan nilai v<br />
<br />
elif t >= 0.1: # untuk t >= 0.1<br />
def F(t, v):<br />
return (214.5 - 0.0000179 * (v**2)) # persamaan a yang telah diperoleh<br />
<br />
def rungeKutta(t0, v0, t, h): # perhitungan Runge-Kutta<br />
n = (int)((t - t0) / h)<br />
v = v0<br />
for i in range(1, n + 1):<br />
k1 = h * F(t0, v)<br />
k2 = h * F(t0 + 0.5 * h, v + 0.5 * k1)<br />
k3 = h * F(t0 + 0.5 * h, v + 0.5 * k2)<br />
k4 = h * F(t0 + h, v + k3)<br />
v = v + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
t0 = t0 + h<br />
return v<br />
<br />
print("Nilai v pada t =", t, "adalah", rungeKutta(t0, v0, t, h), "m/s") # menampilkan nilai v<br />
<br />
else:<br />
print("Nilai t harus positif.")<br />
<br />
Berikut run dari kode di atas:<br />
<br />
[[File:Metnum 05-11-2019-2 muhammad.syariifi.png]]<br />
<br />
ketika t = 2 s, nilai v adalah '''426.81718605720295 m/s'''<br />
<br />
=== Video pembahasan ===<br />
<br />
[[File:Metnum 05-11-2019 video muhammad.syariifi.mp4]]<br />
<br />
<br />
<br />
== Optimasi Angle of Attack pada Airfoil ==<br />
<br />
<br />
Dapat dilihat di: [[Kelompok 14]]<br />
<br />
<comments voting"plus" /></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Kelompok_14&diff=17433Kelompok 142019-12-11T09:29:31Z<p>Muhammad.syariifi: </p>
<hr />
<div><br />
=== Anggota Kelompok 14 ===<br />
<br />
Muhammad Syariifi Muflih (1806149210)<br />
<br />
Fabio Almer Agoes (1806201296)<br />
<br />
Oimolala Putrawan (1706036412)<br />
<br />
== Eliminasi Gauss-Jordan ==<br />
<br />
=== Pengertian ===<br />
<br />
Eliminasi Gauss-Jordan adalah prosedur pemecahan sistem persamaan linear dengan mengubahnya menjadi bentuk matriks '''eselon baris tereduksi''' dengan metode '''operasi baris elementer'''.<br />
<br />
Contoh soal:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
Pertama, sistem persamaan linear yang ingin dipecahkan diubah ke matriks:<br />
<br />
[[File:K14-mengubah_spl_ke_matriks.png|thumb|center]]<br />
<br />
Kemudian, dengan operasi baris elementer, matriks tersebut diubah menjadi matriks eselon baris '''(gauss)''', kemudian diubah lagi menjadi matriks eselon baris tereduksi '''(gauss-jordan)'''.<br />
<br />
[[File:K14-Ilustrasi-eliminasi-gauss-jordan.jpg|thumb|center]]<br />
<br />
Berikut penyelesaian secara manual:<br />
<br />
[[File:K14-obe.png]]<br />
<br />
<br />
=== Menyelesaikan SPL dengan Eliminasi Gauss-Jordan menggunakan Python ===<br />
<br />
Contoh soal sistem persamaan linear 3 variabel:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
<br />
Berikut kode yang kami gunakan di python:<br />
<br />
[[File:K14-gauss-jordan elimination.png]]<br />
<br />
=== Video ===<br />
<br />
[[File:K14-metnum_gauss-jordan.mp4]]<br />
<br />
<br />
<br />
== Menyelesaikan Soal dengan Runge-Kutta ==<br />
<br />
[[File:K14-Runge_kutta_2.png]]<br />
<br />
=== Algoritma ===<br />
<br />
=== Flowchart ===<br />
<br />
=== Kode di python ===<br />
<br />
# x0 dan y sebagai titik asal, x sebagai t yang diinput, dan h sebagai tingkat peningkatan, di sini digunakan h = 0.001 supaya cukup akurat<br />
x0 = 0<br />
y = 0<br />
h = 0.001<br />
x = float(input("Nilai t: ")) # perintah untuk memasukkan nilai t sebagai x<br />
<br />
if 0 <= x < 2: # untuk 0 <= t < 2<br />
def dydx(x, y): # dydx menyatakan persamaan awal dalam soal<br />
return (4 * x - 30 * y) # diperoleh 4x - 30y karena diketahui di soal m = 2,5 kg dan k = 75 N/m, P(t) dinyatakan dalam x<br />
<br />
def rungeKutta(x0, y0, x, h): # perhitungan Runge-Kutta<br />
n = (int)((x - x0) / h)<br />
y = y0<br />
for i in range(1, n + 1):<br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
x0 = x0 + h<br />
return y<br />
<br />
print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h))<br />
<br />
elif x >= 2: # untuk t > 2<br />
def dydx(x, y): # dydx menyatakan persamaan awal dalam soal<br />
return (8 - 30 * y) # diperoleh 8 - 30y karena diketahui di soal P(t) = 20 N , m = 2,5 kg , k = 75 N/m<br />
<br />
def rungeKutta(x0, y0, x, h): # perhitungan Runge-Kutta<br />
n = (int)((x - x0) / h)<br />
y = y0<br />
for i in range(1, n + 1):<br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
x0 = x0 + h<br />
return y<br />
<br />
print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h)) # print nilai y pada t yang diinput<br />
<br />
else:<br />
print("Nilai t harus positif.") # memberitahu nilai t harus positif jika t yang dimasukkan negatif<br />
<br />
[[File:K14-Runge_kutta.png]]<br />
<br />
Run dari kode di atas, ketika dimasukkan t = 2, program menampilkan nilai y pada t = 2 yaitu 0.2666666666666658<br />
<br />
<br />
<br />
== Optimasi Angle of Attack pada Airfoil ==<br />
<br />
=== Airfoil ===<br />
<br />
Pada tugas kali ini, kami mendesain sebuah airfoil dengan menggunakan program Autodesk Inventor untuk dites seberapa besar gaya angkat (lift force) dan gaya hambatan udara (drag force) yang dihasilkan ketika menabrak udara dengan kecepatan 100 m/s. Berikut adalah bentuk desain airfoil yang kami buat:<br />
<br />
[[File:Airfoil_kelompok_14.png]]<br />
<br />
<br />
<br />
=== Data Drag Force & Lift Force ===<br />
<br />
Dengan menggunakan software CFDSOF-NG V1.00, diperoleh data besarnya drag force & lift force terhadap kemiringan sudut airfoil sebagai berikut:<br />
<br />
[[File:Data_airfoil_kelompok_14.png]]<br />
<br />
<br />
<br />
=== Kurva drag force & lift force terhadap kemiringan sudut airfoil ===<br />
<br />
Berikut kurva dari drag force & lift force terhadap kemiringan sudut airfoil:<br />
<br />
[[File:Kurva_airfoil_kelompok_14.png]]<br />
<br />
<br />
<br />
=== Optimasi ===<br />
<br />
Dari persamaan kurva tersebut, kami mencari nilai optimasi dari masing-masing force dengan menggunakan kode berikut:<br />
<br />
import numpy as np<br />
from scipy.optimize import minimize<br />
<br />
def cdrag(x):<br />
x1 = x[0]<br />
drag = 0.0000005*x1**6-0.0001*x1**5+0.012*x1**4-0.3478*x1**3-0.0472*x1**2+107.02*x1+227.44<br />
return drag<br />
<br />
def clift(x):<br />
x1 = x[0]<br />
lift = 0.00000009*x1**6-0.000003*x1**5-0.0015*x1**4+0.1116*x1**3-0.6026*x1**2-116.06*x1+393.04<br />
return lift<br />
<br />
def objective(x):<br />
return cdrag(x)<br />
<br />
def constraint1(x): <br />
return 90 - cdrag(x)<br />
def constraint2(x):<br />
return 90 - clift(x)<br />
<br />
con1=({'type':'ineq','fun':constraint1})<br />
con2=({'type':'ineq','fun':constraint2})<br />
cons = (con1,con2)<br />
<br />
x1_guess = 50<br />
<br />
x0 = np.array([x1_guess]) <br />
<br />
sol = minimize(objective,x0, method='SLSQP',constraints=cons, options={'disp':True})<br />
<br />
xopt = sol.x<br />
forceopt = -sol.fun <br />
<br />
dragopt = cdrag(xopt)<br />
liftopt = clift(xopt) <br />
<br />
print ("")<br />
print ("Hasil optimasi:")<br />
print ("Sudut optimal = "+str(-xopt[0]))<br />
print ("Total force optimal = "+str(forceopt))<br />
print ("Drag force optimal = "+str(-dragopt))<br />
print ("Lift force optimal = "+str(liftopt))<br />
<br />
'''Hasil optimasi''':<br />
<br />
Sudut optimal = -18.824361039981582 °<br />
Total force optimal = -1197.981206594249 N<br />
Drag force optimal = -1197.981206594249 N<br />
Lift force optimal = -1452.2582614781118 N</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:Muhammad_Syariifi_Muflih.jpeg&diff=17154File:Muhammad Syariifi Muflih.jpeg2019-12-04T07:56:48Z<p>Muhammad.syariifi: Muhammad.syariifi uploaded a new version of File:Muhammad Syariifi Muflih.jpeg</p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Kelompok_14&diff=17153Kelompok 142019-12-04T07:40:28Z<p>Muhammad.syariifi: </p>
<hr />
<div><br />
=== Anggota Kelompok 14 ===<br />
<br />
Muhammad Syariifi Muflih (1806149210)<br />
<br />
Fabio Almer Agoes (1806201296)<br />
<br />
Oimolala Putrawan (1706036412)<br />
<br />
== Eliminasi Gauss-Jordan ==<br />
<br />
=== Pengertian ===<br />
<br />
Eliminasi Gauss-Jordan adalah prosedur pemecahan sistem persamaan linear dengan mengubahnya menjadi bentuk matriks '''eselon baris tereduksi''' dengan metode '''operasi baris elementer'''.<br />
<br />
Contoh soal:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
Pertama, sistem persamaan linear yang ingin dipecahkan diubah ke matriks:<br />
<br />
[[File:K14-mengubah_spl_ke_matriks.png|thumb|center]]<br />
<br />
Kemudian, dengan operasi baris elementer, matriks tersebut diubah menjadi matriks eselon baris '''(gauss)''', kemudian diubah lagi menjadi matriks eselon baris tereduksi '''(gauss-jordan)'''.<br />
<br />
[[File:K14-Ilustrasi-eliminasi-gauss-jordan.jpg|thumb|center]]<br />
<br />
Berikut penyelesaian secara manual:<br />
<br />
[[File:K14-obe.png]]<br />
<br />
<br />
=== Menyelesaikan SPL dengan Eliminasi Gauss-Jordan menggunakan Python ===<br />
<br />
Contoh soal sistem persamaan linear 3 variabel:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
<br />
Berikut kode yang kami gunakan di python:<br />
<br />
[[File:K14-gauss-jordan elimination.png]]<br />
<br />
=== Video ===<br />
<br />
[[File:K14-metnum_gauss-jordan.mp4]]<br />
<br />
<br />
<br />
== Menyelesaikan Soal dengan Runge-Kutta ==<br />
<br />
[[File:K14-Runge_kutta_2.png]]<br />
<br />
=== Algoritma ===<br />
<br />
=== Flowchart ===<br />
<br />
=== Kode di python ===<br />
<br />
# x0 dan y sebagai titik asal, x sebagai t yang diinput, dan h sebagai tingkat peningkatan, di sini digunakan h = 0.001 supaya cukup akurat<br />
x0 = 0<br />
y = 0<br />
h = 0.001<br />
x = float(input("Nilai t: ")) # perintah untuk memasukkan nilai t sebagai x<br />
<br />
if 0 <= x < 2: # untuk 0 <= t < 2<br />
def dydx(x, y): # dydx menyatakan persamaan awal dalam soal<br />
return (4 * x - 30 * y) # diperoleh 4x - 30y karena diketahui di soal m = 2,5 kg dan k = 75 N/m, P(t) dinyatakan dalam x<br />
<br />
def rungeKutta(x0, y0, x, h): # perhitungan Runge-Kutta<br />
n = (int)((x - x0) / h)<br />
y = y0<br />
for i in range(1, n + 1):<br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
x0 = x0 + h<br />
return y<br />
<br />
print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h))<br />
<br />
elif x >= 2: # untuk t > 2<br />
def dydx(x, y): # dydx menyatakan persamaan awal dalam soal<br />
return (8 - 30 * y) # diperoleh 8 - 30y karena diketahui di soal P(t) = 20 N , m = 2,5 kg , k = 75 N/m<br />
<br />
def rungeKutta(x0, y0, x, h): # perhitungan Runge-Kutta<br />
n = (int)((x - x0) / h)<br />
y = y0[[File:Example.jpg]]<br />
for i in range(1, n + 1):<br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
x0 = x0 + h<br />
return y<br />
<br />
print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h)) # print nilai y pada t yang diinput<br />
<br />
else:<br />
print("Nilai t harus positif.") # memberitahu nilai t harus positif jika t yang dimasukkan negatif<br />
<br />
[[File:K14-Runge_kutta.png]]<br />
<br />
Run dari kode di atas, ketika dimasukkan t = 2, program menampilkan nilai y pada t = 2 yaitu 0.2666666666666658<br />
<br />
<br />
<br />
== Optimasi Angle of Attack pada Airfoil ==<br />
<br />
=== Airfoil ===<br />
<br />
Pada tugas kali ini, kami mendesain sebuah airfoil dengan menggunakan program Autodesk Inventor untuk dites seberapa besar gaya angkat (lift force) dan gaya hambatan udara (drag force) yang dihasilkan ketika menabrak udara dengan kecepatan 100 m/s. Berikut adalah bentuk desain airfoil yang kami buat:<br />
<br />
[[File:Airfoil_kelompok_14.png]]<br />
<br />
<br />
<br />
=== Data Drag Force & Lift Force ===<br />
<br />
Dengan menggunakan software CFDSOF-NG V1.00, diperoleh data besarnya drag force & lift force terhadap kemiringan sudut airfoil sebagai berikut:<br />
<br />
[[File:Data_airfoil_kelompok_14.png]]<br />
<br />
<br />
<br />
=== Kurva drag force & lift force terhadap kemiringan sudut airfoil ===<br />
<br />
Berikut kurva dari drag force & lift force terhadap kemiringan sudut airfoil:<br />
<br />
[[File:Kurva_airfoil_kelompok_14.png]]<br />
<br />
<br />
<br />
=== Optimasi ===<br />
<br />
Dari persamaan kurva tersebut, kami mencari nilai optimasi dari masing-masing force dengan menggunakan kode berikut:<br />
<br />
import numpy as np<br />
from scipy.optimize import minimize<br />
<br />
def cdrag(x):<br />
x1 = x[0]<br />
drag = 0.0000005*x1**6-0.0001*x1**5+0.012*x1**4-0.3478*x1**3-0.0472*x1**2+107.02*x1+227.44<br />
return drag<br />
<br />
def clift(x):<br />
x1 = x[0]<br />
lift = 0.00000009*x1**6-0.000003*x1**5-0.0015*x1**4+0.1116*x1**3-0.6026*x1**2-116.06*x1+393.04<br />
return lift<br />
<br />
def objective(x):<br />
return cdrag(x)<br />
<br />
def constraint1(x): <br />
return 90 - cdrag(x)<br />
def constraint2(x):<br />
return 90 - clift(x)<br />
<br />
con1=({'type':'ineq','fun':constraint1})<br />
con2=({'type':'ineq','fun':constraint2})<br />
cons = (con1,con2)<br />
<br />
x1_guess = 50<br />
<br />
x0 = np.array([x1_guess]) <br />
<br />
sol = minimize(objective,x0, method='SLSQP',constraints=cons, options={'disp':True})<br />
<br />
xopt = sol.x<br />
forceopt = -sol.fun <br />
<br />
dragopt = cdrag(xopt)<br />
liftopt = clift(xopt) <br />
<br />
print ("")<br />
print ("Hasil optimasi:")<br />
print ("Sudut optimal = "+str(-xopt[0]))<br />
print ("Total force optimal = "+str(forceopt))<br />
print ("Drag force optimal = "+str(-dragopt))<br />
print ("Lift force optimal = "+str(liftopt))<br />
<br />
'''Hasil optimasi''':<br />
<br />
Sudut optimal = -18.824361039981582 °<br />
Total force optimal = -1197.981206594249 N<br />
Drag force optimal = -1197.981206594249 N<br />
Lift force optimal = -1452.2582614781118 N</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Kelompok_14&diff=17152Kelompok 142019-12-04T07:37:30Z<p>Muhammad.syariifi: </p>
<hr />
<div><br />
=== Anggota Kelompok 14 ===<br />
<br />
Muhammad Syariifi Muflih (1806149210)<br />
<br />
Fabio Almer Agoes (1806201296)<br />
<br />
Oimolala Putrawan (1706036412)<br />
<br />
== Eliminasi Gauss-Jordan ==<br />
<br />
=== Pengertian ===<br />
<br />
Eliminasi Gauss-Jordan adalah prosedur pemecahan sistem persamaan linear dengan mengubahnya menjadi bentuk matriks '''eselon baris tereduksi''' dengan metode '''operasi baris elementer'''.<br />
<br />
Contoh soal:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
Pertama, sistem persamaan linear yang ingin dipecahkan diubah ke matriks:<br />
<br />
[[File:K14-mengubah_spl_ke_matriks.png|thumb|center]]<br />
<br />
Kemudian, dengan operasi baris elementer, matriks tersebut diubah menjadi matriks eselon baris '''(gauss)''', kemudian diubah lagi menjadi matriks eselon baris tereduksi '''(gauss-jordan)'''.<br />
<br />
[[File:K14-Ilustrasi-eliminasi-gauss-jordan.jpg|thumb|center]]<br />
<br />
Berikut penyelesaian secara manual:<br />
<br />
[[File:K14-obe.png]]<br />
<br />
<br />
=== Menyelesaikan SPL dengan Eliminasi Gauss-Jordan menggunakan Python ===<br />
<br />
Contoh soal sistem persamaan linear 3 variabel:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
<br />
Berikut kode yang kami gunakan di python:<br />
<br />
[[File:K14-gauss-jordan elimination.png]]<br />
<br />
=== Video ===<br />
<br />
[[File:K14-metnum_gauss-jordan.mp4]]<br />
<br />
<br />
<br />
== Menyelesaikan Soal dengan Runge-Kutta ==<br />
<br />
[[File:K14-Runge_kutta_2.png]]<br />
<br />
=== Algoritma ===<br />
<br />
=== Flowchart ===<br />
<br />
=== Kode di python ===<br />
<br />
# x0 dan y sebagai titik asal, x sebagai t yang diinput, dan h sebagai tingkat peningkatan, di sini digunakan h = 0.001 supaya cukup akurat<br />
x0 = 0<br />
y = 0<br />
h = 0.001<br />
x = float(input("Nilai t: ")) # perintah untuk memasukkan nilai t sebagai x<br />
<br />
if 0 <= x < 2: # untuk 0 <= t < 2<br />
def dydx(x, y): # dydx menyatakan persamaan awal dalam soal<br />
return (4 * x - 30 * y) # diperoleh 4x - 30y karena diketahui di soal m = 2,5 kg dan k = 75 N/m, P(t) dinyatakan dalam x<br />
<br />
def rungeKutta(x0, y0, x, h): # perhitungan Runge-Kutta<br />
n = (int)((x - x0) / h)<br />
y = y0<br />
for i in range(1, n + 1):<br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
x0 = x0 + h<br />
return y<br />
<br />
print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h))<br />
<br />
elif x >= 2: # untuk t > 2<br />
def dydx(x, y): # dydx menyatakan persamaan awal dalam soal<br />
return (8 - 30 * y) # diperoleh 8 - 30y karena diketahui di soal P(t) = 20 N , m = 2,5 kg , k = 75 N/m<br />
<br />
def rungeKutta(x0, y0, x, h): # perhitungan Runge-Kutta<br />
n = (int)((x - x0) / h)<br />
y = y0[[File:Example.jpg]]<br />
for i in range(1, n + 1):<br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
x0 = x0 + h<br />
return y<br />
<br />
print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h)) # print nilai y pada t yang diinput<br />
<br />
else:<br />
print("Nilai t harus positif.") # memberitahu nilai t harus positif jika t yang dimasukkan negatif<br />
<br />
[[File:K14-Runge_kutta.png]]<br />
<br />
Run dari kode di atas, ketika dimasukkan t = 2, program menampilkan nilai y pada t = 2 yaitu 0.2666666666666658<br />
<br />
<br />
<br />
== Optimasi Angle of Attack pada Airfoil ==<br />
<br />
Pada tugas kali ini, kami mendesain sebuah airfoil dengan menggunakan program Autodesk Inventor untuk dites seberapa besar gaya angkat (lift force) dan gaya hambatan udara (drag force) yang dihasilkan ketika menabrak udara dengan kecepatan 100 m/s. Berikut adalah bentuk desain airfoil yang kami buat:<br />
<br />
[[File:Airfoil_kelompok_14.png]]<br />
<br />
<br />
<br />
Dengan menggunakan software CFDSOF-NG V1.00, diperoleh data besarnya drag force & lift force terhadap kemiringan sudut airfoil sebagai berikut:<br />
<br />
[[File:Data_airfoil_kelompok_14.png]]<br />
<br />
<br />
<br />
Berikut kurva dari drag force & lift force terhadap kemiringan sudut airfoil:<br />
<br />
[[File:Kurva_airfoil_kelompok_14.png]]<br />
<br />
<br />
<br />
Dari persamaan kurva tersebut, kami mencari nilai optimasi dari masing-masing force dengan menggunakan kode berikut:<br />
<br />
import numpy as np<br />
from scipy.optimize import minimize<br />
<br />
def cdrag(x):<br />
x1 = x[0]<br />
drag = 0.0000005*x1**6-0.0001*x1**5+0.012*x1**4-0.3478*x1**3-0.0472*x1**2+107.02*x1+227.44<br />
return drag<br />
<br />
def clift(x):<br />
x1 = x[0]<br />
lift = 0.00000009*x1**6-0.000003*x1**5-0.0015*x1**4+0.1116*x1**3-0.6026*x1**2-116.06*x1+393.04<br />
return lift<br />
<br />
def objective(x):<br />
return cdrag(x)<br />
<br />
def constraint1(x): <br />
return 90 - cdrag(x)<br />
def constraint2(x):<br />
return 90 - clift(x)<br />
<br />
con1=({'type':'ineq','fun':constraint1})<br />
con2=({'type':'ineq','fun':constraint2})<br />
cons = (con1,con2)<br />
<br />
x1_guess = 50<br />
<br />
x0 = np.array([x1_guess]) <br />
<br />
sol = minimize(objective,x0, method='SLSQP',constraints=cons, options={'disp':True})<br />
<br />
xopt = sol.x<br />
forceopt = -sol.fun <br />
<br />
dragopt = cdrag(xopt)<br />
liftopt = clift(xopt) <br />
<br />
print ("")<br />
print ("Hasil optimasi:")<br />
print ("Sudut optimal = "+str(-xopt[0]))<br />
print ("Total force optimal = "+str(forceopt))<br />
print ("Drag force optimal = "+str(-dragopt))<br />
print ("Lift force optimal = "+str(liftopt))<br />
<br />
'''Hasil optimasi''':<br />
<br />
Sudut optimal = -18.824361039981582 °<br />
Total force optimal = -1197.981206594249 N<br />
Drag force optimal = -1197.981206594249 N<br />
Lift force optimal = -1452.2582614781118 N</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:Kurva_airfoil_kelompok_14.png&diff=17151File:Kurva airfoil kelompok 14.png2019-12-04T07:29:09Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:Data_airfoil_kelompok_14.png&diff=17150File:Data airfoil kelompok 14.png2019-12-04T07:25:06Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:Airfoil_kelompok_14.png&diff=17149File:Airfoil kelompok 14.png2019-12-04T07:20:52Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=16079Muhammad Syariifi Muflih2019-11-05T17:40:03Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, Ia mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut Riifi, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, unduh terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, gunakan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang bisa diunduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''<br />
<br />
<br />
<br />
== UTS 23 Oktober 2019 ==<br />
<br />
<br />
===Muhasabah===<br />
<br />
[[File:Muhasabah uts muhammad.syariifi.mp4]]<br />
<br />
<br />
===Soal A : Mencari T1, T2, T3, T4 jika diketahui m1, m2, m3, m4===<br />
<br />
[[File:Uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung T1, T2, T3, T4 seperti perhitungan di atas:<br />
<br />
import math<br />
<br />
m1 = float(input('Massa M1 (dalam kg): ')) #Menginput nilai m1<br />
m2 = float(input('Massa M2 (dalam kg): ')) #Menginput nilai m2<br />
m3 = float(input('Massa M3 (dalam kg): ')) #Menginput nilai m3<br />
m4 = float(input('Massa M4 (dalam kg): ')) #Menginput nilai m4<br />
g = float(input('Gravitasi (dalam m/s^2): ')) #Menginput nilai g<br />
alfa = float(input('Kemiringan bidang miring (dalam derajat): ')) #Menginput nilai alfa (sudut kemiringan)<br />
<br />
cosalfa = math.cos(math.radians(alfa)) #perhitungan cos alfa<br />
sinalfa = math.sin(math.radians(alfa)) #perhitungan sin alfa<br />
<br />
w1 = m1 * g #perhitungan w1<br />
w2 = m2 * g #perhitungan w2<br />
w3 = m3 * g #perhitungan w3<br />
w4 = m4 * g #perhitungan w4<br />
<br />
N1 = w1 * cosalfa #perhitungan gaya normal benda 1<br />
N2 = w2 * cosalfa #perhitungan gaya normal benda 2<br />
N3 = w3 * cosalfa #perhitungan gaya normal benda 3<br />
<br />
koefisien = float(input("Koefisien gesek: ")) #menginput koefisien gesek<br />
<br />
Fges1 = N1 * koefisien #perhitungan gaya gesek 1<br />
Fges2 = N2 * koefisien #perhitungan gaya gesek 2<br />
Fges3 = N3 * koefisien #perhitungan gaya gesek 3<br />
<br />
F1 = w1 * sinalfa #perhitungan gaya menurun benda 1 (F1)<br />
F2 = w2 * sinalfa #perhitungan gaya menurun benda 2 (F2)<br />
F3 = w3 * sinalfa #perhitungan gaya menurun benda 3 (F3)<br />
<br />
T1 = F1 - Fges1 #perhitungan T1<br />
T2 = F2 - Fges2 + T1 #perhitungan T2<br />
T3 = F3 - Fges3 + T2 #perhitungan T3<br />
T4 = w4 #perhitungan T4<br />
<br />
print("Nilai T1 (dalam Newton) :", T1) #menampilkan nilai T1<br />
print("Nilai T2 (dalam Newton) :", T2) #menampilkan nilai T2<br />
print("Nilai T3 (dalam Newton) :", T3) #menampilkan nilai T3<br />
print("Nilai T4 (dalam Newton) :", T4) #menampilkan nilai T4<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal A muhammad,syariifi.mp4]]<br />
<br />
<br />
===Soal B : Mencari t yang diperlukan mobil dari diam hingga mencapai top speed===<br />
<br />
[[File:Uts_soal_b_muhammad.syariifi.jpg|900px]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung t yang diperlukan mobil dari diam hingga mencapai top speed (diketahui) seperti perhitungan di atas:<br />
<br />
Torsimesin = float(input('Torsi dari mesin (Nm): ')) #menginput nilai torsi dari mesin di ban<br />
Ukuranban = float(input('Ukuran ban (inch): ')) #menginput diameter ukuran ban dalam inch<br />
massamobil = float(input('Massa mobil (kg): ')) #menginput massa mobil<br />
<br />
g = float(input('Gravitasi (m/s^2): ')) #menginput nilai gravitasi<br />
N = massamobil * g #perhitungan gaya normal<br />
koefgesek = float(input('Koefisien gesek: ')) #menginput koefisien gesek jalanan<br />
Fgesek = N * koefgesek #perhitungan gaya gesek<br />
<br />
RUB = Ukuranban * 0.0254 / 2 #mengkonversi diameter ban dalam inch ke jari-jari dalam meter<br />
Froda = Torsimesin / RUB #perhitungan gaya ke depan dari roda<br />
<br />
if Fgesek > Froda: #jika gaya gesek lebih besar dari gaya roda, mobil dapat melaju<br />
kmh = float(input('Top speed (km/h): ')) #menginput nilai top speed dalam km/h<br />
topspeed = kmh / 3.6 #mengkonversi top speed dari km/h ke m/s<br />
<br />
Cd = float(input('Coefficient of drag: ')) #menginput coefficient of drag<br />
A = float(input('Area (m^2): ')) #menginput luas area drag<br />
rho = float(input('Massa jenis udara (kg/m^3): ')) #menginput massa jenis udara<br />
Fdrag = Cd * A * rho * topspeed ** 2 / 2 #perhitungan gaya drag<br />
<br />
atot = (Froda - Fdrag) / massamobil #perhitungan a total, yaitu a dari roda dikurang a dari drag<br />
<br />
t = topspeed / atot #perhitungan t<br />
print('t (s): ', t) #menampilkan nilai t<br />
<br />
if Froda > Fgesek:<br />
print('Torsi mobil terlalu besar sehingga ban berdecit')<br />
<br />
#jika gaya gesek lebih kecil dari gaya roda, ban berdecit sehingga mobil tidak dapat melaju<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_b_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal B muhammad.syariifi.mp4]]<br />
<br />
<br />
<br />
== Contoh soal dengan menggunakan metode Runge-Kutta Orde Ke-4 ==<br />
<br />
=== Soal dan penyelesaian ===<br />
<br />
[[File:Metnum 05-11-2019 muhammad.syariifi.jpg|900px]]<br />
<br />
Dari soal tersebut, setelah mempertimbangkan gaya hambatan udara (Fdrag), nilai v (kecepatan) pada t (waktu) tertentu dapat ditemukan dengan metode Runge-Kutta Orde Ke-4, dengan persamaan '''a = 2145 t - 0.0000179 v^2''' untuk '''0 <= t < 0.1''', dan '''a = 214.5 t - 0.0000179 v^2''' untuk '''t >= 0.1'''<br />
<br />
Dengan menggunakan python:<br />
<br />
# t0 dan v0 sebagai keadaan awal, t sebagai t yang diinput, dan h sebagai increment<br />
t0 = 0<br />
v0 = 0<br />
h = 0.01 # di sini digunakan h = 0.01<br />
t = float(input("Nilai t: ")) # perintah untuk memasukkan nilai t<br />
<br />
if 0 <= t < 0.1: # untuk 0 <= t < 0.1<br />
def F(t, v):<br />
return (2145 * t - 0.0000179 * (v**2)) # persamaan a yang telah diperoleh<br />
<br />
def rungeKutta(t0, v0, t, h): # perhitungan Runge-Kutta<br />
n = (int)((t - t0) / h)<br />
v = v0<br />
for i in range(1, n + 1):<br />
k1 = h * F(t0, v)<br />
k2 = h * F(t0 + 0.5 * h, v + 0.5 * k1)<br />
k3 = h * F(t0 + 0.5 * h, v + 0.5 * k2)<br />
k4 = h * F(t0 + h, v + k3)<br />
v = v + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
t0 = t0 + h<br />
return v<br />
<br />
print("Nilai v pada t =", t, "adalah", rungeKutta(t0, v0, t, h), "m/s") # menampilkan nilai v<br />
<br />
elif t >= 0.1: # untuk t >= 0.1<br />
def F(t, v):<br />
return (214.5 - 0.0000179 * (v**2)) # persamaan a yang telah diperoleh<br />
<br />
def rungeKutta(t0, v0, t, h): # perhitungan Runge-Kutta<br />
n = (int)((t - t0) / h)<br />
v = v0<br />
for i in range(1, n + 1):<br />
k1 = h * F(t0, v)<br />
k2 = h * F(t0 + 0.5 * h, v + 0.5 * k1)<br />
k3 = h * F(t0 + 0.5 * h, v + 0.5 * k2)<br />
k4 = h * F(t0 + h, v + k3)<br />
v = v + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
t0 = t0 + h<br />
return v<br />
<br />
print("Nilai v pada t =", t, "adalah", rungeKutta(t0, v0, t, h), "m/s") # menampilkan nilai v<br />
<br />
else:<br />
print("Nilai t harus positif.")<br />
<br />
Berikut run dari kode di atas:<br />
<br />
[[File:Metnum 05-11-2019-2 muhammad.syariifi.png]]<br />
<br />
ketika t = 2 s, nilai v adalah '''426.81718605720295 m/s'''<br />
<br />
=== Video pembahasan ===<br />
<br />
[[File:Metnum 05-11-2019 video muhammad.syariifi.mp4]]<br />
<br />
<comments voting"plus" /></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:Metnum_05-11-2019_video_muhammad.syariifi.mp4&diff=16077File:Metnum 05-11-2019 video muhammad.syariifi.mp42019-11-05T17:37:33Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=16025Muhammad Syariifi Muflih2019-11-05T14:42:20Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, Ia mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut Riifi, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, unduh terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, gunakan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang bisa diunduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''<br />
<br />
<br />
<br />
== UTS 23 Oktober 2019 ==<br />
<br />
<br />
===Muhasabah===<br />
<br />
[[File:Muhasabah uts muhammad.syariifi.mp4]]<br />
<br />
<br />
===Soal A : Mencari T1, T2, T3, T4 jika diketahui m1, m2, m3, m4===<br />
<br />
[[File:Uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung T1, T2, T3, T4 seperti perhitungan di atas:<br />
<br />
import math<br />
<br />
m1 = float(input('Massa M1 (dalam kg): ')) #Menginput nilai m1<br />
m2 = float(input('Massa M2 (dalam kg): ')) #Menginput nilai m2<br />
m3 = float(input('Massa M3 (dalam kg): ')) #Menginput nilai m3<br />
m4 = float(input('Massa M4 (dalam kg): ')) #Menginput nilai m4<br />
g = float(input('Gravitasi (dalam m/s^2): ')) #Menginput nilai g<br />
alfa = float(input('Kemiringan bidang miring (dalam derajat): ')) #Menginput nilai alfa (sudut kemiringan)<br />
<br />
cosalfa = math.cos(math.radians(alfa)) #perhitungan cos alfa<br />
sinalfa = math.sin(math.radians(alfa)) #perhitungan sin alfa<br />
<br />
w1 = m1 * g #perhitungan w1<br />
w2 = m2 * g #perhitungan w2<br />
w3 = m3 * g #perhitungan w3<br />
w4 = m4 * g #perhitungan w4<br />
<br />
N1 = w1 * cosalfa #perhitungan gaya normal benda 1<br />
N2 = w2 * cosalfa #perhitungan gaya normal benda 2<br />
N3 = w3 * cosalfa #perhitungan gaya normal benda 3<br />
<br />
koefisien = float(input("Koefisien gesek: ")) #menginput koefisien gesek<br />
<br />
Fges1 = N1 * koefisien #perhitungan gaya gesek 1<br />
Fges2 = N2 * koefisien #perhitungan gaya gesek 2<br />
Fges3 = N3 * koefisien #perhitungan gaya gesek 3<br />
<br />
F1 = w1 * sinalfa #perhitungan gaya menurun benda 1 (F1)<br />
F2 = w2 * sinalfa #perhitungan gaya menurun benda 2 (F2)<br />
F3 = w3 * sinalfa #perhitungan gaya menurun benda 3 (F3)<br />
<br />
T1 = F1 - Fges1 #perhitungan T1<br />
T2 = F2 - Fges2 + T1 #perhitungan T2<br />
T3 = F3 - Fges3 + T2 #perhitungan T3<br />
T4 = w4 #perhitungan T4<br />
<br />
print("Nilai T1 (dalam Newton) :", T1) #menampilkan nilai T1<br />
print("Nilai T2 (dalam Newton) :", T2) #menampilkan nilai T2<br />
print("Nilai T3 (dalam Newton) :", T3) #menampilkan nilai T3<br />
print("Nilai T4 (dalam Newton) :", T4) #menampilkan nilai T4<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal A muhammad,syariifi.mp4]]<br />
<br />
<br />
===Soal B : Mencari t yang diperlukan mobil dari diam hingga mencapai top speed===<br />
<br />
[[File:Uts_soal_b_muhammad.syariifi.jpg|900px]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung t yang diperlukan mobil dari diam hingga mencapai top speed (diketahui) seperti perhitungan di atas:<br />
<br />
Torsimesin = float(input('Torsi dari mesin (Nm): ')) #menginput nilai torsi dari mesin di ban<br />
Ukuranban = float(input('Ukuran ban (inch): ')) #menginput diameter ukuran ban dalam inch<br />
massamobil = float(input('Massa mobil (kg): ')) #menginput massa mobil<br />
<br />
g = float(input('Gravitasi (m/s^2): ')) #menginput nilai gravitasi<br />
N = massamobil * g #perhitungan gaya normal<br />
koefgesek = float(input('Koefisien gesek: ')) #menginput koefisien gesek jalanan<br />
Fgesek = N * koefgesek #perhitungan gaya gesek<br />
<br />
RUB = Ukuranban * 0.0254 / 2 #mengkonversi diameter ban dalam inch ke jari-jari dalam meter<br />
Froda = Torsimesin / RUB #perhitungan gaya ke depan dari roda<br />
<br />
if Fgesek > Froda: #jika gaya gesek lebih besar dari gaya roda, mobil dapat melaju<br />
kmh = float(input('Top speed (km/h): ')) #menginput nilai top speed dalam km/h<br />
topspeed = kmh / 3.6 #mengkonversi top speed dari km/h ke m/s<br />
<br />
Cd = float(input('Coefficient of drag: ')) #menginput coefficient of drag<br />
A = float(input('Area (m^2): ')) #menginput luas area drag<br />
rho = float(input('Massa jenis udara (kg/m^3): ')) #menginput massa jenis udara<br />
Fdrag = Cd * A * rho * topspeed ** 2 / 2 #perhitungan gaya drag<br />
<br />
atot = (Froda - Fdrag) / massamobil #perhitungan a total, yaitu a dari roda dikurang a dari drag<br />
<br />
t = topspeed / atot #perhitungan t<br />
print('t (s): ', t) #menampilkan nilai t<br />
<br />
if Froda > Fgesek:<br />
print('Torsi mobil terlalu besar sehingga ban berdecit')<br />
<br />
#jika gaya gesek lebih kecil dari gaya roda, ban berdecit sehingga mobil tidak dapat melaju<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_b_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal B muhammad.syariifi.mp4]]<br />
<br />
<br />
<br />
== Contoh soal dengan menggunakan metode Runge-Kutta Orde Ke-4 ==<br />
<br />
[[File:Metnum 05-11-2019 muhammad.syariifi.jpg|900px]]<br />
<br />
Dari soal tersebut, setelah mempertimbangkan gaya hambatan udara (Fdrag), nilai v (kecepatan) pada t (waktu) tertentu dapat ditemukan dengan metode Runge-Kutta Orde Ke-4, dengan persamaan '''a = 2145 t - 0.0000179 v^2''' untuk '''0 <= t < 0.1''', dan '''a = 214.5 t - 0.0000179 v^2''' untuk '''t >= 0.1'''<br />
<br />
Dengan menggunakan python:<br />
<br />
# t0 dan v0 sebagai keadaan awal, t sebagai t yang diinput, dan h sebagai increment<br />
t0 = 0<br />
v0 = 0<br />
h = 0.01 # di sini digunakan h = 0.01<br />
t = float(input("Nilai t: ")) # perintah untuk memasukkan nilai t<br />
<br />
if 0 <= t < 0.1: # untuk 0 <= t < 0.1<br />
def F(t, v):<br />
return (2145 * t - 0.0000179 * (v**2)) # persamaan a yang telah diperoleh<br />
<br />
def rungeKutta(t0, v0, t, h): # perhitungan Runge-Kutta<br />
n = (int)((t - t0) / h)<br />
v = v0<br />
for i in range(1, n + 1):<br />
k1 = h * F(t0, v)<br />
k2 = h * F(t0 + 0.5 * h, v + 0.5 * k1)<br />
k3 = h * F(t0 + 0.5 * h, v + 0.5 * k2)<br />
k4 = h * F(t0 + h, v + k3)<br />
v = v + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
t0 = t0 + h<br />
return v<br />
<br />
print("Nilai v pada t =", t, "adalah", rungeKutta(t0, v0, t, h), "m/s") # menampilkan nilai v<br />
<br />
elif t >= 0.1: # untuk t >= 0.1<br />
def F(t, v):<br />
return (214.5 - 0.0000179 * (v**2)) # persamaan a yang telah diperoleh<br />
<br />
def rungeKutta(t0, v0, t, h): # perhitungan Runge-Kutta<br />
n = (int)((t - t0) / h)<br />
v = v0<br />
for i in range(1, n + 1):<br />
k1 = h * F(t0, v)<br />
k2 = h * F(t0 + 0.5 * h, v + 0.5 * k1)<br />
k3 = h * F(t0 + 0.5 * h, v + 0.5 * k2)<br />
k4 = h * F(t0 + h, v + k3)<br />
v = v + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
t0 = t0 + h<br />
return v<br />
<br />
print("Nilai v pada t =", t, "adalah", rungeKutta(t0, v0, t, h), "m/s") # menampilkan nilai v<br />
<br />
else:<br />
print("Nilai t harus positif.")<br />
<br />
Berikut run dari kode di atas:<br />
<br />
[[File:Metnum 05-11-2019-2 muhammad.syariifi.png]]<br />
<br />
ketika t = 2 s, nilai v adalah '''426.81718605720295 m/s'''<br />
<br />
<comments voting"plus" /></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=16024Muhammad Syariifi Muflih2019-11-05T14:39:50Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, Ia mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut Riifi, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, unduh terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, gunakan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang bisa diunduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''<br />
<br />
<br />
<br />
== UTS 23 Oktober 2019 ==<br />
<br />
<br />
===Muhasabah===<br />
<br />
[[File:Muhasabah uts muhammad.syariifi.mp4]]<br />
<br />
<br />
===Soal A : Mencari T1, T2, T3, T4 jika diketahui m1, m2, m3, m4===<br />
<br />
[[File:Uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung T1, T2, T3, T4 seperti perhitungan di atas:<br />
<br />
import math<br />
<br />
m1 = float(input('Massa M1 (dalam kg): ')) #Menginput nilai m1<br />
m2 = float(input('Massa M2 (dalam kg): ')) #Menginput nilai m2<br />
m3 = float(input('Massa M3 (dalam kg): ')) #Menginput nilai m3<br />
m4 = float(input('Massa M4 (dalam kg): ')) #Menginput nilai m4<br />
g = float(input('Gravitasi (dalam m/s^2): ')) #Menginput nilai g<br />
alfa = float(input('Kemiringan bidang miring (dalam derajat): ')) #Menginput nilai alfa (sudut kemiringan)<br />
<br />
cosalfa = math.cos(math.radians(alfa)) #perhitungan cos alfa<br />
sinalfa = math.sin(math.radians(alfa)) #perhitungan sin alfa<br />
<br />
w1 = m1 * g #perhitungan w1<br />
w2 = m2 * g #perhitungan w2<br />
w3 = m3 * g #perhitungan w3<br />
w4 = m4 * g #perhitungan w4<br />
<br />
N1 = w1 * cosalfa #perhitungan gaya normal benda 1<br />
N2 = w2 * cosalfa #perhitungan gaya normal benda 2<br />
N3 = w3 * cosalfa #perhitungan gaya normal benda 3<br />
<br />
koefisien = float(input("Koefisien gesek: ")) #menginput koefisien gesek<br />
<br />
Fges1 = N1 * koefisien #perhitungan gaya gesek 1<br />
Fges2 = N2 * koefisien #perhitungan gaya gesek 2<br />
Fges3 = N3 * koefisien #perhitungan gaya gesek 3<br />
<br />
F1 = w1 * sinalfa #perhitungan gaya menurun benda 1 (F1)<br />
F2 = w2 * sinalfa #perhitungan gaya menurun benda 2 (F2)<br />
F3 = w3 * sinalfa #perhitungan gaya menurun benda 3 (F3)<br />
<br />
T1 = F1 - Fges1 #perhitungan T1<br />
T2 = F2 - Fges2 + T1 #perhitungan T2<br />
T3 = F3 - Fges3 + T2 #perhitungan T3<br />
T4 = w4 #perhitungan T4<br />
<br />
print("Nilai T1 (dalam Newton) :", T1) #menampilkan nilai T1<br />
print("Nilai T2 (dalam Newton) :", T2) #menampilkan nilai T2<br />
print("Nilai T3 (dalam Newton) :", T3) #menampilkan nilai T3<br />
print("Nilai T4 (dalam Newton) :", T4) #menampilkan nilai T4<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal A muhammad,syariifi.mp4]]<br />
<br />
<br />
===Soal B : Mencari t yang diperlukan mobil dari diam hingga mencapai top speed===<br />
<br />
[[File:Uts_soal_b_muhammad.syariifi.jpg|900px]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung t yang diperlukan mobil dari diam hingga mencapai top speed (diketahui) seperti perhitungan di atas:<br />
<br />
Torsimesin = float(input('Torsi dari mesin (Nm): ')) #menginput nilai torsi dari mesin di ban<br />
Ukuranban = float(input('Ukuran ban (inch): ')) #menginput diameter ukuran ban dalam inch<br />
massamobil = float(input('Massa mobil (kg): ')) #menginput massa mobil<br />
<br />
g = float(input('Gravitasi (m/s^2): ')) #menginput nilai gravitasi<br />
N = massamobil * g #perhitungan gaya normal<br />
koefgesek = float(input('Koefisien gesek: ')) #menginput koefisien gesek jalanan<br />
Fgesek = N * koefgesek #perhitungan gaya gesek<br />
<br />
RUB = Ukuranban * 0.0254 / 2 #mengkonversi diameter ban dalam inch ke jari-jari dalam meter<br />
Froda = Torsimesin / RUB #perhitungan gaya ke depan dari roda<br />
<br />
if Fgesek > Froda: #jika gaya gesek lebih besar dari gaya roda, mobil dapat melaju<br />
kmh = float(input('Top speed (km/h): ')) #menginput nilai top speed dalam km/h<br />
topspeed = kmh / 3.6 #mengkonversi top speed dari km/h ke m/s<br />
<br />
Cd = float(input('Coefficient of drag: ')) #menginput coefficient of drag<br />
A = float(input('Area (m^2): ')) #menginput luas area drag<br />
rho = float(input('Massa jenis udara (kg/m^3): ')) #menginput massa jenis udara<br />
Fdrag = Cd * A * rho * topspeed ** 2 / 2 #perhitungan gaya drag<br />
<br />
atot = (Froda - Fdrag) / massamobil #perhitungan a total, yaitu a dari roda dikurang a dari drag<br />
<br />
t = topspeed / atot #perhitungan t<br />
print('t (s): ', t) #menampilkan nilai t<br />
<br />
if Froda > Fgesek:<br />
print('Torsi mobil terlalu besar sehingga ban berdecit')<br />
<br />
#jika gaya gesek lebih kecil dari gaya roda, ban berdecit sehingga mobil tidak dapat melaju<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_b_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal B muhammad.syariifi.mp4]]<br />
<br />
<br />
<br />
== Contoh soal dengan menggunakan metode Runge-Kutta Orde Ke-4 ==<br />
<br />
[[File:Metnum 05-11-2019 muhammad.syariifi.jpg|900px]]<br />
<br />
Dari soal tersebut, setelah mempertimbangkan gaya hambatan udara (Fdrag), nilai v (kecepatan) pada t (waktu) tertentu dapat ditemukan dengan metode Runge-Kutta Orde Ke-4, dengan persamaan '''a = 2145 t - 0.0000179 v^2''' untuk '''0 <= t < 0.1''', dan '''a = 214.5 t - 0.0000179 v^2''' untuk '''t >= 0.1'''<br />
<br />
Dengan menggunakan python:<br />
<br />
# t0 dan v0 sebagai keadaan awal, t sebagai t yang diinput, dan h sebagai increment<br />
t0 = 0<br />
v0 = 0<br />
h = 0.01 # di sini digunakan h = 0.01<br />
t = float(input("Nilai t: ")) # perintah untuk memasukkan nilai t<br />
<br />
if 0 <= t < 0.1: # untuk 0 <= t < 0.1<br />
def F(t, v):<br />
return (2145 * t - 0.0000179 * (v**2)) # persamaan a yang telah diperoleh<br />
<br />
def rungeKutta(t0, v0, t, h): # perhitungan Runge-Kutta<br />
n = (int)((t - t0) / h)<br />
v = v0<br />
for i in range(1, n + 1):<br />
k1 = h * F(t0, v)<br />
k2 = h * F(t0 + 0.5 * h, v + 0.5 * k1)<br />
k3 = h * F(t0 + 0.5 * h, v + 0.5 * k2)<br />
k4 = h * F(t0 + h, v + k3)<br />
v = v + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
t0 = t0 + h<br />
return v<br />
<br />
print("Nilai v pada t =", t, "adalah", rungeKutta(t0, v0, t, h), "m/s") # menampilkan nilai v<br />
<br />
elif t >= 0.1: # untuk t >= 0.1<br />
def F(t, v):<br />
return (214.5 - 0.0000179 * (v**2)) # persamaan a yang telah diperoleh<br />
<br />
def rungeKutta(t0, v0, t, h): # perhitungan Runge-Kutta<br />
n = (int)((t - t0) / h)<br />
v = v0<br />
for i in range(1, n + 1):<br />
k1 = h * F(t0, v)<br />
k2 = h * F(t0 + 0.5 * h, v + 0.5 * k1)<br />
k3 = h * F(t0 + 0.5 * h, v + 0.5 * k2)<br />
k4 = h * F(t0 + h, v + k3)<br />
v = v + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
t0 = t0 + h<br />
return v<br />
<br />
print("Nilai v pada t =", t, "adalah", rungeKutta(t0, v0, t, h), "m/s") # menampilkan nilai v<br />
<br />
else:<br />
print("Nilai t harus positif.")<br />
<br />
Berikut run dari kode di atas:<br />
<br />
[[File:Metnum 05-11-2019-2 muhammad.syariifi.png]]<br />
<br />
ketika t = 2 s, nilai v adalah 426.81718605720295 m/s<br />
<br />
<comments voting"plus" /></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:Metnum_05-11-2019-2_muhammad.syariifi.png&diff=16023File:Metnum 05-11-2019-2 muhammad.syariifi.png2019-11-05T14:37:51Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:Metnum_05-11-2019_muhammad.syariifi.jpg&diff=16022File:Metnum 05-11-2019 muhammad.syariifi.jpg2019-11-05T14:19:50Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=15671Muhammad Syariifi Muflih2019-10-30T09:23:25Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, Ia mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut Riifi, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, unduh terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, gunakan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang bisa diunduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''<br />
<br />
<br />
<br />
== UTS 23 Oktober 2019 ==<br />
<br />
<br />
===Muhasabah===<br />
<br />
[[File:Muhasabah uts muhammad.syariifi.mp4]]<br />
<br />
<br />
===Soal A : Mencari T1, T2, T3, T4 jika diketahui m1, m2, m3, m4===<br />
<br />
[[File:Uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung T1, T2, T3, T4 seperti perhitungan di atas:<br />
<br />
import math<br />
<br />
m1 = float(input('Massa M1 (dalam kg): ')) #Menginput nilai m1<br />
m2 = float(input('Massa M2 (dalam kg): ')) #Menginput nilai m2<br />
m3 = float(input('Massa M3 (dalam kg): ')) #Menginput nilai m3<br />
m4 = float(input('Massa M4 (dalam kg): ')) #Menginput nilai m4<br />
g = float(input('Gravitasi (dalam m/s^2): ')) #Menginput nilai g<br />
alfa = float(input('Kemiringan bidang miring (dalam derajat): ')) #Menginput nilai alfa (sudut kemiringan)<br />
<br />
cosalfa = math.cos(math.radians(alfa)) #perhitungan cos alfa<br />
sinalfa = math.sin(math.radians(alfa)) #perhitungan sin alfa<br />
<br />
w1 = m1 * g #perhitungan w1<br />
w2 = m2 * g #perhitungan w2<br />
w3 = m3 * g #perhitungan w3<br />
w4 = m4 * g #perhitungan w4<br />
<br />
N1 = w1 * cosalfa #perhitungan gaya normal benda 1<br />
N2 = w2 * cosalfa #perhitungan gaya normal benda 2<br />
N3 = w3 * cosalfa #perhitungan gaya normal benda 3<br />
<br />
koefisien = float(input("Koefisien gesek: ")) #menginput koefisien gesek<br />
<br />
Fges1 = N1 * koefisien #perhitungan gaya gesek 1<br />
Fges2 = N2 * koefisien #perhitungan gaya gesek 2<br />
Fges3 = N3 * koefisien #perhitungan gaya gesek 3<br />
<br />
F1 = w1 * sinalfa #perhitungan gaya menurun benda 1 (F1)<br />
F2 = w2 * sinalfa #perhitungan gaya menurun benda 2 (F2)<br />
F3 = w3 * sinalfa #perhitungan gaya menurun benda 3 (F3)<br />
<br />
T1 = F1 - Fges1 #perhitungan T1<br />
T2 = F2 - Fges2 + T1 #perhitungan T2<br />
T3 = F3 - Fges3 + T2 #perhitungan T3<br />
T4 = w4 #perhitungan T4<br />
<br />
print("Nilai T1 (dalam Newton) :", T1) #menampilkan nilai T1<br />
print("Nilai T2 (dalam Newton) :", T2) #menampilkan nilai T2<br />
print("Nilai T3 (dalam Newton) :", T3) #menampilkan nilai T3<br />
print("Nilai T4 (dalam Newton) :", T4) #menampilkan nilai T4<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal A muhammad,syariifi.mp4]]<br />
<br />
<br />
===Soal B : Mencari t yang diperlukan mobil dari diam hingga mencapai top speed===<br />
<br />
[[File:Uts_soal_b_muhammad.syariifi.jpg|900px]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung t yang diperlukan mobil dari diam hingga mencapai top speed (diketahui) seperti perhitungan di atas:<br />
<br />
Torsimesin = float(input('Torsi dari mesin (Nm): ')) #menginput nilai torsi dari mesin di ban<br />
Ukuranban = float(input('Ukuran ban (inch): ')) #menginput diameter ukuran ban dalam inch<br />
massamobil = float(input('Massa mobil (kg): ')) #menginput massa mobil<br />
<br />
g = float(input('Gravitasi (m/s^2): ')) #menginput nilai gravitasi<br />
N = massamobil * g #perhitungan gaya normal<br />
koefgesek = float(input('Koefisien gesek: ')) #menginput koefisien gesek jalanan<br />
Fgesek = N * koefgesek #perhitungan gaya gesek<br />
<br />
RUB = Ukuranban * 0.0254 / 2 #mengkonversi diameter ban dalam inch ke jari-jari dalam meter<br />
Froda = Torsimesin / RUB #perhitungan gaya ke depan dari roda<br />
<br />
if Fgesek > Froda: #jika gaya gesek lebih besar dari gaya roda, mobil dapat melaju<br />
kmh = float(input('Top speed (km/h): ')) #menginput nilai top speed dalam km/h<br />
topspeed = kmh / 3.6 #mengkonversi top speed dari km/h ke m/s<br />
<br />
Cd = float(input('Coefficient of drag: ')) #menginput coefficient of drag<br />
A = float(input('Area (m^2): ')) #menginput luas area drag<br />
rho = float(input('Massa jenis udara (kg/m^3): ')) #menginput massa jenis udara<br />
Fdrag = Cd * A * rho * topspeed ** 2 / 2 #perhitungan gaya drag<br />
<br />
atot = (Froda - Fdrag) / massamobil #perhitungan a total, yaitu a dari roda dikurang a dari drag<br />
<br />
t = topspeed / atot #perhitungan t<br />
print('t (s): ', t) #menampilkan nilai t<br />
<br />
if Froda > Fgesek:<br />
print('Torsi mobil terlalu besar sehingga ban berdecit')<br />
<br />
#jika gaya gesek lebih kecil dari gaya roda, ban berdecit sehingga mobil tidak dapat melaju<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_b_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal B muhammad.syariifi.mp4]]<br />
<br />
<br />
<comments voting"plus" /></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=15384Muhammad Syariifi Muflih2019-10-29T16:44:16Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, Ia mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut Riifi, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, unduh terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, gunakan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang bisa diunduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''<br />
<br />
<br />
<br />
== UTS 23 Oktober 2019 ==<br />
<br />
===Soal A : Mencari T1, T2, T3, T4 jika diketahui m1, m2, m3, m4===<br />
<br />
[[File:Uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung T1, T2, T3, T4 seperti perhitungan di atas:<br />
<br />
import math<br />
<br />
m1 = float(input('Massa M1 (dalam kg): ')) #Menginput nilai m1<br />
m2 = float(input('Massa M2 (dalam kg): ')) #Menginput nilai m2<br />
m3 = float(input('Massa M3 (dalam kg): ')) #Menginput nilai m3<br />
m4 = float(input('Massa M4 (dalam kg): ')) #Menginput nilai m4<br />
g = float(input('Gravitasi (dalam m/s^2): ')) #Menginput nilai g<br />
alfa = float(input('Kemiringan bidang miring (dalam derajat): ')) #Menginput nilai alfa (sudut kemiringan)<br />
<br />
cosalfa = math.cos(math.radians(alfa)) #perhitungan cos alfa<br />
sinalfa = math.sin(math.radians(alfa)) #perhitungan sin alfa<br />
<br />
w1 = m1 * g #perhitungan w1<br />
w2 = m2 * g #perhitungan w2<br />
w3 = m3 * g #perhitungan w3<br />
w4 = m4 * g #perhitungan w4<br />
<br />
N1 = w1 * cosalfa #perhitungan gaya normal benda 1<br />
N2 = w2 * cosalfa #perhitungan gaya normal benda 2<br />
N3 = w3 * cosalfa #perhitungan gaya normal benda 3<br />
<br />
koefisien = float(input("Koefisien gesek: ")) #menginput koefisien gesek<br />
<br />
Fges1 = N1 * koefisien #perhitungan gaya gesek 1<br />
Fges2 = N2 * koefisien #perhitungan gaya gesek 2<br />
Fges3 = N3 * koefisien #perhitungan gaya gesek 3<br />
<br />
F1 = w1 * sinalfa #perhitungan gaya menurun benda 1 (F1)<br />
F2 = w2 * sinalfa #perhitungan gaya menurun benda 2 (F2)<br />
F3 = w3 * sinalfa #perhitungan gaya menurun benda 3 (F3)<br />
<br />
T1 = F1 - Fges1 #perhitungan T1<br />
T2 = F2 - Fges2 + T1 #perhitungan T2<br />
T3 = F3 - Fges3 + T2 #perhitungan T3<br />
T4 = w4 #perhitungan T4<br />
<br />
print("Nilai T1 (dalam Newton) :", T1) #menampilkan nilai T1<br />
print("Nilai T2 (dalam Newton) :", T2) #menampilkan nilai T2<br />
print("Nilai T3 (dalam Newton) :", T3) #menampilkan nilai T3<br />
print("Nilai T4 (dalam Newton) :", T4) #menampilkan nilai T4<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal A muhammad,syariifi.mp4]]<br />
<br />
<br />
===Soal B : Mencari t yang diperlukan mobil dari diam hingga mencapai top speed===<br />
<br />
[[File:Uts_soal_b_muhammad.syariifi.jpg|900px]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung t yang diperlukan mobil dari diam hingga mencapai top speed (diketahui) seperti perhitungan di atas:<br />
<br />
Torsimesin = float(input('Torsi dari mesin (Nm): ')) #menginput nilai torsi dari mesin di ban<br />
Ukuranban = float(input('Ukuran ban (inch): ')) #menginput diameter ukuran ban dalam inch<br />
massamobil = float(input('Massa mobil (kg): ')) #menginput massa mobil<br />
<br />
g = float(input('Gravitasi (m/s^2): ')) #menginput nilai gravitasi<br />
N = massamobil * g #perhitungan gaya normal<br />
koefgesek = float(input('Koefisien gesek: ')) #menginput koefisien gesek jalanan<br />
Fgesek = N * koefgesek #perhitungan gaya gesek<br />
<br />
RUB = Ukuranban * 0.0254 / 2 #mengkonversi diameter ban dalam inch ke jari-jari dalam meter<br />
Froda = Torsimesin / RUB #perhitungan gaya ke depan dari roda<br />
<br />
if Fgesek > Froda: #jika gaya gesek lebih besar dari gaya roda, mobil dapat melaju<br />
kmh = float(input('Top speed (km/h): ')) #menginput nilai top speed dalam km/h<br />
topspeed = kmh / 3.6 #mengkonversi top speed dari km/h ke m/s<br />
<br />
Cd = float(input('Coefficient of drag: ')) #menginput coefficient of drag<br />
A = float(input('Area (m^2): ')) #menginput luas area drag<br />
rho = float(input('Massa jenis udara (kg/m^3): ')) #menginput massa jenis udara<br />
Fdrag = Cd * A * rho * topspeed ** 2 / 2 #perhitungan gaya drag<br />
<br />
atot = (Froda - Fdrag) / massamobil #perhitungan a total, yaitu a dari roda dikurang a dari drag<br />
<br />
t = topspeed / atot #perhitungan t<br />
print('t (s): ', t) #menampilkan nilai t<br />
<br />
if Froda > Fgesek:<br />
print('Torsi mobil terlalu besar sehingga ban berdecit')<br />
<br />
#jika gaya gesek lebih kecil dari gaya roda, ban berdecit sehingga mobil tidak dapat melaju<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_b_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal B muhammad.syariifi.mp4]]<br />
<br />
<br />
===Muhasabah===<br />
<br />
[[File:Muhasabah uts muhammad.syariifi.mp4]]</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=15367Muhammad Syariifi Muflih2019-10-29T16:36:15Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, Ia mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut Riifi, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, unduh terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, gunakan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang bisa diunduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''<br />
<br />
<br />
<br />
== UTS ==<br />
<br />
===Soal A : Mencari T1, T2, T3, T4 jika diketahui m1, m2, m3, m4===<br />
<br />
[[File:Uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung T1, T2, T3, T4 seperti perhitungan di atas:<br />
<br />
import math<br />
<br />
m1 = float(input('Massa M1 (dalam kg): ')) #Menginput nilai m1<br />
m2 = float(input('Massa M2 (dalam kg): ')) #Menginput nilai m2<br />
m3 = float(input('Massa M3 (dalam kg): ')) #Menginput nilai m3<br />
m4 = float(input('Massa M4 (dalam kg): ')) #Menginput nilai m4<br />
g = float(input('Gravitasi (dalam m/s^2): ')) #Menginput nilai g<br />
alfa = float(input('Kemiringan bidang miring (dalam derajat): ')) #Menginput nilai alfa (sudut kemiringan)<br />
<br />
cosalfa = math.cos(math.radians(alfa)) #perhitungan cos alfa<br />
sinalfa = math.sin(math.radians(alfa)) #perhitungan sin alfa<br />
<br />
w1 = m1 * g #perhitungan w1<br />
w2 = m2 * g #perhitungan w2<br />
w3 = m3 * g #perhitungan w3<br />
w4 = m4 * g #perhitungan w4<br />
<br />
N1 = w1 * cosalfa #perhitungan gaya normal benda 1<br />
N2 = w2 * cosalfa #perhitungan gaya normal benda 2<br />
N3 = w3 * cosalfa #perhitungan gaya normal benda 3<br />
<br />
koefisien = float(input("Koefisien gesek: ")) #menginput koefisien gesek<br />
<br />
Fges1 = N1 * koefisien #perhitungan gaya gesek 1<br />
Fges2 = N2 * koefisien #perhitungan gaya gesek 2<br />
Fges3 = N3 * koefisien #perhitungan gaya gesek 3<br />
<br />
F1 = w1 * sinalfa #perhitungan gaya menurun benda 1 (F1)<br />
F2 = w2 * sinalfa #perhitungan gaya menurun benda 2 (F2)<br />
F3 = w3 * sinalfa #perhitungan gaya menurun benda 3 (F3)<br />
<br />
T1 = F1 - Fges1 #perhitungan T1<br />
T2 = F2 - Fges2 + T1 #perhitungan T2<br />
T3 = F3 - Fges3 + T2 #perhitungan T3<br />
T4 = w4 #perhitungan T4<br />
<br />
print("Nilai T1 (dalam Newton) :", T1) #menampilkan nilai T1<br />
print("Nilai T2 (dalam Newton) :", T2) #menampilkan nilai T2<br />
print("Nilai T3 (dalam Newton) :", T3) #menampilkan nilai T3<br />
print("Nilai T4 (dalam Newton) :", T4) #menampilkan nilai T4<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal A muhammad,syariifi.mp4]]<br />
<br />
<br />
===Soal B : Mencari t yang diperlukan mobil dari diam hingga mencapai top speed===<br />
<br />
[[File:Uts_soal_b_muhammad.syariifi.jpg|900px]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung t yang diperlukan mobil dari diam hingga mencapai top speed (diketahui) seperti perhitungan di atas:<br />
<br />
Torsimesin = float(input('Torsi dari mesin (Nm): ')) #menginput nilai torsi dari mesin di ban<br />
Ukuranban = float(input('Ukuran ban (inch): ')) #menginput diameter ukuran ban dalam inch<br />
massamobil = float(input('Massa mobil (kg): ')) #menginput massa mobil<br />
<br />
g = float(input('Gravitasi (m/s^2): ')) #menginput nilai gravitasi<br />
N = massamobil * g #perhitungan gaya normal<br />
koefgesek = float(input('Koefisien gesek: ')) #menginput koefisien gesek jalanan<br />
Fgesek = N * koefgesek #perhitungan gaya gesek<br />
<br />
RUB = Ukuranban * 0.0254 / 2 #mengkonversi diameter ban dalam inch ke jari-jari dalam meter<br />
Froda = Torsimesin / RUB #perhitungan gaya ke depan dari roda<br />
<br />
if Fgesek > Froda: #jika gaya gesek lebih besar dari gaya roda, mobil dapat melaju<br />
kmh = float(input('Top speed (km/h): ')) #menginput nilai top speed dalam km/h<br />
topspeed = kmh / 3.6 #mengkonversi top speed dari km/h ke m/s<br />
<br />
Cd = float(input('Coefficient of drag: ')) #menginput coefficient of drag<br />
A = float(input('Area (m^2): ')) #menginput luas area drag<br />
rho = float(input('Massa jenis udara (kg/m^3): ')) #menginput massa jenis udara<br />
Fdrag = Cd * A * rho * topspeed ** 2 / 2 #perhitungan gaya drag<br />
<br />
atot = (Froda - Fdrag) / massamobil #perhitungan a total, yaitu a dari roda dikurang a dari drag<br />
<br />
t = topspeed / atot #perhitungan t<br />
print('t (s): ', t) #menampilkan nilai t<br />
<br />
if Froda > Fgesek:<br />
print('Torsi mobil terlalu besar sehingga ban berdecit')<br />
<br />
#jika gaya gesek lebih kecil dari gaya roda, ban berdecit sehingga mobil tidak dapat melaju<br />
<br />
Berikut contoh run dari kode di atas:<br />
<br />
[[File:Run_uts_soal_b_muhammad.syariifi.png]]<br />
<br />
<br />
Video penjelasan:<br />
<br />
[[File:Soal B muhammad.syariifi.mp4]]<br />
<br />
<br />
===Muhasabah===<br />
<br />
[[File:Muhasabah uts muhammad.syariifi.mp4]]</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:Muhasabah_uts_muhammad.syariifi.mp4&diff=15364File:Muhasabah uts muhammad.syariifi.mp42019-10-29T16:34:39Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:Run_uts_soal_b_muhammad.syariifi.png&diff=15361File:Run uts soal b muhammad.syariifi.png2019-10-29T16:31:13Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:Run_uts_soal_a_muhammad.syariifi.png&diff=15354File:Run uts soal a muhammad.syariifi.png2019-10-29T16:28:22Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:Soal_B_muhammad.syariifi.mp4&diff=15331File:Soal B muhammad.syariifi.mp42019-10-29T16:21:18Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:Soal_A_muhammad,syariifi.mp4&diff=15309File:Soal A muhammad,syariifi.mp42019-10-29T16:15:04Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=14975Muhammad Syariifi Muflih2019-10-29T11:25:23Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, Ia mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut Riifi, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, unduh terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, gunakan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang bisa diunduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''<br />
<br />
<br />
<br />
== UTS ==<br />
<br />
===Soal A : Mencari T1, T2, T3, T4 jika diketahui m1, m2, m3, m4===<br />
<br />
[[File:Uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung T1, T2, T3, T4 seperti perhitungan di atas:<br />
<br />
import math<br />
<br />
m1 = float(input('Massa M1 (dalam kg): ')) #Menginput nilai m1<br />
m2 = float(input('Massa M2 (dalam kg): ')) #Menginput nilai m2<br />
m3 = float(input('Massa M3 (dalam kg): ')) #Menginput nilai m3<br />
m4 = float(input('Massa M4 (dalam kg): ')) #Menginput nilai m4<br />
g = float(input('Gravitasi (dalam m/s^2): ')) #Menginput nilai g<br />
alfa = float(input('Kemiringan bidang miring (dalam derajat): ')) #Menginput nilai alfa (sudut kemiringan)<br />
<br />
cosalfa = math.cos(math.radians(alfa)) #perhitungan cos alfa<br />
sinalfa = math.sin(math.radians(alfa)) #perhitungan sin alfa<br />
<br />
w1 = m1 * g #perhitungan w1<br />
w2 = m2 * g #perhitungan w2<br />
w3 = m3 * g #perhitungan w3<br />
w4 = m4 * g #perhitungan w4<br />
<br />
N1 = w1 * cosalfa #perhitungan gaya normal benda 1<br />
N2 = w2 * cosalfa #perhitungan gaya normal benda 2<br />
N3 = w3 * cosalfa #perhitungan gaya normal benda 3<br />
<br />
koefisien = float(input("Koefisien gesek: ")) #menginput koefisien gesek<br />
<br />
Fges1 = N1 * koefisien #perhitungan gaya gesek 1<br />
Fges2 = N2 * koefisien #perhitungan gaya gesek 2<br />
Fges3 = N3 * koefisien #perhitungan gaya gesek 3<br />
<br />
F1 = w1 * sinalfa #perhitungan gaya menurun benda 1 (F1)<br />
F2 = w2 * sinalfa #perhitungan gaya menurun benda 2 (F2)<br />
F3 = w3 * sinalfa #perhitungan gaya menurun benda 3 (F3)<br />
<br />
T1 = F1 - Fges1 #perhitungan T1<br />
T2 = F2 - Fges2 + T1 #perhitungan T2<br />
T3 = F3 - Fges3 + T2 #perhitungan T3<br />
T4 = w4 #perhitungan T4<br />
<br />
print("Nilai T1 (dalam Newton) :", T1) #menampilkan nilai T1<br />
print("Nilai T2 (dalam Newton) :", T2) #menampilkan nilai T2<br />
print("Nilai T3 (dalam Newton) :", T3) #menampilkan nilai T3<br />
print("Nilai T4 (dalam Newton) :", T4) #menampilkan nilai T4<br />
<br />
<br />
===Soal B : Mencari t yang diperlukan mobil dari diam hingga mencapai top speed===<br />
<br />
[[File:Uts_soal_b_muhammad.syariifi.jpg|900px]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung t yang diperlukan mobil dari diam hingga mencapai top speed (diketahui) seperti perhitungan di atas:<br />
<br />
Torsimesin = float(input('Torsi dari mesin (Nm): ')) #menginput nilai torsi dari mesin di ban<br />
Ukuranban = float(input('Ukuran ban (inch): ')) #menginput diameter ukuran ban dalam inch<br />
massamobil = float(input('Massa mobil (kg): ')) #menginput massa mobil<br />
<br />
g = float(input('Gravitasi (m/s^2): ')) #menginput nilai gravitasi<br />
N = massamobil * g #perhitungan gaya normal<br />
koefgesek = float(input('Koefisien gesek: ')) #menginput koefisien gesek jalanan<br />
Fgesek = N * koefgesek #perhitungan gaya gesek<br />
<br />
RUB = Ukuranban * 0.0254 / 2 #mengkonversi diameter ban dalam inch ke jari-jari dalam meter<br />
Froda = Torsimesin / RUB #perhitungan gaya ke depan dari roda<br />
<br />
if Fgesek > Froda: #jika gaya gesek lebih besar dari gaya roda, mobil dapat melaju<br />
kmh = float(input('Top speed (km/h): ')) #menginput nilai top speed dalam km/h<br />
topspeed = kmh / 3.6 #mengkonversi top speed dari km/h ke m/s<br />
<br />
Cd = float(input('Coefficient of drag: ')) #menginput coefficient of drag<br />
A = float(input('Area (m^2): ')) #menginput luas area drag<br />
rho = float(input('Massa jenis udara (kg/m^3): ')) #menginput massa jenis udara<br />
Fdrag = Cd * A * rho * topspeed ** 2 / 2 #perhitungan gaya drag<br />
<br />
atot = (Froda - Fdrag) / massamobil #perhitungan a total, yaitu a dari roda dikurang a dari drag<br />
<br />
t = topspeed / atot #perhitungan t<br />
print('t (s): ', t) #menampilkan nilai t<br />
<br />
if Froda > Fgesek:<br />
print('Torsi mobil terlalu besar sehingga ban berdecit')<br />
<br />
#jika gaya gesek lebih kecil dari gaya roda, ban berdecit sehingga mobil tidak dapat melaju</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=14974Muhammad Syariifi Muflih2019-10-29T11:22:43Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, Ia mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut Riifi, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, unduh terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, gunakan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang bisa diunduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''<br />
<br />
<br />
<br />
== UTS ==<br />
<br />
===Soal A : Mencari T1, T2, T3, T4 jika diketahui m1, m2, m3, m4===<br />
<br />
[[File:Uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung T1, T2, T3, T4 seperti perhitungan di atas:<br />
<br />
import math<br />
<br />
m1 = float(input('Massa M1 (dalam kg): ')) #Menginput nilai m1<br />
m2 = float(input('Massa M2 (dalam kg): ')) #Menginput nilai m2<br />
m3 = float(input('Massa M3 (dalam kg): ')) #Menginput nilai m3<br />
m4 = float(input('Massa M4 (dalam kg): ')) #Menginput nilai m4<br />
g = float(input('Gravitasi (dalam m/s^2): ')) #Menginput nilai g<br />
alfa = float(input('Kemiringan bidang miring (dalam derajat): ')) #Menginput nilai alfa (sudut kemiringan)<br />
<br />
cosalfa = math.cos(math.radians(alfa)) #perhitungan cos alfa<br />
sinalfa = math.sin(math.radians(alfa)) #perhitungan sin alfa<br />
<br />
w1 = m1 * g #perhitungan w1<br />
w2 = m2 * g #perhitungan w2<br />
w3 = m3 * g #perhitungan w3<br />
w4 = m4 * g #perhitungan w4<br />
<br />
N1 = w1 * cosalfa #perhitungan gaya normal benda 1<br />
N2 = w2 * cosalfa #perhitungan gaya normal benda 2<br />
N3 = w3 * cosalfa #perhitungan gaya normal benda 3<br />
<br />
koefisien = float(input("Koefisien gesek: ")) #menginput koefisien gesek<br />
<br />
Fges1 = N1 * koefisien #perhitungan gaya gesek 1<br />
Fges2 = N2 * koefisien #perhitungan gaya gesek 2<br />
Fges3 = N3 * koefisien #perhitungan gaya gesek 3<br />
<br />
F1 = w1 * sinalfa #perhitungan gaya menurun benda 1 (F1)<br />
F2 = w2 * sinalfa #perhitungan gaya menurun benda 2 (F2)<br />
F3 = w3 * sinalfa #perhitungan gaya menurun benda 3 (F3)<br />
<br />
T1 = F1 - Fges1 #perhitungan T1<br />
T2 = F2 - Fges2 + T1 #perhitungan T2<br />
T3 = F3 - Fges3 + T2 #perhitungan T3<br />
T4 = w4 #perhitungan T4<br />
<br />
print("Nilai T1 (dalam Newton) :", T1) #menampilkan nilai T1<br />
print("Nilai T2 (dalam Newton) :", T2) #menampilkan nilai T2<br />
print("Nilai T3 (dalam Newton) :", T3) #menampilkan nilai T3<br />
print("Nilai T4 (dalam Newton) :", T4) #menampilkan nilai T4<br />
<br />
<br />
===Soal B : Mencari t yang diperlukan mobil dari diam hingga mencapai top speed===<br />
<br />
[[File:Uts_soal_b_muhammad.syariifi.jpg|900px]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung t yang diperlukan mobil dari diam hingga mencapai top speed (diketahui) seperti perhitungan di atas:<br />
<br />
Torsimesin = float(input('Torsi dari mesin (Nm): ')) #menginput nilai torsi dari mesin di ban<br />
Ukuranban = float(input('Ukuran ban (inch): ')) #menginput diameter ukuran ban dalam inch<br />
massamobil = float(input('Massa mobil (kg): ')) #menginput massa mobil<br />
<br />
g = float(input('Gravitasi (m/s^2): ')) #menginput nilai gravitasi<br />
N = massamobil * g #perhitungan gaya normal<br />
koefgesek = float(input('Koefisien gesek: ')) #menginput koefisien gesek jalanan<br />
Fgesek = N * koefgesek #perhitungan gaya gesek<br />
<br />
RUB = Ukuranban * 0.0254 / 2 #mengkonversi diameter ban dalam inch ke jari-jari dalam meter<br />
Froda = Torsimesin / RUB #perhitungan gaya ke depan dari roda<br />
<br />
if Fgesek > Froda: #jika gaya gesek lebih besar dari gaya roda, mobil dapat melaju<br />
kmh = float(input('Top speed (km/h): ')) #menginput nilai top speed dalam km/h<br />
topspeed = kmh / 3.6 #mengkonversi top speed dari km/h ke m/s<br />
<br />
Cd = float(input('Coefficient of drag: ')) #menginput coefficient of drag<br />
A = float(input('Area (m^2): ')) #menginput luas area drag<br />
rho = float(input('Massa jenis udara (kg/m^3): ')) #menginput massa jenis udara<br />
Fdrag = Cd * A * rho * topspeed ** 2 #perhitungan gaya drag<br />
<br />
atot = (Froda - Fdrag) / massamobil #perhitungan a total, yaitu a dari roda dikurang a dari drag<br />
<br />
t = topspeed / atot #perhitungan t<br />
print('t (s): ', t) #menampilkan nilai t<br />
<br />
if Froda > Fgesek:<br />
print('Torsi mobil terlalu besar sehingga ban berdecit')<br />
<br />
#jika gaya gesek lebih kecil dari gaya roda, ban berdecit sehingga mobil tidak dapat melaju</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=14973Muhammad Syariifi Muflih2019-10-29T11:18:46Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, Ia mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut Riifi, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, unduh terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, gunakan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang bisa diunduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''<br />
<br />
<br />
<br />
== UTS ==<br />
<br />
===Soal A : Mencari T1, T2, T3, T4 jika diketahui m1, m2, m3, m4===<br />
<br />
[[File:Uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung T1, T2, T3, T4 seperti perhitungan di atas:<br />
<br />
import math<br />
<br />
m1 = float(input('Massa M1 (dalam kg): ')) #Menginput nilai m1<br />
m2 = float(input('Massa M2 (dalam kg): ')) #Menginput nilai m2<br />
m3 = float(input('Massa M3 (dalam kg): ')) #Menginput nilai m3<br />
m4 = float(input('Massa M4 (dalam kg): ')) #Menginput nilai m4<br />
g = float(input('Gravitasi (dalam m/s^2): ')) #Menginput nilai g<br />
alfa = float(input('Kemiringan bidang miring (dalam derajat): ')) #Menginput nilai alfa (sudut kemiringan)<br />
<br />
cosalfa = math.cos(math.radians(alfa)) #perhitungan cos alfa<br />
sinalfa = math.sin(math.radians(alfa)) #perhitungan sin alfa<br />
<br />
w1 = m1 * g #perhitungan w1<br />
w2 = m2 * g #perhitungan w2<br />
w3 = m3 * g #perhitungan w3<br />
w4 = m4 * g #perhitungan w4<br />
<br />
N1 = w1 * cosalfa #perhitungan gaya normal benda 1<br />
N2 = w2 * cosalfa #perhitungan gaya normal benda 2<br />
N3 = w3 * cosalfa #perhitungan gaya normal benda 3<br />
<br />
koefisien = float(input("Koefisien gesek: ")) #menginput koefisien gesek<br />
<br />
Fges1 = N1 * koefisien #perhitungan gaya gesek 1<br />
Fges2 = N2 * koefisien #perhitungan gaya gesek 2<br />
Fges3 = N3 * koefisien #perhitungan gaya gesek 3<br />
<br />
F1 = w1 * sinalfa #perhitungan gaya menurun benda 1 (F1)<br />
F2 = w2 * sinalfa #perhitungan gaya menurun benda 2 (F2)<br />
F3 = w3 * sinalfa #perhitungan gaya menurun benda 3 (F3)<br />
<br />
T1 = F1 - Fges1 #perhitungan T1<br />
T2 = F2 - Fges2 + T1 #perhitungan T2<br />
T3 = F3 - Fges3 + T2 #perhitungan T3<br />
T4 = w4 #perhitungan T4<br />
<br />
print("Nilai T1 (dalam Newton) :", T1) #menampilkan nilai T1<br />
print("Nilai T2 (dalam Newton) :", T2) #menampilkan nilai T2<br />
print("Nilai T3 (dalam Newton) :", T3) #menampilkan nilai T3<br />
print("Nilai T4 (dalam Newton) :", T4) #menampilkan nilai T4<br />
<br />
<br />
===Soal B : Mencari t yang diperlukan mobil dari diam hingga mencapai top speed===<br />
<br />
[[File:Uts_soal_b_muhammad.syariifi.jpg|900px]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung t yang diperlukan mobil dari diam hingga mencapai top speed (diketahui) seperti perhitungan di atas:<br />
<br />
Torsimesin = float(input('Torsi dari mesin (Nm): ')) #menginput nilai torsi dari mesin di ban<br />
Ukuranban = float(input('Ukuran ban (inch): ')) #menginput diameter ukuran ban dalam inch<br />
massamobil = float(input('Massa mobil (kg): ')) #menginput massa mobil<br />
<br />
g = float(input('Gravitasi (m/s^2): ')) #menginput nilai gravitasi<br />
N = massamobil * g #perhitungan gaya normal<br />
koefgesek = float(input('Koefisien gesek: ')) #menginput koefisien gesek jalanan<br />
Fgesek = N * koefgesek #perhitungan gaya gesek<br />
<br />
RUB = Ukuranban * 0.0254 / 2 #mengkonversi diameter ban dalam inch ke jari-jari dalam meter<br />
Froda = Torsimesin / RUB #perhitungan gaya ke depan dari roda<br />
<br />
if Fgesek > Froda: #jika gaya gesek lebih besar dari gaya roda, mobil dapat melaju<br />
kmh = float(input('Top speed (km/h): ')) #menginput nilai top speed dalam km/h<br />
topspeed = kmh / 3.6 #mengkonversi top speed dari km/h ke m/s<br />
<br />
Cd = float(input('Coefficient of drag: ')) #menginput coefficient of drag<br />
A = float(input('Area (m^2): ')) #menginput luas area drag<br />
rho = float(input('Massa jenis udara (kg/m^3): ')) #menginput massa jenis udara<br />
Fdrag = Cd * A * rho * topspeed ** 2 #perhitungan gaya drag<br />
<br />
atot = (Froda - Fdrag) / massamobil #perhitungan a total, yaitu a dari roda dikurang a dari drag<br />
<br />
t = topspeed / atot #perhitungan t<br />
print('t (s): ', t) #menampilkan nilai t<br />
<br />
if Froda > Fgesek: #jika gaya gesek lebih kecil dari gaya roda, ban berdecit sehingga mobil tidak dapat melaju<br />
print('Torsi mobil terlalu besar sehingga ban berdecit')</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=14971Muhammad Syariifi Muflih2019-10-29T11:07:23Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, Ia mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut Riifi, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, unduh terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, gunakan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang bisa diunduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''<br />
<br />
<br />
<br />
== UTS ==<br />
<br />
===Soal A : Mencari T1, T2, T3, T4 jika diketahui m1, m2, m3, m4===<br />
<br />
[[File:Uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung T1, T2, T3, T4 seperti perhitungan di atas:<br />
<br />
import math<br />
<br />
m1 = float(input('Massa M1 (dalam kg): ')) #Menginput nilai m1<br />
m2 = float(input('Massa M2 (dalam kg): ')) #Menginput nilai m2<br />
m3 = float(input('Massa M3 (dalam kg): ')) #Menginput nilai m3<br />
m4 = float(input('Massa M4 (dalam kg): ')) #Menginput nilai m4<br />
g = float(input('Gravitasi (dalam m/s^2): ')) #Menginput nilai g<br />
alfa = float(input('Kemiringan bidang miring (dalam derajat): ')) #Menginput nilai alfa (sudut kemiringan)<br />
<br />
cosalfa = math.cos(math.radians(alfa)) #perhitungan cos alfa<br />
sinalfa = math.sin(math.radians(alfa)) #perhitungan sin alfa<br />
<br />
w1 = m1 * g #perhitungan w1<br />
w2 = m2 * g #perhitungan w2<br />
w3 = m3 * g #perhitungan w3<br />
w4 = m4 * g #perhitungan w4<br />
<br />
N1 = w1 * cosalfa #perhitungan gaya normal benda 1<br />
N2 = w2 * cosalfa #perhitungan gaya normal benda 2<br />
N3 = w3 * cosalfa #perhitungan gaya normal benda 3<br />
<br />
koefisien = float(input("Koefisien gesek: ")) #menginput koefisien gesek<br />
<br />
Fges1 = N1 * koefisien #perhitungan gaya gesek 1<br />
Fges2 = N2 * koefisien #perhitungan gaya gesek 2<br />
Fges3 = N3 * koefisien #perhitungan gaya gesek 3<br />
<br />
F1 = w1 * sinalfa #perhitungan gaya menurun benda 1 (F1)<br />
F2 = w2 * sinalfa #perhitungan gaya menurun benda 2 (F2)<br />
F3 = w3 * sinalfa #perhitungan gaya menurun benda 3 (F3)<br />
<br />
T1 = F1 - Fges1 #perhitungan T1<br />
T2 = F2 - Fges2 + T1 #perhitungan T2<br />
T3 = F3 - Fges3 + T2 #perhitungan T3<br />
T4 = w4 #perhitungan T4<br />
<br />
print("Nilai T1 (dalam Newton) :", T1) #menampilkan nilai T1<br />
print("Nilai T2 (dalam Newton) :", T2) #menampilkan nilai T2<br />
print("Nilai T3 (dalam Newton) :", T3) #menampilkan nilai T3<br />
print("Nilai T4 (dalam Newton) :", T4) #menampilkan nilai T4<br />
<br />
<br />
===Soal B : Mencari t yang diperlukan mobil dari diam hingga mencapai top speed===<br />
<br />
[[File:Uts_soal_b_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung t yang diperlukan mobil dari diam hingga mencapai top speed (diketahui) seperti perhitungan di atas:<br />
<br />
Torsimesin = float(input('Torsi dari mesin (Nm): '))<br />
Ukuranban = float(input('Ukuran ban (inch): '))<br />
massamobil = float(input('Massa mobil (kg): '))<br />
<br />
g = float(input('Gravitasi (m/s^2): '))<br />
N = massamobil * g<br />
koefgesek = float(input('Koefisien gesek: '))<br />
Fgesek = N * koefgesek<br />
<br />
RUB = Ukuranban * 0.0254 / 2<br />
Froda = Torsimesin / RUB<br />
<br />
if Fgesek > Froda:<br />
kmh = float(input('Top speed (km/h): '))<br />
topspeed = kmh / 3.6<br />
<br />
Cd = float(input('Coefficient of drag: '))<br />
A = float(input('Area (m^2): '))<br />
rho = float(input('Massa jenis udara (kg/m^3): '))<br />
Fdrag = Cd * A * rho * topspeed ** 2<br />
<br />
atot = (Froda - Fdrag) / massamobil<br />
<br />
t = topspeed / atot<br />
print('t (s): ', t)<br />
<br />
if Froda > Fgesek:<br />
print('Torsi mobil terlalu besar sehingga ban berdecit')</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:Uts_soal_b_muhammad.syariifi.jpg&diff=14970File:Uts soal b muhammad.syariifi.jpg2019-10-29T11:04:59Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=14942Muhammad Syariifi Muflih2019-10-29T08:30:19Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, Ia mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut Riifi, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, unduh terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, gunakan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang bisa diunduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''<br />
<br />
<br />
<br />
== UTS ==<br />
<br />
===Soal A : Mencari T1, T2, T3, T4 jika diketahui m1, m2, m3, m4===<br />
<br />
[[File:Uts_soal_a_muhammad.syariifi.png]]<br />
<br />
<br />
<br />
<br />
Berikut kode yang saya gunakan untuk menghitung T1, T2, T3, T4 seperti perhitungan di atas:<br />
<br />
import math<br />
<br />
m1 = float(input('Massa M1 (dalam kg): ')) #Menginput nilai m1<br />
m2 = float(input('Massa M2 (dalam kg): ')) #Menginput nilai m2<br />
m3 = float(input('Massa M3 (dalam kg): ')) #Menginput nilai m3<br />
m4 = float(input('Massa M4 (dalam kg): ')) #Menginput nilai m4<br />
g = float(input('Gravitasi (dalam m/s^2): ')) #Menginput nilai g<br />
alfa = float(input('Kemiringan bidang miring (dalam derajat): ')) #Menginput nilai alfa (sudut kemiringan)<br />
<br />
cosalfa = math.cos(math.radians(alfa)) #perhitungan cos alfa<br />
sinalfa = math.sin(math.radians(alfa)) #perhitungan sin alfa<br />
<br />
w1 = m1 * g #perhitungan w1<br />
w2 = m2 * g #perhitungan w2<br />
w3 = m3 * g #perhitungan w3<br />
w4 = m4 * g #perhitungan w4<br />
<br />
N1 = w1 * cosalfa #perhitungan gaya normal benda 1<br />
N2 = w2 * cosalfa #perhitungan gaya normal benda 2<br />
N3 = w3 * cosalfa #perhitungan gaya normal benda 3<br />
<br />
koefisien = float(input("Koefisien gesek: ")) #menginput koefisien gesek<br />
<br />
Fges1 = N1 * koefisien #perhitungan gaya gesek 1<br />
Fges2 = N2 * koefisien #perhitungan gaya gesek 2<br />
Fges3 = N3 * koefisien #perhitungan gaya gesek 3<br />
<br />
F1 = w1 * sinalfa #perhitungan gaya menurun benda 1 (F1)<br />
F2 = w2 * sinalfa #perhitungan gaya menurun benda 2 (F2)<br />
F3 = w3 * sinalfa #perhitungan gaya menurun benda 3 (F3)<br />
<br />
T1 = F1 - Fges1 #perhitungan T1<br />
T2 = F2 - Fges2 + T1 #perhitungan T2<br />
T3 = F3 - Fges3 + T2 #perhitungan T3<br />
T4 = w4 #perhitungan T4<br />
<br />
print("Nilai T1 (dalam Newton) :", T1) #menampilkan nilai T1<br />
print("Nilai T2 (dalam Newton) :", T2) #menampilkan nilai T2<br />
print("Nilai T3 (dalam Newton) :", T3) #menampilkan nilai T3<br />
print("Nilai T4 (dalam Newton) :", T4) #menampilkan nilai T4<br />
<br />
<br />
===Soal B : ===<br />
<br />
Torsimesin = float(input('Torsi mesin (Nm): '))<br />
Ukuranban = float(input('Ukuran ban (inch): '))<br />
Beratmobil = float(input('Berat mobil (kg): '))<br />
N = Beratmobil * 9.8<br />
koefisien = float(input('Koefisien gesek: '))<br />
Fgesek = N * koefisien<br />
RUB = Ukuranban * 0.0254 / 2<br />
Froda = Torsimesin / RUB<br />
if Fgesek > Froda:<br />
F = Froda<br />
a = F / Beratmobil<br />
t = float(input('Masukkan t: '))<br />
Vt = a * t<br />
print("Vt: ", Vt, "m/s")<br />
if Froda > Fgesek:<br />
print('Torsi mobil terlalu besar sehingga ban berdecit')</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:Uts_soal_a_muhammad.syariifi.png&diff=14939File:Uts soal a muhammad.syariifi.png2019-10-29T08:27:13Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=14934Muhammad Syariifi Muflih2019-10-29T08:14:42Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, Ia mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut Riifi, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, unduh terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, gunakan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang bisa diunduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''<br />
<br />
<br />
<br />
== UTS ==<br />
<br />
===Soal A : Mencari T1, T2, T3, T4 jika diketahui m1, m2, m3, m4===<br />
<br />
import math<br />
<br />
m1 = float(input('Massa M1 (dalam kg): ')) #Menginput nilai m1<br />
m2 = float(input('Massa M2 (dalam kg): ')) #Menginput nilai m2<br />
m3 = float(input('Massa M3 (dalam kg): ')) #Menginput nilai m3<br />
m4 = float(input('Massa M4 (dalam kg): ')) #Menginput nilai m4<br />
g = float(input('Gravitasi (dalam m/s^2): ')) #Menginput nilai g<br />
alfa = float(input('Kemiringan bidang miring (dalam derajat): ')) #Menginput nilai alfa (sudut kemiringan)<br />
<br />
cosalfa = math.cos(math.radians(alfa)) #perhitungan cos alfa<br />
sinalfa = math.sin(math.radians(alfa)) #perhitungan sin alfa<br />
<br />
w1 = m1 * g #perhitungan w1<br />
w2 = m2 * g #perhitungan w2<br />
w3 = m3 * g #perhitungan w3<br />
w4 = m4 * g #perhitungan w4<br />
<br />
N1 = w1 * cosalfa #perhitungan gaya normal benda 1<br />
N2 = w2 * cosalfa #perhitungan gaya normal benda 2<br />
N3 = w3 * cosalfa #perhitungan gaya normal benda 3<br />
<br />
koefisien = float(input("Koefisien gesek: ")) #menginput koefisien gesek<br />
<br />
Fges1 = N1 * koefisien #perhitungan gaya gesek 1<br />
Fges2 = N2 * koefisien #perhitungan gaya gesek 2<br />
Fges3 = N3 * koefisien #perhitungan gaya gesek 3<br />
<br />
F1 = w1 * sinalfa #perhitungan gaya menurun benda 1 (F1)<br />
F2 = w2 * sinalfa #perhitungan gaya menurun benda 2 (F2)<br />
F3 = w3 * sinalfa #perhitungan gaya menurun benda 3 (F3)<br />
<br />
T1 = F1 - Fges1 #perhitungan T1<br />
T2 = F2 - Fges2 + T1 #perhitungan T2<br />
T3 = F3 - Fges3 + T2 #perhitungan T3<br />
T4 = w4 #perhitungan T4<br />
<br />
print("Nilai T1 (dalam Newton) :", T1) #menampilkan nilai T1<br />
print("Nilai T2 (dalam Newton) :", T2) #menampilkan nilai T2<br />
print("Nilai T3 (dalam Newton) :", T3) #menampilkan nilai T3<br />
print("Nilai T4 (dalam Newton) :", T4) #menampilkan nilai T4<br />
<br />
<br />
===Soal B : ===<br />
<br />
Torsimesin = float(input('Torsi mesin (Nm): '))<br />
Ukuranban = float(input('Ukuran ban (inch): '))<br />
Beratmobil = float(input('Berat mobil (kg): '))<br />
N = Beratmobil * 9.8<br />
koefisien = float(input('Koefisien gesek: '))<br />
Fgesek = N * koefisien<br />
RUB = Ukuranban * 0.0254 / 2<br />
Froda = Torsimesin / RUB<br />
if Fgesek > Froda:<br />
F = Froda<br />
a = F / Beratmobil<br />
t = float(input('Masukkan t: '))<br />
Vt = a * t<br />
print("Vt: ", Vt, "m/s")<br />
if Froda > Fgesek:<br />
print('Torsi mobil terlalu besar sehingga ban berdecit')</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=14236Muhammad Syariifi Muflih2019-10-23T10:58:49Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, Ia mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut Riifi, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, unduh terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, gunakan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang bisa diunduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''<br />
<br />
<br />
<br />
== UTS ==<br />
<br />
Nomor I<br />
<br />
<br />
<br />
<br />
Nomor II<br />
<br />
Torsimesin = float(input('Torsi mesin (Nm): '))<br />
Ukuranban = float(input('Ukuran ban (inch): '))<br />
Beratmobil = float(input('Berat mobil (kg): '))<br />
N = Beratmobil * 9.8<br />
koefisien = float(input('Koefisien gesek: '))<br />
Fgesek = N * koefisien<br />
RUB = Ukuranban * 0.0254 / 2<br />
Froda = Torsimesin / RUB<br />
if Fgesek > Froda:<br />
F = Froda<br />
a = F / Beratmobil<br />
t = float(input('Masukkan t: '))<br />
Vt = a * t<br />
print("Vt: ", Vt, "m/s")<br />
if Froda > Fgesek:<br />
print('Torsi mobil terlalu besar sehingga ban berdecit')</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=13599Muhammad Syariifi Muflih2019-10-16T16:18:52Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, Ia mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut Riifi, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, unduh terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, gunakan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang bisa diunduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''[2, -2, 1, 1, -1]'''<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): # dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") :", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: '''Nilai y(0.03) : 0.8869291754400297'''</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Muhammad_Syariifi_Muflih&diff=13581Muhammad Syariifi Muflih2019-10-16T16:09:42Z<p>Muhammad.syariifi: </p>
<hr />
<div>[[File:Muhammad Syariifi Muflih.jpeg|thumb|Riifi di tahun 2019]]<br />
<br />
'''Muhammad Syariifi Muflih''' (lahir di Jakarta, 26 Agustus 2000) adalah mahasiswa [http://eng.ui.ac.id Fakultas Teknik Universitas Indonesia] jurusan Teknik Mesin angkatan 2018. Setelah mengikuti kuliah selama dua semester, Ia mengambil mata kuliah Metode Numerik di semester 3 dan mengisi halaman yang Anda lihat sekarang ini.<br />
__FORCETOC__<br />
== Kelas Metode Numerik ==<br />
===Mengapa Harus Belajar Kalkulus?===<br />
<br />
Menurut Riifi, seorang mahasiswa Teknik Mesin harus mempelajari kalkulus karena merupakan dasar menghitung untuk berbagai macam masalah di dalam mata kuliah Fisika Dasar, Statika Struktur, Mekanika Kekuatan Material, Kinematika & Dinamika, dan lainnya yang memperlukan kalkulasi.<br />
<br />
===Apa itu Python?===<br />
<br />
Python adalah salah satu jenis bahasa pemrograman yang digunakan untuk membuat program dengan tujuan menyelesaikan suatu masalah.<br />
<br />
[[File:Python-Programming-RoboDK-API.png|thumb|center|Contoh bahasa pemrograman Python untuk memprogram robot menggambar hexagon]]<br />
<br />
<br />
== Belajar Python ==<br />
Pertama-tama sebelum memulai mempelajari python, unduh terlebih dahulu di http://www.python.org/downloads. Setelah python diinstall, gunakan program text editor untuk menulis code-code python seperti Notepad, namun ada text editor yang digunakan khusus untuk menulis code-code python yang dinamakan IDE (Integrated Development Environment). Salah satu IDE tersebut adalah PyCharm, yang bisa diunduh di https://www.jetbrains.com/pycharm. Di dalam PyCharm, create new project untuk membuat project baru, kemudian klik kanan di folder project tersebut -> New -> Python file.<br />
<br />
===Istilah-istilah dasar dalam Python===<br />
<br />
String = Text di antara kedua tanda kutip ("). Contoh string: "Belajar Python"<br />
<br />
Number = Angka di antara kedua tanda kutip ("). Contoh number: "50" , "3.14"<br />
<br />
Variable = Container yang bisa menyimpan nilai data tertentu. Suatu nilai data dapat disimpan di dalam variable. Untuk membuat variabel: *masukkan nama variable* = *data yang ingin diinput*. Nama variabel tidak boleh ada spasi namun dapat diganti dengan underscore (_). Contoh variable: character_name = Muhammad Syariifi Muflih<br />
<br />
===Membuat kalkulator sederhana dengan Python===<br />
<br />
Terdapat 2 jenis angka:<br />
<br />
Int (integer) = bilangan bulat (tidak termasuk pecahan/desimal)<br />
<br />
Float = bilangan yang termasuk pecahan/desimal<br />
<br />
Untuk membuat kalkulator ini, saya menggunakan 3 variable, 1 untuk angka pertama, 1 untuk angka kedua, dan 1 untuk operator (+ - x /)<br />
<br />
num1 = float(input("enter first number: "))<br />
op = input("enter operator: ")<br />
num2 = float(input("enter second number: "))<br />
if op == "+":<br />
print(num1 + num2)<br />
elif op == "-":<br />
print(num1 - num2)<br />
elif op == "*":<br />
print(num1 * num2)<br />
elif op == "/":<br />
print(num1 / num2)<br />
else:<br />
print("Invalid operator")<br />
<br />
Setelah code-code di atas tertulis, klik Run dan kalkulator siap digunakan untuk operasi + - x /<br />
<br />
[[File:Basic calc python.png]]<br />
<br />
<br />
<br />
===Menghitung (x^2-1)/(x-1) dengan Python===<br />
<br />
Karena soal tersebut jika dihitung akan menghasilkan x + 1 , maka berikut adalah code yang saya gunakan untuk menghitung soal di atas dengan Python:<br />
<br />
print("(x^2-1)/(x-1)")<br />
num1 = float(input("enter x: "))<br />
print(num1 + 1)<br />
<br />
[[File:(x^2-1)bagi(x-1).png]]<br />
<br />
<br />
<br />
===Python Tuples===<br />
<br />
tuple = ("Muhammad","Syariifi","Muflih","Riifi",(26,8,2000))<br />
name1,name2,name3,surname,born = tuple<br />
print("Nama saya",name1,name2,name3,", biasa dipanggil",surname,". Saya muncul di bumi pada tanggal",born[0],"bulan",born[1],"tahun",born[2],".")<br />
<br />
Run kode di atas menghasilkan:<br />
Nama saya Muhammad Syariifi Muflih , biasa dipanggil Riifi . Saya muncul di bumi pada tanggal 26 bulan 8 tahun 2000 .<br />
<br />
<br />
<br />
===Python Lists===<br />
<br />
matakuliah = ["Termodinamika", "Visualisasi Permodelan Mesin", "Metode Numerik"]<br />
print("Mata kuliah hari Rabu:")<br />
for x in matakuliah:<br />
print(x)<br />
<br />
Run kode di atas menghasilkan:<br />
Mata kuliah hari Rabu:<br />
Termodinamika<br />
Visualisasi Permodelan Mesin<br />
Metode Numerik<br />
<br />
<br />
<br />
== Menentukan Suku Ke-n Deret Fibonacci dengan Python ==<br />
<br />
===Algoritma===<br />
<br />
1. Mulai<br />
<br />
2. Tentukan definisi n<br />
<br />
3. Tentukan nilai a=0 , b=1<br />
<br />
4. Jika n<0, print "Incorrect input"<br />
<br />
5. Dan jika n=0, kembali ke a<br />
<br />
6. Dan jika n=1, kembali ke b<br />
<br />
7. Selain itu, untuk i di range 2 dan seterusnya: c = a + b, a = b, b = c, return b<br />
<br />
8. Input nilai n<br />
<br />
9. Selesai<br />
<br />
<br />
<br />
===Flowchart===<br />
<br />
[[File:Flowchart_fibonacci_muhammad.syariifi.jpg]]<br />
<br />
<br />
<br />
===Kode di Python===<br />
<br />
def fibonacci(n):<br />
a = 0<br />
b = 1<br />
if n < 0:<br />
print("Incorrect input")<br />
elif n == 0:<br />
return a<br />
elif n == 1:<br />
return b<br />
else:<br />
for i in range(2,n):<br />
c = a + b<br />
a = b<br />
b = c<br />
return b<br />
sukuken = int(input('enter n: '))<br />
print(fibonacci(sukuken))<br />
<br />
[[File:fibonacci_muhammad.syariifi.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai n = 15, program menampilkan suku ke-15 dari deret fibonacci yaitu 377.<br />
<br />
<br />
<br />
== QUIZ 16 Oktober 2019 ==<br />
<br />
===Problem 2.1 No. 6 Hlm. 55===<br />
<br />
from numpy import linalg<br />
import numpy as np<br />
A = np.array([[0, 0, 2, 1, 2], # input matriks A<br />
[0, 1, 0, 2, -1],<br />
[1, 2, 0, -2, 0],<br />
[0, 0, 0, -1, 1],<br />
[0, 1, -1, 1, -1]])<br />
B = np.array([[1], # input matriks B<br />
[1],<br />
[-4],<br />
[-2],<br />
[-1]])<br />
hasil = np.linalg.solve(A, B) # operasi aljabar<br />
print(hasil) # memperlihatkan hasil<br />
<br />
Hasil dari soal menggunakan run kode di atas: 2, -2, 1, 1, -1<br />
<br />
===Problem 7.1 No. 2 Hlm. 263===<br />
<br />
x0 = 0 # x0 dan y sebagai titik asal, x yaitu 0.03 (diminta soal), dan h sebagai tingkat peningkatan<br />
y = 1 # pada x = 0 , y = 1<br />
h = 0.01 # di sini digunakan h = 0.01<br />
x = 0.03<br />
<br />
def dydx(x, y): #dydx menyatakan persamaan awal di soal<br />
return (x**2 - 4*y) # dari soal, y' = x^2 - 4y<br />
<br />
def rangekutta(x0, y0, x, h): # perhitungan range-kutta<br />
n = (int)((x - x0)/h) <br />
y = y0 <br />
for i in range(1, n + 1): <br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) # untuk y selanjutnya<br />
x0 = x0 + h # untuk x selanjutnya<br />
return y <br />
<br />
print("Nilai y(", x, ") adalah", rangekutta(x0, y, x, h)) # memperlihatkan nilai y pada x = 0.03<br />
<br />
Hasil dari soal menggunakan run kode di atas: Nilai y(0.03) adalah 0.8869291754400297</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Kelompok_14&diff=13449Kelompok 142019-10-16T08:28:30Z<p>Muhammad.syariifi: </p>
<hr />
<div><br />
=== Anggota Kelompok 14 ===<br />
<br />
Muhammad Syariifi Muflih (1806149210)<br />
<br />
Fabio Almer Agoes (1806201296)<br />
<br />
Oimolala Putrawan (1706036412)<br />
<br />
== Eliminasi Gauss-Jordan ==<br />
<br />
=== Pengertian ===<br />
<br />
Eliminasi Gauss-Jordan adalah prosedur pemecahan sistem persamaan linear dengan mengubahnya menjadi bentuk matriks '''eselon baris tereduksi''' dengan metode '''operasi baris elementer'''.<br />
<br />
Contoh soal:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
Pertama, sistem persamaan linear yang ingin dipecahkan diubah ke matriks:<br />
<br />
[[File:K14-mengubah_spl_ke_matriks.png|thumb|center]]<br />
<br />
Kemudian, dengan operasi baris elementer, matriks tersebut diubah menjadi matriks eselon baris '''(gauss)''', kemudian diubah lagi menjadi matriks eselon baris tereduksi '''(gauss-jordan)'''.<br />
<br />
[[File:K14-Ilustrasi-eliminasi-gauss-jordan.jpg|thumb|center]]<br />
<br />
Berikut penyelesaian secara manual:<br />
<br />
[[File:K14-obe.png]]<br />
<br />
<br />
=== Menyelesaikan SPL dengan Eliminasi Gauss-Jordan menggunakan Python ===<br />
<br />
Contoh soal sistem persamaan linear 3 variabel:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
<br />
Berikut kode yang kami gunakan di python:<br />
<br />
[[File:K14-gauss-jordan elimination.png]]<br />
<br />
=== Video ===<br />
<br />
[[File:K14-metnum_gauss-jordan.mp4]]<br />
<br />
<br />
<br />
== Menyelesaikan Soal dengan Runge-Kutta ==<br />
<br />
[[File:K14-Runge_kutta_2.png]]<br />
<br />
=== Algoritma ===<br />
<br />
=== Flowchart ===<br />
<br />
=== Kode di python ===<br />
<br />
# x0 dan y sebagai titik asal, x sebagai t yang diinput, dan h sebagai tingkat peningkatan, di sini digunakan h = 0.001 supaya cukup akurat<br />
x0 = 0<br />
y = 0<br />
h = 0.001<br />
x = float(input("Nilai t: ")) # perintah untuk memasukkan nilai t sebagai x<br />
<br />
if 0 <= x < 2: # untuk 0 <= t < 2<br />
def dydx(x, y): # dydx menyatakan persamaan awal dalam soal<br />
return (4 * x - 30 * y) # diperoleh 4x - 30y karena diketahui di soal m = 2,5 kg dan k = 75 N/m, P(t) dinyatakan dalam x<br />
<br />
def rungeKutta(x0, y0, x, h): # perhitungan Runge-Kutta<br />
n = (int)((x - x0) / h)<br />
y = y0<br />
for i in range(1, n + 1):<br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
x0 = x0 + h<br />
return y<br />
<br />
print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h))<br />
<br />
elif x >= 2: # untuk t > 2<br />
def dydx(x, y): # dydx menyatakan persamaan awal dalam soal<br />
return (8 - 30 * y) # diperoleh 8 - 30y karena diketahui di soal P(t) = 20 N , m = 2,5 kg , k = 75 N/m<br />
<br />
def rungeKutta(x0, y0, x, h): # perhitungan Runge-Kutta<br />
n = (int)((x - x0) / h)<br />
y = y0<br />
for i in range(1, n + 1):<br />
k1 = h * dydx(x0, y)<br />
k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)<br />
k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)<br />
k4 = h * dydx(x0 + h, y + k3)<br />
y = y + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)<br />
x0 = x0 + h<br />
return y<br />
<br />
print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h)) # print nilai y pada t yang diinput<br />
<br />
else:<br />
print("Nilai t harus positif.") # memberitahu nilai t harus positif jika t yang dimasukkan negatif<br />
<br />
[[File:K14-Runge_kutta.png]]<br />
<br />
Run dari kode di atas, ketika dimasukkan t = 2, program menampilkan nilai y pada t = 2 yaitu 0.2666666666666658</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:K14-Runge_kutta_2.png&diff=13447File:K14-Runge kutta 2.png2019-10-16T08:27:08Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:K14-Runge_kutta.png&diff=13446File:K14-Runge kutta.png2019-10-16T08:24:02Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Kelompok_14&diff=13330Kelompok 142019-10-15T14:49:30Z<p>Muhammad.syariifi: </p>
<hr />
<div><br />
=== Anggota Kelompok 14 ===<br />
<br />
Muhammad Syariifi Muflih (1806149210)<br />
<br />
Fabio Almer Agoes (1806201296)<br />
<br />
Oimolala Putrawan (1706036412)<br />
<br />
== Eliminasi Gauss-Jordan ==<br />
<br />
=== Pengertian ===<br />
<br />
Eliminasi Gauss-Jordan adalah prosedur pemecahan sistem persamaan linear dengan mengubahnya menjadi bentuk matriks '''eselon baris tereduksi''' dengan metode '''operasi baris elementer'''.<br />
<br />
Contoh soal:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
Pertama, sistem persamaan linear yang ingin dipecahkan diubah ke matriks:<br />
<br />
[[File:K14-mengubah_spl_ke_matriks.png|thumb|center]]<br />
<br />
Kemudian, dengan operasi baris elementer, matriks tersebut diubah menjadi matriks eselon baris '''(gauss)''', kemudian diubah lagi menjadi matriks eselon baris tereduksi '''(gauss-jordan)'''.<br />
<br />
[[File:K14-Ilustrasi-eliminasi-gauss-jordan.jpg|thumb|center]]<br />
<br />
Berikut penyelesaian secara manual:<br />
<br />
[[File:K14-obe.png]]<br />
<br />
<br />
=== Menyelesaikan SPL dengan Eliminasi Gauss-Jordan menggunakan Python ===<br />
<br />
Contoh soal sistem persamaan linear 3 variabel:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
<br />
Berikut kode yang kami gunakan di python:<br />
<br />
[[File:K14-gauss-jordan elimination.png]]<br />
<br />
=== Video ===<br />
<br />
[[File:K14-metnum_gauss-jordan.mp4]]</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:K14-gauss-jordan_elimination.png&diff=13329File:K14-gauss-jordan elimination.png2019-10-15T14:49:24Z<p>Muhammad.syariifi: Muhammad.syariifi uploaded a new version of File:K14-gauss-jordan elimination.png</p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Kelompok_14&diff=13324Kelompok 142019-10-15T14:26:30Z<p>Muhammad.syariifi: </p>
<hr />
<div><br />
=== Anggota Kelompok 14 ===<br />
<br />
Muhammad Syariifi Muflih (1806149210)<br />
<br />
Fabio Almer Agoes (1806201296)<br />
<br />
Oimolala Putrawan (1706036412)<br />
<br />
== Eliminasi Gauss-Jordan ==<br />
<br />
=== Pengertian ===<br />
<br />
Eliminasi Gauss-Jordan adalah prosedur pemecahan sistem persamaan linear dengan mengubahnya menjadi bentuk matriks '''eselon baris tereduksi''' dengan metode '''operasi baris elementer'''.<br />
<br />
Contoh soal:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
Pertama, sistem persamaan linear yang ingin dipecahkan diubah ke matriks:<br />
<br />
[[File:K14-mengubah_spl_ke_matriks.png|thumb|center]]<br />
<br />
Kemudian, dengan operasi baris elementer, matriks tersebut diubah menjadi matriks eselon baris '''(gauss)''', kemudian diubah lagi menjadi matriks eselon baris tereduksi '''(gauss-jordan)'''.<br />
<br />
[[File:K14-Ilustrasi-eliminasi-gauss-jordan.jpg|thumb|center]]<br />
<br />
Berikut penyelesaian secara manual:<br />
<br />
[[File:K14-obe.png]]<br />
<br />
<br />
=== Menyelesaikan SPL dengan Eliminasi Gauss-Jordan menggunakan Python ===<br />
<br />
Contoh soal sistem persamaan linear 3 variabel:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
<br />
Berikut kode yang kami gunakan di python:<br />
<br />
[[File:K14-gauss-jordan elimination.png]]<br />
<br />
<br />
<br />
[[File:K14-metnum_gauss-jordan.mp4]]</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:K14-metnum_gauss-jordan.mp4&diff=13323File:K14-metnum gauss-jordan.mp42019-10-15T14:21:35Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:K14-gauss-jordan_elimination.png&diff=13322File:K14-gauss-jordan elimination.png2019-10-15T14:19:14Z<p>Muhammad.syariifi: Muhammad.syariifi uploaded a new version of File:K14-gauss-jordan elimination.png</p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Kelompok_14&diff=13314Kelompok 142019-10-15T12:24:20Z<p>Muhammad.syariifi: </p>
<hr />
<div><br />
=== Anggota Kelompok 14 ===<br />
<br />
Muhammad Syariifi Muflih (1806149210)<br />
<br />
Fabio Almer Agoes (1806201296)<br />
<br />
Oimolala Putrawan (1706036412)<br />
<br />
== Eliminasi Gauss-Jordan ==<br />
<br />
=== Pengertian ===<br />
<br />
Eliminasi Gauss-Jordan adalah prosedur pemecahan sistem persamaan linear dengan mengubahnya menjadi bentuk matriks '''eselon baris tereduksi''' dengan '''Operasi Baris Elementer'''.<br />
<br />
Contoh soal:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
Pertama, sistem persamaan linear yang ingin dipecahkan diubah ke matriks:<br />
<br />
[[File:K14-mengubah_spl_ke_matriks.png]]<br />
<br />
Kemudian, dengan operasi baris elementer, matriks tersebut diubah menjadi matriks eselon baris '''(gauss)''', kemudian diubah lagi menjadi matriks eselon baris tereduksi '''(gauss-jordan)'''.<br />
<br />
[[File:K14-Ilustrasi-eliminasi-gauss-jordan.jpg]]<br />
<br />
Berikut penyelesaian secara manual:<br />
<br />
[[File:K14-obe.png]]<br />
<br />
<br />
=== Menyelesaikan SPL dengan Eliminasi Gauss-Jordan menggunakan Python ===<br />
<br />
Contoh soal sistem persamaan linear 3 variabel:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
<br />
Berikut kode yang kami gunakan di python:<br />
<br />
[[File:K14-gauss-jordan elimination.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai dari matriks A (yaitu persamaan linear yang ingin dicari solusinya) dan matriks B (konstanta persamaan di sebelah tanda "="), program menampilkan solusi dari x (X1), y (X2), dan z (X3).</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:K14-obe.png&diff=13313File:K14-obe.png2019-10-15T12:21:43Z<p>Muhammad.syariifi: </p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:K14-mengubah_spl_ke_matriks.png&diff=13312File:K14-mengubah spl ke matriks.png2019-10-15T12:17:53Z<p>Muhammad.syariifi: Muhammad.syariifi uploaded a new version of File:K14-mengubah spl ke matriks.png</p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Kelompok_14&diff=12589Kelompok 142019-10-02T04:50:50Z<p>Muhammad.syariifi: </p>
<hr />
<div><br />
=== Anggota Kelompok 14 ===<br />
<br />
Muhammad Syariifi Muflih (1806149210)<br />
<br />
Fabio Almer Agoes (1806201296)<br />
<br />
Oimolala Putrawan (1706036412)<br />
<br />
== Eliminasi Gauss-Jordan ==<br />
<br />
=== Pengertian ===<br />
<br />
Eliminasi Gauss-Jordan adalah prosedur pemecahan sistem persamaan linear dengan mengubahnya menjadi bentuk matriks '''eselon baris tereduksi''' dengan '''Operasi Baris Elementer'''.<br />
<br />
Pertama, sistem persamaan linear yang ingin dipecahkan diubah ke matriks:<br />
<br />
[[File:K14-mengubah_spl_ke_matriks.png]]<br />
<br />
Kemudian, dengan operasi baris elementer, matriks tersebut diubah menjadi matriks eselon baris '''(gauss)''', kemudian diubah lagi menjadi matriks eselon baris tereduksi '''(gauss-jordan)'''.<br />
<br />
[[File:K14-Ilustrasi-eliminasi-gauss-jordan.jpg]]<br />
<br />
=== Menyelesaikan SPL dengan Eliminasi Gauss-Jordan menggunakan Python ===<br />
<br />
Contoh soal sistem persamaan linear 3 variabel:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
<br />
Berikut kode yang kami gunakan di python:<br />
<br />
[[File:K14-gauss-jordan elimination.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai dari matriks A (yaitu persamaan linear yang ingin dicari solusinya) dan matriks B (konstanta persamaan di sebelah tanda "="), program menampilkan solusi dari x (X1), y (X2), dan z (X3).</div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=File:K14-mengubah_spl_ke_matriks.png&diff=12588File:K14-mengubah spl ke matriks.png2019-10-02T04:46:34Z<p>Muhammad.syariifi: Muhammad.syariifi uploaded a new version of File:K14-mengubah spl ke matriks.png</p>
<hr />
<div></div>Muhammad.syariifihttp://air.eng.ui.ac.id/index.php?title=Kelompok_14&diff=12584Kelompok 142019-10-02T04:30:18Z<p>Muhammad.syariifi: </p>
<hr />
<div><br />
=== Anggota Kelompok 14 ===<br />
<br />
Muhammad Syariifi Muflih (1806149210)<br />
<br />
Fabio Almer Agoes (1806201296)<br />
<br />
Oimolala Putrawan (1706036412)<br />
<br />
== Eliminasi Gauss-Jordan ==<br />
<br />
=== Pengertian ===<br />
<br />
Eliminasi Gauss-Jordan adalah prosedur pemecahan sistem persamaan linear dengan mengubahnya menjadi bentuk matriks '''eselon baris tereduksi''' dengan '''Operasi Baris Elementer'''.<br />
<br />
Pertama, sistem persamaan linear yang ingin dipecahkan diubah ke matriks:<br />
<br />
[[File:K14-mengubah_spl_ke_matriks.png]]<br />
<br />
Kemudian, dengan operasi baris elementer, matriks tersebut diubah menjadi matriks eselon baris '''(gauss)''', kemudian diubah lagi menjadi matriks eselon baris tereduksi '''(gauss-jordan)'''.<br />
<br />
[[File:K14-Ilustrasi-eliminasi-gauss-jordan.jpg]]<br />
<br />
=== Menyelesaikan SPL dengan Eliminasi Gauss-Jordan menggunakan Python ===<br />
<br />
Contoh soal sistem persamaan linear 3 variabel:<br />
<br />
x + y – z = –3<br />
<br />
x + 2y + z = 7<br />
<br />
2x + y + z = 4<br />
<br />
<br />
Berikut kode yang kami gunakan di python:<br />
import numpy as np<br />
A = np.array([[1, 1, -1],<br />
[1, 2, 1],<br />
[2, 1, 1]])<br />
B = np.array([[-3],<br />
[7],<br />
[4]])<br />
n = len(A)<br />
for k in range(0, n-1):<br />
for i in range(n-1, k, -1):<br />
if A[i][k] != 0.0:<br />
lam= A[i][k]/A[k,k]<br />
A[i,k:n]=A[i, k:n] - (A[k,k:n]*lam)<br />
B[i]= B[i] - (B[k]*lam)<br />
x=np.zeros(n,float)<br />
for m in range(n-1, -1, -1):<br />
x[m]= (B[m]-np.dot(A[m, m+1:n], x[m+1:n]))/A[m,m]<br />
print("X", m+1, "=", x[m])<br />
<br />
[[File:K14-gauss-jordan elimination.png]]<br />
<br />
Run dari kode di atas. Ketika dimasukkan nilai dari matriks A (yaitu persamaan linear yang ingin dicari solusinya) dan matriks B (konstanta persamaan di sebelah tanda "="), program menampilkan solusi dari x (X1), y (X2), dan z (X3).</div>Muhammad.syariifi