タグ付けされた質問 「c++」

強力なオブジェクト指向プログラミング言語。

4
小さな科学図書館のホスティングサイト
私の研究では、C ++計算コードとOctave / Matlab(後処理目的で後者を使用する場合)間の通信を容易にすることを目的とした小さなC ++ライブラリを開発しています。 SourceforgeやGithubなどの無料のホスティングサイトで、GPLに基づいてそのようなライブラリをリリースしたいと思います。 正直なところ、私のサイトとして(小さな)ライブラリに適したサイトを選択する経験はありません。 一方では、githubの方が私にとってより即時に見えます。他方、Sourceforgeは科学的コードの参照サイトであり、その多くはそこでホストされています。 何かアドバイス? 編集:私は私の質問を拡大します。 私が話しているライブラリは、ほとんど個人的な小さなプロジェクト(現在は 15,000 CL、bitbucketのプライベートリポジトリにあります)であり、上司からの2年間の退屈な技術的要求と6か月のコード設計(主にトライアルとエラー)。≈ 15 K≈15K\approx 15K いくつかの問い合わせの後、sourceforgeにはプロジェクトページの訪問とダウンロードに関する統計を作成できる優れたメカニズムがあることに気づきました。そのため、人々(ユーザー)がlibをダウンロードしてそれを使用するだけでも(あるとしても)数えることができます。 一方、Githubは、開発者の観点からははるかに簡単に見えます(ここで私は、コードの分析、拡張、分岐にも興味がある人を意味します)。
9 matlab  libraries  c++ 

3
軽量/インストールなしのCまたはC ++ベースの密線形代数ソルバーの推奨事項
私のプログラミングのほとんどは、私自身が使用するためのCの1回限りの研究コードです。協力者以外にコードを配布したことがありません。私は科学ジャーナルで公開しているアルゴリズムを開発しました。記事のオンラインサプリメントでソースコードとおそらく実行可能コードを提供したいと思います。同僚から、C ++(ack!)で記述する必要があり、小さな密な線形システムを解く必要があるアルゴリズムを一般化するように依頼されました。アルゴリズムのユーザーベースを取得することに成功した場合、その原因の1つは、それを使用するためのエントリバーが低い(床の上など)ためです。潜在的なユーザーは、コードを使用するためにライブラリなどをインストールしません。コードを完全に独立させ、ライセンスの影響を受けないようにしたい。Golubとvan Loanから何かを取り出して独自のソルバーを作成するだけかもしれませんが、誰かがすでに書いたバニラソルバーを使用したい場合は、そこに使用します。提案を歓迎します。ありがとう!

6
Armadilloによる行列乗算のSuper C ++最適化
私はArmadilloを使用して、辺の長さが非常に集中的な行列乗算を行っています。ここで、は最大20以上にすることができます。私が使用しているアルマジロをしてOpenBLAS私は、パフォーマンスの最適化のためのスーパーアルマジロでの乗算の形式主義に問題があることを除いて、並列コアで非常に良い仕事をしているように見える行列乗算、ため。 n2ん2ん2^nんんn 次の形式のループがあるとします。 arma::cx_mat stateMatrix, evolutionMatrix; //armadillo complex matrix type for(double t = t0; t < t1; t += 1/sampleRate) { ... stateMatrix = evolutionMatrix*stateMatrix; ... } 基本的なC ++では、私はここでの問題を見つけることはC ++での新しいオブジェクトに割り当てるということであるcx_mat店にしevolutionMatrix*stateMatrix、その後に新しいオブジェクトをコピーstateMatrixしてoperator=()。これは非常に非効率的です。大きなデータ型の複雑なクラスを返すのは悪い考えだということはよく知られていますよね? この方法がより効率的であると私が考える方法は、次の形式で乗算を行う関数を使用することです。 void multiply(const cx_mat& mat1, const cx_mat& mat2, cx_mat& output) { ... //multiplication of mat1 and mat2 and then store …

3
C ++でpolylogarithm関数を使用する方法
polylog関数を使用するために使用できるプリプロセッサディレクティブはありますか?それともcmathに含まれていますか?もしそうなら、あなたはそれを李またはポリログのどちらで呼びますか? 編集:私が本当にやろうとしていることは、関数の不定積分の分析値を与えることです x3ex−1x3ex−1 \frac{x^3}{e^{x} -1} これは多対数関数を含みます。しかし、誰かがこの機能を分析的に統合する別の方法について提案があれば、どんなアイデアでも歓迎します。

