在我最后一个问题中, Ilmari Karonenbuild议我以离散模式求解拉普拉斯方程。 我正在使用一个网格和每个节点上最近的四个邻居来计算未知的高度。
所以解决的系统可以写成matrix:
A(matrixn×n)* U(向量n,未知)= b(向量n,已稳定)
等待线程/ s直到onther线程/ s结束c ++ linux *** 作系统
如何检查BLAS和ATLAS是否已经安装
在linux中将犰狳库添加到g ++编译器中
昨天晚上,我环顾networking有关C ++的线性代数。 我的select是犰狳 。 但现在“U”和“B”是std::map :
std::map<std::pair<float,float>,float> b; std::map<std::pair<float,float> U; . . . if(g/*grID*/->getNode(r,c)->status == TO_COmpuTE){ U.insert(std::make_pair(std::make_pair(r,c),g->getNode(r,c)->y)); /*right*/ if(g->getNode(r+1,c)->status == SETTLED) b.at(std::make_pair(r,c)) += g >getNode(r+1,c)->y; /*left */ if(g->getNode(r-1,c)) += g->getNode(r-1,c)->y; /*down */ if(g->getNode(r,c+1)->status == SETTLED) b.at(std::make_pair(r,c)) += g->getNode(r,c+1)->y; /*up */ if(g->getNode(r,c-1)->status == SETTLED) b.at(std::make_pair(r,c-1)->y; }
我想我会得到“U”的大小来创buildarma::vec并用std::iterator来parsing整个地图,以在我的arma::vec传递值。 所以我想知道如何增长一个arma::vec我正在寻找像std::vector::push_back() ,然后我会replace我的std::map 。 另外我怎样才能得到一个arma::vec的大小?
注1:图中显示了轮廓和计算值的点,未知值的网格在y = 0时,当下轮廓在y = -0.2,上轮廓在y = 0.8时
注2:当我的小(liNUX)程序准备就绪时,我将在我的bitbucket上发布代码,作为使用离散拉普拉斯算子的一个非常小的例子
2013年11月26日更新:
你可以在这里获得代码的链接
看犰狳的文件 。 例如,可以使用X.n_elem来获取向量X的长度。要在保存数据的同时调整向量的大小,请使用.resize() 。 要将行或列添加到矩阵,请使用.insert_rows()或.insert_cols() 。
请注意,调整性能关键循环内的对象(无论它们是犰狳矩阵/矢量还是std :: vector)效率不高。 预先制定正确的尺寸要好得多。
总结以上是内存溢出为你收集整理的犰狳,如何增长vector和得到他的大小?全部内容,希望文章能够帮你解决犰狳,如何增长vector和得到他的大小?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)