gpt4 book ai didi

fortran - 从总和构建向量

转载 作者:行者123 更新时间:2023-12-01 11:14:51 25 4
gpt4 key购买 nike

我正在尝试构建一个数组,该数组的元素是两个向量的点积之和。像这样:

vector

我用了下面的代码,但我觉得不对,所以请帮忙。

do j = 0, m
do i = 1, N
temp(i) = (x(i)**j)*y(i)
b(j) = vectorsum(temp)
end do
end do

其中x是向量Xi,y是函数f,j是m次方,temp是包含对当前元素的操作的临时向量,

谢谢。

最佳答案

您应该使用内部函数 sum,它接受一个数组并通过加法对其进行归约。 Intrinsic 非常优化,因此通常在可能适用时推荐它们。

有很多句法方法可以实现它,其中很多都带有内在的sum。这里有一些(我使用与您的图像相同的符号,而不是您的示例):

  implicit none
integer, parameter :: m=5,n=3
integer :: i, j, x(0:n), f(0:n), b(0:m)

x = [0,1,2,3]
f = [0,1,2,3]

! using array implied-do construction inside sum
do i = 0,m
b(i) = sum([(x(j)**i * f(j), j=0,n)])
end do
print *, b ! output: 6 14 36 98 276 794


! using Fortran's whole array operations
do i = 0,m
b(i) = sum(x**i * f)
end do
print *, b ! output: 6 14 36 98 276 794

! using implied-do constructor outside, without explicit do
b = [(sum(x**i * f), i=0,m)]
print *, b ! output: 6 14 36 98 276 794

end

关于fortran - 从总和构建向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53603278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com