Difference between revisions of "Quiz 16/10/2019"
(Created page with "== Problem Set 2.1 == <nowiki>import numpy as np A=np.array([[1,2,0,-2,0],[0,1,0,2,-1],[0,1,-1,1,-1],[0,0,2,1,2],[0,0,0,-1,1]]) b=np.array([-4, 1, -1,1,-2]) n=len(A) #elimin...") |
(→Problem Set 7.1) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Problem Set 2.1 == | == Problem Set 2.1 == | ||
− | + | import numpy as np | |
A=np.array([[1,2,0,-2,0],[0,1,0,2,-1],[0,1,-1,1,-1],[0,0,2,1,2],[0,0,0,-1,1]]) | A=np.array([[1,2,0,-2,0],[0,1,0,2,-1],[0,1,-1,1,-1],[0,0,2,1,2],[0,0,0,-1,1]]) | ||
+ | |||
b=np.array([-4, 1, -1,1,-2]) | b=np.array([-4, 1, -1,1,-2]) | ||
+ | |||
n=len(A) | n=len(A) | ||
#eliminasi gauss | #eliminasi gauss | ||
+ | |||
for k in range (0,n-1): | for k in range (0,n-1): | ||
+ | |||
for i in range (k+1, n):#membuat iterasi | for i in range (k+1, n):#membuat iterasi | ||
+ | |||
if A[i,k] !=0 : #untuk melewati bilangan yang memang sudah 0 sehingga tidak terjadi kegagalan karena pembagian dengan 0 | if A[i,k] !=0 : #untuk melewati bilangan yang memang sudah 0 sehingga tidak terjadi kegagalan karena pembagian dengan 0 | ||
+ | |||
lam= A[i,k]/A[k,k] #baris bawah dibagi dengan baris atasnya untuk menghasilkan lambda | lam= A[i,k]/A[k,k] #baris bawah dibagi dengan baris atasnya untuk menghasilkan lambda | ||
+ | |||
A[i,k:n]= A[i, k:n]-(A[k,k:n]*lam) #rumus untuk iterasi hingga ke n yaitu | A[i,k:n]= A[i, k:n]-(A[k,k:n]*lam) #rumus untuk iterasi hingga ke n yaitu | ||
+ | |||
b[i]= b[i]-(b[k]*lam) #pergerakan yang ada di B, karena hanya 1 baris sehingga hanya i dan k | b[i]= b[i]-(b[k]*lam) #pergerakan yang ada di B, karena hanya 1 baris sehingga hanya i dan k | ||
+ | |||
print('matrix A:', '\n', A) #melakukan pengecekan pada matrix A yang telah diubah dengan operasi iterasi di atas sehingga menghasilkan matrix segitiga atas | print('matrix A:', '\n', A) #melakukan pengecekan pada matrix A yang telah diubah dengan operasi iterasi di atas sehingga menghasilkan matrix segitiga atas | ||
#back substitution | #back substitution | ||
+ | |||
x=np.zeros(n) #membuat matrix yang memiliki ukuran yang sama dan berisi 0 semua | x=np.zeros(n) #membuat matrix yang memiliki ukuran yang sama dan berisi 0 semua | ||
+ | |||
for m in range (n-1, -1, -1) : #n-1 karena phyton dimulai dari angka 0, -1 maksudnya berhenti saat m = 0, dan -1 yang terakhir maksudnya adalah penghitungan mundur | for m in range (n-1, -1, -1) : #n-1 karena phyton dimulai dari angka 0, -1 maksudnya berhenti saat m = 0, dan -1 yang terakhir maksudnya adalah penghitungan mundur | ||
− | x[m]= (b[m]-np.dot(A[m, m+1:n], x[m+1:n]))/A[m,m] #persamaan dari back substitution, baca mengenai dasar dari back | + | |
+ | x[m]= (b[m]-np.dot(A[m, m+1:n], x[m+1:n]))/A[m,m] #persamaan dari back substitution, baca mengenai dasar dari back substitution | ||
+ | |||
print('nilai X', x[m]) #print hasil</nowiki> | print('nilai X', x[m]) #print hasil</nowiki> | ||
== Problem Set 7.1 == | == Problem Set 7.1 == | ||
− | + | import numpy as np | |
#initial condition | #initial condition | ||
+ | |||
x = 0 | x = 0 | ||
+ | |||
y = 1 | y = 1 | ||
+ | |||
#membuat fungsi y terhadap x | #membuat fungsi y terhadap x | ||
+ | |||
def dy (x,y): | def dy (x,y): | ||
+ | |||
fungsi = x**2 - 4*y | fungsi = x**2 - 4*y | ||
+ | |||
return(fungsi) | return(fungsi) | ||
+ | |||
#menentukan nilai step size | #menentukan nilai step size | ||
+ | |||
h = 0.001 | h = 0.001 | ||
+ | |||
step = np.arange(0,0.03,h) | step = np.arange(0,0.03,h) | ||
+ | |||
#looping iterasi | #looping iterasi | ||
+ | |||
for x in step: | for x in step: | ||
+ | |||
k1 = dy(x,y) | k1 = dy(x,y) | ||
+ | |||
k2 = dy((x+0.5*h),(y+0.5*k1*h)) | k2 = dy((x+0.5*h),(y+0.5*k1*h)) | ||
+ | |||
k3 = dy((x+0.5*h),(y+0.5*k2*h)) | k3 = dy((x+0.5*h),(y+0.5*k2*h)) | ||
+ | |||
k4 = dy((x+0.5*h),(y+0.5*k3*h)) | k4 = dy((x+0.5*h),(y+0.5*k3*h)) | ||
+ | |||
− | y = y + 1/6*(k1+2*k2+2*k3+k4)*h | + | y = y + 1/6*(k1+2*k2+2*k3+k4)*h |
+ | |||
print(y) | print(y) |
Latest revision as of 23:54, 16 October 2019
Problem Set 2.1
import numpy as np
A=np.array([[1,2,0,-2,0],[0,1,0,2,-1],[0,1,-1,1,-1],[0,0,2,1,2],[0,0,0,-1,1]])
b=np.array([-4, 1, -1,1,-2])
n=len(A)
- eliminasi gauss
for k in range (0,n-1):
for i in range (k+1, n):#membuat iterasi
if A[i,k] !=0 : #untuk melewati bilangan yang memang sudah 0 sehingga tidak terjadi kegagalan karena pembagian dengan 0
lam= A[i,k]/A[k,k] #baris bawah dibagi dengan baris atasnya untuk menghasilkan lambda
A[i,k:n]= A[i, k:n]-(A[k,k:n]*lam) #rumus untuk iterasi hingga ke n yaitu
b[i]= b[i]-(b[k]*lam) #pergerakan yang ada di B, karena hanya 1 baris sehingga hanya i dan k
print('matrix A:', '\n', A) #melakukan pengecekan pada matrix A yang telah diubah dengan operasi iterasi di atas sehingga menghasilkan matrix segitiga atas
- back substitution
x=np.zeros(n) #membuat matrix yang memiliki ukuran yang sama dan berisi 0 semua
for m in range (n-1, -1, -1) : #n-1 karena phyton dimulai dari angka 0, -1 maksudnya berhenti saat m = 0, dan -1 yang terakhir maksudnya adalah penghitungan mundur
x[m]= (b[m]-np.dot(A[m, m+1:n], x[m+1:n]))/A[m,m] #persamaan dari back substitution, baca mengenai dasar dari back substitution
print('nilai X', x[m]) #print hasil</nowiki>
Problem Set 7.1
import numpy as np
- initial condition
x = 0
y = 1
- membuat fungsi y terhadap x
def dy (x,y):
fungsi = x**2 - 4*y
return(fungsi)
- menentukan nilai step size
h = 0.001
step = np.arange(0,0.03,h)
- looping iterasi
for x in step:
k1 = dy(x,y)
k2 = dy((x+0.5*h),(y+0.5*k1*h))
k3 = dy((x+0.5*h),(y+0.5*k2*h))
k4 = dy((x+0.5*h),(y+0.5*k3*h))
y = y + 1/6*(k1+2*k2+2*k3+k4)*h
print(y)