• 締切済み

"化学"反応を予想するソフト

将来は化学者になりたいと思っている者です。パソコンにも非常に興味があります。 化学反応を予想するソフトを(企業ではなく個人、少人数で)作ることは出来るでしょうか。またそれにはどれぐらいのプログラミング技術が必要でしょうか。(仮に化学の知識は問題ないとします。) また、C言語(?)などそのソフトを作るプログラミングに必要な少数の言語に精通する必要があるのか、また多数の言語を習得する必要があるのでしょうか。 化学とは物理のような大まかなものではなく、原子単位の反応のことです。たとえば、飛行機のメイカーが新たしい飛行機をつくるときに全部実験でまかなうと膨大に費用が掛かるので、コンピューターのシミュレーション実験を行うそうですが、これはおそらく翼の浮力や機体に掛かる重力、遠心力を計算するなど、物理的なものだと思います。 いままで、"化学"反応を予想するソフトと言うのは聞いたことがありません。プログラミングの知識はhtmlがわずかに出来るだけで無知に等しいですが、現在ではびっくりするぐらい非常に高度なソフトが多数出来ているので、可能ではないかと思いました。 具体的には既知の化学反応式の基本的なパターンを全てプログラミングし、それを元にコンピューターに予想させると言うものです。コンピューターに考えさせるソフトとして、将棋のソフトがありますが、あれは基本的な将棋の定石を大量にインプットさせ、α-β法とかいうプログラミング方法を駆使し、更に関数もいろいろと導入しているそうです。後10年後には超1流プロも勝てなくなる可能性があるらしいです。 将棋が可能なら、化学反応の予想もある程度なら可能ではないでしょうか。 "化学"反応を予想するソフトの現実性、もしあれば前例、そのソフトをつくるために、収得すべきスキルなどをしえてください。 御願いします。

みんなの回答

  • 3023040
  • ベストアンサー率100% (1/1)
回答No.6

 私は実際に理論計算(化学反応等をシュミレーションする)を専門に行なっています。実際に化学反応を予想するソフトとしては、GaussianやGamesなどが有名です。前者はかなり高額ですので、一般ユーザーが使うならばフリーソフトである後者だと思われます。  このようなソフトの開発はプログラミングの知識よりも圧倒的に量子力学や量子化学の知識が必要となります。何故ならば、化学反応とは電子の振る舞いがそのほとんどを決定するため、電子の振る舞いを表記するSchrödinger方程式を解かなければならないからです。このSchrödinger方程式は水素原子以外の場合では多体問題により完全には解く事ができません。よってこれを一部を近似して解きます。どのような近似をするのかによって様々な計算レベルが開発されてきていますが、どのように近似し、これらの近似を行なったSchrödinger方程式を如何に解くかさえクリアーできれば個人でも開発は可能です。  習得しなければいけないスキルとしては、最低限のプログラミング・専門課程の大学院相当以上の量子力学及び量子化学の知識・行列計算に関する十分な知識が上げられます。

回答No.5

他の人とまたちょっと違った意見を言ってみたいと思います。まあ、「可能性」の話ですしね(可能性の話はいくらでも出来ます)。 基本的にコンピュータは「決定論的世界」の産物です。AすればBになる、って言うアレですよね。ですから、「化学の世界」も理論を作る際には「決定論」なので、当然「プログラムとして作りたい」のも決定論の世界に準じるので「化学の知識が必要だ」ってのはその通りです。 物理にしてもその通りで、それも「決定論的世界観」に左右されています。一般的に科学と言う分野はそうなんですよ。 ただし、他の考え方も可能で、恐らくlionsfanさんがやりたいのはコッチなんじゃないかな、って事です。それは「統計学的なアプローチ」と言う事です。 例えばデータベースに「今まで人類が知り得てる化学反応のパターン(事象)」を突っ込んでおいて、未知の化学反応を予測する、と言う……。これは「統計学的な」文脈に於いてはひょっとして可能かもしれません。「確率××%で△△っぽい物質が作られる」みたいな。 ただし、気をつけて欲しいのは、それは「科学とはまたちょっと毛色の変わった」統計学の文脈であって、「化学の文脈ではない」と言う事です。また、「それをやる事に意味があるのか?」「意味がある結果が得られるのか?」と言うのとはまた別の話ですよね。ただし、発想としては面白いとは思います。まあ、「化学の連中」からは総スカンを喰らう可能性も無きにしもあらず、ですが(笑)。 実はこの手の統計学(データベース)+コンピュータによる予測の組み合わせ、と言うのは統計学では今ある種熱い分野で、多分適切な手法は「ベイズ統計学絡み」なんだとは思います。 と言うワケで「考え方」自体は別に否定されるような事でもないので、「ベイズ統計」で調べてみればひょっとしたら面白いかもしれません。

  • atushi256
  • ベストアンサー率62% (10/16)
