Разработка на Python (научное, задача, математика)

1 500 руб. за проект
14 января 2022, 11:04 • 5 откликов • 126 просмотров
Численное решение задачи Коши для ОДУ второго порядка
Решить только ЗАДАНИЕ с 1 по 5 УСЛОВИЕ находится внизу в пункте 5
Прикреплена фотография
-есть пример другого условия Рунге-Кутта в файле
import math
import numpy as np
import matplotlib.pyplot as plt

dy = lambda x,y: (2 + math.cos(3+x))* y + 4 * (math.cos(3+x)*(1-math.sin(3+x))-2 * math.sin(3+x))
f = lambda x: 4 * math.sin(3+x)

xi = 0; xf = 10; h = 0.05
n = int((xf - xi) / h)
x = 0; y = 4 * math.sin(3)

print ('x\t\t y \t\t f(x)'); print ('%f \t %f \t %f' % (x, y, f(x)))
x_plot = []; y_RK4 = []; y_analytical = []

for i in range(1, n+1):
x_plot.append(x); y_RK4.append(y); y_analytical.append(f(x))

k1 = dy(x,y)
k2 = dy(x+h/2, y+k1*h/2)
k3 = dy(x+h/2, y+k2*h/2)
k4 = dy(x+h, y+k3*h)

y = y + 1 / 6 * (k1 + 2 * k2 + 2 * k3 + k4) * h

x = x + h

print ('%f \t %f \t %f' % (x, y, f(x)))

x_plot.append(x); y_RK4.append(y); y_analytical.append(f(x))
plt.plot(x_plot, y_RK4, 'ro', x_plot,y_analytical)
plt.xlabel('x'); plt.ylabel('y')
plt.grid()
plt.legend(['Рунге-Кута', 'Точное решение'])
Файлы