プログラマ向けの数学に関する標準的な本はありますか?[閉まっている]


52

私は独学のプログラマーです。私は正直、数学が苦手です。私の仲間のプログラマーの周りでそれほど不安にならないように、数学のスキルを向上させるためにどんなアドバイスをすることができますか?数学のスキルを向上させるために推奨できる手順またはガイドラインは何ですか?

ベストプラクティス、設計方法論、およびプログラマ向けの数学に関するその他の有用な情報を説明するための事実上の標準である本はありますか?その本は特別なものですか?


8
ジオメトリを知っていますか?代数?三角法?線形代数?微積分?あなたはどこまでいますか?
マルセロ

3
@ adietan63:現在の数学的知識についてより具体的に説明しない限り、提案は推測に過ぎません。
デビッドソーンリー

1
PyGameでPythonを使用します。あまり手間をかけずに3Dを使いたければ、カーネギーメロンとディズニースタジオのPanda3Dを学ぶのはとても簡単です。
トールステンミュラー

1
@FrustratedWithFormsDesigner | Javaはグラフィックス処理とゲーミングまたはそのC ++に適していますか?
adietan63

5
仲間のプログラマーが数学をどのように使用しているかについて、もう少し教えてください。金融会社とプログラミングショップで働いている場合は、まったく異なるアドバイスを提供します。(それはあなたが「ヒルベルト空間」やオフィスの周りに「不均一」のような言葉を投げるために、より安全な感じになった場合は、すべての手段によって、いくつかの線形代数や高度な統計を学ぶだけではホイアンのpolloiの開発者に印象づけることを期待しないでください。)
rajah9

回答:


24

うーん、あなたが言うことから、あなたは非常に基本的なことを始めたいと思うようです。それについて何も悪いことはありません、私は同じことをしました。私の数学はほとんどが高校レベルであり、その多くは忘れられていました。

Khan Academyから始めて、練習セクションに進み、どこまで到達できるかを確認します。これにより、何ができるか、どこで学習を始めるかがわかります。

ビデオを見て気にしないでください。少なくとも私にとって、ビデオは習得するのに時間がかかるだけで、カーンは退屈です。基本的な数学を学ぶためのリソースは他にもたくさんあります。WikiBooksまたはck-12の一部と同様

質問はMath.StackExchangeで十分に頻繁に説明されており、「無料のリソース」または「無料の書籍」を検索すると、多くの情報と資料が得られます。「開始」や「初心者」などの検索語についても同様です。または、そこで自分の質問をしてください。これは、redditの/ r / mathサブセクションでも機能します。そこには、数学を学ぶためなど、より多くのsubredditsがあります。

たくさん練習してください。概念を理解してから次へ進むだけでは十分ではありません。あなたはそれを適用することを快適に感じなければなりません。(例として)除算と乗算に慣れていない場合、パーセンテージを理解できません。それはより高い概念にも当てはまります。だからこそ、カーンの練習セクションはビデオよりもはるかに価値があります。

プログラミングと同様に、コミュニティと連絡を取り続けることで、やる気を維持できます。たまにいくつかのフォーラムにログインして、人々の話を読んでください。


ありがとう!あなたの右。私は数学の幅広い分野を理解するために非常に基本的なことから始める必要があると思います。
adietan63

+100 KhanAcademyは、数学の基礎を強化するのに最適です。基本から始めても何も問題はありません。自習型学習は、単純な数学の基礎の一部を知らないという「屈辱要因」を取り除きます。評価システムは、弱点を特定し、弱点を超えて迅速に移行するのに適しています。
エヴァンプライス14年

16

具体的な数学:コンピュータサイエンスの基礎(第2版)は、数学のさまざまな分野をカバーする優れた数学の本と、この本への有用なユーモアのある本の選択です。


私も読んでください。良い本。
安藤

2
とても良い本だからです。しかし、それが自分自身を「数学が苦手」と定義する人にとって何かなのかどうかはわかりません。
バルテック

単に「自明」という言葉を使用するのではなく、Knuthがいくつかの部分をより明白にしたなら、それは素晴らしいことです。しかし、一生懸命勉強すれば、学校での数学の背景がしっかりしていれば、すべてのものを理解できます。
gruszczy

