• 締切済み

GnuOctaveを用いた条件付3次元プロット

所用でタイトルのようなことをすることになりました。 例として、下のような式を使います。 ex) f(x,c1,c2)=exp(x*c1 + c2) この式のc1,c2をそれぞれx軸、y軸に取り、f(x,c1,c2)の範囲が0<x<10における「最大値」をz軸にプロットしたいのですが、いかんせん方法がわかりません。 最大値をif文なりで算出してプロットすればいいのではと思いましたが、プロットソフトはexcelとGnuplotしか使ったことがなく、手詰まり状態になってしまいました。(条件付とタイトルに記載したのはif文なり条件式が必要だと思ったからです。) 方法をお知りの方いらっしゃいましたら、ご教授よろしくお願いいたします。

noname#123915
noname#123915

みんなの回答

回答No.1

x = 0:0.1:10; # xを0.1刻みで0~10の範囲 c1 = 0:0.1:10; # c1を0.1刻みで0~10の範囲 c2 = 0:0.1:10; # c2を0.1刻みで0~10の範囲 for k = 1:length(x)  for m = 1:length(c1)   for n = 1:length(c2)     z(m, n) = exp(k*m + n); # 与式(これでエエんか?)   endfor  endfor endfor mesh(c1, c2, z) # プロットコマンド c1がx座標、c2がy座標

