問題タブ [boost-ublas]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ブースト内で Lapack を使用する C++
プログラムの開発中に、hermitian_matrix などの行列の UBLAS タイプを頻繁にブーストしました。
固有値を計算する必要がありますが、UBLAS にはこれに関連するものはありません。最初の解決策は LAPACK を使用することですが、異なる UBLAS 行列タイプを LAPACK ライブラリに渡す方法がわかりません。
UBLAS 型を通常の配列に変換してポインターを渡すだけの解決策はありますか?
c++ - ブースト ベクター サイズ コンストラクターが機能しない
次のコードをコンパイルすると:
値 3 がコンストラクターにあると不平を言う以下のエラーが表示されます。ブーストのサンプル コード自体は、コンストラクターで初期化されるベクターのサイズを示しています。
代わりに、このような空のコンストラクターで実行すると
その後、正常に動作します。BOOST のサンプル コードは次のようになっているため、どこかで間違いを犯しています。
メイクファイルか何かのどこかにあると思いますが、実際にはわかりません。
私の Makefile 全体は次のようになります。
どんな助けでも大歓迎です。
前もってありがとう、
マックス
c++ - ブーストの LU ソルバーを使用しますが、逆行列の計算は避けますか?
Boost が提供する LU 分解を使用して、C++ で一次方程式系を解いています。
lu_substitute は入力行列の逆数を計算しているように見えますが、これは計算コストが高くなります (ここで説明したように)。
ブースト機能を使用してそれを回避する方法はありますか?
c++ - Ublas Matrix の Element 製品の効率的な実装
makemake Boost Ublas Matrix の要素ごとの製品のデフォルト関数のベンチマークを行ったところ、単純な for ループを使用して独自の実装を作成した場合よりも element_prod の方がはるかに遅いことがわかりました。それで、私は自分のバージョンを書くことにしました。
次のようなステートメントを使用して、要素ごとの行列の乗算を行うコードを実現しようとしています。
ここでは、乗算の出力を効率的に返すことに関して、C++11 のムーブ セマンティクスを利用したいと思います。
これは私がこれまでに持っているものです。
ここでは、operator* オーバーロードで、計算結果を格納する一時行列を作成する必要がありました。これはかなりのオーバーヘッドを追加していると思います。これを回避する方法はありますか?
別のオプションは、オーバーロードへの引数を const ではなく、行列の 1 つを上書きして返すことですが、これは長期的には非常にリスクが高いと思います。避けたいと思います。
次のようなものが必要な場合を考えてみましょう:
行列 m = m1 * m2 * m3 * m4 * m5 * m6;
ここでは、実装で temp に 6 回メモリを割り当てていることがわかります。m は 1 回だけ割り当てる必要があります。それ以上の割り当ては単なるオーバーヘッドです。
c++ - 倍精度の Boost uBLAS ベクトルに複雑な倍精度係数を掛けるにはどうすればよいですか?
複雑な double を持つ double の uBLAS ベクトルの要素ごとの積を計算することは可能ですか? 次のコードは、オーバーロードされた演算子 * が見つからないため、コンパイルに失敗します。double と複雑な double の乗算は明確に定義されているため、機能することが期待されます。
GCC 4.6 と Boost 1.55.0 を使用してこれをコンパイルすると、次の結果が得られます。
c++ - 初期化子リスト内に空でないブースト ublas::vector を作成する方法は?
私はこのようなことをしようとしています
その結果、ベクトルa_
は を含む 3 つのベクトルとして宣言されa_[0]=1.25, a_[1]=2.75, a_[2]=3.34
ます。
boost::numeric::ublas::vector
処理できるコンストラクターがないため、このコードは機能していませんvector<double>( { 1.25, 2.75, 3.34 } )
代わりに何を使用すればよいですか? 多分コンストラクター
ブーストのドキュメントが役立ちますか?
c++ - 要素を動的サイズの ublas 行列に挿入する方法
最初にサイズが指定されていないマトリックスに要素を挿入しようとすると、実行時エラーが発生しました。
以下のコードは、 m1 に対して finr を実行しますが、m2に対してエラーをスローします。
誰かがこれを達成するための代替手段を提供できる場合、私は非常に感謝しています。