8
この本は間違いなく初心者向けではありません。
MAK

2
秘Theは、実際にそれを読むことです。私は、マニュアルやウェブサイトのようにそれをざっと読みたいと思っていました。それは機能しません。言葉や概念が説明できない?あなたが十分に戻ってそれを見つけるでしょう。私にとっては遅い(計算を終えたことはない-しかし、数学が苦手というよりは怠け者であるため)彼らは物事をうまく説明しています。しばらくお待ちください。
エリックReppen

10

ラマー大学のPaulのオンラインノートはPDF形式で提供されています。迅速な参照に非常に役立ち、すべてのページに例があります。トピックを更新したり、何かを把握したい場合は、このサイトに戻る傾向があります。

セットは次のとおりです。

代数(Math 1314): 完全なメモ
コンテンツのリスト

  • 予備-指数プロパティ、有理指数、負の指数、ラジカル、多項式、因数分解、有理式、複素数
  • 方程式と不等式を解く-線形方程式、二次方程式、二乗式を完了する、二次式、線形および二次方程式の適用、二次形式に還元可能、ラジカルを含む方程式、線形不等式、多項式および合理的不等式、絶対値方程式および不等式。
  • グラフと関数-グラフの線、円、および区分関数、関数定義、関数表記、関数構成、逆関数。
  • 一般的なグラフ-放物線、楕円、双曲線、絶対値、平方根、定数関数、有理関数、シフト、反射、対称。
  • 多項式関数-多項式の除算、多項式のゼロ/根、多項式のゼロの検索、多項式のグラフ化、部分分数。
  • 指数関数と対数関数-指数関数、対数関数、指数関数の解決、対数関数の解決、アプリケーション。
  • 方程式系-置換法、消去法、拡張行列、非線形システム。

微積分I(数学2413):に分離

  1. コンテンツのリスト
  2. ノート
  3. 練習問題
  4. 問題を解決するためのソリューション
  5. 割り当ての問題

    • 代数/トリグレビュー-トリガー関数と方程式、指数関数と方程式、対数関数と方程式。
    • 制限-概念、定義、コンピューティング、片側制限、連続性、無限に関わる制限、ロスピタルルール
    • デリバティブ-定義、解釈、デリバティブ式、べき則、製品ルール、商則、チェーンルール、高階微分、暗黙微分、対数微分、トリガー関数の微分、指数関数、対数関数、逆トリガー関数、双曲線トリガー関数。
    • デリバティブの適用-関連するレート、クリティカルポイント、最小値と最大値、増加/減少関数、変曲点、凹面、最適化
    • 統合-定義、不定積分、定積分、置換規則、定積分の評価、微積分の基本定理
    • 積分の適用-平均関数値、曲線間の面積、回転体、仕事。

微積分II(Math 2414)フルノート

微積分III(Math 2415)フルノート

線形代数(Math 2318)フルノート

微分方程式(Math 3301)フルノート

残りのトピックリストについては、サイトを確認できます。


1
これ以上票がないとは信じられない。ポールは神です。
n0pe

8

これは本ではありませんが、数学についての考えを広げる良い方法かもしれません。 Project Eulerの問題を解決してみてください

たとえば、最初のものは次のとおりです

3または5の倍数である10未満のすべての自然数をリストすると、3、5、6、および9が得られます。これらの倍数の合計は23です。

1000未満の3または5の倍数すべての合計を求めます。


Project Eulerの質問は確かに数学に基づいていますが、私が抱えていた問題は非常に速く進んでいたため、ブルートフォースアルゴリズムを使用することしかできませんでした(ごまかさない限り)。彼らは、すべての質問に対して60秒未満で実行できるエレガントなソリューションを見つけることができるはずだと言います。
マイク

4
@マイク、私は同様の問題を研究し、問題を攻撃するのに十分な基礎となる概念を理解しようとすることはごまかしているとは思わない。このように「ごまかす」ことにより、そのすべての調査を行わずに、より多くを学んでいます。
ダグT.

