метод конечных разностей решает функцию - PullRequest
0 голосов
/ 16 февраля 2020

Я получаю последнее уравнение, и я пытаюсь вычислить g (k + 2) из ​​значений g (k + 1) и g (k), i является целым числом, предполагая, что I (x) и s (x) ) являются гауссовыми функциями. Результат расчета неверен, но я не знаю, где проблема.

Код:

import numpy as np
from matplotlib import pyplot as plt


def f_i(a, w_i):
    return np.exp(-np.power(a, 2) * np.power(w_i, 2))


def f_s(b, w_s):
    return np.exp(-np.power(b, 2) * np.power(w_s, 2))


a = 2
b = 1
w = 10
K = 100
g = np.zeros(K + 2)
g[0] = 0  #initial value, It can be changed as needed
g[1] = 0

for k in range(2, K):
    Isg = 0
    for j in range(k - w, k + w):
        sg = 0
        for i in range(j - w, j + w):
            sg += f_s(b, i) * g[j - i]
        Isg += (f_i(a, j) - sg) * f_s(b, j - k)
    g[k+2] = 2 * g[k + 1] - g[k] + Isg


print(g)
plt.plot(g)
plt.show()

Результат: enter image description here

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...