タグ付けされた質問 「math」

問題の根底にある数学によって大きく影響を受ける、または最もよく定義されるプログラミングの質問。

4
アルゴリズム入門(CLRS)ブックの必須数学スキル[終了]
私はすでに基本的なアルゴリズムについての知識を持っています。今、私はより高度なアルゴリズムを研究することを計画しており、アルゴリズムの紹介に進むことにしました。 この本を読む前に数学のスキルを更新する必要があるかどうかはわかりませんか?(高校や大学で学んだ数学のほとんどを忘れています)この本に強力な数学の知識が必要な場合は、有益な科目を提案してください。 アルゴリズムの実装、設計、分析について学びたいです。


11
基礎数学はプログラミング言語によってどのように効率的に評価されますか?
プログラミングの背後にある理論にますます関与していくにつれて、一見単純なことに魅了され、umb然とするようになります。 Q:これはどのように機能しますか? A:そうだから! 私はこの実現が嫌いです!私は知識が大好きで、それに加えて学習も大好きです。それが私の質問につながります(それは広義の質問ですが)。 質問: 基本的な数学演算子はプログラミング言語でどのように評価されますか? 現在の方法はどのように改善されましたか? 例 var = 5 * 5; 私の解釈: $num1 = 5; $num2 = 5; $num3 = 0; while ($num2 > 0) { $num3 = $num3 + $num1; $num2 = $num2 - 1; } echo $num3; これは非常に効率が悪いようです。高い係数を使用すると、このメソッドは非常に遅くなりますが、標準の組み込みメソッドは瞬間的です。加算を繰り返さずに乗算をどのようにシミュレートしますか? var = 5 / 5; これはどのように行われますか?文字通り5を5つの等しい部分に分割する方法は考えられません。 var = …
22 math  evaluation 

