プロが教える店舗&オフィスのセキュリティ対策術

まだ1回生ですが、大学で応用数学について深く学びたいと思っています。

微積分と線形代数を中心に勉強している最中ですが、
今まで学ぶ機会が無かった応用数学に興味が出てきました。
2回生でコンピュータ基礎、3回生で情報数理学を選択制で学ぶのですが、
少しでも早くこれらの分野について学んでおきたいです。

そこで質問です。

コンピュータ基礎ではC言語などを学んで、
情報数理学では数値解析を学ぶらしいのですが、
C言語と数値解析の関係性などを教えてください。
(C言語が数値解析でも使われるのか…?)
また、数値解析を学ぶ上で、必要不可欠な数学の分野を教えてください。


応用数学から話は逸れるのですが、力学系や数理学について知っていることが
あれば教えてください。

数理学ではどのような勉強をするのか
力学系ではどのような勉強をするのか

また、これらを独学で1から学ぶときに力になる参考書など
ありましたら教えてください。



今まで色々な情報を集めてきたのですが、混乱してきたので整理したいです。

質問を纏めると、

(1)C言語、数値解析の関係性と、これらを学ぶ際に必要不可欠となる数学の分野
(2)C言語、数値解析、力学系、情報数理学を学ぶ際に力になる参考書など


稚拙な文章を長々と申し訳ありません。
回答お待ちしています。よろしくお願いいたします。

A 回答 (5件)

企業にいる統計家(博士(工学))です。



なんとか言語を使ってコーディングするのは、
大学や大学院の数学科を出たあなたのような方がする仕事ではありません。
コーディングしているのは、各種学校(専門学校)を出て、
コーディング専門で下請けする会社の人たちです。
それに、数値解析なら、既に多くのエンジンが市販されています。
大手企業は、メインフレームにそれらが入っていますので、
機械系・材料系のエンジニアでも日常的に使っています。

では、数学系(理学部)出は何をやっているかというと、
情報システムに関するアルゴリズムを考えて仕様書を書きます。
どのような数値処理をして、どんな知見を引き出すのか、
そんなことを毎日毎日考えているのです。

応用数学であれば、今日「ビッグデータ」が注目を浴びています。
機械学習による統計科学の分野になります。
そこで用いられる数学は、ベイズ、なかでもノンパラメトリック・ベイズという数学です。
日本では致命的な人手不足で、大学の助教クラスが企業に引き抜かれています。
また、有名なソフトウエアハウスがIBMやNTTに次々買収されています。

ぜひ、機械学習を学んでおかれることをお勧めします。

参考書としては、
「パターン認識と機械学習」上下、ビショップら(丸善)
あたりになりますが、1回生にとっては荷が重いかもしれません。

まずは、ベイズの入門あたりから、
「ベイズ統計学概説」松原望、(培風館)
「データ解析のための統計モデリング入門」久保拓弥、(岩波)も名著です。

ベイズではありませんが、カーネル・トリックも勉強しておいた方がよいでしょう。
「カーネル多変量解析」赤穂昭太郎、(岩波)
あたりが良いかと思いますが、これも1回生には重いかも。

1回生で読破できて、実際のプログラムに実装できるようであれば、
末は博士か、ソフトウエアハウスのトップ・エンジニアです。
起業できているかもしれません。

まずは、情報系、数学系の学会誌を見て、最近の動向をつかむべきです。

この回答への補足

機械学習やベイズ、カーネル・トリックを学ぶと良い。との事ですが、次のプランで学ぶと効率が良いでしょうか?

(1)確率統計の分野について基礎的なことから学ぶ
(2)ベイズ統計学について学ぶ
(3)機械学習やカーネル・トリックについて学ぶ

また、これらと平行してプログラミング言語を学ぼうと考えているのですが、C言語などではなく、使い道のあるRubyなどを学んだ方が後々数学の研究を行う際や、企業等に就職した際に力を発揮するでしょうか?

それともC言語などの簡単なプログラミング言語から手を付けていくべきでしょうか?

初歩的な質問ばかりすみません。

補足日時:2012/11/18 22:36
    • good
    • 0

#3です。



数学の勉強の件、
確率統計に進むなら、まずは線形代数学をしっかり学んでください。
固有値問題などは、統計科学にも密接に関係しています。

次に、プログラム言語で何が一番実用的かというと、
企業に就職するなら、多くの企業ではMatlab simlinkが使用されますので、
そのスクリプトが書けるようになるのが一番でしょう。
Matlab互換のフリーソフトでOctaveやSilab(綴りが違うかも、サイラボです)が
あります。互換ソフトが出るということは、それだけ普及しているということです。
matlabはモデルベース開発にも使用され、自動コード生成機能もあります。
matlabが使えるということは、強力な武器になります。

