<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.haidhi.my.id/wiki/index.php?action=history&amp;feed=atom&amp;title=N-Body_Problems</id>
	<title>N-Body Problems - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.haidhi.my.id/wiki/index.php?action=history&amp;feed=atom&amp;title=N-Body_Problems"/>
	<link rel="alternate" type="text/html" href="https://wiki.haidhi.my.id/wiki/index.php?title=N-Body_Problems&amp;action=history"/>
	<updated>2026-11-01T23:36:44Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.haidhi.my.id/wiki/index.php?title=N-Body_Problems&amp;diff=650&amp;oldid=prev</id>
		<title>SanzSkuy at 01:40, 29 May 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.haidhi.my.id/wiki/index.php?title=N-Body_Problems&amp;diff=650&amp;oldid=prev"/>
		<updated>2026-05-29T01:40:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:40, 29 May 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l42&quot;&gt;Line 42:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 42:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Untuk sistem dengan &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; body, &amp;#039;&amp;#039;&amp;#039;total gaya&amp;#039;&amp;#039;&amp;#039; pada body &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; adalah jumlah vektor dari semua gaya yang dikerjakan oleh body-body lain:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Untuk sistem dengan &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; body, &amp;#039;&amp;#039;&amp;#039;total gaya&amp;#039;&amp;#039;&amp;#039; pada body &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; adalah jumlah vektor dari semua gaya yang dikerjakan oleh body-body lain:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;math display=&quot;block&quot;&amp;gt;\vec{F}_i = \sum_{\&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;substack&lt;/del&gt;{j=1 \\ j \neq i}}^{N} G \frac{m_i m_j}{r_{ij}^3} \, \vec{r}_{ij}&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;math display=&quot;block&quot;&amp;gt;\vec{F}_i = \sum_{\&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;begin&lt;/ins&gt;{&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;smallmatrix} &lt;/ins&gt;j=1 \\ j \neq i &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\end{smallmatrix&lt;/ins&gt;}}^{N} G \frac{m_i m_j}{r_{ij}^3} \, \vec{r}_{ij}&amp;lt;/math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Persamaan ini adalah inti dari setiap implementasi N-body. Kompleksitas perhitungannya adalah &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;, karena untuk setiap body harus dilakukan iterasi terhadap &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; body lain.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Persamaan ini adalah inti dari setiap implementasi N-body. Kompleksitas perhitungannya adalah &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;, karena untuk setiap body harus dilakukan iterasi terhadap &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; body lain.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>SanzSkuy</name></author>
	</entry>
	<entry>
		<id>https://wiki.haidhi.my.id/wiki/index.php?title=N-Body_Problems&amp;diff=649&amp;oldid=prev</id>
		<title>SanzSkuy at 01:33, 29 May 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.haidhi.my.id/wiki/index.php?title=N-Body_Problems&amp;diff=649&amp;oldid=prev"/>
		<updated>2026-05-29T01:33:41Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:33, 29 May 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l278&quot;&gt;Line 278:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 278:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Hairer, E., Lubich, C., &amp;amp; Wanner, G. (2006). &amp;#039;&amp;#039;Geometric Numerical Integration: Structure-Preserving Algorithms for Ordinary Differential Equations&amp;#039;&amp;#039;. Springer.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Hairer, E., Lubich, C., &amp;amp; Wanner, G. (2006). &amp;#039;&amp;#039;Geometric Numerical Integration: Structure-Preserving Algorithms for Ordinary Differential Equations&amp;#039;&amp;#039;. Springer.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Nyland, L., Harris, M., &amp;amp; Prins, J. (2007). [https://developer.nvidia.com/gpugems/gpugems3/part-v-physics-simulation/chapter-31-fast-n-body-simulation-cuda &amp;quot;Fast N-Body Simulation with CUDA&amp;quot;]. &amp;#039;&amp;#039;GPU Gems 3&amp;#039;&amp;#039;, NVIDIA Corporation.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Nyland, L., Harris, M., &amp;amp; Prins, J. (2007). [https://developer.nvidia.com/gpugems/gpugems3/part-v-physics-simulation/chapter-31-fast-n-body-simulation-cuda &amp;quot;Fast N-Body Simulation with CUDA&amp;quot;]. &amp;#039;&amp;#039;GPU Gems 3&amp;#039;&amp;#039;, NVIDIA Corporation.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Kategori:Mekanika klasik]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Kategori:Simulasi numerik]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Kategori:Astrofisika komputasional]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>SanzSkuy</name></author>
	</entry>
	<entry>
		<id>https://wiki.haidhi.my.id/wiki/index.php?title=N-Body_Problems&amp;diff=648&amp;oldid=prev</id>
		<title>SanzSkuy: Created page with &quot;&#039;&#039;&#039;N-body problem&#039;&#039;&#039; adalah masalah memprediksi gerakan individual sekumpulan objek bermassa yang berinteraksi satu sama lain melalui gaya gravitasi. Untuk dua body (&#039;&#039;two-body problem&#039;&#039;), terdapat solusi analitik tertutup yang diberikan oleh hukum Kepler. Namun untuk &lt;math&gt;N \geq 3&lt;/math&gt;, sistem umumnya &#039;&#039;&#039;tidak memiliki solusi analitik&#039;&#039;&#039; dan harus diselesaikan secara numerik melalui simulasi.  Artikel ini menjelaskan formulasi matematika N-body problem berbas...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.haidhi.my.id/wiki/index.php?title=N-Body_Problems&amp;diff=648&amp;oldid=prev"/>
		<updated>2026-05-29T01:32:49Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;N-body problem&amp;#039;&amp;#039;&amp;#039; adalah masalah memprediksi gerakan individual sekumpulan objek bermassa yang berinteraksi satu sama lain melalui &lt;a href=&quot;/wiki/index.php?title=Gaya_gravitasi&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Gaya gravitasi (page does not exist)&quot;&gt;gaya gravitasi&lt;/a&gt;. Untuk dua body (&amp;#039;&amp;#039;two-body problem&amp;#039;&amp;#039;), terdapat solusi analitik tertutup yang diberikan oleh &lt;a href=&quot;/wiki/index.php?title=Hukum_Kepler&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Hukum Kepler (page does not exist)&quot;&gt;hukum Kepler&lt;/a&gt;. Namun untuk &amp;lt;math&amp;gt;N \geq 3&amp;lt;/math&amp;gt;, sistem umumnya &amp;#039;&amp;#039;&amp;#039;tidak memiliki solusi analitik&amp;#039;&amp;#039;&amp;#039; dan harus diselesaikan secara numerik melalui simulasi.  Artikel ini menjelaskan formulasi matematika N-body problem berbas...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;N-body problem&amp;#039;&amp;#039;&amp;#039; adalah masalah memprediksi gerakan individual sekumpulan objek bermassa yang berinteraksi satu sama lain melalui [[gaya gravitasi]]. Untuk dua body (&amp;#039;&amp;#039;two-body problem&amp;#039;&amp;#039;), terdapat solusi analitik tertutup yang diberikan oleh [[hukum Kepler]]. Namun untuk &amp;lt;math&amp;gt;N \geq 3&amp;lt;/math&amp;gt;, sistem umumnya &amp;#039;&amp;#039;&amp;#039;tidak memiliki solusi analitik&amp;#039;&amp;#039;&amp;#039; dan harus diselesaikan secara numerik melalui simulasi.&lt;br /&gt;
