C 算法示例因类型冲突而失败 当我尝试使用马里兰大学天文学系提供的TQLI算法时,由于冲突类型,我得到了一个错误。我把这个例子放在repl.it上。为什么执行失败?我能做些什么来解决这个问题?
您在编译过程中遇到了问题,因为数值公式是由许多较小的文件生成的。在这里,您发现了冲突的C 算法示例因类型冲突而失败 当我尝试使用马里兰大学天文学系提供的TQLI算法时,由于冲突类型,我得到了一个错误。我把这个例子放在repl.it上。为什么执行失败?我能做些什么来解决这个问题?,c,algorithm,C,Algorithm,您在编译过程中遇到了问题,因为数值公式是由许多较小的文件生成的。在这里,您发现了冲突的fmin问题(您可以重命名该函数fmin2(或其他)以避免nr.h中的冲突)。然后需要以下文件来编译示例: nr.h /* header files */ nrutil.h 及 那么,这仅仅是一个编译源代码的问题。您可以使用Makefile或仅使用单个编译器字符串,例如(对于gcc) 然后它应该在没有错误或警告的情况下编译,并且您应该能够运行它,例如 $ ./yourexename Eigenv
fmin
问题(您可以重命名该函数fmin2
(或其他)以避免nr.h
中的冲突)。然后需要以下文件来编译示例:
nr.h /* header files */
nrutil.h
及
那么,这仅仅是一个编译源代码的问题。您可以使用Makefile
或仅使用单个编译器字符串,例如(对于gcc
)
然后它应该在没有错误或警告的情况下编译,并且您应该能够运行它,例如
$ ./yourexename
Eigenvectors for a real symmetric matrix
eigenvalue 1 = 0.591722
vector mtrx*vect. ratio
-0.177382 -0.104961 0.591722
0.154260 0.091279 0.591721
0.170442 0.100854 0.591720
-0.453325 -0.268244 0.591724
0.455130 0.269310 0.591721
-0.174737 -0.103397 0.591727
-0.214000 -0.126629 0.591724
0.470052 0.278139 0.591720
-0.434657 -0.257197 0.591724
0.129761 0.076782 0.591718
Press ENTER to continue...
...
仔细检查一下,如果您还有其他问题,请告诉我。为什么要从
1
索引数组?@WeatherVane问得好!我问了同样的问题。显然这是故意的。NR总是对索引做一些奇怪的事情,这是因为索引,例如c[i-1][j-1]代码>@AlexReynolds很有趣。我做了改变,现在我得到了很多关于多重定义的错误,比如nError。这是从哪里来的?好的,我解决了这个问题。现在我得到一个错误,我有未定义的引用,例如向量和矩阵。谢谢你的回答!那真的很有见地。当然,很乐意帮忙。这些多段编译一开始可能会让人沮丧,但一旦你发现你需要提供你正在使用的函数之一的每个文件,那么在那之后就不会太糟糕了。然后,您只需查找文件中定义的缺少的函数,并将其添加到要编译的文件列表中。
$ gcc -Wall -Wextra -pedantic -Wshadow -finline-functions -std=gnu11 -Ofast \
-Wno-unused-variable -Wno-unused-parameter nrutil.c tqli.c tred2.c pythag.c \
-o yourexename yourfile.c
$ ./yourexename
Eigenvectors for a real symmetric matrix
eigenvalue 1 = 0.591722
vector mtrx*vect. ratio
-0.177382 -0.104961 0.591722
0.154260 0.091279 0.591721
0.170442 0.100854 0.591720
-0.453325 -0.268244 0.591724
0.455130 0.269310 0.591721
-0.174737 -0.103397 0.591727
-0.214000 -0.126629 0.591724
0.470052 0.278139 0.591720
-0.434657 -0.257197 0.591724
0.129761 0.076782 0.591718
Press ENTER to continue...
...