Kuis 1 MA2151 2021
Kuis 1 MA2151 2021¶
- Deret Fibonacci $a_1,a_2,a_3,...,a_n$ adalah yang memenuhi $a_1=1,a_2=1,a_n=a_{n-1}+a_{n-2}$ dengan $n\geq 3$
- Buatlah algoritma untuk menentukan deret Fibonacci suku ke-n. Contoh diberikan
- $n=10$, maka keluarannya adalah 55
- Algoritma dibuat tanpa menggunakan variable berindex/array/list.
- Buatlah algoritma untuk menghitung $e^x$ dengan menggunakan barisan sampai suatu galat tertentu.
$$e^x=1+x+\frac{x^2}{2}+\frac{x^3}{6}+\frac{x^4}{24}+\frac{x^5}{120}+...$$
- Fungsi faktorial boleh digunakan
- Misalkan galat berupa selisih suku ke-(n) dan suku ke-(n-1) kurang dari (10^{-9})
- Diberikan dua buah vektor $\bar{u}$ dan $\bar{v}$ berukuran $n$.
- Buatlah algoritma untuk menentukan besar sudut yang dibentuk oleh kedua vektor tersebut.
- Diketahui sudut diantara dua vektor $\bar{u}$ dan $\bar{v}$ adalah $\theta=\cos^{-1}\left(\dfrac{\bar{u}\cdot\bar{v}}{|\bar{u}|\ |\bar{v}|}\right)$
- Tidak boleh menggunakan fungsi numpy.dot atau numpy.norm untuk menghitung perkalian dot dan norm (atau fungsi lainnya). Algortima perkalian dot dan norm harus dibuat sendiri.
- Fungsi cos invers diperbolehkan.
Pembuatan algoritma harus lengkap, jelas dan dimengerti oleh komputer, serta berikan juga komentar atau penjelasan pada setiap tahapannya.
Jawaban Soal Nomor 1 Algoritma Menentukan Deret Fibonacci Suku Ke-n
- Deskripsi : Algoritma Menentukan Deret FIbonacci Suku Ke-n, tanpa menggunakan variabel berindex/array
- Masukkan : bilangan bulat positif $n \geq 3$
- Keluaran : suku ke-$n$ dari deret Fibonacci.
- Langkah-langkah :
- masukkan bilangan bulat-$n$
- deklarasikan p= suku pertama deret Fibonacci, p=1
- deklarasikan q= suku kedua deret Fibonacci, q=1
- untuk setiap $i=\{2,3,...,n\}$ | for i in range(3,n+1)
- $r=q+p$ #$p$ bertindak sebagai $a_{i-2}$, $q$ bertindak sebagai $a_{i-1}$ dan $r$ adalah suku ke $a_{i}$ dari deret Fibonacci
- #untuk perhitungan suku berikutnya, yaitu $a_{i+1}=a_{i}+a_{i-1}$ pada iterasi berikutnya,
- #maka $p$ ditimpa dengan nilai $a_{i-1}$ yaitu $q$, dan $q$ ditimpa dengan nilai $a_{i}$ yaitu $r$
- $p=q$
- $q=r$
- keluarkan hasilnya | print(r) |print("suku ke-",n," Deret Fibonacci adalah ",r)
In [ ]:
#Program soal nomor 1
print("Program menentukan Deret Fibonacci Suku ke-n")
print("Masukkan suku ke-n yang ingin dicari, dengan n>=3 :")
n=int(input())
p=1
q=1
for i in range(3,n+1):
r=q+p
p=q
q=r
print("suku ke-",n," Deret Fibonacci adalah ",r)
Program menentukan Deret Fibonacci Suku ke-n Masukkan suku ke-n yang ingin dicari, dengan n>=3 : 10 suku ke- 10 Deret Fibonacci adalah 55
Jawaban Soal Nomor 2 Algoritma menentukan niali $e^x$ dengan mengunakan deret
- Deskripsi : Algoritma menentukan niali $e^x$ dengan mengunakan deret
- Masukkan : masukkan $x$, dan galat yang diinginkan $galat=10^{-9}$
- Keluaran : nilai $e^x$
- Langkah-langkah :
- masukkan bilangan real-$x$
- masukkan galat $galat=10**(-9)$
- deklarasikan variabel untuk menyimpan jumlahan deret $sum=1$, suku pertama langsung dikumlahkan
- deklarasikan $i=0$ sebagai index suku pertama deret
- deklarasikan index iterasi, iter=1
- deklarasikan maksimum iterasi untuk penghenti apabila program terlalu lama, max_iter=100000
- deklarasikan variabel boolean untuk masuk kedalam iterasi while, masuk=True
- ketika/while masuk=True and iter<=max_iter:
- Hitung $p=(x**i)/faktorial(i)$ #suku ke i
- Hitung $q=(x**(i+1))/faktorial(i+1)$ #suku ke i+1
- jika abs(p-q)< galat :
- sum=sum+q #jumlahkan deretnya
- jika tidak (else):
- masuk=False #untuk menghentikan iterasi
- i=i+1 #untuk menghitung suku berikutnya
- iter=iter+1 #untuk menandakan banyak iterasi yang sudah dilakukan
- Jika iter<=max_iter:
- keluarkan hasilnya | print(sum) |print("hampirkn exp(",x,") sampai suku ke-",i-1,"adalah",sum)
- jika tidak (else):
- keluarkan bahwa sampai iterasi sebanyak max_iter, belum didapatkan hampiran deret yang baik.
- print("hampiran exp(",x,") sampai suku ke-",i-1,"adalah",sum," dengan kondisi galat=",abs(p-q))
In [ ]:
def faktorial(n):
return 1 if (n==1 or n==0) else n * faktorial(n - 1);
In [ ]:
#Program soal nomor 2
print("Algoritma menentukan nilai exp(x) dengan mengunakan deret")
print("Masukkan x=")
x=float(input())
print("Masukkan galat perhitungan=")
galat=float(input())
sum=1
iter=1
max_iter=100000
masuk=True
while masuk==True and iter<=max_iter:
p=x**i/faktorial(i)
q=x**(i+1)/faktorial(i+1)
if abs(p-q)>galat:
iter
sum=sum+q
else:
masuk=False
i=i+1
iter=iter+1
if iter<=max_iter:
print("hampiran exp(",x,") sampai suku ke-",i-1,"adalah",sum)
else:
print("hampiran exp(",x,") sampai suku ke-",i-1,"adalah",sum," dengan kondisi galat=",abs(p-q))
Algoritma menentukan niali exp(x) dengan mengunakan deret Masukkan x= 0 Masukkan galat perhitungan= 0.1 hampiran exp( 0.0 ) sampai suku ke- 2 adalah 1
Jawaban Soal Nomor 3 Algoritma menghitung sudut antara 2 vektor
- Deskripsi : Algoritma menghitung sudut antara 2 vektor
- Masukkan : masukkan ukuran vektor $n$, masukkan 2 vektor
- Keluaran : sudut terkecil antara 2 vektor
- Langkah-langkah :
- masukkan ukuran vektor $n$
- masukkan elemen-elemen vektor pertama (boleh juga dimasukkan secara manual/random)
- deklarasikan u=[] #list kosong
- for i in range(n):
- print("masukkan elemen vektor u ke-",i+1)
- a=float(input())
- u.append(a)
- masukkan elemen-elemen vektor kedua (boleh juga dimasukkan secara manual/random)
- deklarasikan v=[] #list kosong
- for i in range(n):
- print("masukkan elemen vektor v ke-",i+1)
- a=float(input())
- v.append(a)
- Hitung panjang vektor u
- panjang_u=0
- for i in range(n):
- panjang_u=panjang_u+u[i]**2
- panjang_u=(panjang_u)**(1/2)
- Hitung panjang vektor V
- panjang_v=0
- for i in range(n):
- panjang_v=panjang_v+v[i]**2
- panjang_v=(panjang_v)**(1/2)
- Hitung perkalian fot vektor u dan v
- dot=0
- for i in range(n):
- dot=dot+u[i]*v[i]
- cos=dot/(panjang_u*panjang_v)
- teta=inv(cos)
- print("sudut terkecil yang dibentuk vektor u dan v adalah",teta)
In [ ]:
import math
#Program soal nomor 3
print("Algoritma menentukan sudut antara 2 vektor u dan v")
print("Masukkan ukuran vektor n=")
n=int(input())
u=[]
for i in range(n):
print("Masukkan elemen vektor u ke-",i+1)
a=float(input())
u.append(a)
v=[]
for i in range(n):
print("Masukkan elemen vektor v ke-",i+1)
a=float(input())
v.append(a)
panjang_u=0
for i in range(n):
panjang_u=panjang_u+u[i]**2
panjang_u=panjang_u**(1/2)
panjang_v=0
for i in range(n):
panjang_v=panjang_v+v[i]**2
panjang_v=panjang_v**(1/2)
dot=0
for i in range(n):
dot=dot+u[i]*v[i]
cos=dot/(panjang_u*panjang_v)
teta=math.acos(cos)
print("sudut terkecil yang dibentuk vektor u dan v adalah",teta)
Algoritma menentukan sudut antara 2 vektor u dan v Masukkan ukuran vektor n= 3 Masukkan elemen vektor u ke- 1 1 Masukkan elemen vektor u ke- 2 2 Masukkan elemen vektor u ke- 3 3 Masukkan elemen vektor v ke- 1 4 Masukkan elemen vektor v ke- 2 5 Masukkan elemen vektor v ke- 3 6 sudut terkecil yang dibentuk vektor u dan v adalah 0.2257261285527342
In [ ]:
#Soal nomor 4
#Program mengurutkan 3 buah bilangan bulat dari terkecil ke terbesar
#Penukaran nilai variabel dilakukan ...
#...tanpa menggunakan variabel tambahan/sementara
A=2;B=6;C=1 #deklarasi variabel
print("Saat ini nilai A=",A,",B=",B,"C=",C)
print("Akan ditukar sehingga nilai A adalah terkecil dan C adalah terbesar")
if ...(1):
A=A+C
C=A-C
A=A-C
if A>=B:
...(2)
...(3)
...(4)
elif B>=A and B>=C:
...(5)
...(6)
...(7)
if ...(8):
A=A+B
B=A-B
A=A-B
else:
if A>=B:
A=A+B
B=A-B
A=A-B
print("Setelah diurutkan nilai A=",A,",B=",B,"C=",C)
Saat ini nilai A= 2 ,B= 6 C= 1 Akan ditukar sehingga nilai A adalah terkecil dan C adalah terbesar Setelah diurutkan nilai A= 1 ,B= 2 C= 6
In [ ]:
#Jawaban soal nomor 4
#Program mengurutkan 3 buah bilangan bulat dari terkecil ke terbesar
#Penukaran nilai variabel dilakukan ...
#...tanpa menggunakan variabel tambahan/sementara
A=2;B=6;C=1 #deklarasi variabel
print("Saat ini nilai A=",A,",B=",B,"C=",C)
print("Akan ditukar sehingga nilai A adalah terkecil dan C adalah terbesar")
if A>=B and A>=C:
A=A+C
C=A-C
A=A-C
if A>=B:
A=A+B
B=A-B
A=A-B
elif B>=A and B>=C:
B=B+C
C=B-C
B=B-C
if A>=B:
A=A+B
B=A-B
A=A-B
else:
if A>=B:
A=A+B
B=A-B
A=A-B
print("Setelah diurutkan nilai A=",A,",B=",B,"C=",C)
Saat ini nilai A= 2 ,B= 6 C= 1 Akan ditukar sehingga nilai A adalah terkecil dan C adalah terbesar Setelah diurutkan nilai A= 1 ,B= 2 C= 6
Comments
Post a Comment