- 締切済み
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)
- 専門家の回答
関連するQ&A
- Rubyプログラムの質問です
y = ax^3 + bx^2 + cx + d という関数が与えられていて、 整数a,b,c,dを読み込んで、xが0から1まで0.1刻みでyの値を求め、yの値の最大値、最小値を求めるところまではできているのですが、さらに最大値・最小値となるときのxの値も求めなければならないのですが、これはどのようにしたら求められるかご存じの方がいらっしゃいましたら、ご教示いただければ幸いです。よろしくお願いいたします。
- 締切済み
- Ruby
- 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
- 2次関数で分からないのがあるため教えてください。
(1)2次関数y=x^2-2x+a (0≦x≦4)の最大値が10であるとき、定数aの値を求めてください。また、このときの最小値を求めてください。 (2)a≧0のとき、2次関数y=x^2-2ax+1 (0≦x≦2)の最小値を求めてください。 (3)関数y=ax^2+2ax+b (-2≦x≦1)の最大値が6、最小値が2となるように、定数a、bの値を求めてください。 ちなみに答えは、 (1)a=2;最小値1(x=1) (2)0≦a<2のとき最小値-a^2+1 a≧2のとき最小値-4a+5 (3)(a、b)=(1、3)、(-1、5) です
- 締切済み
- 数学・算数
- C言語のプログラムを見てください
ある100行の値がx列、y列の2列あるファイルを読み込んでそれを配列に入れ、yの最小値及びそれと同じ行にあるxの値を表示するプログラムを書きたいのですがy列の最小値を表示するプログラムを書き終えた所でコンパイルして実行してみると正しく値が表示されませんでした。それどころか実行するたびに値が変わってしまいます。どこがおかしいのかわからないため、ご指摘のほどよろしくお願いします。また、できれば同じ行にあるx列の値も表示させるプログラムを教えてください。 よろしくお願いします。 #include <stdio.h> #include <stdlib.h> #define N 100 int main(void) { int x[N],i; double y[N],min; FILE *fp; fp=fopen("book.dat","r"); if(fp==NULL){ puts("can't open file!"); exit(-1); } for(i=0;i<N;i++){ fscanf(fp,"%d %lf", &x[N],&y[N]); printf("x=%d\n y=%lf\n",x[N],y[N]); } min=y[0]; for(i=1;i<N;i++){ if(y[i]<min) min=y[i]; } fclose(fp); printf("最小値:%lf\n",min); return 0; }
- 締切済み
- C・C++・C#
- 数Iの質問です・・・
関数の最大値と最小値とそれを与えるXの値を求める問題なんですが、 y=(xの2乗)分の2+xの2乗+4 ↑の最大値最小値を求めるにはどうしたらいいんですか? まったく分からないのでできれば途中式もお願いします
- ベストアンサー
- 数学・算数
- 二次関数の最大、最小の問題教えてください((+_+))
二次関数の最大、最小の問題教えてください((+_+)) (1)Y=x^2+2axの最小値が-9であるように定数aの値を求めよ。またこのとき最小値を与えるxの値を求めよ 二次関数の決定の問題です (2)x=-2のとき最大値5をとりx=-1のときY=0となる (3)x=3のとき最小値をとり2点(0,5)、(5,0)を通る二次関数を求めよ (4)放物線Y=2x^2-8x+9の頂点と同じであり点(0,5)を通る二次関数を求めよ (5)二次関数のぐらふがx軸と2点(-2,0)、(1,0)で交わり点(0,-4)を通る時その関数をもとめよ この問題わからないのでわかるかた求め方も一緒に教えてください
- ベストアンサー
- 数学・算数
- 代数の質問です。
家でZ会の数学アドバンストを使っています。 そこで次の問題が分からないのでお答えください。不等式を使う解き方でお願いします。問題をそのまま写しているので間違いはないです。 ※xはエックスです。 (1)0≦2x-y≦3、-1≦3x-2y≦2のとき、xとyそれぞれの最大値、最小値を求めよ。 (2)1≦x≦a、-1≦y≦bのとき、2x-3yの最大値は9、最小値は-4である。このとき、a,bの値を求 めよ。また、2y-3xの値の範囲を不等式で表せ。 答えは、(1)はxが最大値7、最小値-2です。yは最大値が11、最小値が-4です。(2)はa=3、b=2 、-11≦2y-3x≦1です。 中1なので詳しい解説がほしいです。 また、先の質問にも投稿があったので改めて書いておきますが、一生懸命考えて分からなかったのです。
- ベストアンサー
- 数学・算数
- 関数の積分を求めるプログラムで質問です。
シンプソンの公式を用いて積分を求めるプログラムで、 「 y=1/(1+x*x) のように±∞で0に収束するような関数は以下のような無限積分を求めることができる。 ∫(-∞→∞){1/(1+x*x)}dx …(a) ただし、無限区間を分割することはできないので、コンピュータを用いた計算では ∫(-a→a){1/(1+x*x)}dx のaに大きな値を入れることで代用する。この積分を求めるプログラムをシンプソンの式を用いて作成し、以下の3ケースについて値を求めて真値と比較せよ。真値は式(a)を解析的に積分することで求めよ。 ・a=100、N=1000 ・a=100、N=500 ・a=200、N=1000 (Nは以下のプログラムと対応しているものです) 」 というもので参考としてS=∫(1→2){1/x}dxをシンプソンの公式を使い求めるものは以下のものなのですが #include <stdio.h> double f(double x) { return 1/x; } int main() { int i,N; double a,b,h,S; double x[1000],y[1000]; a=1.0; b=2.0; N=10; h=(b-a)/N; for(i=0;i<=N;i++) x[i]=a+i*h; y[0]=f(x[0]); y[N]=f(x[N]); S=h*(y[0]+y[N])/3.0; for(i=1;i<=N-1;i=i+2) { y[i]=f(x[i]); S=S+h*y[i]*4.0/3.0; } for(i=2;i<=N-2;i=i+2) { y[i]=f(x[i]); S=S+h*y[i]*2.0/3.0; } printf("N=%d,S=%15.10lf\n",N,S); } これを生かしてプリグラムをつくりたいのですが、分からなくて困っています。助けてください。
- 締切済み
- C・C++・C#
補足
回答ありがとうございました。 まだ使い始めで勝手が十分理解できておらず、申し訳ありません。 さて、yの値を出力して、最大値、最小値の値を求めることができましたが、 そのときのxの値も最終的に求めなければなりません。 これはどのようにすればよいのでしょうか。 回答よろしくお願いいたします。