1
私はそれらの多くを行い、それは私のプログラミングスキルを高めました。数学自体に関しては、多くの巧妙なトリックをほとんど学びますが、微積分や代数のような基本的な知識にあまり追加しません。しかし、それはあなたに数学をする動機を追加します。
トールステンミュラー

1
@thorsten:私の妻(家族の数学者)は、数学はきちんとしたトリックの束にすぎないと考えています。:-)
ピーターK.

1
私が通常オイラーの問題を経験する方法は、最初にブルートフォースを試し、それを最適化することです。それだけでは、私が知らなかった多くの数学的事実を教えてくれました。後でソリューションフォーラムを読むと、通常、さらに数学的な洞察が得られます。
システムダウン

8

私はいつもケネス・ローゼンの離散数学とその応用をお勧めします。理論と応用のバランスがとれた多くの異なるトピックを扱っています(優れた離散数学の本と同様)。また、対象となる概念を生み出した数学者やコンピューター科学者に関する興味深いサイドバーも多数あります。


ありがとう!しかし、離散数学などを勉強する前に、前提条件は何ですか
adietan63

1
@ adietan63:代数だけが必要だと私が言うだろう。私の大学では、微積分または統計の前に離散数学を学習させましたが、これらを最初に学習しても問題はありません。
トカゲのビル

@ adietan63:復習が必要な場合は、Head Firstの数学の本をチェックしたり、無料のオンラインビデオ講義を視聴したりすることもできます。
トカゲのビル

@ビルありがとうございます!プログラミングで多くのことを短期間で学びたいので、このようなことを学ぶことにプレッシャーを感じるかもしれません。たぶん私は一度に一つずつそれを取るでしょう。これは学習プロセスの一部だと思います。再度、感謝します!
adietan63

7
どういたしまして。また、「短期間にプログラミングで多くのことを学びたい」という気持ちは決して消えません。:)
トカゲの法案

4

1000個の個別の数学の本を読むことは良い解決策ですが、時間が制約である場合は最適なパスではないかもしれません。どれだけの数学を深く掘り下げなければならないかを知りたい場合は、(cormen)Algorithm bookの紹介の付録Aをご覧くださいhttp : //www.acmsolver.org/books/ はじめに%20to%20Algorithms、%202nd%20Ed%20-%20Thomas%20H。%20Cormen.pdf

付録を読んで、どの数学のトピックをもっと見直すべきかをよりよく理解できました。何が期待できるかがわかったら、以下を見てください。

http://www.amazon.com/Journey-into-Mathematics-Introduction-Proofs/dp/0486453065/ref=sr_1_15?ie=UTF8&qid=1308591694&sr=8-15 ここに画像の説明を入力してください

私の意見では、(特に帰納法によって)証明する方法を学ぶことは、分析アルゴリズムを理解するための礎石です。残念ながら、ほとんどのアルゴリズム、さらにはCS数学コースでも、証明にあまり焦点を当てていません。彼らはあなたがそれについて有能であるとすでに仮定しているので、彼らは数ページを超えない。数学への旅の本は非常に小さく、読みやすいです。CS問題とその数学的側面も使用します。学ぶべき他の良いトピックは、行列算術確率カウントグラフ理論でもあります。

他の2つの人気のある教科書:Discrete MathとそのEPPからのアプリケーション(私のお気に入り)とRosenからのもう1つ。

http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0534359450/ref=sr_1_4?ie=UTF8&qid=1308591784&sr=8-4

http://www.amazon.com/Discrete-Mathematics-Applications-Kenneth-Rosen/dp/0073229725/ref=sr_1_1?ie=UTF8&qid=1308591784&sr=8-1

コンクリート数学」というタイトルの教科書を読む喜びはありませんが、それについてはいつも良いことを聞きました。


1

率直に言って、数学の基本的に非常に強力な知識がなくても、多くの分野で完全に適切なプログラマになることができます。ゲームエンジンやネットワークルーティングの最適化に関してはあまり能力がないかもしれませんが、実は多くのビジネスアプリケーションはかなり単純です。しかし、希望を生かし続け、まだ数学をあきらめないことをお勧めします。

