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

0 голосов
30 просмотров

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


Информатика (15 баллов) | 30 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

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')
)

Зеленый график должен быть ближе к истинному решению, чем красный.


image
(148k баллов)