7
Fortranベースの大きな数値演算コードベースをどのように近代化できますか?
学界の友人からアドバイスを求められました(私はC#ビジネスアプリケーション開発者です)。 彼は、Fortranで医療画像分野で書いたレガシーコードベースを持っています。ベクトルを使用して膨大な数の計算を行います。彼はクラスター(30のコア)を使用し、現在は500のGPUを持つ単一のワークステーションに向かっています。 ただし、次にコードベースを使用する場合: 他の人々は次の10年サイクルにわたってそれを維持することができます ソフトウェアの調整を高速化 再コンパイルせずに異なるインフラストラクチャで実行できます 私からのいくつかの研究の後(これは非常に興味深い分野です)、いくつかのオプションがあります: Nvidiaの PythonとCUDAを使用します 関数型言語で書き直してください。たとえば、F#またはHaskell クラウドベースに移行し、HadoopやJava などを使用する Cを学ぶ これについてどのような経験をしましたか?私の友人は彼のコードベースを近代化するために何を見るべきですか? 更新:@Markと回答してくれたすべての人に感謝します。私の友人がこの質問をしているのは、レビューを行うのがプロジェクトのライフサイクルの中で最適な時期だからです。Fortranでリサーチアシスタントを高速化するには時間がかかります(私はC#、特にツールが好きで、古い言語に戻ることは想像できません!!) Fortranで純粋な数値を処理し続けることをお勧めしますが、それを新しいものでラップすることをお勧めします。おそらくPythonは、かなり簡単に習得できる汎用プログラミング言語として学界の拠点になっているようです。 Medical ImagingとCUDAのFortranラッパーを書いた人を参照してください。Fortran90ラッパーをNvidiasのCUFFTライブラリ(CUDA SDKから)に合法的に公開できますか?。
21 math  legacy  fortran 

5
関数型プログラミングは数学と強く関係していますか?
この質問は 、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 関数型プログラミングの多くは数学的な概念で描かれているので、関数型プログラミングは数学にとても関連していますか?命令的な背景を持つプログラマーのための関数型プログラミングを学び、理解するための強力な数学の基礎を持つ必要がありますか?

4
なぜすべての関数型プログラミングのチュートリアルがこんなに充実しているのですか?
私は関数型プログラミングを学ぼうとしており、私が見つけたほとんどのチュートリアルでは、より複雑な構造の例として数学を使用しています(場合によっては単純な構造も)。どうしてこれなの?もっと簡単なものが使用できると思います。そのため、学習が難しくなっています。 背景情報:私は12年間ソフトウェアを書いています。クロージャ、ファーストクラスの市民としての機能、ジェネリックなどの概念の一部を理解しています。高度なレベルで高階関数に問題があるかもしれませんが、基本的な理解があると思います。モナドは私を尻に噛みついており、この時点で私はそれを過ぎていない(私はしつこいので、最終的にはそうなると確信している)。

6
プログラミング言語の1番目、2番目、3番目のクラス値の数学の基礎は何ですか?
追加しました 関連する2つの質問を見つけた /math//q/1759680/1281 /programming//a/2582804/156458 プログラミング言語では、Michael ScottのProgramming Language Pragmaticsから 一般に、プログラミング言語の値は、パラメータとして渡されたり、サブルーチンから返されたり、変数に割り当てられたりする場合、ファーストクラスのステータスを持つと言われ ます。整数や文字などの単純な型は、ほとんどのプログラミング言語で最高の値です。対照的に、「セカンドクラス」値はパラメーターとして渡すことができますが、サブルーチンから返されたり変数に割り当てられたりすることはできません。また、「サードクラス」値はパラメーターとして渡すことさえできません。 ラベルは、ほとんどのプログラミング言語では第3クラスの値ですが、Algolでは第2クラスの値です。サブルーチンは最も多くのバリエーションを表示します。これらは、すべての関数型プログラミング言語およびほとんどのスクリプト言語で最も優れた値です。また、C#での最高クラスの値であり、Fortran、Modula-2および-3、Ada 95、C、C ++など、いくつかの他の必須言語では、いくつかの制限があります。11これらは、他のほとんどの命令型言語では第2クラスの値であり、Ada 83では第3クラスの値です。 プログラミング言語の1番目、2番目、3番目のクラス値の数学の基礎は何ですか? 用語は一次/二次のロジックを思い出させますが、それらは関連していますか? それらの違いは、値を使用できる特定のケースであるように思えます パラメータとして渡され、 サブルーチンから返された、または 変数に割り当てられます。 なぜ特定のケースが重要なのに、他のケースは言及されていないのですか? ありがとう。

4
コードで数学ロジックを文書化する
まれですが、コードに数学ロジックを含める必要があります。使用される概念はほとんど非常に単純ですが、結果のコードはそうではありません-不明な目的を持つ多くの変数、およびそれほど明白ではない意図のある操作。コードが判読不能または保守不能であることを意味するのではなく、実際の数学の問題よりも理解が難しいというだけです。私は理解が最も難しい部分にコメントを付けようとしますが、それらをコーディングするのと同じ問題があります- テキストには数学の表現力がありません。 複雑なコードの一部、できればコード自体の背後にあるロジックを説明する、より効率的で理解しやすい方法を探しています。私はTeXを検討しました-ドキュメントを書き、コードとは別に生成します。しかし、それから私はTeXを学ぶ必要があり、ドキュメントはコード自体にはありません。私が考えたもう1つのことは、紙/ホワイトボードに書かれた数学表記、方程式、図の写真を撮り、それをjavadocに含めることです。 より簡単で明確な方法はありますか? PS 変数に(のtimeOfFirstEvent代わりにt1)わかりやすい名前を付けると、実際にはコードがより冗長になり、読みにくくなります。

17
プログラミングで知っておくべき優れた数式は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 より良いアルゴリズムを作成し、より良いプログラマーになるのに役立った、学んだ一般的な数学の式は何ですか? 例:エクリュディアン距離の公式について学びました。sqrt((x1-x2)^2+(y1-y2)^2)これは、2つの要因を比較することにより、類似オブジェクトを見つける方法を理解するのに役立ちました。

1
Math.minが1つの要素配列で機能する理由
MDNによると、Math.minは数字のみを受け入れ、引数の1つが数字でない場合、を返しNaNます。それは我々が複数の番号を持つ配列を渡す場合は、私たちが得ることは事実だNaN。このように、: Math.min([1,2])、私たちはただ1番号を持つ配列を使用する場合、Math.minこの例のように、アレイ内の番号を返しますMath.min([5])。この文書化されていない動作を見る理由は誰にもわかりますか?
17 javascript  math 

4
多くのプログラミング言語でmod(%)が基本的な数学演算子であるのはなぜですか?
モジュラス演算子が多くの言語のように見える標準演算子の小さなセットの一部である理由は、歴史的であろうとなかろうと、ありますか?(+, -, *, /および%、JavaおよびCの場合**、RubyおよびPythonの場合)。 modを「基本」として含めるのは奇妙に思えます(たたくのではなく、たくさん使いますが、累乗、絶対値、下限/天井なども使用します。これは、Java、C、Ruby、Pythonがすべて従う特定の仕様で行われた古い決定でしたか、それともすべての派生言語ですか?私の知る限り、ほとんどのLisp方言には+, -, /とのみが含まれてい*ます。 最初は、modがバイナリレベルで実装するのが特に簡単かどうか疑問に思いました(「基本的な」演算子とすべきでないものに関する決定に関して違いが生じるのでしょうか)。それは私が考えるよりもプログラミングではるかに一般的に使用されていますか?

1
モジュロ/剰余を意味するパーセント記号(%)の使用は、どのプログラミング言語で発生しましたか?
モジュロ/剰余を意味するパーセント記号(%)の使用は、どのプログラミング言語で発生しましたか? この前の投稿1は、シンボル%が選択された可能性が高いことを説明しています。これは、除算に関連する操作に賢いスラッシュが含まれているためです。また、Cによるシンボルの使用の影響についても言及しています。しかし、それがCに由来するかどうかはわかりません。Bプログラミング言語はCの前身であり、Bのユーザーガイド(PDF、ページ12)を見つけました。 演算子%はモジュロを示します。両方のオペランドが正の場合、結果は正しいです。それ以外は未定義です。 ただし、このユーザーズガイドの日付は1972年で、およそCが登場した時期です。これにより、理論的にはCで作成されたものの、Bにバックポートされたものも可能になります。また、%記号の使用を示す前に、他の言語の仕様を見つけることもできませんでした。 私はこの質問が重複していないと信じています:モジュロ演算が基本である理由を尋ねるので、特にシンボルがモジュロを意味するように見えたときについて尋ねています。

7
C#、Javaなどの数学指向コードの読みやすさを改善するにはどうすればよいですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 CプログラマとC#プログラマの両方として、私がC#で気に入らないことの1つは、数学関数の冗長性です。たとえば、サイン関数、コサイン関数、またはべき関数を使用する必要があるたびに、Math静的クラスを追加する必要があります。方程式自体が非常に単純な場合、これは非常に長いコードにつながります。データ型を型キャストする必要がある場合、問題はさらに悪化します。その結果、私の意見では、読みやすさが低下します。例えば: double x = -Math.Cos(X) * Math.Sin(Z) + Math.Sin(X) * Math.Sin(Y) * Math.Cos(Z); 単純に反対 double x = -cos(X) * sin(Z) + sin(X) * sin(Y) * cos(Z); これは、Javaのような他の言語にも当てはまります。 この質問に実際に解決策があるかどうかはわかりませんが、C#またはJavaプログラマーがMathコードの可読性を向上させるために使用するトリックがあるかどうかを知りたいと思います。ただし、C#/ Java / etc。MATLABなどの数学指向の言語ではないため、理にかなっています。ただし、場合によっては数学コードを記述する必要があり、読みやすくすることができれば素晴らしいことです。
16 java  c#  math  readability 

4
できない言語で非常に大きな数を処理することはできませんか?
言語構成体が特定の値より大きい数値を処理できない場合、非常に大きな数値(無限大-浮動小数点数まで)で計算を実行する方法について考えようとしています。 私はこの質問をするのは最初でも最後でもないと確信していますが、私が使用している検索用語はそれらの状況を処理するアルゴリズムを提供していません。むしろ、ほとんどの提案は言語の変更や変数の変更を提供したり、検索に無関係と思われることについて話したりします。だから私は少しの指導が必要です。 次のようなアルゴリズムをスケッチします。 言語の整数変数の最大長を決定します。 数値が変数の最大長の半分を超える場合、配列に分割します。(小さなプレイルームを与えます) 配列の順序[0] =右端の数字[n-max] =左端の数字 例 番号:29392023配列[0]:23、配列[1]:20、配列[2]:39、配列[3]:29 変数の長さの半分をマークオフポイントとして設定したので、1、10、100などを計算できます。変数の最大長が0から9999999999までの10桁の場合、それを5桁に半分にすることで、遊び場ができます。 したがって、追加または乗算すると、array [0]の6番目の桁(右から)がarray [1]の最初の桁(右から)と同じ場所であることを確認する変数チェッカー関数を使用できます。 除算と減算には、私がまだ考えていない独自の問題があります。 プログラムがサポートできる数よりも多くの数をサポートする最良の実装について知りたい。

2
2N lnNを理解しようとすると、クイックソートが比較されます
SedgewickのAlgorithmsブックでクイックソートの分析を行っていました。彼は、N個の異なる項目の配列をソートしながら、クイックソートで比較の数について次の繰り返し関係を作成します。 私はこれを理解するのに苦労しています...任意の要素がピボットになるには1 / Nの確率がかかり、kがピボットになると、左のサブアレイにはk-1個の要素があり、右のサブアレイには配列にはNk個の要素が含まれます。 1.パーティション分割のコストはどのようにN + 1になりますか?パーティション分割を行うのにN + 1回比較しますか? 2.Sedgewickは、kの各値について、それらを合計すると、分割要素がkである確率+上記の式を得る2つのサブアレイのコストを言います。 数学の知識が少ない人(私)が理解できるように、誰かがこれを説明できますか? 具体的には、方程式の2番目の項をどのように取得しますか? その用語の正確な意味は何ですか?

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