МЕТОД РИТЦА PYTHON

Метод Ритца в Python является одним из численных методов решения дифференциальных уравнений. Суть метода заключается в приближенном представлении решения уравнения в виде линейной комбинации некоторых функций-аппроксимантов.

Примерно такой подход представлен в коде:

f = lambda x: x ** 2
g = lambda x: x ** 3
h = lambda x: x ** 4

Определим линейную комбинацию вида $y(x) = a_1 f(x) + a_2 g(x) + a_3 h(x)$ и подставим ее в исходное дифференциальное уравнение. Полученное выражение приравняем к нулю и решим методом наименьших квадратов систему уравнений для определения коэффициентов $a_1$, $a_2$, $a_3$:

A = np.array([[f(0), g(0), h(0)], [f(1/3), g(1/3), h(1/3)], [f(2/3), g(2/3), h(2/3)], [f(1), g(1), h(1)]])b = np.array([0, 0, 0, 0])x = np.linalg.lstsq(A, b, rcond=None)[0]y = lambda x: x[0] * f(x) + x[1] * g(x) + x[2] * h(x)

Теперь функция $y(x)$ может быть использована для приближенного решения дифференциального уравнения, например:

from scipy.integrate import solve_ivpimport matplotlib.pyplot as pltdef fun(t, y): return t*ysol = solve_ivp(fun, [0, 1], [1], t_eval=np.linspace(0, 1, 101))plt.plot(sol.t, sol.y[0], label='solve_ivp solution')plt.plot(sol.t, y(sol.t), '--', label='Ritz method solution')plt.legend()plt.show()

В результате выполнения данного кода мы получим графики точного решения дифференциального уравнения, а также полученного с помощью метода Ритца.

Class Methods in Python - Python Tutorial - Day #69

String Methods in Python - Python Tutorial - Day #13

#50 Python Tutorial for Beginners - __init__ method

[Hindi] Magic/Dunder Methods In Python? - Object Oriented Programming Using Python Tutorial #8

25 nooby Python habits you need to ditch

module level __getattr__ (intermediate) anthony explains #509

3. String Manipulation, Guess and Check, Approximations, Bisection

Magic/Dunder Methods in Python - Python Tutorial - Day #73

dir, __dict__ and help method in Python - Python Tutorial - Day #71

super keyword in Python - Python Tutorial - Day #72

BLGPG-683C6809E9E4-24-09-19-20

Новые материалы: