我想用高斯数值积分的方法写一个积分试试,但是taichi
似乎不支持类似numpy
的切片,对于习惯了numpy
操作的小白来说,不知道该怎么办了,求指点,下边是我写的代码
gauss_nodes = ti.field(ti.f64, 8)
gauss_weights = ti.field(ti.f64, 8)
gauss_nodes = [0.9602898565, -0.9602898565, 0.7966664774, -0.7966664774, 0.5255324099, -0.5255324099, 0.1834346425,
-0.1834346425]
gauss_weights = [0.1012285363, 0.1012285363, 0.2223810345, 0.2223810345, 0.3137066459, 0.3137066459, 0.3626837834,
0.3626837834]
S = ti.field(ti.f64, ())
S[None] = 0.0
# 定义被积函数
@ti.func
def f1(x):
return ti.sin(x)
@ti.kernel
def gauss_quad():
a = 0.0
b = 3.141592654
s = 0.0
for i in range(8):
s += gauss_weights[i] * f1(gauss_nodes[i] * (b - a) / 2.0 + (b + a) / 2.0)
S[None] = s * (b - a) / 2.0
gauss_quad()
print(S)