Tugas 1 Praktikum Metode Numerik

Tugas 1 Praktikum Metode Numerik

Kembali ke Metode Numerik

Semester Genap Tahun Ajaran 2023/2024

Petunjuk Umum:

  1. Kerjakan secara individu.

  2. Kerjakan tugas ini menggunakan bahasa pemrograman Python dengan file format berupa interactive Python notebook (yaitu file berbentuk .ipynb BUKAN .py), yang bisa dibuat misalnya menggunakan Jupyter Notebook atau Google Colaboratory.

  3. Harap sertakan penjelasan untuk setiap variabel yang digunakan dan setiap proses secara singkat di samping potongan kode (dengan comment, ‘#’). Selain itu, sertakan juga penjelasan program (yang bisa mencakupi idenya apa, bagaimana cara eksekusi program, atau tentang algoritma program yang digunakan) pada cell di sebelah (atas/bawah) program.

  4. Format nama file untuk Tugas 1 adalah:

    Nama Lengkap_NPM_Kelas SIAK_Tugas1PrakMetnum.ipynb

    Contoh penamaan yang benar:

    Luthfi Athallah Herdita Wiryaman_2206826980_Kelas G_Tugas1PrakMetnum.ipynb

  5. Pengumpulan tugas dilakukan ke Google Forms berikut ini, sesuai dengan kelas Anda di SIAK NG (link akan selalu sama untuk semua tugas praktikum metode numerik):

  6. Durasi pengerjaan Tugas 1 ini adalah 2 (dua) minggu, dan tenggat waktu (deadline) pengumpulan Tugas 1 ini adalah:

    Sabtu, 23 Maret 2024, pukul 23.59 WIB.

    Mohon manfaatkan waktu Anda dengan baik (seperti mencicil pengerjaan, bahkan sudah selesai dari jauh-jauh hari) agar mengumpulkan tugas sebelum deadline. Keterlambatan pengumpulan bisa dikenakan pengurangan nilai atau bahkan dianggap tidak mengumpulkan, tergantung kesepakatan dari dosen. Meskipun demikian, lebih baik terlambat mengumpulkan daripada tidak mengumpulkan sama sekali.

  7. Sesuai standar Universitas Indonesia, plagiarisme dilarang keras dan bisa menyebabkan nilai tugas praktikum menjadi nol untuk semua pihak yang terlibat, tanpa peringatan apapun.

  8. Module atau package Python yang boleh digunakan (di-import) untuk Tugas 1 ini hanyalah NumPy, Tabulate, dan SymPy. Apabila Anda berniat ingin menggunakan module lain, harap konfirmasikan ke narahubung terlebih dahulu (bisa saja diperbolehkan).

  9. Narahubung untuk Tugas 1 Praktikum Metode Numerik adalah:

    • Zaki - LINE: linenyazaki
    • Pandu - LINE: pandyadaffa
    • Dahut - LINE: narendrahutapea
    • Dani - LINE: 123_dani

Soal Tugas 1 Praktikum Metode Numerik

Ketentuan Soal

Buatlah suatu program yang bisa menerima input untuk mengaproksimasi akar dari fungsi \(f(x)\) pada interval \([0.01, 0.4+(t+1)/10]\), dengan \(t = (\text{NPM} \mod 3) - 1\) , dan

\[\begin{equation} f(x) = \frac{\cos^3\left(a\right)}{\sqrt{1+\cos^2(t)}\ln(x+x^2)\cos^3\left(b\right)} \end{equation}\]

dengan

\[\begin{align*} a &= \dfrac{x^2+x-2}{(3x^3-x^2+3x-1)^t}\\ b &= \dfrac{x}{(x^2-4x+8)^{2-t}} \end{align*}\]

Note: pada python (NumPy dan SymPy), notasi \(\ln(x)\) dinyatakan dengan fungsi log(x)

serta batas toleransi \(10^{-6}\) atau enam angka di belakang koma (menggunakan Absolute Error), dan batasan \(50\) iterasi (sehingga metode dipaksa berhenti setelah \(50\) iterasi walaupun batas toleransi belum tercapai, agar tidak mungkin terjadi infinite loop). Perhatikan bahwa fungsi Anda beserta intervalnya mengandung \(t\), yang berarti setiap fungsi berbeda-beda tergantung NPM Anda.

Metode yang Digunakan

Metode aproksimasi akar yang wajib Anda gunakan adalah:

  • [30] Metode Bisection (tampilkan titik tengah saja); dan
  • [30] Metode Fixed-Point (dengan \(g(x)=x-f(x)\)) dan tebakan awal = batas atas interval.

Selain itu, terdapat metode aproksimasi akar yang tidak wajib kalian buat, namun apabila dikerjakan akan menjadi nilai tambah apabila terdapat kekurangan pada program yang telah kalian buat. Metode tambahan yang dapat digunakan adalah:

  • Metode Regula Falsi (tampilkan titik tengah saja); dan
  • Metode Steffensen (dengan \(g(x)=x-f(x)\)) dan tebakan awal = batas atas interval.

Tabel Iterasi

  • [15] Dalam menampilkan hasil iterasi dari metode-metode yang digunakan, program diharapkan bisa menampilkan satu tabel iterasi yang membandingkan keseluruhan metode yang kalian buat.
  • [5] Ketika salah satu metode mencapai batas toleransi sebelum metode lainnya, diharapkan sisa data pada tabel menjadi kata “Selesai”, kata “Fin” (atau “Finished”), huruf “V” (centang), atau semacamnya (jangan lupa berikan keterangan arti kata/hurufnya) yang menandakan bahwa metode tersebut telah selesai sebelum metode lainnya.

Error Handling

  • [5] Program diharapkan tidak menjadi error ketika ada pembagian nol, melainkan program tetap menampilkan tabel iterasi, dengan data “NaN” (dari NumPy) untuk mengisi kekosongan hasil iterasi setelah terjadinya pembagian nol atau ketika program gagal menemukan akar karena hal lain (misalkan pada bisection jika \(f(a)\cdot f(b)>0\)).

Kerapian Program

  • [5] Keseluruhan program Anda dikemas di dalam satu subprogram atau fungsi (function) yang bisa menerima sembarang fungsi, batas toleransi, batas iterasi, interval dan/atau satu/dua tebakan awal (boleh melalui input user maupun melalui argumen/parameter fungsi).
  • [5] Program Anda bisa berjalan berulang kali (dengan beberapa kali input dan output) sesuai permintaan user, tanpa harus berhenti dan di-run ulang secara manual terlebih dahulu.

Kesimpulan

  • [5] Bandingkan hasil dari tiap metode yang Anda gunakan. Analisa hasil yang Anda dapatkan pada tabel iterasi kemudian tuliskan kesimpulan dari hasil tersebut, yaitu dapat mengenai metode mana yang berhasil selesai dan memenuhi toleransi, metode mana yang paling cepat konvergen, metode mana yang gagal (jika ada), dan sebagainya.

Contoh Output Program (Tanpa Metode Tambahan)

Program ini akan menemukan akar persamaan f(x) secara numerik.
Masukkan fungsi f(x) yang masih mengandung variabel t: (cos((x**2+x-2)/(3*x**3-x**2+3*x-1)**t)**3)
Masukkan NPM anda: 2206039032
maka, nilai t = -1

Akan di input interval [a,b], boleh mengandung t
Masukkan batas bawah interval (a): 0.01
Masukkan batas atas interval (b): 0.4+(t+1)/10
Interval yang digunakan adalah [0.01,0.4]
Akan digunakan tebakan awal = b yaitu  0.4

Masukkan toleransi aproksimasi: 10**(-6)
Masukkan batas banyaknya iterasi: 50

Hasil tabel iterasinya adalah:
+---------+----------------------+-----------------------+
| Iterasi |      Bisection       |      Fixed Point      |
+---------+----------------------+-----------------------+
|    1    | 0.20500000000000002  | -0.44313829739602917  |
|    2    | 0.10750000000000001  |  -1.4424260895103362  |
|    3    | 0.058750000000000004 |  -0.6209470717414348  |
|    4    |       0.083125       | -0.010201211429113455 |
|    5    |      0.0709375       |  0.10062011047956122  |
|    6    |      0.06484375      |  0.08743833025632003  |
|    7    |     0.061796875      |  0.08377133462059567  |
|    8    |     0.0633203125     |  0.08152384817559924  |
|    9    |    0.06408203125     |  0.07993532221389248  |
|   10    |    0.063701171875    |  0.07872621544727694  |
|   11    |   0.0635107421875    |  0.0777619908127115   |
|   12    |   0.06341552734375   |  0.07696773936628871  |
|   13    |  0.063463134765625   |  0.07629763725226675  |
|   14    |  0.0634869384765625  |  0.07572172212774828  |
|   15    | 0.06347503662109374  |  0.07521939930365738  |
|   16    | 0.06348098754882812  |  0.07477594984732953  |
|   17    | 0.06347801208496093  |  0.07438051879215093  |
|   18    | 0.06347652435302734  |  0.07402489118428722  |
|   19    | 0.06347578048706054  |  0.07370271375448255  |
|   20    |          V           |  0.0734089814546904   |
|   21    |          V           |  0.0731396880557624   |
|   22    |          V           |  0.07289158198346714  |
|   23    |          V           |  0.07266199171924287  |
|   24    |          V           |  0.07244869840112196  |
|   25    |          V           |  0.0722498411927703   |
|   26    |          V           |  0.07206384586766701  |
|   27    |          V           |  0.07188937014082135  |
|   28    |          V           |  0.07172526128017487  |
|   29    |          V           |  0.0715705228548453   |
|   30    |          V           |  0.07142428837290485  |
|   31    |          V           |  0.07128580017763203  |
|   32    |          V           |  0.0711543924022303   |
|   33    |          V           |  0.07102947708906422  |
|   34    |          V           |  0.07091053279977598  |
|   35    |          V           |  0.0707970952032519   |
|   36    |          V           |  0.07068874924686823  |
|   37    |          V           |  0.07058512260477016  |
|   38    |          V           |  0.07048588016346201  |
|   39    |          V           |  0.07039071935556289  |
|   40    |          V           |  0.07029936619137478  |
|   41    |          V           |  0.07021157186790909  |
|   42    |          V           |  0.07012710985839757  |
|   43    |          V           |  0.07004577340366697  |
|   44    |          V           |  0.06996737334126438  |
|   45    |          V           |  0.06989173621976105  |
|   46    |          V           |  0.06981870265490095  |
|   47    |          V           |  0.06974812589169789  |
|   48    |          V           |  0.06967987054260602  |
|   49    |          V           |  0.06961381147678823  |
|   50    |          V           |  0.06954983283951428  |
+---------+----------------------+-----------------------+
Apakah Anda ingin menggunakan program ini lagi? (y/n) y
Baik, program akan diulang.

Program ini akan menemukan akar persamaan f(x) secara numerik.
Masukkan fungsi f(x) yang masih mengandung variabel t: (log(x+x**2)*sqrt(1+(cos(t))**2)*(cos(x/(x**2-4*x+8)**(2-t)))**3)
Masukkan NPM anda: 2201893835
maka, nilai t = 1

Akan di input interval [a,b], boleh mengandung t
Masukkan batas bawah interval (a): 0.01
Masukkan batas atas interval (b): 0.4+(t+1)/10
Interval yang digunakan adalah [0.01,0.6000000000000001]
Akan digunakan tebakan awal = b yaitu  0.6000000000000001

Masukkan toleransi aproksimasi: 10**(-6)
Masukkan batas banyaknya iterasi: 50

Hasil tabel iterasinya adalah:
+---------+-----------+---------------------+
| Iterasi | Bisection |     Fixed Point     |
+---------+-----------+---------------------+
|    1    |    nan    | 0.6456982745559185  |
|    2    |    nan    | 0.5779168339893419  |
|    3    |    nan    | 0.6812964263612331  |
|    4    |    nan    | 0.5301701706474318  |
|    5    |    nan    | 0.7652983431663255  |
|    6    |    nan    | 0.43309890621615643 |
|    7    |    nan    | 0.9715634238930626  |
|    8    |    nan    | 0.2728011958673453  |
|    9    |    nan    | 1.4723687516368171  |
|   10    |    nan    | 0.24726403227921012 |
|   11    |    nan    | 1.5818837995653068  |
|   12    |    nan    | 0.2992648256631105  |
|   13    |    nan    | 1.3699237907874995  |
|   14    |    nan    | 0.21557686238504137 |
|   15    |    nan    |  1.735717804889641  |
|   16    |    nan    | 0.3995242299592914  |
|   17    |    nan    |  1.05663532291946   |
|   18    |    nan    | 0.23455585637430887 |
|   19    |    nan    | 1.6409441052939349  |
|   20    |    nan    | 0.33431804052796776 |
|   21    |    nan    |  1.248506262077559  |
|   22    |    nan    | 0.20129212485417192 |
|   23    |    nan    | 1.8129792339829307  |
|   24    |    nan    | 0.4596537253135091  |
|   25    |    nan    | 0.9097336044536548  |
|   26    |    nan    | 0.3103399977285718  |
|   27    |    nan    | 1.3299388656475428  |
|   28    |    nan    | 0.20799527527890738 |
|   29    |    nan    | 1.7760380384303953  |
|   30    |    nan    | 0.4302053387620328  |
|   31    |    nan    | 0.9785793992348167  |
|   32    |    nan    | 0.2690701726843312  |
|   33    |    nan    |  1.487669506585521  |
|   34    |    nan    | 0.2534475685405051  |
|   35    |    nan    | 1.5542966592710123  |
|   36    |    nan    | 0.28451313945490897 |
|   37    |    nan    | 1.4257607719874847  |
|   38    |    nan    | 0.2307139893749448  |
|   39    |    nan    | 1.6594641588226702  |
|   40    |    nan    | 0.3462330493906103  |
|   41    |    nan    | 1.2104254534327914  |
|   42    |    nan    | 0.20230254890533117 |
|   43    |    nan    | 1.8073298306841792  |
|   44    |    nan    | 0.45507269831345476 |
|   45    |    nan    | 0.9200816571177247  |
|   46    |    nan    | 0.3034643634550732  |
|   47    |    nan    | 1.3545744579732792  |
|   48    |    nan    | 0.21233954428821655 |
|   49    |    nan    |  1.752751027173883  |
|   50    |    nan    | 0.41228930069594005 |
+---------+-----------+---------------------+
Apakah Anda ingin menggunakan program ini lagi? (y/n) n
Terima kasih telah menggunakan program ini.

Contoh Output Program (Dengan Metode Tambahan)

Program ini akan menemukan akar persamaan f(x) secara numerik.
Masukkan fungsi f(x) yang masih mengandung variabel t: (x**2+x-2)/(3*x**3-x**2+3*x-1)
Masukkan NPM anda: 2206099831
maka, nilai t = 0

Akan di input interval [a,b], boleh mengandung t
Masukkan batas bawah interval (a): 0.01
Masukkan batas atas interval (b): 0.4+(t+1)/10
Interval yang digunakan adalah [0.01,0.5]
Akan digunakan tebakan awal = b yaitu  0.5

Masukkan toleransi aproksimasi: 10**(-6)
Masukkan batas banyaknya iterasi: 50

Hasil tabel iterasinya adalah:
+---------+---------------------+--------------------+---------------------+--------------------+
| Iterasi |      Bisection      |    Fixed Point     |    Regula Falsi     |     Steffensen     |
+---------+---------------------+--------------------+---------------------+--------------------+
|    1    |        0.255        |        2.5         | 0.25809864598658455 |        2.5         |
|    2    |       0.3775        | 2.356763925729443  | 0.4459976725626445  | 2.356763925729443  |
|    3    | 0.31625000000000003 | 2.208194298132219  | 0.38501111298947743 | 2.366336633663366  |
|    4    | 0.34687500000000004 | 2.054360616009817  | 0.3162081268943068  | 2.218118504239242  |
|    5    | 0.33156250000000004 | 1.8957621569213885 | 0.36937895044812413 | 2.0646215177430753 |
|    6    |     0.33921875      | 1.7337003140477476 | 0.3532910403295327  | 6.5279598013629965 |
|    7    | 0.33539062500000005 | 1.5709151561979338 | 0.3367375036902601  | 6.469797023236684  |
|    8    |    0.3334765625     | 1.4125698888357008 |  0.319709281551605  | 6.411079176972605  |
|    9    |    0.33251953125    | 1.2673944760965359 | 0.32319070362075275 | 12.622542662812682 |
|   10    |   0.332998046875    | 1.147765906303001  | 0.3266524541918521  | 12.593790673749877 |
|   11    |   0.3332373046875   | 1.0656162897157415 | 0.33009459643448025 | 12.564968743789217 |
|   12    |  0.33335693359375   | 1.0227395293180288 | 0.3335171955178135  | 24.44219182967855  |
|   13    |  0.333297119140625  | 1.0064959793605206 | 0.33027945293049854 | 24.427870243306565 |
|   14    | 0.3333270263671875  | 1.001691870318942  | 0.3304642527316636  |  24.4135398953416  |
|   15    | 0.33334197998046877 | 1.0004276066412328 | 0.33064899584837654 | 47.852071366184205 |
|   16    | 0.3333345031738281  | 1.0001071985871681 | 0.3308336822910547  |  47.8449192469539  |
|   17    | 0.3333307647705078  | 1.0000268183173837 | 0.3310183120701313  | 47.837766031942714 |
|   18    | 0.33333263397216795 | 1.0000067057480326 | 0.33120288519605556 | 94.53367565836386  |
|   19    |  0.333333568572998  | 1.000001676510079  | 0.3313874016792924  |  94.5301008610313  |
|   20    |          V          | 1.000000419132087  | 0.3315718615303229  | 94.52652592670874  |
|   21    |          V          | 1.0000001047833071 | 0.33175626475964376 | 187.81914408710898 |
|   22    |          V          |         V          | 0.33194061137776754 | 187.81735686016322 |
|   23    |          V          |         V          | 0.33212490139522255 | 187.81556961609317 |
|   24    |          V          |         V          | 0.33230913482255287 | 374.3484675901818  |
|   25    |          V          |         V          | 0.3324933116703182  | 374.34757399899667 |
|   26    |          V          |         V          |  0.332677431949094  | 374.34668040567095 |
|   27    |          V          |         V          | 0.33286149566947126 | 747.3854101202737  |
|   28    |          V          |         V          | 0.33304550284205664 | 747.3849633274035  |
|   29    |          V          |         V          | 0.3332294534774723  | 747.3845165342658  |
|   30    |          V          |         V          | 0.3334133475863559  | 1493.6285550476991 |
|   31    |          V          |         V          | 0.3333094816230831  | 1493.6283316785687 |
|   32    |          V          |         V          | 0.33338949906604615 | 1493.6281083094048 |
|   33    |          V          |         V          | 0.3333656495949465  | 2986.3844344035133 |
|   34    |          V          |         V          | 0.3333417991730338  | 2986.3843227360207 |
|   35    |          V          |         V          | 0.3333179478002847  | 2986.384211068524  |
|   36    |          V          |         V          | 0.33332641385769063 | 6033.162647850129  |
|   37    |          V          |         V          |  0.333334879795302  | 6033.1625925877415 |
|   38    |          V          |         V          | 0.3333279603375448  | 6033.162537325353  |
|   39    |          V          |         V          | 0.3333295068134016  |  9390.99585231643  |
|   40    |          V          |         V          | 0.33333105328526114 | 9390.995816816398  |
|   41    |          V          |         V          | 0.3333325997531233  | 9390.995781316366  |
|   42    |          V          |         V          | 0.33333414621698815 |        nan         |
|   43    |          V          |         V          | 0.3333334126377748  |        nan         |
+---------+---------------------+--------------------+---------------------+--------------------+
Apakah Anda ingin menggunakan program ini lagi? (y/n) y
Baik, program akan diulang.

Program ini akan menemukan akar persamaan f(x) secara numerik.
Masukkan fungsi f(x) yang masih mengandung variabel t: (log(x+x**2)*sqrt(1+(cos(t))**2)*(cos(x/(x**2-4*x+8)**(2-t)))**3)
Masukkan NPM anda: 2206099831
maka, nilai t = 0

Akan di input interval [a,b], boleh mengandung t
Masukkan batas bawah interval (a): 0.01
Masukkan batas atas interval (b): 0.4+(t+1)/10
Interval yang digunakan adalah [0.01,0.5]
Akan digunakan tebakan awal = b yaitu  0.5

Masukkan toleransi aproksimasi: 10**(-6)
Masukkan batas banyaknya iterasi: 50

Hasil tabel iterasinya adalah:
+---------+-----------+---------------------+--------------+---------------------+
| Iterasi | Bisection |     Fixed Point     | Regula Falsi |     Steffensen      |
+---------+-----------+---------------------+--------------+---------------------+
|    1    |    nan    | 0.9067439121144031  |     nan      | 0.9067439121144031  |
|    2    |    nan    | 0.13376939608543792 |     nan      | 0.13376939608543792 |
|    3    |    nan    |  2.801080697198291  |     nan      | 0.6402373702871612  |
|    4    |    nan    | -0.4599723691521471 |     nan      | 0.5710837540248893  |
|    5    |    nan    |         nan         |     nan      | 0.7244041882230684  |
|    6    |    nan    |         nan         |     nan      | 0.6187417278414383  |
|    7    |    nan    |         nan         |     nan      |  0.616505776454439  |
|    8    |    nan    |         nan         |     nan      | 0.6213411156888947  |
|    9    |    nan    |         nan         |     nan      | 0.6180347170745699  |
|   10    |    nan    |         nan         |     nan      | 0.6180324149924369  |
|   11    |    nan    |         nan         |     nan      |  0.618037389318674  |
|   12    |    nan    |         nan         |     nan      | 0.6180339887506665  |
|   13    |    nan    |         nan         |     nan      | 0.6180339887482275  |
+---------+-----------+---------------------+--------------+---------------------+
Apakah Anda ingin menggunakan program ini lagi? (y/n) n
Terima kasih telah menggunakan program ini.