Mathematicaで微分方程式を解く方法

このQ&Aのポイント
  • Mathematicaで数値的に微分方程式を解く方法について調べています。
  • Do文を使って微分方程式を書いて実行する方法がわかりません。
  • 前のバージョンでは動作していたが、現在のバージョンでは動作しない問題があります。
回答を見る
  • ベストアンサー

MathematicaにおいてのDo文について

Mathematicaで数値的に微分方程式を解こうと思っています。 そして、微分方程式の係数を変えて、たくさんPlotさせたいです。 そこでDo文を使って解いてあげようと思いました。 Doを使って微分方程式を書いて実行しても、うんともすんとも言いません。 そこで、微分方程式をあきらめ Do[Plot[Sin[x + \Pi n/5], {x, 0, 6 \Pi}], {n, 10}] と書いて、波が動いている絵からgetしようと思いました。 しかし、前使っていたMathematica 4.1 では波が動きました。 どうしたら、Do文で微分方程式をたくさん解けるでしょうか?? 今使っているのは6.0です。

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

  • ベストアンサー
  • gruska
  • ベストアンサー率50% (3/6)
回答No.1

具体的にどんなDo文を書いたのかが書かれてないので適切な指摘はできませんが。基本的にDoやForなどの繰り返し関数はNullが返されます。つまり実行はされてますが実行後には何も表示されません。繰り返しの各ステップごとの結果が知りたいのであれば関数Print[]を使って出力することを明示する必要があります。(Plotを試したら波が表示できたのはPlotはグラフを出力する関数だからです。)しかしPrint[]は実行されるたびに改行されるので繰り返し回数が多い場合は見にくくなるのであまりお勧めできません。この場合はTable[]を使って得たい結果をリストにして返すのが一番いいと思います。例えば Table[i^2,{i,10}] を実行すると {1, 4, 9, 16, 25, 36, 49, 64, 81, 100} が得られます。 くわしいことはヘルプを参照してください。(他にもいろんな方法があります。) mathematicaのいいところはヘルプが大変親切なところだと思っています。私はヘルプを見てmathematicaを使うことを決心したぐらいなので。

