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