Я решил это дифференциальное уравнение (theta '' (x) + (2 / x) theta '(x) + theta ^ n = 0), используя odeint.
from scipy.integrate import odeint
import numpy as np
import matplotlib.pyplot as plt
#value of constants
n = 1.0
#define function
def exam(y, x):
theta, omega = y
dydx = [omega, - (2.0/x)*omega - theta**n]
return dydx
#initial conditions
y0 = [1.0, 0.0] ## theta, omega
x = np.linspace(0.1, 10, 100)
#call integrator
sol = odeint(exam, y0, x)
plt.plot(x, sol[:, 0], 'b', label='For n = 1')
plt.legend(loc='best')
plt.grid()
#plt.show()
###### (same procedure for n = 2) #########
#value of constants
n = 2.0
#define function
def exam(y, x):
theta, omega = y
dydx = [omega, - (2.0/x)*omega - theta**n]
return dydx
#initial conditions
y0 = [1.0, 0.0] ## theta, omega
x = np.linspace(0.1, 10, 100)
#call integrator
sol = odeint(exam, y0, x)
plt.plot(x, sol[:, 0], 'g', label='For n = 2')
plt.legend(loc='best')
plt.grid()
plt.show()
Хотя естьнет проблем, и я получил ожидаемый результат.Я просто хочу знать, существует ли какая-либо процедура (например, цикл или что-то еще), с помощью которой я могу избежать этой повторяющейся процедуры и могу решить уравнение для различных значений постоянной n
за один раз?