回答No.4

おそらく計算物理学が質問者さんの想像しておられるものに近いのではないかなと思います。残念ながら、私は物理の人間ですのでよく知りませんが、化学の世界では、計算化学とか言うのかもしれません。 ==== 化学反応を予想するというのは、その方向に化学反応が進むかどうかを計算機で判定します。具体的には論文や発表を見たかぎり以下のようなアプローチがとられるようです。 (1)反応パスの各点において総エネルギーを求めて、そのエネルギー障壁が室温で乗り越えられそうかどうか調べる (2)実際に分子動力学で反応させて見て、どういう反応が起こるか見てみる (3)その他 これらの論文で行われていることは非常に複雑ですが、極論すれば、ある特定の「電子系の総エネルギーを計算」することに行き着きます。 ==== 私の知る限り、「電子系の総エネルギーを計算」するアプローチには、大きく分けて「第一原理計算派」と「モデル計算派」がいます。前者は電子系の支配方程式であるSchrodinger方程式をまじめに解きます。後者は問題に合わせて有効的な支配方程式を導出してそれを解きます。 両者にはそれぞれに利点も欠点もあり、どちらが優れているというわけではないと思いますが、質問者さんが想定しておられるのは、おそらく前者のようなものでしょう。 ==== 「第一原理計算派」がよく使用する代表的な手法をあげておきます。 (1)Hartree-Fock法 (2)密度汎関数法(Density functional theory) (3)摂動法(MP2とか) (4)Coupled cluster法 ==== 私は使わないのでよく知りませんが、「第一原理計算派」がよく使用する計算パッケージとか。有料のもありますが、無料のもあります。 (1) Gaussian (2) GAMESS (3) VASP ==== 自分でこれらのプログラムを作る場合 (1)Fortran言語かc言語どちらかの知識 (未だにこの分野ではFortranが使われています。 cも増えてきた感じがします。) (2)手法に対する知識 (3)量子力学に対する知識 (化学の方は量子化学というのでしょうか?) 1は特に重要ではなく、2と3に対する知識が特に重要だと思います。世間一般で言われているような小難しいプログラミング方法論(オブジェクト指向とか、関数型プログラミング、UML、アスペクト思考、アジャイル)とかはあまり役に立ちません、原子的なプログラムが書ければいいと思います。 もし、本気でこの分野に入りたいのであれば、計算物理系の本を読むのが一番だと思います。読んでいて、物理の知識が足りなければ、量子力学の本も読むといいのではないでしょうか? (1)量子力学I 小出昭一郎 裳華房 http://www.amazon.co.jp/%E9%87%8F%E5%AD%90%E5%8A%9B%E5%AD%A6%E3%80%881%E3%80%89-%E5%9F%BA%E7%A4%8E%E7%89%A9%E7%90%86%E5%AD%A6%E9%81%B8%E6%9B%B8-%E5%B0%8F%E5%87%BA-%E6%98%AD%E4%B8%80%E9%83%8E/dp/4785321326 (2)計算機マテリアルデザイン入門  http://www.amazon.co.jp/gp/product/4872591526 (結構な数の手法の概要を網羅していて、著者らが作った計算パッケージなどの解説もある。入門にはいいかも) (3)原子・分子の密度汎関数法 http://www.amazon.co.jp/%E5%8E%9F%E5%AD%90%E3%83%BB%E5%88%86%E5%AD%90%E3%81%AE%E5%AF%86%E5%BA%A6%E6%B1%8E%E9%96%A2%E6%95%B0%E6%B3%95-R-G-%E3%83%91%E3%83%BC%E3%83%AB/dp/4431707220 (かなり高度) #こんだけ書いて、質問読み間違えてたらどうしよう・・

  • chirubou
  • ベストアンサー率37% (189/502)
回答No.3

