¡Claro! Para simular un sistema planetario de n cuerpos en Python, podemos utilizar el método de integración numérica de Verlet, que es una técnica para resolver ecuaciones diferenciales. Para mostrar las trayectorias de los cuerpos, utilizaremos la biblioteca de Python Matplotlib. A continuación, se presenta un ejemplo de código que simula un sistema planetario de n cuerpos:


```
import numpy as np
import matplotlib.pyplot as plt

#Pedimos al usuario el número de cuerpos
n = int(input("Número de cuerpos: "))

#Definimos las constantes
G = 6.67430e-11 # Constante gravitacional
dt = 1 # Tamaño del paso de tiempo
num_steps = 10000 # Número de pasos de tiempo

#Creamos las listas para almacenar la masa, posición y velocidad de los cuerpos
m = np.zeros(n)
x = np.zeros((n, 2))
v = np.zeros((n, 2))

#Pedimos al usuario la masa, posición y velocidad inicial de cada cuerpo
for i in range(n):
    m[i] = float(input(f"Masa del cuerpo {i+1}: "))
    x[i] = np.array([float(input(f"Posición inicial en x del cuerpo {i+1}: ")),
                     float(input(f"Posición inicial en y del cuerpo {i+1}: "))])
    v[i] = np.array([float(input(f"Velocidad inicial en x del cuerpo {i+1}: ")),
                     float(input(f"Velocidad inicial en y del cuerpo {i+1}: "))])

#Creamos una función que calcule la aceleración de los cuerpos
def acceleration(x):
    a = np.zeros((n, 2))
    for i in range(n):
        for j in range(n):
            if i != j:
                r = x[j] - x[i]
                a[i] += G * m[j] / np.linalg.norm(r)**3 * r
    return a

#Creamos listas vacías para almacenar las trayectorias de los cuerpos
x_traj = [[] for i in range(n)]
y_traj = [[] for i in range(n)]

#Simulamos el sistema planetario
for i in range(num_steps):
    a = acceleration(x)
    x += v * dt + 0.5 * a * dt**2
    a_new = acceleration(x)
    v += 0.5 * (a + a_new) * dt
    for j in range(n):
        x_traj[j].append(x[j][0])
        y_traj[j].append(x[j][1])

#Mostramos las trayectorias de los cuerpos
for i in range(n):
    plt.plot(x_traj[i], y_traj[i], label=f"Cuerpo {i+1}")
plt.legend()
plt.show()
```


En este ejemplo de código, primero pedimos al usuario el número de cuerpos y luego solicitamos su masa, posición y velocidad inicial. A continuación, creamos una función llamada acceleration que calcula la aceleración de cada cuerpo en función de su posición. Luego, simulamos el sistema planetario durante 10000 pasos de tiempo utilizando el método de Verlet y almacenamos las trayectorias de cada cuerpo en listas. Finalmente, mostramos las trayectorias de los cuerpos utilizando la biblioteca Matplotlib.

¡Espero que este ejemplo de código sea útil para simular sistemas planetarios en Python!
ชัดเจน! ในการจำลองระบบดาวเคราะห์ n-body ใน Python เราสามารถใช้วิธีการอินทิเกรตเชิงตัวเลข Verlet ซึ่งเป็นเทคนิคในการแก้สมการเชิงอนุพันธ์ เพื่อแสดงวิถีการเคลื่อนที่ของวัตถุ เราจะใช้ไลบรารี Python Matplotlib ด้านล่างนี้เป็นตัวอย่างของโค้ดที่จำลองระบบดาวเคราะห์ n-body: ``` import numpy as np import matplotlib.pyplot as plt #We ขอให้ผู้ใช้ระบุจำนวน bodies n = int(input("Number of bodies: " )) #เรากำหนดค่าคงที่ G = 6.67430e-11 # ค่าคงที่แรงโน้มถ่วง dt = 1 # ขนาดของขั้นตอนเวลา num_steps = 10000 # จำนวนขั้นตอนของเวลา # เราสร้างรายการเพื่อจัดเก็บมวล ตำแหน่ง และความเร็วของวัตถุ m = np.zeros(n) x = np.zeros((n, 2)) v = np.zeros((n, 2)) #เราถามผู้ใช้ถึงมวล ตำแหน่ง และความเร็วเริ่มต้นของแต่ละวัตถุสำหรับ i ใน range( n): m[i] = float(input(f"Mass of body {i+1}: ")) x[i] = np.array([float(input(f"ตำแหน่งเริ่มต้นใน x ของร่างกาย {i +1}: ")), float(input(f"ตำแหน่งเริ่มต้นใน y ของร่างกาย {i+1}: "))]) v[i] = np.array([float(input(f"Initial ความเร็วเป็น x ของร่างกาย {i+1}: ")), float(input(f"ความเร็วเริ่มต้นใน y ของร่างกาย {i+1}: "))]) #เราสร้างฟังก์ชันที่คำนวณความเร่งของ ความเร่ง def ของร่างกาย ( x): a = np.zeros((n, 2)) สำหรับ i อยู่ในช่วง (n): สำหรับ j อยู่ในช่วง (n): ถ้า i != j: r = x[j] - x [i] a[ i] += G * m[j] / np.linalg.norm(r)**3 * r ส่งคืน #เราสร้างรายการว่างเพื่อจัดเก็บวิถีการเคลื่อนที่ของเนื้อหา x_traj = [[] สำหรับ i ในระยะ(n)] y_traj = [[] สำหรับฉัน อยู่ในช่วง(n)] #เราจำลองระบบดาวเคราะห์สำหรับ i ที่อยู่ในระยะ(num_steps): a = ความเร่ง(x) x += v * dt + 0.5 * a * dt**2 a_new = ความเร่ง (x) v += 0.5 * (a + a_new) * dt สำหรับ j ที่อยู่ใน range(n): x_traj[j].append(x[j][0]) y_traj[j]. append(x[j][ 1]) #We show the trajectories of the bodies for i in range(n): plt.plot(x_traj[i], y_traj[i], label=f"Body {i+1} ") plt.legend() plt .show() ``` ในโค้ดตัวอย่างนี้ เราจะถามผู้ใช้เกี่ยวกับจำนวนวัตถุ จากนั้นเราจะถามถึงมวล ตำแหน่ง และความเร็วเริ่มต้น ต่อไป เราจะสร้างฟังก์ชันที่เรียกว่าความเร่ง ซึ่งจะคำนวณความเร่งของร่างกายแต่ละส่วนตามตำแหน่ง จากนั้นเราจำลองระบบดาวเคราะห์ 10,000 ก้าวโดยใช้วิธี Verlet และจัดเก็บวิถีโคจรของแต่ละวัตถุไว้ในรายการ สุดท้ายนี้ เราจะแสดงวิถีการเคลื่อนที่ของวัตถุโดยใช้ไลบรารี Matplotlib ฉันหวังว่าตัวอย่างโค้ดนี้จะมีประโยชน์สำหรับการจำลองระบบดาวเคราะห์ใน Python!
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence