• ベストアンサー

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

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

次のような,プログラムを作れば良いでしょう。 まず,定数部分(a,bなど)を変数として,式を作り, その後,xを変数とする式を作れば良いのです。 例えば,y=ax+bについて考えて見ましょう。 y=2x+3 y=4x+5 y=6x+7 という3つの関数を考え,それぞれに3つのx(x=1,2,3)を代入したとき, yの値を返すプログラムを作ります。 私はMaximaを利用していますので,Lispを使って,プログラムを示しました。 しかし,考え方はMathematicaでも,他の数式ソフトでも同様です。 その例を以下に示しました。 for i:1 thru 3 do( M1 : matrix ( [2, 3], [4, 5], [6, 7] ), [a,b]: [M1[i, 1], M1[i, 2]], define (f(x), a*x+b), y:f(x), display(y), for j:1 thru 3 do( lst:[1,2,3], x:lst[j], y:f(x), display([x,y]), kill(x,y) ) ); ここでは,まず [2,3] [4,5] [6,7] というデータ行列Mを,a,bに読み込ませています。 それぞれのa,bについて,define文で,関数f(x)を定義します。 ここで,必須ではありませんが,結果が見やすいように, y=f(x) の定義をして,display文で出力します。 それぞれのy=f(x) について,lst(リスト)文で, データ [1,2,3] をxに読み込ませて,最終結果を出力します。 これは3行1列のmatrix文 [1] [2] [3] でも可能です。 a,bについて,3回の繰り返し計算(最初の行のfor i:1 thru 3)を行い,その1回ごとに,xの代入計算(真ん中のfor j:1 thru 3 )行います。 このプログラムではデータ行列をプログラムの中に組み込みましたが,別のファイルから読み込ませることもできるでしょう。 最終的にグラフにプロットが目的のようですが,こうして(x,y)が求まれば,それをプロットすればよいのでは? Maximaによる出力結果は以下のようなものです。 y=2x+3 [x,y]=[1,5] [x,y]=[2,7] [x,y]=[3,9] y=4x+5 [x,y]=[1,9] [x,y]=[2,13] [x,y]=[3,17] y=6x+7 [x,y]=[1,13] [x,y]=[2,19] [x,y]=[3,25] (%o2) done

panacafe
質問者

お礼

解決しました。 ありがとうございます。