関連するQ&A

  • 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なども検討しましたがうまく 行きません。)

  • sin(x)のマクローリン展開

    明日解析のテストがあるのですが、 わからないところあります。 sin(x)のマクローリン展開を n回微分を用いて求める問題なのですが (sin(x))'=cos(x)=sin(x+pi/2) 同様にして (sin(x))^(n)=sin(x+pi*n/2) ここからマクローリン展開の係数の 出し方がわかりません。どなたか よろしくお願いします。

  • mathematicaで微分方程式を…

    こんにちは。 現在、mathematicaを用いて微分方程式をとこうと思ってるのですが、「DSolve::deqn: 3の最初の引数には3ではなく,方程式か方程式のリストが必要です」とエラーがでてしまい解けません。 わかる方、ぜひ教えてください。お願いします。問題自体は y''[x]=3 と非常に簡単なのですが、 DSolve[y''[x] = 3, y, x] と入力してもとけません。よろしくお願いします。

  • <Mathematica>微分方程式の計算結果をファイルに出力する方法?

    はじめまして. 現在,微分方程式をMathematicaで解いています. NDSolveを使ったあとにPlotすることで,例えば,振り子運動の時刻暦波形のようなものを画面上に出力する方法はわかるのですが,その時刻暦波形を生成したと思われるt,x(t)の組みがファイルに書き出せません. どのようにすればt,x(t)の組みをファイルに書き出せるのでしょうか? 要するに,微分方程式を解いた結果の t,x(t)の組み をファイルに書き出そうとしています.他のグラフソフトに読み込むためです. ご存知の方がいましたら,ご教授ください.お願いします.

  • Mathematicaでの微分方程式の解き方を教えてください。

    最近Mathematicaをはじめたのですが、ある微分方程式をMthematicaで解こうとしたとき、理解できない回答が出力されます。 f[x_] := Tan[x]/x; と定義して DSolve[{y'[x] == f[x], y[1] == 2}, y[x], x] のように解こうとすると、 {{y[x] -> 2 + ∫(Tan[K$196]/K$196)[DifferentialD]K$196}} ※∫の積分範囲は(1~x) のように出力されます。 ”K$”の意味を教えてください。よろしくお願いします。もしくは、この微分方程式は解くことができないのでしょうか?

  • 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を用いて連立微分方程式を解く

    私はMathematicaについては素人ですが、頑張って勉強しています。 2種間の競争を表すモデルを解いていますが、うまくいきません。 微分方程式は以下のようです。 dx/dt=r1x(1-(x+ay)/K1) dy/dt=r2y(1-(bx+y)/K2) 上記の方程式をMathematicaで次のように書きました。 r1 = 1; r2 = 2; K1 = 80; K2 = 70; a = 0.7; b = 1.1; ok = Dsolve[{x'[t] == r1 x [t](1 - (x[t] + a y[t])/K1), y'[t] == r2 y[t](1 - (b x[t] + y[t]/K2)), x[0] == 0, y[0] == 0}, {x[t], y[t]}, t]; これでいいのですか?また、これをx,y軸の範囲が0から100としてPlotしたいですが、どのように書けばいいのですか? よろしくお願いします。

  • 積分値Integrate[Abs[Sin[x]/x], {x, Pi, 2 Pi}]について

    mathematicaで Integrate[Abs[Sin[x]/x], {x, 0, Pi}] をしたら、 SinIntegral[\[Pi]] がでました。これはどういうものをあらわしますか? よめないです。。。教えてください! できれば、Abs[Sin[x]/x]の0-Pi、Pi-2Pi、・・・積分値の漸化式かI_nを教えていただけたらありがたいです。

  • 弦の振動

    両端を固定した長さl=piの弦がある。初期位相を次のようにとる (1/10)x for 0 < x < pi/4 f(x)= (1/10)[(pi/2)-x] for pi/4 < x < 3pi/4, (1/10)(x-pi) for 3pi/4 < x < pi 弦の初速度を0 弦の音速v=1とする 原点x=0を弦の左端にとります。 弦が振動したときの変位u(x,t)を求める問題なのですが、 以前類題を解いたときは、条件が for 0 < x < pi/2 のとき、f(x)は・・・ for pi/2 < x < piのとき、f(x)は・・・・ といった問題でした。今回の悩んでる問題は条件が3つで場合わけされています。 自分で考えた式が A*((∫[0~pi/4](1/10)x * sin(n*pi/l)*x dx +∫[pi/4~3pi/4](1/10)(pi/2-x) * sin(n*pi/l)*x dx +∫[3pi/4~pi](1/10)(x-pi) * sin(n*pi/l)*x dx)) 以前の問題では、Aの係数部分がpi/2となって、式の全体をpi/2で割っていました。おそらく条件のpi/2から来てると考えています 今回の問題は for 0 < x < pi/4, for pi/4 < x < 3pi/4, for 3pi/4 < x < pi となっていて、係数をどうすればいいのかわかりません。 理解が足りないために、そもそも自分の考えた式が見当違いな式になってしまったかもしれないですが、解説のほうお願いします。

  • 見かけによるか 否か

    (イ) -(1/4) Cos[\[Pi]/9] - 1/2 Sin[\[Pi]/18] + I (-(1/2) Cos[\[Pi]/18] + 1/4 Sqrt[3] Cos[\[Pi]/9] + 1/4 Sin[\[Pi]/9]) + 1/4 Sqrt[3] Sin[\[Pi]/9] (ロ) -Sin[\[Pi]/18] (ハ)Cos[(5*Pi)/9] (1)上の3つの数は 「見かけ は 異なるが Q係数の 同一の 3次方程式の解であることを示して下さい」 (2) 獲た 3次方程式の解をαとすると他の解がQ係数の2次以下の多項式で表現可能だと      少女 G,      何を根拠に少女G が そう断言するのか 根拠を 記して下さい;      そして いうだけ 番長に 終らず 具現過程を隠匿せず晒してください!;