gpt4 book ai didi

arrays - double 组错误

转载 作者:行者123 更新时间:2023-12-01 15:15:20 27 4
gpt4 key购买 nike

我正在尝试为数学算法(共轭梯度法)运行代码。在这样做时,我输入了一个 double 矩阵,在我的序言中这样定义。编译时出现以下错误:

A=RESHAPE((/ 0,8,0,4,26,8,0,17.5,0,0,0,17.5,0,2.5,-8,4,0,2.5,0,-5,26,0,-8,-5,0 
1
Error: Element in INTEGER(4) array constructor at (1) is REAL(4)
make: FTranProjectBuilder: Error: Execution exited with code 2
*** [cg_main.o] Error 1

我在程序中定义矩阵的定义是这样给出的(数组定义是我程序的第一个操作):

PROGRAM cg_main 
IMPLICIT NONE

INTEGER,PARAMETER ::d=5 !use a parameter for the dimensions (simple)
DOUBLE PRECISION,DIMENSION(d,d) ::A !matrix
INTEGER,DIMENSION(2) ::order2 = (/ 2, 1 /) !matrix reshape order

[MORE DECLARATIONS HERE]

A=RESHAPE((/ 0,8,0,4,26,8,0,17.5,0,0,0,17.5,0,2.5,-8,4,0,2.5,0,-5,26,0,-8,-5,0 /),(/d,d/), order2) !specify dxd matrix

[MORE CODE HERE]

END PROGRAM

该代码在我的矩阵输入中没有小数时也能正常工作,但我的小数似乎没有,我也不知道为什么。

最佳答案

问题形式的数组构造函数中的所有元素必须具有相同的声明类型和相同类型的参数。此处的编译器会提示,因为通过将实数表达式与那些整数表达式混合,违反了此约束。

仅仅将第一个元素设为实数/ double 元素是不够的。也许编译器正在使用有关“integer(4) array constructor”的错误消息作为“第一个元素是 integer(4) 但不是所有其他元素”的简写是”。

要解决这个问题,使用这种形式的数组构造函数,您应该使所有元素都具有相同的类型/种类(可能是实数/ double )。

数组构造函数还有另一种形式:

[ real ::0,8,0,4,26,8,0,17.5,0,0,0,17.5 ... ]

将所有元素转换为指定的类型。您甚至可以使用这种形式来创建一个大小为零的数组:

 [ real :: ]

关于arrays - double 组错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14552380/

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