使用高阶近似的二阶导数有限差分

时间:2021-01-29 12:25:16

标签: derivative

这里是新手。

我正在尝试实现二阶导数的高阶近似。

等式在图像中enter image description here

使用这种方法二阶工作正常

cte1 = hxv**2
cte2 = hyv**2
cte3 = cte1*cte2
cte4 = cte1 + cte2

uxxp = (pd[2:, 1:-1] + pd[:-2, 1:-1])*cte1
uyyp = (pd[1:-1, 2:] + pd[1:-1, :-2])*cte2

bp   = b[1:-1, 1:-1]*cte3

p[1:-1,1:-1] = (uxxp + uyyp - bp)/(2*cte4)
     
         
p[0,:]      = 0
p[nptx-1,:] = 0
p[:,0]      = 0
p[:,npty-1] = 0

但是,当我尝试像 8th 这样的更高阶时,它不适用于 uxxp 和 uyyp

uxxp =  (8/5*pd[2:, 1:-1] + 8/5*pd[:-2, 1:-1]- 1/5*pd[3:, 1:-1] - 1/5*pd[:-3, 1:-1] + 8/315*pd[4:, 1:-1] + 8/315*pd[:-4, 1:-1] -1/560*pd[5:, 1:-1]-1/560*pd[:-5, 1:-1])*cte2

uyyp =  (8/5*pd[1:-1, 2:] + 8/5*pd[1:-1, :-2] - 1/5*pd[1:-1, 3:] - 1/5*pd[1:-1, :-3] + 8/315*pd[1:-1, 4:] +8/315*pd[1:-1, :-4] -1/560*pd[1:-1, 5:]-1/560*pd[1:-1, :-5])*cte1

它说这个错误操作数不能与形状一起广播 (399,399) (398,399)

你们有什么建议吗?

最好的, 拉斐尔

0 个答案:

没有答案
相关问题