• 締切済み

Rubyの質問です

(1)Rubyプログラムの質問です。 y = ax^3 + bx^2 + cx + d 整数a,b,c,dを読み込んで、xが0から1まで0.1刻みでyの値を求め、印字するプログラムを作っています。 そして、この中でyの値が最小・最大となるときのx,yの値を出力したいのですが、どう求めればよいのかわかりません。 どなたかご教示いただければ幸いです。 (2)もう一つありまして、これもRubyプログラムに関してです。 exp(1) = 1 + 1/1! + 1/2! + ・・・ + 1/n! + ・・・ですが、 この近似式よりexp(1)の値を求めるプログラムの作成の仕方で悩んでいます。 さらにn = 1,2,3・・・10として、近似式を求めるプログラムを作りたいのです。 この問題に関しても、ご存じの方いらっしゃいましたら、ご教示ください。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.4

(1) y=f(x) として a = (0..10).map{ |i| f(i*0.1) } a.max と、a.min (2) 何がわからないのかわからないです。 >Rubyの質問です というからには、ある程度Rubyは知っているんですよね?それとも名前を知っているだけ?

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.3

いやいや、明らかに Enumerable#max_by とかを使うべきでしょう。

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

(1)の最大のほうだけ説明します。最小に応用するのは簡単です。 ・yの値の暫定チャンピオンを覚えておく変数maxYと、そのときのxの値を覚えておく変数maxXを用意する。 ・x=0.0のときのyの値を暫定チャンピオンとする。つまり、maxX=0.0 , maxY=(xが0.0のときのyの値) ・xの値を0.1増やしてyの値を計算する。yの値が暫定チャンピオンmaxYよりも大きかったら、maxXとmaxYの値を更新する。 ・xの値が1.0以下の間、前項の作業を繰り返す。 ・最後まで勝ち残ったmaxYがyの最大値。maxXとmaxYを出力する。 (2) 1/(m-1)!の値をmで割れば1/m!になりますから、mがnになるまでそれを順次足し合わせていくだけです。

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

途中まででいいから、作ったプログラムを補足にどうぞ。

関連するQ&A

専門家に質問してみよう