Решить ду двумя производная y=(1-x^2/y)+1 y(0)=1 x принадлежит [0; 1] шаг=0,1

men1tos men1tos    3   03.09.2019 06:10    1

Ответы
Минут505 Минут505  06.10.2020 14:06
Python 3
import numpy as np
def f(x, y):
    return (1 - x*x)/y + 1
step = 0.1
x_start = 0.
x_end = 1.
y_init = 1.

x = np.arange(x_start, x_end + step/2, step)
y1 = np.zeros(len(x))y2 = np.zeros(len(x))
y1[0] = y2[0] = y_init
for i in range(len(x) - 1):
    y1[i + 1] = y1[i] + f(x[i], y1[i]) * step
    y2[i + 1] = y2[i] + f(x[i] + step/2, y2[i] + f(x[i], y2[i]) * step/2) * step

В y1, y2 теперь значения в точках 0, 0,1, 0,2, ..., 1. С ними можно делать что угодно, у меня по ним построены графики.

(Код для построения, работает на сайте, где у меня это было запущено.
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y1, '-r', label="Euler")
ax.plot(x, y2, '-g', label="Euler+")
ax.legend()
fig.savefig('graph.png')
)

Зеленый график должен быть ближе к истинному решению, чем красный.
Решить ду двумя производная y=(1-x^2/y)+1 y(0)=1 x принадлежит [0; 1] шаг=0,1
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика