• 締切済み

【数学】特定の演算ができるプログラムを組みたい

プログラムど素人です。 数学で特定の演算を、大量にしたく、手動だと物凄く大変なのでプログラムを組んで出来れば・・・と考えております。 プログラミング言語とか全然わからないのですが、いくつかご質問があります。 ・特定の演算をプログラムにさせる場合、どの言語が適しているとかはありますか? ・ド素人が学ぶのに、おすすめのサイト、おすすめの良書などあれば教えて頂けると助かります。 (基礎の基礎からの解説があれば、表現の仕方がやや難解でも問題ないです。) ・演算ですが、少し複雑です。「複雑」の度合いにもよると思いますが、整数論の分野なので、言うほどでもないかもしれないですが・・・。 死ぬ気でやれば短期間でプログラムを組むことは可能でしょうか?(あくまでざっくりとした目安として) ・通常のPCで、1億回くらい演算をするのは現実的でしょうか?(演算内容にもよると思いますが、例えば二次方程式を1週間以内に1億回試行する事は可能ですか?) 読みにくい文章で済みません! ご教授のほど、よろしくお願い致します。

みんなの回答

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.6

> 死ぬ気でやれば短期間でプログラムを組むことは可能でしょうか?  いくら死ぬ気だって、できない人も多いでしょう。プログラムって何だ、という所から始めて、プログラミング環境の整備と使い方の習熟、数値の表現の理解、プログラミング言語の習得、その他いろいろ含め、独力で1週間で出来たら、そりゃすごい。それに、プログラムを作っても、正しくなければ意味がない。  ですから、できる人を募集する方が確実だな。死ぬ気で100万も出せば、簡単に見つかると思う。  でも、どんな計算なのかここに式だけでもお書きになれば、無料で解決するかも。死ぬ気なら書けるのでは?  「手動だと物凄く大変」とおっしゃるのが紙と鉛筆でやると、という意味なのか、電卓や表計算ソフトでやると、という意味なのかにも多少依るけれど、いずれにせよ大した計算ではないに違いない。むしろプログラミングで手間がかかるのは、桁数がものすごく多い整数の演算です。その心配が必要かどうかは、計算の途中で最大何桁ぐらいの値が出てくるかに依ります。 > 例えば二次方程式を1週間以内に1億回試行する
  2次方程式の係数を浮動小数点表現の実数や複素数で与えて、公式を使って有効数字10桁程度の解を計算する、という意味でしたら、Cなどの低級言語でプログラムを書けば、普通のノートPCで1億回繰り返すのに何秒といったところかな。Visual Basicが遅いと言ったって計算に1時間掛かるということはないでしょう。(結果を書き出すのはとっても遅いが。)

全文を見る
すると、全ての回答が全文表示されます。
  • chapeco
  • ベストアンサー率45% (9/20)
回答No.5

スプロケットの歯型の設計計算を Microsoft Visual Basic でやりました。 エクセルVBAとほとんど同じ文法で、 こちらが本家のようなもので無料です。 エクセルのセルのような色々なコンポーネントが簡単に使えます。 初級の参考書をお手本にして、1日で出来ました。 印刷記述の参考書が少なくて、印刷が難しかった。 印刷無しなら、お勧めです。

全文を見る
すると、全ての回答が全文表示されます。
  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.4

大概の数値演算はExcelで出来ますが? 確かにExcelは2進数演算なので、小数以下で誤差が出るという 大きな問題はありますけど、その辺は技でなんとでもなるわけで。 あと、一発で処理させようとしないで、ループの1回を1行で処理させ それを一気に最終行までコピーする・・・という方法を使うと、過程も 見えて間違いがチェックしやすい・・・というメリットもあります。 プログラム組んじゃうと、最終結果が出るまで、途中経過が見えに くいんでね。特にコンパイラ言語だと・・・。

全文を見る
すると、全ての回答が全文表示されます。
  • ki073
  • ベストアンサー率77% (491/634)
回答No.3

もう少し具体的に書かれると回答しやすいのですが、 >プログラミング言語とか全然わからないのですが こういう場合は、いきなり汎用的なプログラミング言語を使うのではなく、方程式の解法などに特化したものを検討されてはいかがでしょうか。 思いつくもので、無料で使えるものをあげておきます。 1) maxima http://maxima.sourceforge.net 解析的な解が得られます。数値的にも方程式を解くことができます。 2*x^2+3*x+1=0の方程式は solve(2*x^2+3*x+1=0); で2つの解を求められます。かなり複雑なものも可能です。 2) scilab http://www.scilab.org 数値的に方程式を解くことができます。 Octaveも同じような機能が有ります。 3) GLPK http://www.gnu.org/software/glpk/ 線形的に最適解を求めるような場合に使えます。 いずれも日本語の解説がかなりありますので、検索してみてください。 あとは、汎用的なプログラミング言語で、 RubyやPythonもあります。数値計算用のライブラリもありますので、それを使うとかなり高速に計算できます。

全文を見る
すると、全ての回答が全文表示されます。
  • mpascal
  • ベストアンサー率21% (1136/5195)
回答No.2

二昔くらい前の話だと、「FORTRAN」ということになるのでしょうかね。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

やりたいことによるのではないでしょうか? 二次方程式を解くのでしょうか? http://excel-mania.com/math/t082.html プログラムを組むのは、解き方を理解していないと 出来ないような… 1億回だろうと、何回だろうと繰り返し行うことは可能です。 ただ、答えは1つだろうし、それを1億回やったところで…何か変わるのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C言語での複素数の四則演算について

    C言語で、大きさ2の配列を2つ使って、複素数の四則演算のプログラムを作るのですが、配列をどう使うか分からず手が出せない状態です。 C言語を始めたばかりですので、基礎的なことしか分かりませんが、回答お願いします。

  • 特定のプログラムを自動的に起動させるプログラムって何で作れるのでしょうか?

    あるフォルダに入ってくるテキスト情報を取り込むプログラムがあるのですが(自分でつくったのではないです)これを5秒ぐらいに1回自動的に起動させるプログラムを作る必要があるのですが、どんな言語でつくればいいのでしょうか?取り込むプログラムが何で書かれているかによって違うのでしょうか?プログラムに関しては全くの素人です。まず何を調べるべきなのかでも教えて頂ければ幸いです。宜しくお願いします。

  • 演算対象の数字と演算子を入力して計算させる

    数字と演算子をそれぞれ入力し、優先順位の高い順に四則演算させるにはどのような考え方をすればよいのでしょうか。 数字をa[7]とおいて、演算子をop[7]としてそれぞれ配列に格納しましたが、そこから先に進めません。 オペランドと演算子の組み合わせならば優先順に計算してくれるのはわかっていますが、オペランドと演算子を格納した配列では上手く行きません。 実は既に全ての演算子の組み合わせをIfで表示させるプログラムを根性で作ったのですが、最適解を知りたいです。 言語はCでvisualstudioを使っております。 条件はn回数字を入力したらn-1回演算子を入力し、n回目に=を入力する。nの最大値は7とする。です。 だらだらと見辛い文章で申し訳ありませんが、何卒宜しくお願いします。

  • ビット演算を理解するための参考書を探してます

    ビット演算を理解するための参考書を探してます。 基本情報技術者の午後問題のC言語において、次のリンク先の問題のようにビットを使ったプログラム問題がさっぱり分かりません。 http://www.rs.kagu.tus.ac.jp/infoserv/j-siken/H10a2/pm07.html そこで、今までビット演算系の問題に触れていなかったためだと思い、 ビット演算のプログラムを扱った詳しい参考書を探しています。 基礎から上記URLの問題レベルまでの内容のものが特に良いです。 回答よろしくお願いします。

  • C言語で逆ポーランド演算式をスタックを用いて表現するには

    C言語でスタックを使って逆ポーランド表記の演算を行うプログラムを作っています。 正の整数の場合はできたのですが、小数や負の数にも対応できるように変えるにはどうしたらよいのでしょうか? 例えば、スペースで区切られた 1.2 4.2 -3.2 + * と言う様な値を入力してちゃんと計算できるようにしたいのですが・・・。

  • ソートのプログラム

    100個の整数をファイル「int.txt」から出力して小さい順にソートして「out.txt」に書き込むC言語のプログラムなんですけど、自分で何回やってもできないのでどうか教えてください。

  • プログラムの勉強を始めたい

    プログラムの勉強を始めたいと思っています。 目的はゲーム(シューティングゲーム)や サイト巡回プログラムなど簡単なツールを作ることです。 自分で調べてみていくつも言語があることは分かったのですが どれが初心者に優しいか、などがいまいち把握できず 初心者に優しくてもその言語を学ぶ過程で覚えたことが 別の言語でも流用できるのか、等が知りたくて質問させていただきました。 知りたいこと ・参考資料が多い・メジャーな言語の中で分かりやすい、構造が複雑でないものを教えて欲しい ・それに関するお勧めの書籍があれば教えて欲しい よろしくお願いします。

  • ファミコン時代のプログラムについて

    1985年ごろには既に多くの優秀なゲームが発売されていましたが、 たった2年くらいで当時のプログラマーは、ファミコンのプログラムを マスターしていたのですか? もちろんC言語のように複雑ではないでしょうが、 それにしてもドラクエのウインドウシステムをはじめとして ああいった柔軟なプログラムを開発してしまうというのは 一般人の目からすると驚異的です。 それとも、今現在のプログラマの方からすれば、 当時のファミコンプログラムは全般的に容易だったのでしょうか? 蛇足ですが、FF3のナーシァ氏のプログラムは難解で 誰もわからなかった、という有名な伝説がありますが、 これは今で言うところの変数の使い方などにクセがあった、 というような解釈でいいのでしょうか?

  • プログラムの算術演算で教えて下さい。

    お世話になっております。 とある試験問題のアセンブラ言語について、算術演算が理解できず困っておりますので投稿させて頂きました。 この問題を解決できないと、先に進めない状態となっており、困っております。 【前提】 実機を使用してアセンブルしながら値の確認を行っているのですが、下記の問題において、アドレス8008でGR2の値が下記の様に表示されています。 【GR2】 アドレス:#8012 算術:-32750 論理:32786 1000 0000 0001 0010 また、問題集の解説には下記の様に記載されています(一部抜粋)。 「1回目のGR2は#8012、GR3は#8016です。CPA命令は算術10進数で比較しますから、変換するとGR2が-32750、GR3が-32746です。GR2やGR3に設定したのはラベルのアドレスでしたね。」 【ご質問】 GR2の値が、なぜ「-32750」になるのか?を教えて下さい。 また、これは"8012を指しているのでしょうか?それとも内容の「20」を指しているのでしょうか? 今、私が理解できるのは、 ・実機検証画面の2進数「1000 0000 0001 0010」は、16進数の「8012」を示している ・アドレス8008行によって#8011番地にONEが加算、つまり#8011+1=#8012番地を対象とする ところまでは理解できるのですが、その先どう計算したら良いのかがわかりません。 現在数百ページある書籍の内70ページ程を読み進めたところですが、全体的に算術演算がよく理解できていない様に感じてはいます。 が、書籍を読んでもいまいち理解が難しいため、お伺いします。 【書籍内問題】 (1)下記プログラムを実行した結果、ANS番地に格納される値を10進数で答えなさい。 (2)下記プログラムは誤りがあります。誤っている箇所を修正しなさい。 ■アセンブルリスト  ※-------------------------------- ご覧のブラウザ環境によってスペース等の表示が変わる可能性がありますので、 区切りで「/」を入れております。 見やすくしただけで、問題自体に「/」はございません。 ※-------------------------------- ADDR: メモリ内容  /プログラム  : /REI7004 / START 8000: 1210/0000 /LAD /GR1,0 8002: 1220/8011 /LAD /GR2,DATA 8004: 1230/8016 /LAD /GR3,ENDDATA 8006: 2012/0000 /LOOP /ADDA /GR1,0,GR2 8008: 2020/8010 /ADDA /GR2,ONE 800A: 4423/ /CPA /GR2,GR3 800B: 6100/8006 /JMI /LOOP 800D: 1110/8016 /ST /GR1,ANS 800F: 8100/ /RET 8010: 0001/ ONE /DC /1 8011: 000A/ DATA /DC /10 8012: 0014/ DC /20 8013: 001E/ DC /30 8014: 0028/ DC /40 8015: 0032/ DC /50 8016: ENDDATA /DS /0 8016: 7FFF/ ANS /DS /1 : END 以上となります。 ド素人の質問で申し訳ありませんが、ご回答頂ける方がいましたらよろしくお願いします。

  • c言語のプログラムについて

    今年からC言語を始めた大学1年生です。レポートで四則計算を行うプログラムを6/19までに作らないといけないです。使えるのは今までに習った選択型、反復型、関数scanfです。このプログラムの留意点は次の4つです。 1.使う演算を選択してもらう   例えば   どんな演算をしますか? 1:+,2:-,3:*,4:/ (選択) 2.演算を行う数値を入力してもらう   例えば   a + b の計算をします。aを入力してください。 3.演算結果を表示する   ○+○の答えは ○です 4.計算終了か、それともほかの演算を行うか 決める   0:計算終了 1:他の計算を行う を選択してください  以下のプログラムはこのことを留意してプログラムをつくりました。どこがおかしいのでしょうか。 #include<stdio.h> main() { short a,b,m,n; long c,d,e,f; c = a + b; d = a - b; e = a * b; f = a / b; m = 1; printf("整数を入力してください:"); scanf("%d",&a); printf("どんな演算をしますか?:"); printf("1: +,2: -,3: ×,4: ÷ :"); scanf("%d",&n); while(m=1){ if(n<=4){ while(m=1){ switch (n<=4){ case 1: printf("整数を入力してください:"); scanf("%d",&b); printf("%d + %d = %d \n",a,b,c); break; case 2: printf("整数を入力してください:"); scanf("%d",&b); printf("%d - %d = %d \n",a,b,d); break; case 3: printf("整数を入力してください:"); scanf("%d",&b); printf("%d × %d = %d \n",a,b,e); break; case 4: printf("整数を入力してください:"); scanf("%d",&b); printf("%d ÷ %d = %d \n",a,b,f); break; } } } else { printf("計算できません。"); printf("演算をやり直してください。\n:"); } } printf("計算を終了しますか、それとも他の計算を行いますか?:"); printf("0:計算終了,1:他の計算を行う:"); scanf("%d",&m); printf("計算を終了します。\n"); } 提出期限があるのでなるべく早めのご回答待ってます。生意気言ってすいません。