プログラミングを通して数学を学ぶことは可能ですか、それともプログラミングのために数学を学ぶべきですか?[閉まっている]


10

私は数学が得意ではありませんが、それほどひどいものでもありませんが、平均よりは低く、常に数学を改善しようと考えていましたが、学校や本はあまりに速く飽きてきて仕事をしませんでした。私が飽きないのはコーディングとゲームだけなので、数学の問題を解決するプログラムをコーディングすると数学をよりよく理解できるとしたら、これらの問題のほとんどは制限(計算)、関数、微分計算、そして以前に述べたのと同様のいくつかの他の主題(すでに私はそれほど良くないと言った)。

私の質問は次のとおりです。特定のプログラムコーディングを行うと、数学の知識を向上させることができますか。また、可能であれば、その方法で物理学も可能ですか?それとも私は間違っているのですか?プログラミングを改善するためにプログラミングの前に数学を学ぶ必要がありますか?

PS:C ++が優先言語です。


5
それは私にとって逆の働きをしました。大学院レベルの統計学のクラスでよりよく働けるようにコンピュータプログラミングを学びました。統計よりもプログラミングが好きで、キャリアの方向性が変わった。
jfrankcarr



数学への王道はありません、サー。
Karl

回答:


16

Haskellのような関数型言語には非常に「数学的」な概念がありますが、実際にプログラミングを使用して数学と物理学の問題を解決する場合にのみ、プログラミングから数学または物理学を学びます。カーンアカデミープロジェクトオイラーなどのWebサイトにアクセスすることをお勧めします。コードを使用してそこで問題を解決すると、コーディングスキルと数学スキルの両方を同時に向上させることができます。


5
両方のリソースで+1。とはいえ、初めて微積分が嫌いだったのは確かです。それもうまくいかなかった。Lispを習得して以来、それは理にかなっています。ちょっと楽しいです。
Jason Lewis

1
Haskellを試してみたい場合は、「The Haskell road to Logic、Maths and Programming」を読むことができます。この本はHaskellに数学を教えることを教えており、途中ですべての数学的概念を紹介しています。ただし、これは数学的論理、数論、およびいくつかの基本代数に焦点を当てています。微積分学は、あなたが他のすべてを通過することができた場合、最後にのみ言及されます。
Vincent Zoonekynd、2012年

Mathematica(高価!)、Maxima、Axiom(無料)などの特殊なCAS言語もお勧めします。用語の書き直し、ルール、および戦略のアイデアが得られたら、数学全体が理にかなっています。
SKロジック

私は個人的に、カーンアカデミーが私の数学の知識のギャップを埋めるのに非常に役立ちました。
jonners99 2013年

@Jason Lewis-問題が教材よりも指導スタイルであり、完全なコースが必要な場合、MIT OpenCoursewareコースは、微積分や線形代数を含む多くの数学トピックに最適です。ただし、特定のトピックを1つ修正するだけでは実用的ではありません。特に線形代数コースが好きでした。もちろん、MIT OpenCoursewareは、一部のコンピューターサイエンストピック(特に2つのアルゴリズムとデータ構造のコース)にも非常に適しています。優れた無料の教材を使って自分のペースで自分自身を教育するのにこれほど良い時間はありません。
Steve314 2013年

5

明らかにあなたはプログラミングを通して数学を学ぶべきです。物理的なオブジェクトをシミュレートしようとする場合は、あらゆる種類の物理学と数学を学ぶ必要があり、それを楽しむことができます。


4

これは私の見解です...

プログラミングはあなたの知識をテストするのに役立ちます

私が高校と中学校にいたとき、私は計算機をプログラムして、単調な計算をしてくれました。一部の人々はそれが不正行為であると主張しました、しかし私は数学を本当に理解しなければプログラムを書くことができないといつも主張しました。

たとえば、ピタゴラスの定理の範囲内で、AとBを指定して、C値を計算する小さなプログラムを作成したいとします。どうやってやるの?まあ、私たちはそれを知っています:

A^2 + B^2 = C^2

Cを解くには、次のようにします。

C = SQRT(A^2 + B^2)

したがって、プログラムは次のようになります(適切なヘッダーを想定すると、これは必要最低限​​の例です)。

cout << "Enter value for A: " 
cin << valA;
cout << "Enter value for B: "
cin << valB;

float valC = sqrt(pow(valA, 2) + pow(valB, 2))
cout << "C = " << valC << "\n";

しかしながら...

どこでどのようにして上記の知識を身につけますか?

前の例では、方程式内でCを解く方法を知る必要がありました。C A^2 + B^2 = C^2.を見つけるために両側を平方根にする方法を知らなかった場合、どのように問題を解決できますか?

IMO、それは要約すると:プログラミングは数学を完全に教えるわけではありませんが、習得するスキルを向上させます。


はい、私はあなたのポイントを得て同意します。あなたの答えに基づいて、私はプログラミングの問題を解決するときに数学を学びますが、知識がなければそれらを解決することはできないので、解決策を探す必要があります。数学を教えてくれるものです...
SAFAD 2012年

2

SICPブックは数学上の非常に素晴らしいセクションがあります。しかし、少なくとも線形代数、離散数学、そして微積分を取り入れようとすることをお勧めします。プログラムを書くことから学ぶだけの場合、教育は非常に深く、あまり広くはないでしょう。


2

彼らは手を取り合っていると思います。数学的手法のしっかりした基礎は、そうでなければプログラミングにないオプションを開きますが、プログラミングは数学的研究の興味深い道を開くことができます。