化学は専門ではないのですが、聞きかじり程度ということで参考になればと思います。 多くの化学者は Gaussian (http://www.hulinks.co.jp/software/gaussian/) を使っているようです。なにやら難しい方程式を解いているらしいです。似たような事をするプログラムを他にいくつかあるようです。 毛色の違うものとしては、MolWorks (http://www.molworks.com/ja/) というのがありますが、これは分子式から物性を推測(正確には推算というらしい)するようです。 日本では特に勘違い(?)されている人が多いのですが、プログラムするというのは特殊なものではなく、あくまで手段なのです。欧米、特にヨーロッパでは計算科学、コンピュータ自体の科学、は他の自然科学より低く見られていて、物理屋さん、化学屋さんが自分の研究のために自分でプログラムを書きます。(日本でこういう人は少ないです、残念ながら) ということで、本当に必要なのは化学の知識です。ということで、どっちが先かというと化学(と数学)の勉強、で次がプログラミングなのではないでしょうか。

  • usokoku
  • ベストアンサー率29% (744/2561)
回答No.2

立体障害を予想するソフトはありました。 ただ、構造が簡単なものしかできない(立体構造を予測できないので手入力だったはず)ので、その後どうなったやらわかりません。 どこかの薬学の先生が報告していたはずです。 このソフトでしたらば、3Dワイヤーモデルを指定した座標に描くだけ(それ以上の内容をしていたかもしれませんが私の記憶では)ですから、極端な言い方をすれば、市販分子模型から、あるいは、化学便覧の後ろの方に書いてある原子間距離と角度から、寸法をワイヤーモデルの指定に書き換えて、描くだけなので、画像表示プログラムが描ける程度の能力があれば誰でもできます。 これでは、電子雲の状態が不明ですから、既にあるような内容を使って電子雲の状態を推定し、電子雲同士の反発があるかどうかを人間が見て判断し、立体障害の有無を調べる方法です。 「市販分子模型」を手で作るのが面倒だから、パソコンに刺せているというような、簡単なソフトです。 KISS(着せ替えセットシステム)というソフトで、同じようなことを試みた人もいたようです。 化学反応のデザインは、これは、実験をこなした人でないとできないです。素反応から推定することは可能です。しかし、その素反応が起こる条件かどうかはわからない。やってみてうまく行ったらば、何とかなるだろう、と見当をつけることになります。極端な話が、入手可能な報告の素反応を詰めこんで行き、条件が合いそうな反応を拾って行く、という内容ですが、これは、一-2年有機合成をやっていれば、誰でもかけます。 ただし、分量が巨大過ぎるので、パソコンではその判断が困難です。 素反応が、大きく分けて、30系統、200位ですから、パソコンでやるよりも人間がやったほうが早いです。しかも、条件合わせの判断で文献を拾わなければならず、著作権法の制限で、実行は不可能でし様。

  • taunamlz
  • ベストアンサー率20% (175/843)
回答No.1

プログラムと言うのはプログラマーの頭の中身以上の事は出来ません。 もしあなたが"化学"反応を予想する事が出来るのであれば、その考え方をプログラミングすれば良いのです。 もしあなたが"化学"反応を予想する事が出来ないのであればプログラミングする事は出来ません。 シュミレーターと言うのは何度も数字を入力して電卓を叩いて計算するのが面倒だから、その一連の計算をパソコンにやらせてるだけです。 小学生向けの算数ドリルが一冊合ったとします。簡単ですが面倒じゃないですか? それを、パソコンに問題だけを入力して答えを計算させてるんですね。 これがプログラミングです。 例えば、連立方程式が面倒だからプログラミングしよう!という人ならば連立方程式プログラムを作る事が出来るでしょう。 連立方程式が分からないからプログラミングしよう!という人はプログラミングが終わる頃には連立方程式が解けるようになっているはずです。 ちなみに、将棋などのソフトは予測しているわけではなく、全ての将棋の駒を動かしてみて、最適と思われる手順で駒を動かしているんです。 (極端な話ですと、開始直後の一手目で既に数万通りの投了の形をシュミレートしてるはずです。) 定石をインプットしているのはその手が有効であると言う説が有力だから、その形になるような手順で動かした方が良いという設計なのではないかと思います。 だから、とりあえず必要なスキルはあなた自身が"化学"反応を予想出来るようにならなければいけません。 あとはその計算式を分解してプログラムに組み込むだけです。

関連するQ&A

  • 二つの物質の反応(反応速度)を予想する手段

    まったくの化学の素人です。 実験の関係二つの化学物質の反応が起こるかどうかが知りたいです。 できればどのぐらいの速さで起こるかも。 予想するためのソフトか何かありませんか? よろしくお願いします。

  • 化学反応シミュレーション

    化学反応のシミュレーション、つまり実験をする前にあれとこれを混ぜて反応させたら、どんな物質になるかわかるようなソフトはありませんか?

  • Visual Basicでは高度の人工知能ソフトはつくれないのでしょうか。

    例えば、世界コンピュータ将棋選手権に参加している強豪将棋ソフトはほとんどC++でプログラミングされていると思います。 JAVAも似た言語のようですが、JAVAでつくられていないのはなぜなのでしょうか。 また、VisualBasicでは、このような高度の人工知能をプログラミングするのことというのは出来ない、または、C++に比べてもはるかに不向きなのでしょうか。

  • 意外と化学科は数学使いますよね?

    僕は化学科ではないですが化学科の友達の教科書を見れば意外と数学が使われてますよね? 化学といえば高校時代は理系でも数学や物理が苦手で実験が好きな人が化学科に進学しているという僕の感想ですが、友達も数学が苦手で量子化学とかでは物理や数学の知識が要るので苦労しているらしいです。どの大学も化学科はしんどいといわれてますし。 なぜ大学の化学科は高校時代の暗記だけでどうにかなる化学とは違い数学の知識が必要になるのでしょうか?教えてください

  • 簡単な将棋ソフト作成

    ・言語は特段指定いたしません。 ・コンピューター対戦機能やネット対戦機能もいりません。 ・1台のPCで人間VS人間ができればそれで良いです。 ・コマのデザインと動き方だけはオリジナルで作成したいです。 そんな本当に簡単な将棋ソフトを自作してみたいです。 「Visual Studio」「C」「C++」「Java」プログラミングを少しずつかじった程度の知識しかございません。 好きな将棋で簡単なソフトを作って今後の技術発展に役立てたいです。 どの言語が一番作りやすいでしょうか?上記4つの言語以外でもかまいません。 参考になるサイトや書籍が御座いましたらお教え下さい。 またこんな人間が1人だけで自作した場合どれぐらいの期間がかかるでしょうか?

  • 化学反応のパターン化

    度々お世話になっております。化学についての質問です。 化学変化、特に高校化学についてのそれでは、特定の反応物の組合せにより、特定の生成物が生じる。という風な捉えで次から次へと反応式を覚えていきますが、中にはある程度パターン化した反応もありますよね。例えば、燃焼・中和・酸化・還元・電離などは組合せというよりもその反応自体に着眼して学ぶから、組合せを覚えるのも楽です。 一方では、無機化学のように、パターンの掴みにくい反応を多々見せるものもあります。炭酸塩←→炭酸水素塩というような解りやすい反応例もありはしますが…私は独学で化学を学んでおりますが、基本を押えた上で出て来る、特に「○○に●●を加えたときの化学変化を反応式で示せ」という練習問題が苦手です。化学は幾つかの法則がある一方で実験で得られた特例みたいな事象もよくあります。定理を覚えれば問題に対応出来るといった数学的なアプローチだけでは、対応しきれない難しさが化学にはあると最近感じています。 と偉そうに語ってしまいましたが質問です。化学の得意な方は、化学の煩雑さを克服するのに何か独自の工夫はされましたか。アドバイスいただけると幸いです。

  • 物理化学は化学?物理?

    大学で物理化学の授業があるらしいのですが、物理化学とは化学なのでしょうか? 編入で理系の学部に入ることになり、 物理も化学も知識がゼロなので危機感を感じ、今中学レベルの勉強しているところです。 シラバスを見ると、化学Bとして物理化学がありました。 内容は、熱力学や熱化学、化学平衡などです。 化学の知識が必要なら、このまま独学で化学を勉強しようと思っているので、 どうか教えてくださると助かります。

  • 化学反応における量的関係の実験において、

    化学反応における量的関係の実験において、 塩酸が入ったコニカルビーカーに炭酸カルシウムを加えた後、 ストローでビーカー内の気体を吹き出す必要があるのはなぜですか? 教えてください!!

  • なぜ人間の体は化学の実験の時のように加熱しなくても体内で化学反応が起こ

    なぜ人間の体は化学の実験の時のように加熱しなくても体内で化学反応が起こるのですか?また、脳は膨大な情報を処理しているのに、なぜコンピューターのように発熱しないのですか?化学に間してはド素人の質問ですので、できれば平明な解説でお願いします…

  • プログラミング言語

    物理の実験系で必要なプログラミング言語には主にどのようなものがあるのでしょうか。Fortranなどは実際使われているのでしょうか。

専門家に質問してみよう