問題タブ [inversion]

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.

0 投票する
1 に答える
252 参照

c - 割り当てられた行列の一部のみを効率的に反転する方法

事前定義されたサイズ N x N の複雑な double 行列 "A" を割り当てるアルゴリズムがあります。要素は最初はゼロです。また、サイズ N x N の行列を割り当てて、逆行列 "A_inv" を格納しました。アルゴリズム中に、「A」の要素が満たされます。各反復 i で、最終的にサイズ ix i の部分行列になります。したがって、N=4 の 2 回目の反復では次のようになります。

ここで、x はゼロ以外の値を示します。ここで、行列の非ゼロ部分 (この例では 2x2 行列) を反転したいと考えています。これまでのところ、私は次の方法でこれを行ってきました。

  1. "A" の非ゼロ要素を 2x2 gsl 行列にコピーします
  2. gsl LU 分解を使用して 2x2 gsl 行列を反転します
  3. 2x2 反転行列を A_inv にコピーします

このアプローチの問題は、各反復で行列を 2 回コピーする必要があることです。1 回はより小さい nxn gsl 行列に、もう 1 回は結果の逆 nxn gsl 行列を A_inv にコピーします。

誰かがもっと直接的な方法を知っているかどうか疑問に思っていました。gsl 関数を使用して行列の一部のみを反転し、ゼロ要素を無視する方法はありますか? 次のように言います。

ここで、n < N です。ここでinvert_submatrix()は、A の nxn 部分のみを考慮します。さらに、元の行列 "A" は、この反転によって変更されてはなりません。たぶん、最後の要求により、とにかくマトリックスをコピーする必要が生じます。その場合、私が今行っていることよりも効率的ではありません。とは言っても、gsl アルゴリズムは、私が通常思いつくものよりもはるかに効率的である傾向があります。したがって、これに関する考えは大歓迎です。

0 投票する
1 に答える
1046 参照

matrix - CUDA での小さな逆行列

あなたからのちょっとしたアドバイスが必要です。あなたの時間があまりかからないことを願っています。

ここに私の質問があります: 私は小さな正方形の密行列を持っており、可能なサイズは 4x4、8x8、16x16 で、CUDA を使用してそれを逆にしたいと考えています。

質問の特別な部分は、このタスクを実行するために 1024 個のアイドル状態の cuda スレッドがあることです。したがって、Gauss Jordan のような最も普及している逆メソッドは、ここでは適切に機能しないのではないかと疑っています。これは、それらがわずかに並列であり、1024 の膨大な量から約 4 ~ 16 スレッドしか使用しないためです。

しかし、利用可能なすべてのスレッドを使用して、この行列を逆にするにはどうすればよいでしょうか?

ご清聴ありがとうございました!

0 投票する
1 に答える
63 参照

algorithm - 反転数/ピアソンの r で最適な並べ替えアルゴリズムを見つける

事前に並べ替えられたシーケンス内の特定の数の要素と、そのシーケンスの反転数またはピアソンの r を使用して、最適な並べ替えアルゴリズムを見つけることは可能ですか?

たとえば、事前に並べ替えられた一連の262143要素があります。

反転の最大量は、シーケンス内の要素の数によって提供されます (この仮定については、ここの 2 ページを参照(n(n-1))/2してください) したがって、この例の最大値は です。n34359345153

これで、事前に並べ替えられたシーケンスの反転の数は1299203725最大3.78%になります。私のピアソンの r は0.9941です。私の理解では、これは高い「ソート度」を持つ事前にソートされたシーケンスである必要があります (間違っている場合は修正してください)。

シーケンスの「並べ替え」を定義する方法として、反転の数と人の r への多くの参照を見つけましたが、要素と反転の数/ピアソンの r のどの並べ替えアルゴリズムが優先されるかについて、ある種の比較を取得できませんでした1。

ご協力いただきありがとうございます。

0 投票する
1 に答える
1258 参照

matlab - 私の遺伝的アルゴリズムプログラムは、特定のフィットネスレベルを超えて収束していません

私は、古応力反転のための遺伝的アルゴリズムプログラムを作成しようとしています.つまり、特定のデータセットから応力テンソルを計算したい.(最小化問題)

テスト用に合成データ セットを生成しましたが、期待どおりの結果が得られません。

私のフィットネス値は、最初の数回の反復で非常に迅速に収束しますが、しばらくすると平坦になり、その値よりも低いフィットネス値は得られません。

望ましいフィットネス ~ 10^(-6) 私が得るフィットネス ~ 0.015

また、私が扱っているデータの母集団 (母集団サイズ = 20) に気付きました。それらのほとんどは、数百回の反復後に同じ値をとります。つまり、20 のうち約 15 の値が同じなので、クロスオーバーだと思います。新しい子孫を作るのをやめます。

GA のロジスティクスは次のとおりです。 母集団サイズ 20 反復回数 1000 シングル ポイント クロスオーバー トーナメント 突然変異の選択確率 = 1/いいえ。ビットの

私はmatlabでプログラミングを実行しました

0 投票する
1 に答える
174 参照

c++ - この反転カウントマージソートアルゴリズムが間違った答えを出す理由

これは、c ++で反転カウント用に作成したコードです。他の再帰メソッドを書く場合。私に説明してみてください。countI に反転カウントを格納しています。メイン関数で宣言した配列 A[] の出力として 2 を取得しています。