私は最近、優れたオープンソースMaxima Computer Algebra System(別名、CAS、別名MapleまたはMathematicaシステム)のグラフィカルなフロントエンドであるwxMaximaの使用を開始しました。

それ自体は数学について何も教えませんが、それは確かに数学をいっそう面白くて楽しいものにし、それ自体があなたにもっと学ぶように促すことができます。


2

「プログラミング」には多くの数学は必要ありません。

「コンピュータサイエンス」には数学が必要です。

すべてに既存のライブラリソリューションを使用する場合は、おそらくそれらがどのように機能するかは気にしません。ただし、CSは非常に数学に基づいているため、独自のアルゴリズムとデータ構造を作成する場合は、数学を知る必要があります。


1

AI、データ処理、物理シミュレーション、グラフィックスでの作業に興味がある場合は、数学が必要です。逆にそうでない場合は、そうではないと思います。それを使うか失うかというケースですが、フランスに住みたいと思わないならなぜフランス語を学ぶのでしょうか?条件付きロジックを必要とするだけの問題ドメインがたくさんあります。

とはいえ、プログラミングへのプログラミングには自然な傾向があり、それを理解するには、それだけでは何の効果もありません。


1

見ていMATLABを。その言語は、コードで数学関数を実行するために設計されました。

数値計算環境と第4世代プログラミング言語 ... MATLABでは、行列の操作、関数とデータのプロット、アルゴリズムの実装、ユーザーインターフェイスの作成、他の言語で記述されたプログラムとのインターフェイスが可能です...

MATLABは主に数値計算を目的としていますが、オプションのツールボックスはMuPADシンボリックエンジンを使用しており、シンボリックコンピューティング機能にアクセスできます。追加のパッケージであるSimulinkは、動的および組み込みシステム向けのグラフィカルなマルチドメインシミュレーションとモデルベースデザインを追加します...


matlabは、プログラマーが事前に適切な数学的知識を持ち、それが数学の特定の領域に限定されている場合にのみ有益です。
wirrbel 2013

1

数学は非常に広い領域を持つ科学です。(数学であることを除いて)まったく共通点がまったくないさまざまな種類の数学があります。

現在、コンピュータは計算と計算を行うため、プログラミングはしばしば数学に関連付けられています。最も基本的には、離散ステップで整数または浮動小数点のデータ型を使用して計算を行っています。

プログラムで数学を「近似」することによってプログラミングによって学習できる数学の分野があります。微分計算を研究し、小さな間隔の数値を計算して、「純粋な」数学の限界を「エミュレート」するとします。

プログラミングの他の側面は簡単に数学にマッピングされます(高校の数学のクラスの一部ではないかもしれませんが、従来のカリキュラムの一部ではない貴重な数学です)。たとえば、型理論-または数学的帰納法。

多くの場合、コードの「正しさ」について推論する唯一の方法は、たとえば数学的帰納法です。この種の推論は、特に関数型言語(再帰など)で見られます。

つまり、プログラミング中に数学を学習する方法はたくさんありますが、コンピュータやプログラミング言語の計算モデルでは、すべての数学に簡単にアクセスできるわけではありません。


0

私はブログエントリを見つけることができませんでしたが、ウェブデベロッパーになることによって数学の愛を発見し、彼が彼はいつも高校で惨めに失敗していて、彼は数学が得意な人ではないだろうと思っていて、それから芸術的なタイプとして自分自身を釘付けにしたにもかかわらず、実際にはかなり上手です。

いいえ、私ではありません。私はただ怠惰でした。私は時々トリガーを再学習する必要がありますが、それはそれについてです。

IMO、基本的にできなくなるまで、重い数学の知識がなくてもまともなコードをたくさん書くことができます。

しかし、プログラミングがそれにかなりの関心を持っている人のためにできることは、あなたがこの種の人であるかその種の人であるかという考えを乗り越え、あなたがただ試すために必要なツールを提供することです特定の研究分野であなたの興味がどれだけあなたを連れて行くかを自分で見つけてください。

そしてもちろん、私たちが行っていることはすべて計算と密接に関連しているので、その逆の要約のことについてすべてを学ぶようなことをしたとき、あなたが気づいた以上にあなたがすでに学んだことを発見するかもしれません。


0

もう1つのオプションは、プログラミングへの愛着を利用して、数学を学びたいという欲求を駆り立てることです。あなたがそれを適用したい特定の問題でそれを学んでいるなら、数学は例外ではありません。あなたは興味のある数学の重いプログラミング問題を理解し、関連する数学を学ぶ理由としてそれらを使用する必要があるだけです。たとえば線形代数を学習して、グラフィックスや、画像処理やコンピュータービジョンタイプのものの確率や統計を操作できるようにします。

学習方法は人によって異なるため、あなたの走行距離はこれに応じて変化すると思いますが、数学を学ぶために座って抽象的に数学を学ぶことは、私にとってはうまくいかなかっただけです。


-2

まあ、あなたは学生にスクラッチで正方形、五角形、六角形、円を描くような幾何学の問題を解決するように頼むことができます。ソリューションを開発するように彼らに挑戦し、それをコード化する方法について彼らに答えないでください。ソリューションを探索してテストしてもらいます。少なくとも、ポリゴンの角度の合計などを尋ねることができます。次に、アルゴリズムと独自のカテゴリを構築できます。

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