関連するQ&A

  • Mathematicaで条件を変えてプロット

    Mathematicaで y(x) = ax + b といった式をaとbの条件を変えて同じグラフにプロットするにはどうしたらいいのでしょうか? 例えば、a=1 b=2、a=2 b=3についてそれぞれプロットするには y1(x) = x + 2 y2(x) = 2x + 3 とそれぞれ定義して同じグラフにプロットすることは出来るのですが、 条件が多い場合、また式が煩雑な場合となると大変になるので 簡単にする方法があれば教えていただきたいです。

  • gnuplotでx,y,z軸の3次元にf(x,y,z)値をプロットしていくことはできますか?

    gnuplotでx,y軸とf(x,y)が3次元に表示させる方法は調べて分かったのですが、質問タイトルのようにx,y,z軸が存在する領域にf(x,y,z)を表示させるにはどうしたら良いのでしょうか?

  • If文の条件文の書き方

    お世話になります。 Excelでマクロを作成しております。 内容:  あるセルに、X<=300 というような条件を入れておきます。  ある値、たとえば、500 が来たときに、Xに代入して、  500<=300 という条件式を作り、それが、正しいか、正しくないか  の結果を求めたいと思っています。 このとき、if文の条件文は、値によって、変わらなくてはいけないので、 文字列の置き換え等をして、変数として条件文を作ると、「型が違います」 のエラーになります。 どのように条件文を作ればいいでしょうか?? hani = Cells(1,1).value 'セル1,1に、X<=300 が書かれています。 exp = Replace(hani, "X", 500) '"X"を500と置き換えます。 If exp Then Check = 0 Else Check = 1 End If よろしくお願いします。

  • gnuplot内の数値計算

    gnuplotでf(x)=15000000000*(0.08/exp((x/49)^0.25)+0.92/exp((x/9000000)^0.35))という計算を行いたいのですが、 a=0.08 b=49 c=0.25 d=9000000 e=0.35 f=15000000000 f(x)=f*(a/exp((x/b)**c)+(1-a)/exp((x/d)**e)) と入力してもExcelでの計算と一桁違ってしまいます。 おそらく数式を間違えていると思うのですが、よくわかりません。 どうすれば正しい数式になるのか教えてください。

  • 3次元のガウス関数

    ガウス関数aexp(2(x-b)^2/2c^2)を3次元にして使いたいと考えたのですが z軸を中心にして回転させた時の式がイマイチ分かりません。 例えばexp(-x^2)を回転させたらどのようになるのでしょうか。 高校で習ったような習ってないような、記憶が曖昧で、しかも検索しても出てきません。 もし分かる方がいらっしゃいましたら簡単でも良いので教えていただければありがたいです。 何卒よろしくお願いいたします。

  • 二次関数の解の範囲の問題の条件について

    さっそくですが、質問させていただきます。 二次関数の解の範囲の問題で、f(x)=ax^2+bx+cが相異なる実数解α、β(α<β)もつとき、 (1)1<α<βをみたす条件は  ⅰ)判別式D=b^2-4ac>0  ⅱ)軸の式x=-b/2a>1  ⅲ)f(1)=a+b+c>0 ですが、 (2)1<α<2<β<3をみたす条件は  ⅰ)f(1)=a+b+c>0  ⅱ)f(2)=4a+2b+c<0  ⅲ)f(3)=9a+3b+c>0 となりますが、 (2)の場合、判別式が条件にならないのは、f(2)<0で、実数解を2つ持つことが明らかなので必要はありませんが、軸の式の条件、 1<-b/2a<3が必要にならない理由がどうもピンとしません。 お分かりかた、教えて頂けないでしょうか? よろしくお願いします。

  • IF文での条件の書き方について(fortran)

    条件 (1)exp(-at)<x  (2)exp(-bt)<y と二つの条件があるとする. (a,b,x,yは定数とし,tは時間でdo文でまわすとする) 例えば,IF( (1) .AND. (2) )THENとすれば,「(1) かつ (2)」となり,つまり,「時間的に,(1)・(2)がどちらが先に条件を満たしたとしても良い」とういうことですよね. 今回,私が作ろうとしているプログラムは 「(1)が先に条件を満たした後に,(2)の条件を満たすなら」というIF文を作りたいのです.( (2)の条件が先に満たしてしまう場合は除きたいということです) こういう場合はどういった表記をすればよいのでしょうか. 下手な文章で読みにくいかもわかりませんが,アドバイスをお願いいたします.

  • gnuplotをC言語で操作する方法

    C言語を用いてgnuplotを操作しデータファイルから自動的にグラフを作成するプログラムを作ろうとしています。 使用環境はWindows7、VisualStudio2010です。 ほとんどの部分はうまくいったのですが一部分が正しく表示されません。 軸の目盛ラベルの表示フォーマット設定のコマンドで set format x "%.1f" として小数点以下一桁を強制的に表示させるためC言語でパイプを用いて #define GNUPLOT_PATH "C:/gnuplot/binary/pgnuplot.exe" int plot(char *file_name){ FILE *gp; gp = _popen(GNUPLOT_PATH, "w"); fprintf(gp, "set title 'TEST PLOT'\n"); : (中略) : fprintf(gp, "set format x '%.1f' \n");//この部分が正しく反映されません。 : (中略) : fprintf(gp, "plot '%s' using 1:2 with linespoints lt 4 lw 5 pt 6 ps 2.0 lc rgb 'red'\n",file_name); fprintf(gp,"quit \n"); fflush(gp); _pclose(gp); return 0; } '%.2f' の部分をいろいろいじってみたのですがうまくいかず、なぜできないのか原因がわかりません。 fprintf()の数値代入の %f と混ざってしまっているのでしょうか?

  • プログラミング Ruby について

    rubyでgnuplotを動かすプログラムを作ろうと考えております。 system ('C:/Users/owner/Desktop/gnuplot/binary/gnuplot.exe') でgnuplotを起動することはできましたが、コマンドを実行するにはどうしたらよいでしょうか? とりあえず  plot sin(x) あたりをプロットしたいです。。。

    • ベストアンサー
    • Ruby
  • 最大値は持つが最小値は持たない条件

    分数関数f(x)で分母が2次式で分子はxの関数があります。「最大値は持つが最小値は持たない条件」としてD≧0でありf(x)=x/(x-p)(x-q)と変形しています。pqはどう符号だということは分かっています。 さらに、p≠qのときはx=pが漸近線で-∞か∞に発散するので最大最小は持たない。p=q>0のときも不適。 よってD=0のときと書いてあります。 なんでD≧0なのでしょうか。また重解を持っても、仮にそれをx=uとするとlim(x→u)y=±∞になりいずれにせよ極地(最大値最小値)を持たないのではないでしょうか。このかんすうはx軸も漸近線なので。 よろしくお願いします。どなたか教えてください。

専門家に質問してみよう