数值食谱中显然未定义的变量
Apparently undefined variable in Numerical Recipes
我正在尝试使用数值食谱,第 3 版,Amoeba.h,但找不到定义变量的位置。这是代码的开头:
struct Amoeba {
const Doub ftol;
Int nfunc;
Int mpts;
Int ndim;
Doub fmin;
VecDoub y;
MatDoub p;
Amoeba(const Doub ftoll) : ftol(ftoll) {}
template <class T>
VecDoub minimize(VecDoub_I &point, const Doub del, T &func)
{
VecDoub dels(point.size(),del);
return minimize(point,dels,func);
}
template <class T>
VecDoub minimize(VecDoub_I &point, VecDoub_I &dels, T &func)
{
Int ndim=point.size();
MatDoub pp(ndim+1,ndim); <--------- XXXXXXX
for (Int i=0;i<ndim+1;i++) {
for (Int j=0;j<ndim;j++)
pp[i][j]=point[j];
if (i !=0 ) pp[i][i-1] += dels[i-1];
}
return minimize(pp,func);
}
template <class T>
VecDoub minimize(MatDoub_I &pp, T &func)
{
const Int NMAX=5000;
const Doub TINY=1.0e-10;
Int ihi,ilo,inhi;
mpts=pp.nrows();
ndim=pp.ncols();
VecDoub psum(ndim),pmin(ndim),x(ndim);
p=pp;
.....
在标有 X 的行中使用了变量 pp,但似乎没有定义。在下一个方法中,pp 用作定义为 MatDoub_I &pp
的参数变量(MatDoub 是实现矩阵的 class),但在第一个函数中它似乎未定义。这只是作者的错误还是我对 C++ 这里有什么不了解的地方?
请注意,上面 MatDoub
中仅定义了 p。这是否意味着 pp 与 (MatDoub)(MatDoub) 相同?这违反了我对C的理解。
在这一行中:
MatDoub pp(ndim+1,ndim);
pp
没有被 使用 它正在被声明和构造。在这一行之后 pp
是一个初始化对象,后续使用没问题。您可以找到有关 constructor initialization
here.
的更多信息
我正在尝试使用数值食谱,第 3 版,Amoeba.h,但找不到定义变量的位置。这是代码的开头:
struct Amoeba {
const Doub ftol;
Int nfunc;
Int mpts;
Int ndim;
Doub fmin;
VecDoub y;
MatDoub p;
Amoeba(const Doub ftoll) : ftol(ftoll) {}
template <class T>
VecDoub minimize(VecDoub_I &point, const Doub del, T &func)
{
VecDoub dels(point.size(),del);
return minimize(point,dels,func);
}
template <class T>
VecDoub minimize(VecDoub_I &point, VecDoub_I &dels, T &func)
{
Int ndim=point.size();
MatDoub pp(ndim+1,ndim); <--------- XXXXXXX
for (Int i=0;i<ndim+1;i++) {
for (Int j=0;j<ndim;j++)
pp[i][j]=point[j];
if (i !=0 ) pp[i][i-1] += dels[i-1];
}
return minimize(pp,func);
}
template <class T>
VecDoub minimize(MatDoub_I &pp, T &func)
{
const Int NMAX=5000;
const Doub TINY=1.0e-10;
Int ihi,ilo,inhi;
mpts=pp.nrows();
ndim=pp.ncols();
VecDoub psum(ndim),pmin(ndim),x(ndim);
p=pp;
.....
在标有 X 的行中使用了变量 pp,但似乎没有定义。在下一个方法中,pp 用作定义为 MatDoub_I &pp
的参数变量(MatDoub 是实现矩阵的 class),但在第一个函数中它似乎未定义。这只是作者的错误还是我对 C++ 这里有什么不了解的地方?
请注意,上面 MatDoub
中仅定义了 p。这是否意味着 pp 与 (MatDoub)(MatDoub) 相同?这违反了我对C的理解。
在这一行中:
MatDoub pp(ndim+1,ndim);
pp
没有被 使用 它正在被声明和构造。在这一行之后 pp
是一个初始化对象,后续使用没问题。您可以找到有关 constructor initialization
here.