fortran - 从 sum 构造向量
问题描述
我正在尝试构建一个数组,该数组具有两个向量的点积之和作为元素。像这样:
我使用了以下代码,但我认为它不正确,所以请帮助。
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
推荐阅读
- git - Git Checkout 显示本地不存在的目录
- elasticsearch - 何时创建或重用 Elasticsearch 集群?
- c# - “类”不包含“方法”的定义,但它在那里
- python-3.x - 将“na”文本添加到循环中的数组
- hibernate - Angular 5:选择具有相关角色 OneToMany 关系的所有用户
- jquery - jsGrid Jquery不加载数据
- shell - 不在 $HOME 时提示只显示目录?
- javascript - 以某种方式将数组字符串添加到对象
- excel - 如果满足条件,则连接两个单元格值
- java - 为什么 println(measure + '"'); 和 println(measure + '\"'); 添加到测量,同时使用单独的语句打印正确?