あなたがより低いレベルでとる数学とより高いレベルでとる数学の間には世界の違いがあります。あなたがCalculusが苦手だと言うのは(私が最初にCalc Iに失敗したとき)、Graph Theoryが苦手だと言うのとはまったく異なります。数学を進める中で、率直に言ってかなり退屈で反復的な単純な問題解決ではなく、グラフ計算機で行うこともできます。代わりに、論理的思考スキルに焦点が当てられています。証明を構築することは、率直に言ってソフトウェアを書くことに非常に似ています。

これまでで最高の数学クラスは、最初の「本当の」数学クラスだと考えたものでした。基本的には、グラフ理論から数論までのさまざまな分野をカバーする証明クラスの紹介です。使用したテキストは素晴らしかったです(D'Angelo and Westの「数学的な思考:問題解決と証明」)。この本を読んで証拠を攻撃するためのアイデアを得るのに役立つかもしれません。

全体的に、私は大学で取った数学のいずれかが本当に必要でしたか?いいえ、おそらくそうではありません。しかし、ある程度の正式なバックグラウンドを持っていることで、批判的思考スキルが向上し、想像力が向上しました(通常、問題を解決する方法はたくさんありますが、時には良い、時には悪いこともありますが、独自のアイデアが役立ちます)。


| ありがとう!たとえ数学があなたをいつも助けてくれなくても。たぶんその存在はあなたの批判的思考に役立ち、分析スキルを向上させるでしょうか?
adietan63

率直に言って、「率直に」という言葉が好きだと思います。
ブクゾール

1

ほら、私は数学が得意ですが、実際にはプログラミングにはまったく使用していませんし、プログラミングもかなりしています。私のアドバイスは、単に十分に知らないことに慣れて、誰かにあなたのために数学をしてもらうことです。

知っておくべきことがたくさんありますので、それらのすべてが得意であるとは期待できませんが、特に数学はあまり有用ではありません。

もちろん、あなたのプログラムは科学的なものであるため、それが必要かもしれません。


2
反対、優れたプログラミングスキルは優れた数学スキルに関連しています。
マルセロ

1
まあ、私はあなたが反対することができると思います。意見の不一致は正しいと思いますが、もしそれが私の貢献に賛成票を投じることを許可されたと感じるなら、それは本当に危険です。
安藤

特権-投票-評判125が必要です。あなたはすでにこの特権を獲得しています。
マルセロ

1
多くの分野で優秀なプログラマーになるために数学を必要としないことに同意するので、賛成です。私は数学があまり役に立たないことに強く反対しますが。毎日の仕事で数学が必要ない場合でも、数学の特定の側面を学習することから、そしてビッグO表記法を理解することだけが目的であれば、多くのことを得ることができます。
トールステンミュラー

1

ESSLLIの「Logic&Computation」セクションの一部の(初心者)コースのコースノートを見ると(例として、2011年のプログラム2010年のプログラム、さらに検索)、興味深いことがあります。プログラミングに関連する分野の現在の理論的発展についての印象を与えます。その後、それらのコースで触れられた特定のサブフィールドの基礎をより深く研究することを決定できます。

(そうでなければ、あなたの質問に答えるのは難しく、あなたが本当に必要としないか、興味がないかもしれない非常に異なる「数学」があります。研究のため、特定のパズルを解決することです。特定のパズルを解決しようとすることは、理論の本当の理解、その背後にある興味深いことを理解するプロセスの重要な要素です)


1

CS数学を適切に勉強しているのであれば、数学論理や集合論のようなものを見ていることになります。これらには、かなり複雑な数学がサポートされています。したがって、数学の基本的なレベルが少し難易度の高い場合は、CS関連の分野に進む前に、基礎から始めるのが最善です。

したがって、KA StroudのEngineering Mathematicsから始めることをお勧めします。よく書かれており、簡単に理解でき、基本事項と高度な内容をカバーしています。


1

基礎から始めてから、専門家に話を進めましょう。数学者の喜びとその解決方法は、2つの素晴らしい本です。数学者の喜びは、人間に優しい、面白い方法で基本的な数学のトピック(例、幾何学、代数、計算など)にアプローチします。私はまだそれを解決する方法を読んでいませんが、推論によって数学の問題を攻撃する方法に焦点を当てています。

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