python - 使用python的有限差分法的向量化版本
问题描述
我需要在python中实现有限差分法。但是,我想使用矢量化版本来做到这一点。我想解方程'dA(z,t)/dz = - alpha*A(z,t)'。其中z,t是函数A的空间坐标和时间坐标。它被认为是一个向量。
我已经初始化了 A0 = a0*np.exp(-(t/t0)**2) 这是一个高斯场。我实现了一个执行有限差分法的函数(使用中心欧拉公式)。
A0 = a0*np.exp(-(t/t0)**2)
def fd_1d(alpha=0.5, L, h):
L = 5 # the length of propagation
h = 0.5 # stepsize
initfield = A0 # initial field
for i,j in enumerate(np.arange(0,self.L + 0.5 , 0.5)):
initfield[:][i+1] = initfield[:][i-1] - 2*(0.5)*(alpha)*initfield[:][i]
return initfield
我想要做的是将新向量(即 initfield[:][i+1])定义为旧向量的函数(即 initfield[:][i-1],initfield[:][i] )。但是它似乎不起作用,因为它不执行整个矢量场的减法。它逐点进行减法。有谁知道如何使用矢量化版本执行此操作。
谢谢您的帮助
解决方案
推荐阅读
- makefile - Microsoft WSL 发出问题
- java - 如何使用jackson处理XML序列化中的继承类层次结构?
- python - 是否有必要用numpy编写所有变量和循环?
- ssrs-2012 - SQL Server Reporting Services (SSRS 14) 的严格传输安全标头
- javascript - 附加 ajax 请求而没有不良结果
- sql - 用于员工工资的sql计数函数
- sql - 如何从不喜欢特定值的列中删除字符
- python - 如何在 Python 中制作高效的字符串过滤器?
- r - 如何在 R 中逐元素地将列表和向量相乘?
- javascript - 我如何使用带有多个图像上传按钮的 WordPress 媒体上传器