python中的有限差分法

python中的有限差分法,python,numpy,for-loop,sum,Python,Numpy,For Loop,Sum,我试图从值g(x(I+1))和g(x_I)计算g(x_(I+2)),假设I(x)和s(x)是高斯函数,I是一个整数。如果我们知道x_i=100,那么从0到100的求和,我不知道如何用python中的下标处理g(x_i),知道第一个和第二个值,我们可以找到第三个值,在n个循环之后,我们可以找到第n个值 方程式: 代码: 结果: I(x)和s(x) 我不认为这是重复的,编写自己的实现是一种有益的体验。但是,如果您想在某个时候尝试一个库:我不认为这是重复的,编写您自己的实现是一种有益的体验。但如果您

我试图从值g(x(I+1))和g(x_I)计算g(x_(I+2)),假设I(x)和s(x)是高斯函数,I是一个整数。如果我们知道x_i=100,那么从0到100的求和,我不知道如何用python中的下标处理g(x_i),知道第一个和第二个值,我们可以找到第三个值,在n个循环之后,我们可以找到第n个值

方程式:

代码:

结果: I(x)和s(x)

我不认为这是重复的,编写自己的实现是一种有益的体验。但是,如果您想在某个时候尝试一个库:我不认为这是重复的,编写您自己的实现是一种有益的体验。但如果您想在某个时间尝试使用库:
import numpy as np
from matplotlib import pyplot as p
from math import pi

def f_s(x, mu_s, sig_s):
    ss = -np.power(x - mu_s, 2) / (2 * np.power(sig_s, 2))
    return np.exp(ss) / (np.power(2 * pi, 2) * sig_s)

def f_i(x, mu_i, sig_i):
    ii = -np.power(x - mu_i, 2) / (2 * np.power(sig_i, 2))
    return np.exp(ii) / (np.power(2 * pi, 2) * sig_i)

# problems occur in this part
def g(x, m, mu_s, sig_s, mu_i, sig_i):
    for i in range(1, m):                 # specify the number x, x_1, x_2, x_3 ......X_m
        h = (x[i + 1] - x[i]) / e
        for n in range(0, x[i]):          # calculate summation
            sum_f = (f_i(x[i], mu_i, sig_i) - f_s(x[i] - n, mu_s, sig_s) * g_x[n]) * np.conj(f_s(n + 
x[i], mu_s, sig_s))
        g_x[1] = 1       # initial value
        g_x[2] = 5
        g_x[i + 2] = h * sum_f + 2 * g_x[i + 1] - g_x[i]

    return g_x[i + 2]


x = np.linspace(-10, 10, 10000)
e = 1
d = 0.01
m = 1000
mu_s = 2
sig_s = 1
mu_i = 1
sig_i = 1

p.plot(x, g(x, m, mu_s, sig_s, mu_i, sig_i))
p.legend()
p.show()