gpt4 book ai didi

渐进矩阵算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:37:56 24 4
gpt4 key购买 nike

我想像这样构造一个矩阵:

[ 0 1 2 3 4 5 ....
1 2 3 4 5 6 ....
2 3 4 5 6 7 ....
3 4 5 6 7 8 ....
4 5 6 7 8 9 ....
5 6 7 8 9 10 ... ] etc

主要目标是使用该算法对现有矩阵的元素进行幂运算。

我正在用 Fortran 编程,我使用了以下代码但它不起作用:

do i = 1, m+1
do j = 1, m+1
do while ( w < 2*m )
if ( i > j ) then
ma(i,j) = 0
else
w = i-1
ma(i, j) = w
w = w +1
end if
end do
end do
end do

最佳答案

我建议您在数组构造函数语法中使用隐含的 do,可能在同一声明中初始化:

integer, parameter :: n = 10, m = 5
integer :: i, j
integer :: ma(m,n) = reshape([((i+j, j=0, m-1), i=0, n-1)], [m,n])

[...] 语法在 Fortran 2003 或更高版本中是可行的。否则应使用 (/.../)。我对 gfortran v7.1.1 的结果是:

do i = 1, m
print *, ma(i, :)
end do

$gfortran test.f90 -o main
$main
0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
2 3 4 5 6 7 8 9 10 11
3 4 5 6 7 8 9 10 11 12
4 5 6 7 8 9 10 11 12 13

注意:只有当nm 是常量(参数)时,声明中的初始化才有可能。您可以在程序主体中正常初始化它,否则,使用相同的隐式语法。如果您计划在运行时读取 mn 的值,您应该使 ma 成为可分配的数组。

关于渐进矩阵算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53549123/

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