{"id":17559911,"url":"https://github.com/zetsux/romberg-integration-program","last_synced_at":"2025-03-29T10:23:21.909Z","repository":{"id":133232109,"uuid":"580806032","full_name":"zetsux/romberg-integration-program","owner":"zetsux","description":"🔢 A program that implements Romberg Integration to calculate Integration","archived":false,"fork":false,"pushed_at":"2022-12-21T14:45:34.000Z","size":24,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-04T04:29:50.089Z","etag":null,"topics":["integration","python","romberg"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zetsux.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-21T13:52:24.000Z","updated_at":"2023-04-03T07:48:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"52391eb3-6e6d-4ba1-b01f-e4750f3d7e33","html_url":"https://github.com/zetsux/romberg-integration-program","commit_stats":{"total_commits":12,"total_committers":1,"mean_commits":12.0,"dds":0.0,"last_synced_commit":"9ab8c7f3d72591e3df27d19422c1415c5da5ecf6"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zetsux%2Fromberg-integration-program","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zetsux%2Fromberg-integration-program/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zetsux%2Fromberg-integration-program/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zetsux%2Fromberg-integration-program/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zetsux","download_url":"https://codeload.github.com/zetsux/romberg-integration-program/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246169295,"owners_count":20734635,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["integration","python","romberg"],"created_at":"2024-10-21T11:08:36.676Z","updated_at":"2025-03-29T10:23:21.886Z","avatar_url":"https://github.com/zetsux.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Romberg Integration Program\n\n## Description\nA program that implements Romberg Integration to calculate Integration\n\n## Why Romberg Integration is better than Trapezoidal Integration?\nIntegrasi Romberg merupakan aplikasi dari aturan Integrasi Trapezoidal yang dikembangkan lebih lanjut menggunakan perluasan dengan Richardson Extrapolation untuk memperoleh nilai integrasi yang lebih baik dan akurat. Metode ini dipergunakan dikarenakan Integrasi Trapezoidal masih memiliki akurasi hasil yang rendah, atau dengan kata lain nilai error yang cukup besar untuk nilai integrasi besar. Maka, untuk mengatasi kekurangan dari metode Integrasi Trapezoidal tersebut, digunakanlah Richardson Extrapolation untuk mencoba mengestimasi nilai errornya untuk nantinya dikurangkan dengan hasil estimasi yang diperoleh dari Integrasi Trapezoidal sehingga akurasi yang didapatkan meningkat secara drastis. Metode ini dapat diilustrasikan dengan membuat suatu tabel bernama Tabel Romberg yang bentuk dan isinya kurang lebih sebagai berikut,\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"640\" src=\"https://media.discordapp.net/attachments/995337235211763722/1055128261845340270/image.png\" alt=\"Romberg Table Image\"\u003e\n\u003c/p\u003e\n\n- O(h\u003csup\u003ei\u003c/sup\u003e) : Derajat Error, nilainya berbanding terbalik dengan order/nilai pangkat dari h yakni i, dimana semakin besar pangkatnya maka semakin kecil nilai errornya\n- A\u003csub\u003ei\u003c/sub\u003e : Hasil Integrasi Trapezoidal, dengan jumlah pias (n) bernilai 2\u003csup\u003e(i-1)\u003c/sup\u003e\n- B\u003csub\u003ei\u003c/sub\u003e,C\u003csub\u003ei\u003c/sub\u003e,D\u003csub\u003ei\u003c/sub\u003e,E\u003csub\u003ei\u003c/sub\u003e,F\u003csub\u003ei\u003c/sub\u003e,… = R\u003csub\u003e(i,2)\u003c/sub\u003e,R\u003csub\u003e(i,3)\u003c/sub\u003e,R\u003csub\u003e(i,4)\u003c/sub\u003e,R\u003csub\u003e(i,5)\u003c/sub\u003e,R\u003csub\u003e(i,6)\u003c/sub\u003e,… : Hasil dari Integrasi Romberg menggunakan Richardson Extrapolation dengan menggunakan nilai-nilai yang telah didapatkan sebelumnya dengan formula sebagai berikut,\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"400\" src=\"https://cdn.discordapp.com/attachments/995337235211763722/1055121854316154890/image.png\" alt=\"Romberg Table Image\"\u003e\n\u003c/p\u003e\n\nBisa dilihat dari tabel perhitungan di atas, bahwasannya tiap penerapan Richardson Extrapolation akan meningkatkan order dari derajat error/kesalahan yang didapatkan dari hasil integrasi sebanyak 2. Nantinya, estimasi integrasi yang paling akurat atau yang memiliki nilai error paling kecil adalah yang berada pada ujung kanan diagonal paling bawah dari tabel Romberg yang diperoleh menggunakan perhitungan dari nilai awal yang ada. Hasil yang didapatkan bisa memiliki nilai akurasi yang jauh lebih tinggi dikarenakan adanya pengurangan dari hasil Integrasi Trapezoidal dengan faktor error yang ada.\n\n## Code\n```py\n# Import library yang diperlukan\nimport numpy as np\nimport math\n\n# Persamaan Fungsi ( y = e^x )\ny = lambda x: math.exp(x)\n\n# Pengisian derajat error yang diinginkan untuk dicapai (hasil akhir akan memiliki estimasi error kurang lebih O(n^errOrder))\nprint('Silahkan masukkan Derajat Error yang diinginkan (genap) : ')\nerrOrder = int(input())\n\nwhile errOrder \u0026 1 :\n    print('Dimohon untuk memasukkan derajat error yang bernilai genap...')\n    print('Silahkan masukkan Derajat Error yang diinginkan (genap) : ')\n    errOrder = int(input())\n\n# Pengisian batas atas dan bawah untuk integrasi\nprint('Silahkan masukkan Batas Bawah awal yang diinginkan : ')\nlowerBound = int(input())\nprint('Silahkan masukkan Batas Atas awal yang diinginkan : ')\nupperBound = int(input())\nprint(\"\")\n\n\"\"\"\n    Variabel-variabel dalam fungsi\n    \n    a : batas bawah\n    b : batas atas\n    n : jumlah pias (pada Integrasi Trapezoidal)\n    r : jumlah baris tabel (pada Integrasi Romberg)\n    iTn : hasil Integrasi Trapezoidal dengan jumlah pias n\n    iR[k, j] : hasil Integrasi Romberg dengan Richardson Extrapolation di kolom ke-(k + 1) dan baris ke-(j + 1)\n\"\"\"\n\n# Fungsi Perhitungan Integrasi Trapezoidal\ndef trapezoidalIntegration(n, a, b):\n\n    tmp = a\n\n    # Formula Integrasi Trapezoidal\n    h = (b - a)/n\n\n    # Perhitungan Integrasi Trapezoidal untuk jumlah pias n\n    iTn = y(a)\n    for k in range(1, n):\n        tmp += h\n        iTn += (2*y(tmp))\n\n    return ((iTn + y(b))*h)/2\n\n# Fungsi Perhitungan Integrasi Romberg\ndef rombergIntegration(r, a, b):\n\n    iR = np.zeros((r, r))\n    for k in range(0, r):\n        # Perhitungan Integrasi Trapezoidal untuk jumlah pias 2^k\n        iR[k, 0] = trapezoidalIntegration(2**k, a, b)\n\n        # Perhitungan Integrasi Romberg dengan Rekursi\n        for j in range(0, k):\n            iR[k, j+1] = ((4**(j+1) * iR[k, j]) - iR[k-1, j]) / (4**(j+1) - 1)\n\n        # Menampilkan hasil baris ke-(k + 1) dari tabel Romberg\n        print(iR[k, 0:k+1])\n\n    # Mengambil hasil akhir dari diagonal paling bawah kanan\n    res = iR[tableRow - 1, tableRow - 1]\n    print(f\"\\nHasil Akhir : {res}\")\n\n# Jumlah baris pada Tabel Romberg\ntableRow = int(errOrder/2)\n\n# Mengeluarkan Tabel Romberg\nprint(\"Tabel Romberg :\\n\")\niter = 1\nwhile (iter \u003c= tableRow) :\n    print(f\"\\tO(n^{iter*2})\", end = \"\\t\")\n    iter += 1\nprint(\"\")\n\n# Mengeluarkan batas tabel\nfor row in range(0, iter) :\n    print(f\"━━━━━━━━━━\", end = \"\")\nprint(\"\")\n\n# Memanggil fungsi Integrasi Romberg\nrombergIntegration(tableRow, lowerBound, upperBound)\n```\n\n## Code Run Result\nWith the input of function f(x) = e\u003csup\u003ex\u003c/sup\u003e, the output of the code is as follows,\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"640\" src=\"https://cdn.discordapp.com/attachments/995337235211763722/1055120139407859763/image.png\" alt=\"Romberg Table Image\"\u003e\n\u003c/p\u003e\n\n## Reference\n- Metode Numerik (Rinaldi Munir)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzetsux%2Fromberg-integration-program","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzetsux%2Fromberg-integration-program","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzetsux%2Fromberg-integration-program/lists"}