2
コマンドライン引数をMPI_Initに渡す必要がありますか?
MPI 3.0のコードを書くとき、私は合格しなければならないargcとargvのMPI_Init通話やない、なぜ? 編集:ビル・バースの答えはいくつかの質問を提起したので、私はいくつかの発言をしたいと思います: MPI 1.1以降、argc/を渡すargv必要はありません。 質問は、具体的理由/ 1パスすべきでない程度であるargc/ argv(なぜあなたはいけません、本当にその後、答えではありません)。 それでも、argc/ argvを渡すことができない場合がありますMPI_Init(mainが制御範囲外にあり、MPIが実装の詳細である場合、静的初期化を使用してMPIを起動するライブラリを作成します)。 EDIT2:なぜ使用しないのかMPI_Init(argc, argv)という質問が頻繁に出てきました。いくつかの理由: 古い/非準拠/準拠のMPI <1.1実装との互換性のためにこれを行うことはできません。MPI2またはMPI3機能を使用している場合、これらは機能しません。 MPI_Init() と同じ方法でMPIランタイムを初期化します MPI_Init(argc, argv) MPI_Init(argc, argv)MPIの実行時に渡される引数を削除argcし、argv そして MPIを初期化します。私の知る限り、それはきれいにするための唯一の方法であるargcとargvあなたがそれを使用する必要が全くMPI引数を持たないためにこれらが必要な場合はそう。 MPI_Init()より多くの状況で使用できますMPI_Init(argc, argv)。たとえば、MPIを実装の詳細として使用しているライブラリは、MPIが初期化されているかどうかをテストできます。初期化されていない場合は、呼び出すMPI_Init()と正しいことが起こります。あなたのユーザーは、あなたがMPIを使用していることを知らない、渡す必要はありませんargc、argv......あなたのライブラリーを使用するために、あなたのライブラリに、(場合には、それは引数を取っていない)自分のメインを変更する必要はありません。
8 c++  c  mpi 

1
Runge Kutta Fehlbergソルバーでエラーが発生するのはなぜですか?
私の現在のプロジェクトは、C ++での何千ものODEのソリューションを含むタンパク質フォールディングモデルの再プログラミングです。完全にGPUで実行するソルバーを作成しているので、私はいくつかの停止と開始を進めてきました。ようやく統合しましたが、固定ステップサイズh = .001のRKF45アルゴリズムの5次解を使用してdC / dt = -Cを解こうとすると、e ^ {-tの計算値から決定が得られます}は、10 ^ {-12}程度のグローバルエラーが予想される場合、10 ^ {-4}程度です。 これが発生しているのは、適応ステップサイズと4次と5次の両方のソリューションを使用したエラー制御を使用していないためですか?私の考えは、適応アルゴリズムは4次と5次の違いを推測し、基本的には5次を「正しい答え」として扱うため、その答えを使用してインテグレーターを試してみるというものでした。 編集: それ以来 グローバルエラー=(ポイント数)*(ローカルエラー) そして ローカルエラー= h ^ O ここで、hはステップサイズ、Oは次数です、私は計算します O = ln(グローバルエラー/ポイント数)/ ln h 私が正しいと思う方法と回答で提案された方法の両方で次数分析を行うと、次の結果が得られます。 Number of Points h Global Error My Way The Answer's Way 10 0.1 2.89E-06 6.539E+00 20 0.05 7.09E-08 6.495E+00 5.350E+00 …

9
Cを学ぶ必要がありますか?
私はサイエンティフィックコンピューティングの博士課程の学生で、過去数か月間、PythonとC ++を正しい方法で学ぶのにかなりの時間を費やしました。私はC ++をよく学んだと感じています。良い参考書を手元に置いておけば、Pythonを使用して自分のやりたいことができるようになります。 また、MATLABを十分に理解しているため、自分のアイデアのプロトタイプを作成し、解決策を得ることができます。(もし私が最初の選択であるPythonをコーディングするのに飽きすぎている場合)。 CとC ++を1つの "C / C ++"にまとめる必要があることをここで何度か読んだことがあります。それらは異なる動機を持つ非常に異なる言語であり、私はその見解に完全に同意します。 私は常に学習しているのでC ++を "知っている"と主張することはできませんが、それをどのように使用すべきか、どのように使用すべきでないかはほとんど理解していると思います。私が学んだ最初の言語はCでしたが、最後に使用してから非常に長くなります。私の質問は本質的にこれです: 私がMATLAB、C ++、Pythonを知っていることを考えると、Cの学習に時間をかけるべきですか?上記の3つの言語についての知識は、コーディングするのに十分ですか? 私の研究は、数値線形代数の側面に関するものですが、離散イベントシミュレーション/確率論的プロセスのコンサルティングも行っています。私の意図は業界で働くことです(私の顧問は、C ++を学ぶことを勧めたので、彼には言語の個人的な好みはありませんが、雇用を続けることができます)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.