関連するQ&A

  • mathematica, グラフ, 軸設定

    mathematicaのグラフの描き方について質問させていただきます. x=yの3次式 を縦軸y, 横軸xでPlotしたいと考えていますが, Plot[yの3次式, {yの範囲}] を実行すれば、横軸yでPlotされるかと思います. yを変化させ(yをxについて解かずに), 横軸にx, 縦軸にyでPlotしたいのですが、 軸を設定するオプションコマンドなどはありますでしょうか。 よろしくお願い申し上げます。

  • Mathematicaでグラフの書き方教えてください

    Mathematicaで下記の二つの式をグラフで書きたいのですが、Mathematica初心者なものでいまいちわかりません。勉強するにも時間がないので焦っています。どうか分かる方おしえてください。 ・7x^2-22xy+7y^2=18 ・11x^2-14xy+11y^2=18

  • mathematica

    mathematicaのビギナーです。 f[x_,a_]:=a*Sin[x]; a10=Plot[f[u,10],{u,0,3}]; a20=Plot[f[u,20],{u,0,3}]; のように定義して、これらの関数をShowコマンドで Show[a10,a20] のように、一つのグラフで二つの関数を描いたときに、これらの関数の名前を図中にそれぞれ表示させたいです。いろいろ探したところ、optionでPlotLabelというのがあり、 a10=Plot[f[u,10],{u,0,3},PlotLavel->"a10"]; a20=Plot[f[u,20],{u,0,3},PlotLavel->"a20"]; として Show[a10,a20] とやってみたのですが、関数の名前は同時に表示されませんでした。 ご存知の方教えていただけないでしょうか?よろしくお願いします。

  • mathematica 2変数関数

    mathematicaで2変数関数f(x,y)を定義し、PLot3Dで表示したいのですが x=y=0の時のみf(x,y)=0 x=y=0以外はf(x,y)=g(x,y) (g(x,y)は全領域で予め定義されている) f[x_,y_]:=0;/x=y=0 f[x_,y_]:=g(x,y);/x=y!=0 Plot3D[f[x,y],・・・] とするとエラーがでてしまいますどうしたらいいでしょうか

  • 行列の連立方程式 (mathematica)

    mathematica4.1を使用して,行列で表した連立方程式を計算したいと思っています.例えば A= a11 a12 a13 a21 a22 a23 a31 a32 a33 B=b11 b12 b13 b21 b22 b23 b31 b32 b33 C,Dも同様に定義して A .x+B .y=1 C .x+D .y=0 x=x1 y=y1 x2 y2 x3 y3 のような連立方程式のx,yについて解きたいのですが,どのようにmathematicaで表現すればよいかが分かりません. どなたか教えてください.お願いします. 当然ではありますが,A,B,C,Dはすべて既知としています.

  • Mathematicaで恒等式を解く方法

    最近、少しMathematicaをかじり始めたものです。 さっそくですが、以下のような恒等式を解かせるにはどうすればよいのか教えてください。 y^3 + y^2 + 3 = a y^3 + b y^2 + cy + d この式から (a, b, c, d) = (1, 1, 0, 3) という答えを得たいわけです。 さらには y1 y2 + y1^2 y2 + y1 y2^2 = a y1 y2 + b y1^2 x2 + c y1 y2^2 という式から (a, b, c) = (1, 1, 1) と計算させたいと考えています。 よろしくお願い致します。

  • Mathematica で2元4次連立方程式を解くには・・・

    教えて下さい! 2元4次連立方程式{f(x,y)=0, g(x,y)=0} (関数fとgはxとyの4次方程式です。)について、 例えば、[x,-10,10]のような限定された範囲で 実数解(x,y)を Mathematicaを使って、30桁精度で数値的に求め、 それをx,yの2次元プロットしたいと思っております。 Mathematica のどのような関数を組み合わせれば これができるか、ご教示下さいませんでしょうか? よろしくお願いいたします。 (自分でC言語でプログラムした場合、解けるには解け るのですが、有効数字の桁数が十分でなく、部分的に 数値が丸まってしまい、プロットがとぎれてしまう問題 があったので、有効数字を自在に調節できるMathematica でやってみようと思ったのですが、例えば、安直に Plot[N[Solve[{f == 0, g == 0}], 30], {x, -10, 10, 0.01}] としてもダメでした。NRootなども検討しましたがうまく 行きません。)

  • mathematicaによる3Dプロットについて

    ベクトルを3Dプロットする方法を教えてください>< 力線みたいになるような・・・ f(x成分)=~ f(y成分)=~ f(z成分)=~ を3Dプロットしたいんです・・・ お願いします><

  • y=ax+bのグラフから求まるy’=(y-b)/aの意味は?

    同じ資料を測定器A,Bで測定し、xを資料番号、yを測定値としてグラフ1を作成しました。測定値は以下のようになっています。 資料 測定値A 測定値B 1   0.18   0.21 2   0.18   0.21 3   0.22   0.245 4   0.261   0.295 5   0.318   0.337 6   0.371   0.395 7   0.43   0.455 8   0.507   0.53 9   0.593   0.617 10   0.7    0.718 11   0.843   0.853 12   1.032   1.024 13   1.243   1.232 14   1.5    1.453 15   1.792   1.767 16   2.167   2.089 17   2.457   2.382 18   2.784   2.68 19   3.129   2.998 20   3.496   3.289 21   3.771   3.535 22   4.00    3.75 23   4.168   3.918 24   4.308   4.062 25   4.412   4.146 次に、xを測定値A、yをそれぞれの測定値にしてグラフ2を作成すると、グラフAは y=x、グラフBはy=ax+bの近似直線を持つグラフになります。このa,bで作成 する式y’=(y-b)/aへ測定値Bを代入すると、求まるy’は、グラフ1上でプロット しても、グラフA上になりました。 このとき、”式y’=(y-b)/aを、測定器Bによる測定値を測定器Aで測定した場合に換算する式” とすることは、正しいのでしょうか??

  • 時系列を矢印で示すプロット図

    定期的にとっている2つの評価軸A・Bがあり、x軸にA,y軸にBをプロットし、そのプロットを時系列順に矢印で結んでいくグラフをつくることのできるグラフ作成ソフトはあるでしょうか?