• 締切済み

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として、近似式を求めるプログラムを作りたいのです。 この問題に関しても、ご存じの方いらっしゃいましたら、ご教示ください。

  • Ruby
  • 回答数4
  • ありがとう数2

みんなの回答

  • notnot
  • ベストアンサー率47% (4847/10260)
回答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

  • Rubyプログラムの質問です

    y = ax^3 + bx^2 + cx + d という関数が与えられていて、 整数a,b,c,dを読み込んで、xが0から1まで0.1刻みでyの値を求め、yの値の最大値、最小値を求めるところまではできているのですが、さらに最大値・最小値となるときのxの値も求めなければならないのですが、これはどのようにしたら求められるかご存じの方がいらっしゃいましたら、ご教示いただければ幸いです。よろしくお願いいたします。

  • Rubyプログラムの質問です

    Rubyプログラムの質問です。 y = ax^3 + bx^2 + cx + d という関数が与えられていて、 整数a,b,c,dを読み込んで、xが0から1まで0.1刻みでyの値を求め、印字するプログラムを作っています。 そして、この中でyの値が最小・最大となるときのx,yの値を出力したいのですが、どう求めればよいのかわかりません。 まずxを0から1まで0.1刻みで出力するのはstepを使って 0.step(10,0.1){ |x| print( x,"\n" ) まではわかりました。 その出力したxをどのように関数の式に代入するのかがわかりません。 そして最小値・最大値を求める問題ですが、最小値を記憶して、次の要素より小さければ交換という 形でいこうと思っているのですが、これもどのようにすればよいのかはっきりわかりません。 loopを使うということは何となく想像がつきます。 たとえばこのようにしても大丈夫なのでしょうか? for( i=1;i<100;i++ ){ if( a[0] < a[i] ){ work = a[0]; a[0] = a[i] a[i] = work; } } どなたかご教示いただければ幸いです。

  • 3次曲線の長さの求め方

    Y=aX^3+bX^2+cX+dの3次曲線で,X1~X2間の長さ(弧長)の求め方を教えてください。また、弧長から,Xの値の求め方もお願いします(逆をやれば良いだけ?)。 生産設計のプログラムで必要になりました。30年ぶりに、数学の教科書を開きましたが、全く理解できません。宜しくお願いします。一筋縄でいかないようですが? 近似式でもかまわないのですが。

  • Excelの近似曲線

    Excelでy=ax^3+bx^2+cx+dではなく、y=ax^3+bx^2のみで近似することはできますか? また、aとbが正になる近似を行うことはできますか?

  • Rubyのルンゲクッタ法がうまくいきません

    Rubyでルンゲクッタ法でy=exp(x**2)と比較しようという問題で、下のようなプログラムを組むとyの値がかなり大きくなってしまいます。どこが間違っているのでしょうか。教えてください。 #! ruby -Ks #ルンゲックッタ def df(a,b) z=2*a*b return z end n=10 x=Array.new(n) y=Array.new(n) x[0]=0.0 y[0]=1.0 h=1.0/n #任意で変更 fw=File.open("output2.txt","w") for i in 0..n k1=df(x[i],y[i])*h k2=df(x[i]+h/2,y[i]+k1/2)*h k3=df(x[i]+h/2,y[i]+k2/2)*h k4=df(x[i]+h,y[i]+k3) k=(k1+2*k2+2*k3+k4)/6 x[i+1]=x[i]+h y[i+1]=y[i]+k fw.print x[i]," ",y[i]," ","\n" end fw.close()

    • ベストアンサー
    • Ruby
  • 微分法

    曲線y=ax^3+bx^2+cx+dは、点A(0,1)において直線y=x+1に、点B(3,4)において直線y=-2x+10にそれぞれ接する。このとき、定数a,b,c,dの値を求めよ。 f(x)=ax^3+bx^2+cx+dとするとf´(x)=3ax^2+2bx+cとなる。そして点Aと点Bについてそれぞれ接線の方程式を求めてみたのですが、値が出ません。どなたか教えて下さい。

  • Rubyのプログラムについて

    Rubyのプログラムについて、宜しければ教えてください。 def fct(n, f=1) if n<=1 then f else fct(n-1, n*f) end end def factorial(n) (1..n).inject{|x,y| x*y} end def factorial(n) eval( [*(1..n)].join("*") ) end このプログラムが、階乗を計算するメソッドになっているみたいなのですが、なぜコレだけで階乗が計算できるのでしょうか? 宜しければ教えてください><

    • ベストアンサー
    • Ruby
  • 宿題

    数学の問題です。 (1)曲線y=ax^3+bx^2+cx+dは、点A(0,1)において直線y=x+1に、点B(3,4)において直線y=-2x+10にそれぞれ接する。このとき、定数a,b,c,dの値を求めよ。 (2)点(1,-3)を通る放物線y=ax^2+bx+cが、曲線y=x^3+bxと点(2,6)において共通の接線をもつとき?定数a,b.c.dの値を求めよ。 どちらか一つでもいいので 分かったら教えてください。 よろしくお願いします!

  • c プログラム 

    以下のプログラムは,第n項までのe^xのマクローリン展開をさせるものです. これを修正して,理論値と近似値の誤差がある値(自分で入力)になったときに,計算を終了させるにはどうしたらよいでしょうか.御教授いただければ幸甚 です. ---------------------------------------- #include <stdio.h> #include <math.h> int main(void) { int n; double x=1.0,y=1.0,e=1.0,err; int i; double f=1.0,p=1.0; printf("x="); scanf("%lf",&x); printf("n="); scanf("%d",&n); printf("Mclaurin展開によるn項までのexp(x)の\n n 理論値 近似値 誤差\n"); for(i=1;i<=n;i++){ f*=(double)i; p*=x; y+=p/f;近似値 e=exp(x);理論値 err=e-y;誤差 printf("%2d %12.8e %12.8e %12.8e\n",i,e,y,err); } return 0; }

  • 共通接線

    曲線C:y=ax^3+bx^2+cx+dが、x=0で放物線y=x^2-2x+3と共通な接線をもつとき、c,dの値を求めよ。さらに、曲線Cがx=2で直線y=3x-7に接するときa,bの値を求めよ。 数学が苦手なのでできるだけ詳しく、わかりやすい流れで書いて頂けると嬉しいです!

専門家に質問してみよう