&lt;br /&gt;
Artikel ini menjelaskan formulasi matematika N-body problem berbasis [[hukum gravitasi Newton]] dan memberikan contoh perhitungan manual untuk kasus tiga body.&lt;br /&gt;
&lt;br /&gt;
== Hukum Gravitasi Newton ==&lt;br /&gt;
&lt;br /&gt;
Antara dua body bermassa &amp;lt;math&amp;gt;m_1&amp;lt;/math&amp;gt; dan &amp;lt;math&amp;gt;m_2&amp;lt;/math&amp;gt; yang berjarak &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;, terdapat gaya tarik gravitasi yang dirumuskan oleh [[Isaac Newton]] sebagai:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;F = G \frac{m_1 m_2}{r^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
di mana:&lt;br /&gt;
* &amp;lt;math&amp;gt;G = 6{,}674 \times 10^{-11} \; \mathrm{N \cdot m^2 / kg^2}&amp;lt;/math&amp;gt; adalah [[konstanta gravitasi universal]]&lt;br /&gt;
* &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; adalah jarak antara kedua body (meter)&lt;br /&gt;
* &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; adalah besar gaya (Newton)&lt;br /&gt;
&lt;br /&gt;
Gaya gravitasi memiliki dua sifat penting:&lt;br /&gt;
# Selalu &amp;#039;&amp;#039;&amp;#039;menarik&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;attractive&amp;#039;&amp;#039;), tidak pernah menolak.&lt;br /&gt;
# Bersifat &amp;#039;&amp;#039;&amp;#039;mutual&amp;#039;&amp;#039;&amp;#039; — body 1 menarik body 2 dengan gaya yang sama besar dan berlawanan arah dengan gaya body 2 ke body 1 ([[hukum III Newton]]).&lt;br /&gt;
&lt;br /&gt;
== Formulasi Vektor ==&lt;br /&gt;
&lt;br /&gt;
Formula skalar &amp;lt;math&amp;gt;F = G m_1 m_2 / r^2&amp;lt;/math&amp;gt; hanya memberikan &amp;#039;&amp;#039;besar&amp;#039;&amp;#039; gaya. Untuk simulasi numerik, kita memerlukan informasi &amp;#039;&amp;#039;&amp;#039;arah&amp;#039;&amp;#039;&amp;#039; gaya. &lt;br /&gt;
&lt;br /&gt;
Misalkan body &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; berada pada posisi &amp;lt;math&amp;gt;\vec{r}_i = (x_i, y_i, z_i)&amp;lt;/math&amp;gt; dan body &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; pada posisi &amp;lt;math&amp;gt;\vec{r}_j&amp;lt;/math&amp;gt;. Maka:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Vektor jarak&amp;#039;&amp;#039;&amp;#039; dari &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; ke &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{r}_{ij} = \vec{r}_j - \vec{r}_i = (x_j - x_i,\; y_j - y_i,\; z_j - z_i)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Magnitudo jarak&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;r_{ij} = \| \vec{r}_{ij} \| = \sqrt{(x_j - x_i)^2 + (y_j - y_i)^2 + (z_j - z_i)^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gaya gravitasi pada body &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; yang disebabkan oleh body &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{F}_{i \leftarrow j} = G \frac{m_i m_j}{r_{ij}^2} \cdot \hat{r}_{ij} = G \frac{m_i m_j}{r_{ij}^3} \, \vec{r}_{ij}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pembagi &amp;lt;math&amp;gt;r_{ij}^3&amp;lt;/math&amp;gt; (bukan &amp;lt;math&amp;gt;r_{ij}^2&amp;lt;/math&amp;gt;) muncul karena vektor satuan &amp;lt;math&amp;gt;\hat{r}_{ij} = \vec{r}_{ij} / r_{ij}&amp;lt;/math&amp;gt; memerlukan pembagian tambahan dengan &amp;lt;math&amp;gt;r_{ij}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Generalisasi ke N Body ==&lt;br /&gt;
&lt;br /&gt;
Untuk sistem dengan &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; body, &amp;#039;&amp;#039;&amp;#039;total gaya&amp;#039;&amp;#039;&amp;#039; pada body &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; adalah jumlah vektor dari semua gaya yang dikerjakan oleh body-body lain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{F}_i = \sum_{\substack{j=1 \\ j \neq i}}^{N} G \frac{m_i m_j}{r_{ij}^3} \, \vec{r}_{ij}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Persamaan ini adalah inti dari setiap implementasi N-body. Kompleksitas perhitungannya adalah &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;, karena untuk setiap body harus dilakukan iterasi terhadap &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; body lain.&lt;br /&gt;
&lt;br /&gt;
== Hukum II Newton dan Integrasi Numerik ==&lt;br /&gt;
&lt;br /&gt;
Setelah total gaya pada body &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; diketahui, &amp;#039;&amp;#039;&amp;#039;percepatan&amp;#039;&amp;#039;&amp;#039; diperoleh dari [[hukum II Newton]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{F}_i = m_i \vec{a}_i \quad \Longrightarrow \quad \vec{a}_i = \frac{\vec{F}_i}{m_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Untuk memperbarui kecepatan dan posisi seiring waktu, digunakan metode [[integrasi numerik]]. Metode paling sederhana adalah [[metode Euler|Euler semi-implisit]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{v}_i(t + \Delta t) = \vec{v}_i(t) + \vec{a}_i(t) \cdot \Delta t&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{r}_i(t + \Delta t) = \vec{r}_i(t) + \vec{v}_i(t + \Delta t) \cdot \Delta t&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Metode yang lebih akurat seperti [[Leapfrog integration|Leapfrog]] atau [[metode Runge-Kutta|Runge-Kutta]] umum digunakan dalam simulasi production karena memiliki sifat konservasi energi yang lebih baik (lihat bagian {{Section link||Drift Energi}}).&lt;br /&gt;
&lt;br /&gt;
== Contoh Perhitungan: 3-Body ==&lt;br /&gt;
&lt;br /&gt;
Untuk memberikan ilustrasi konkret, berikut adalah perhitungan satu &amp;#039;&amp;#039;time step&amp;#039;&amp;#039; untuk sistem 3 body di bidang dua dimensi (sumbu &amp;lt;math&amp;gt;z = 0&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Kondisi Awal ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! Body !! Massa (kg) !! Posisi (m) !! Kecepatan (m/s)&lt;br /&gt;
|-&lt;br /&gt;
| A || &amp;lt;math&amp;gt;1 \times 10^{10}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;(0,\; 0)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;(0,\; 0)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| B || &amp;lt;math&amp;gt;1 \times 10^{10}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;(1,\; 0)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;(0,\; 0)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| C || &amp;lt;math&amp;gt;1 \times 10^{10}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;(0,\; 1)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;(0,\; 0)&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ketiga body berada dalam keadaan diam, membentuk segitiga siku-siku. Gunakan &amp;lt;math&amp;gt;\Delta t = 1&amp;lt;/math&amp;gt; detik dan abaikan [[#Catatan Implementasi|softening]] (&amp;lt;math&amp;gt;\epsilon = 0&amp;lt;/math&amp;gt;) untuk kebersihan perhitungan.&lt;br /&gt;
&lt;br /&gt;
=== Langkah 1: Vektor Jarak Antar Pasangan ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pasangan A–B:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{r}_{AB} = (1 - 0,\; 0 - 0) = (1,\; 0), \quad r_{AB} = 1, \quad r_{AB}^3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pasangan A–C:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{r}_{AC} = (0 - 0,\; 1 - 0) = (0,\; 1), \quad r_{AC} = 1, \quad r_{AC}^3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pasangan B–C:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{r}_{BC} = (0 - 1,\; 1 - 0) = (-1,\; 1), \quad r_{BC} = \sqrt{2} \approx 1{,}414, \quad r_{BC}^3 = 2\sqrt{2} \approx 2{,}828&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Perhitungan Gaya ===&lt;br /&gt;
&lt;br /&gt;
Karena semua body bermassa sama, faktor &amp;lt;math&amp;gt;G \cdot m_i \cdot m_j&amp;lt;/math&amp;gt; bernilai konstan untuk semua pasangan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;K \equiv G \cdot m_A \cdot m_B = 6{,}674 \times 10^{-11} \times 10^{10} \times 10^{10} = 6{,}674 \times 10^{9} \; \mathrm{N \cdot m^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gaya pada body A&amp;#039;&amp;#039;&amp;#039; (kontribusi dari B dan C):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{F}_A = \frac{K}{r_{AB}^3} \vec{r}_{AB} + \frac{K}{r_{AC}^3} \vec{r}_{AC} = \frac{K}{1}(1,\; 0) + \frac{K}{1}(0,\; 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{F}_A = (6{,}674 \times 10^9,\; 6{,}674 \times 10^9) \; \mathrm{N}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Interpretasi: A ditarik ke kanan (oleh B) dan ke atas (oleh C).&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gaya pada body B&amp;#039;&amp;#039;&amp;#039; (kontribusi dari A dan C):&lt;br /&gt;
&lt;br /&gt;
Vektor dari B ke A adalah &amp;lt;math&amp;gt;(-1,\; 0)&amp;lt;/math&amp;gt;, dan vektor dari B ke C adalah &amp;lt;math&amp;gt;(-1,\; 1)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{F}_B = \frac{K}{1}(-1,\; 0) + \frac{K}{2\sqrt{2}}(-1,\; 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{F}_B = (-6{,}674 \times 10^9,\; 0) + (-2{,}360 \times 10^9,\; 2{,}360 \times 10^9)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{F}_B = (-9{,}034 \times 10^9,\; 2{,}360 \times 10^9) \; \mathrm{N}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Interpretasi: B ditarik kuat ke kiri (oleh A yang dekat) dan sedikit ke atas (oleh C yang lebih jauh).&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gaya pada body C&amp;#039;&amp;#039;&amp;#039; (kontribusi dari A dan B):&lt;br /&gt;
&lt;br /&gt;
Vektor dari C ke A adalah &amp;lt;math&amp;gt;(0,\; -1)&amp;lt;/math&amp;gt;, dan vektor dari C ke B adalah &amp;lt;math&amp;gt;(1,\; -1)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{F}_C = \frac{K}{1}(0,\; -1) + \frac{K}{2\sqrt{2}}(1,\; -1)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{F}_C = (2{,}360 \times 10^9,\; -9{,}034 \times 10^9) \; \mathrm{N}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Interpretasi: C ditarik kuat ke bawah (oleh A) dan sedikit ke kanan (oleh B).&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Verifikasi Hukum III Newton ===&lt;br /&gt;
&lt;br /&gt;
Untuk sistem terisolasi, jumlah total semua gaya internal harus nol:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\vec{F}_A + \vec{F}_B + \vec{F}_C \stackrel{?}{=} \vec{0}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Komponen &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;6{,}674 + (-9{,}034) + 2{,}360 = 0 \quad \checkmark&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Komponen &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;6{,}674 + 2{,}360 + (-9{,}034) = 0 \quad \checkmark&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sanity check ini sangat penting dalam implementasi: jika jumlah total gaya tidak nol (di luar &amp;#039;&amp;#039;floating-point error&amp;#039;&amp;#039;), kemungkinan besar ada kesalahan dalam perhitungan.&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Percepatan ===&lt;br /&gt;
&lt;br /&gt;
Bagi masing-masing gaya dengan massa body (semua &amp;lt;math&amp;gt;10^{10}&amp;lt;/math&amp;gt; kg):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! Body !! &amp;lt;math&amp;gt;a_x \; (\mathrm{m/s^2})&amp;lt;/math&amp;gt; !! &amp;lt;math&amp;gt;a_y \; (\mathrm{m/s^2})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| A || &amp;lt;math&amp;gt;0{,}6674&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;0{,}6674&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| B || &amp;lt;math&amp;gt;-0{,}9034&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;0{,}2360&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| C || &amp;lt;math&amp;gt;0{,}2360&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;-0{,}9034&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Update Kecepatan dan Posisi ===&lt;br /&gt;
&lt;br /&gt;
Dengan &amp;lt;math&amp;gt;\Delta t = 1&amp;lt;/math&amp;gt; detik dan kecepatan awal nol, metode Euler semi-implisit menghasilkan:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! Body !! Kecepatan baru (m/s) !! Posisi baru (m)&lt;br /&gt;
|-&lt;br /&gt;
| A || &amp;lt;math&amp;gt;(0{,}6674,\; 0{,}6674)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;(0{,}6674,\; 0{,}6674)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| B || &amp;lt;math&amp;gt;(-0{,}9034,\; 0{,}2360)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;(0{,}0966,\; 0{,}2360)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| C || &amp;lt;math&amp;gt;(0{,}2360,\; -0{,}9034)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;(0{,}2360,\; 0{,}0966)&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Satu &amp;#039;&amp;#039;time step&amp;#039;&amp;#039; telah selesai. Untuk &amp;#039;&amp;#039;time step&amp;#039;&amp;#039; berikutnya, ulangi prosedur dari [[#Langkah 1: Vektor Jarak Antar Pasangan|Langkah 1]] dengan posisi dan kecepatan baru ini.&lt;br /&gt;
&lt;br /&gt;
== Implementasi dalam C++ ==&lt;br /&gt;
&lt;br /&gt;
Berikut implementasi minimal dari satu &amp;#039;&amp;#039;time step&amp;#039;&amp;#039; untuk verifikasi perhitungan di atas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
#include &amp;lt;cmath&amp;gt;&lt;br /&gt;
&lt;br /&gt;
constexpr double G = 6.674e-11;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    std::vector&amp;lt;double&amp;gt; x = {0.0, 1.0, 0.0};&lt;br /&gt;
    std::vector&amp;lt;double&amp;gt; y = {0.0, 0.0, 1.0};&lt;br /&gt;
    std::vector&amp;lt;double&amp;gt; vx(3, 0), vy(3, 0);&lt;br /&gt;
    std::vector&amp;lt;double&amp;gt; mass = {1e10, 1e10, 1e10};&lt;br /&gt;
    int n = 3;&lt;br /&gt;
    double dt = 1.0;&lt;br /&gt;
&lt;br /&gt;
    std::vector&amp;lt;double&amp;gt; fx(n, 0), fy(n, 0);&lt;br /&gt;
    for (int i = 0; i &amp;lt; n; ++i) {&lt;br /&gt;
        for (int j = 0; j &amp;lt; n; ++j) {&lt;br /&gt;
            if (i == j) continue;&lt;br /&gt;
            double dx = x[j] - x[i];&lt;br /&gt;
            double dy = y[j] - y[i];&lt;br /&gt;
            double r2 = dx*dx + dy*dy;&lt;br /&gt;
            double r3 = r2 * std::sqrt(r2);&lt;br /&gt;
            double s = G * mass[i] * mass[j] / r3;&lt;br /&gt;
            fx[i] += s * dx;&lt;br /&gt;
            fy[i] += s * dy;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Semi-implicit Euler integration&lt;br /&gt;
    for (int i = 0; i &amp;lt; n; ++i) {&lt;br /&gt;
        vx[i] += fx[i] / mass[i] * dt;&lt;br /&gt;
        vy[i] += fy[i] / mass[i] * dt;&lt;br /&gt;
        x[i]  += vx[i] * dt;&lt;br /&gt;
        y[i]  += vy[i] * dt;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eksekusi program ini menghasilkan nilai posisi dan kecepatan yang konsisten dengan perhitungan manual hingga presisi &amp;#039;&amp;#039;floating-point&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Ringkasan Algoritma ==&lt;br /&gt;
&lt;br /&gt;
Untuk setiap &amp;#039;&amp;#039;time step&amp;#039;&amp;#039;, siklus perhitungan adalah:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Reset gaya&amp;#039;&amp;#039;&amp;#039;: &amp;lt;math&amp;gt;\vec{F}_i = \vec{0}&amp;lt;/math&amp;gt; untuk semua &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Loop atas pasangan body&amp;#039;&amp;#039;&amp;#039;: untuk setiap &amp;lt;math&amp;gt;i, j&amp;lt;/math&amp;gt; dengan &amp;lt;math&amp;gt;j \neq i&amp;lt;/math&amp;gt;, akumulasi:&lt;br /&gt;
#: &amp;lt;math&amp;gt;\vec{F}_i \mathrel{+}= G \frac{m_i m_j}{r_{ij}^3} \vec{r}_{ij}&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Hitung percepatan&amp;#039;&amp;#039;&amp;#039;: &amp;lt;math&amp;gt;\vec{a}_i = \vec{F}_i / m_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Update kecepatan&amp;#039;&amp;#039;&amp;#039;: &amp;lt;math&amp;gt;\vec{v}_i \mathrel{+}= \vec{a}_i \cdot \Delta t&amp;lt;/math&amp;gt;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Update posisi&amp;#039;&amp;#039;&amp;#039;: &amp;lt;math&amp;gt;\vec{r}_i \mathrel{+}= \vec{v}_i \cdot \Delta t&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Siklus ini diulang untuk ribuan hingga jutaan &amp;#039;&amp;#039;time step&amp;#039;&amp;#039;, tergantung pada durasi simulasi yang diinginkan.&lt;br /&gt;
&lt;br /&gt;
== Catatan Implementasi ==&lt;br /&gt;
&lt;br /&gt;
=== Kompleksitas dan Paralelisasi ===&lt;br /&gt;
&lt;br /&gt;
[[Kompleksitas algoritma|Kompleksitas]] perhitungan langsung (&amp;#039;&amp;#039;direct sum&amp;#039;&amp;#039;) adalah &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt; per &amp;#039;&amp;#039;time step&amp;#039;&amp;#039;. Untuk &amp;lt;math&amp;gt;N = 10^3&amp;lt;/math&amp;gt;, terdapat &amp;lt;math&amp;gt;10^6&amp;lt;/math&amp;gt; perhitungan pasangan per &amp;#039;&amp;#039;step&amp;#039;&amp;#039;; untuk &amp;lt;math&amp;gt;N = 10^6&amp;lt;/math&amp;gt;, terdapat &amp;lt;math&amp;gt;10^{12}&amp;lt;/math&amp;gt; perhitungan per &amp;#039;&amp;#039;step&amp;#039;&amp;#039;. Kebutuhan komputasi yang masif ini memotivasi penggunaan [[komputasi paralel]] menggunakan teknologi seperti [[CUDA]], [[OpenCL]], dan [[Message Passing Interface|MPI]].&lt;br /&gt;
&lt;br /&gt;
Algoritma alternatif dengan kompleksitas lebih rendah meliputi:&lt;br /&gt;
* [[Algoritma Barnes-Hut]] — kompleksitas &amp;lt;math&amp;gt;O(N \log N)&amp;lt;/math&amp;gt;, menggunakan struktur [[octree]] untuk meng-aproksimasi gaya dari kelompok body yang jauh.&lt;br /&gt;
* [[Fast Multipole Method]] — kompleksitas &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;, menggunakan ekspansi multipolar.&lt;br /&gt;
&lt;br /&gt;
=== Softening Parameter ===&lt;br /&gt;
&lt;br /&gt;
Jika dua body mendekati jarak nol, faktor &amp;lt;math&amp;gt;1/r^3&amp;lt;/math&amp;gt; menyebabkan gaya menuju tak hingga (&amp;#039;&amp;#039;singularitas&amp;#039;&amp;#039;), yang menyebabkan simulasi tidak stabil. Untuk mengatasinya, digunakan [[Plummer softening|softening parameter]] &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;r_{ij}^{\,\text{soft}} = \sqrt{r_{ij}^2 + \epsilon^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Secara fisik, ini setara dengan memodelkan body sebagai distribusi massa terdistribusi (bukan titik massa), sehingga interaksi pada jarak sangat dekat tetap finit.&lt;br /&gt;
&lt;br /&gt;
=== Drift Energi ===&lt;br /&gt;
&lt;br /&gt;
Untuk sistem gravitasi tertutup, energi total &amp;lt;math&amp;gt;E = E_\text{kinetik} + E_\text{potensial}&amp;lt;/math&amp;gt; harus kekal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;E_\text{tot} = \sum_i \frac{1}{2} m_i v_i^2 - \sum_{i&amp;lt;j} \frac{G m_i m_j}{r_{ij}} = \text{konstan}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Namun integrasi numerik selalu memperkenalkan kesalahan &amp;#039;&amp;#039;truncation error&amp;#039;&amp;#039; kecil di setiap &amp;#039;&amp;#039;step&amp;#039;&amp;#039;. Akumulasi kesalahan ini menyebabkan &amp;#039;&amp;#039;&amp;#039;drift energi&amp;#039;&amp;#039;&amp;#039; — perubahan bertahap dalam energi total simulasi.&lt;br /&gt;
&lt;br /&gt;
Metode Euler memiliki &amp;#039;&amp;#039;drift&amp;#039;&amp;#039; yang tumbuh linear terhadap waktu. Metode [[Leapfrog integration|Leapfrog]] yang bersifat [[Symplectic integrator|simplektik]] memiliki &amp;#039;&amp;#039;drift&amp;#039;&amp;#039; yang &amp;#039;&amp;#039;bounded&amp;#039;&amp;#039; (berosilasi tetapi tidak tumbuh), sehingga lebih disukai untuk simulasi jangka panjang.&lt;br /&gt;
&lt;br /&gt;
=== Optimisasi Hukum III Newton ===&lt;br /&gt;
&lt;br /&gt;
Karena &amp;lt;math&amp;gt;\vec{F}_{i \leftarrow j} = -\vec{F}_{j \leftarrow i}&amp;lt;/math&amp;gt;, secara teoritis kita dapat menghemat 50% perhitungan dengan iterasi &amp;lt;math&amp;gt;j &amp;gt; i&amp;lt;/math&amp;gt; saja dan mengakumulasi gaya ke kedua body sekaligus. Namun optimisasi ini menyulitkan paralelisasi pada [[GPU]] karena menyebabkan &amp;#039;&amp;#039;write conflict&amp;#039;&amp;#039; antar [[thread (komputasi)|thread]]. Pada implementasi paralel, perhitungan &amp;lt;math&amp;gt;N^2&amp;lt;/math&amp;gt; penuh seringkali lebih efisien.&lt;br /&gt;
&lt;br /&gt;
== Lihat Pula ==&lt;br /&gt;
&lt;br /&gt;
* [[Hukum gravitasi Newton]]&lt;br /&gt;
* [[Two-body problem]]&lt;br /&gt;
* [[Three-body problem]]&lt;br /&gt;
* [[Algoritma Barnes-Hut]]&lt;br /&gt;
* [[Simulasi numerik]]&lt;br /&gt;
* [[Komputasi paralel]]&lt;br /&gt;
&lt;br /&gt;
== Referensi ==&lt;br /&gt;
&lt;br /&gt;
* Aarseth, S. J. (2003). &amp;#039;&amp;#039;Gravitational N-Body Simulations: Tools and Algorithms&amp;#039;&amp;#039;. Cambridge University Press.&lt;br /&gt;
* Hairer, E., Lubich, C., &amp;amp; Wanner, G. (2006). &amp;#039;&amp;#039;Geometric Numerical Integration: Structure-Preserving Algorithms for Ordinary Differential Equations&amp;#039;&amp;#039;. Springer.&lt;br /&gt;
* Nyland, L., Harris, M., &amp;amp; Prins, J. (2007). [https://developer.nvidia.com/gpugems/gpugems3/part-v-physics-simulation/chapter-31-fast-n-body-simulation-cuda &amp;quot;Fast N-Body Simulation with CUDA&amp;quot;]. &amp;#039;&amp;#039;GPU Gems 3&amp;#039;&amp;#039;, NVIDIA Corporation.&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Mekanika klasik]]&lt;br /&gt;
[[Kategori:Simulasi numerik]]&lt;br /&gt;
[[Kategori:Astrofisika komputasional]]&lt;/div&gt;</summary>
		<author><name>SanzSkuy</name></author>
	</entry>
</feed>