あとは並行して、機械学習のことを知っていけばいいかと思います。
しかし、ベイズによる、母パラメータの推定などは、独学ではかなり難しいです。
東京なんかだと、自主的な勉強会がありますので、それに参加してはいかがでしょうか。
OpenBUGSなんかを使って初歩から教えてくれるのではないでしょうか。

OpenBUGSはMCMC(マルコフ連鎖モンテカルロ法)のフリーソフトです。

この回答への補足

なるほど。
それでは、線形代数をしっかり学んだ後に確率統計を学ぶこととします。

企業に就職するのでなければ、matlabではなく、C言語やRubyなどを学ぶ程度でよいのでしょうか?(確率統計にも興味がありますが、数値解析などにも興味があるので…因みに大学ではC言語を用いて数値解析を行っているらしいです。)

最後に、未だにはっきりとしたイメージがつかめないのですが、確率統計では数値解析と同様にプログラミングを行って考えていくのでしょうか?そこで用いられるプログラミング言語はどのようなものでも構わない(解析の過程がプログラミング言語に依存しない)のでしょうか?

今までkamiyasiroさんが挙げられたお話は、「数学科の学生」が学ぶ事のひとつなのでしょうか?今回の質問で初めて耳にするワードが幾つか登場したので、疑問でなりません。

補足日時:2012/11/19 11:09
    • good
    • 0

#3です。



追加ですみません。

コーディングですが、
今は組み込み系はモデルベース開発という手法が主流で、
自動コード生成ですので、
#2さんがおっしゃるように、Cなんか、あんまり見ないですね。

私は、この年(50代)になってRubyを覚えました。
よっぽど、使い道がありますよ。

何が言いたいかというと、貴学のカリキュラムは
大丈夫なのかなあ、ということです。
あまりにも前時代的。

解析学・線形代数学は基本ですので、しっかり学び、
しかし、最新の応用数学や統計科学を教える先生が学内にいないのであれば、
院は、他学の門を叩くべきです。
    • good
    • 0

研究や実務上の数値計算を C 言語で


プログラムすることは、あまりない
だろうと思います。
C や JAVA は、バソコン用の安価で優秀な
言語処理系が入手できますから、
アルゴリズムを学習するときに、自宅で
ちょっと実験するのには適しています。
知っている人が多い言語なので、書籍などでも、
プログラムの雛型を C で書いて見せることは、
よく行われます。あくまで「雛型を」です。
プログラミングの専門家でもない人が
自分の専門領域での仕事用にプログラムするには、
C は、ライブラリが弱く、バグ取りも困難です。
JAVA は、実行が遅すぎて、実務には耐えません。
どちらも、入門期の学習用限定でしょう。
よく作り込まれた数値計算ライブラリを
呼び出すだけなら、何の言語を使っても同じですが。
    • good
    • 0
この回答へのお礼

アルゴリズムなどを学ぶ際に、C言語を用いて学習していきたいと思います。これらを情報数理などに結び付けれたら…と。

お礼日時:2012/11/18 22:29

情報工学科3年に在籍中の者からの意見。



> C言語、数値解析の関係性と、これらを学ぶ際に必要不可欠となる数学の分野
・非線形方程式…exp(x) - 2x - 2 = 0 のような方程式は解析的には解けません。
・n元の連立1次方程式を解く
・定積分演算…コンピュータはクロックに従いながら動作しているので、連続関数を扱えない。
・微分方程式の解
これらの問題を解くには、
・微積、線形代数、微分方程式の数学的理論は必要
・アルゴリズムを勉強する。これは、数値解析の参考書に書いてある。
・「微分」「積分」「差分」の本質的理解。ただ単に「手計算ができる」だけではダメである。
・ある程度、プログラミングの経験を積むと理解しやすいでしょう。
・いちばん重要なのは、「コンピュータの計算の仕組み」を知ること。なぜなら、特定の計算条件が揃うと計算誤差が増大します。また、乗算と除算は加算に比べ計算速度がすごく遅いです。「ハードウェア」「論理回路」を勉強してCPU内部の処理を知ることが大切です。

> C言語、数値解析、力学系、情報数理学を学ぶ際に力になる参考書など
・amazonで探してみるといいです。
・情報系の学科に知り合いがいれば参考書を見せてもらうのもいいかも。

ちなみに、CじゃなくてもJavaでもプログラミングできます。Cなら簡単な文法を習得すればOK。
    • good
    • 1
この回答へのお礼

様々なプログラミング言語が存在するのですね。C言語などから手を付けて、考えていこうか悩んでいます。参考にします。ありがとうございました。

お礼日時:2012/11/18 22:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!