python中的有限差分法
我试图从值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)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) 我不认为这是重复的,编写自己的实现是一种有益的体验。但是,如果您想在某个时候尝试一个库:我不认为这是重复的,编写您自己的实现是一种有益的体验。但如果您
我不认为这是重复的,编写自己的实现是一种有益的体验。但是,如果您想在某个时候尝试一个库:我不认为这是重复的,编写您自己的实现是一种有益的体验。但如果您想在某个时间尝试使用库:
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()