NDSolveValue

NDSolveValue[eqns,expr,{x,xmin,xmax}]

範囲が xminから xmaxまでの独立変数 x を持つ常微分方程式 eqns の数値解で決定された関数で expr の値を与える.

NDSolveValue[eqns,expr,{x,xmin,xmax},{y,ymin,ymax}]

偏微分方程式 eqns を矩形領域で解く.

NDSolveValue[eqns,expr,{x,y}Ω]

偏微分方程式 eqnsΩ領域上で解く.

NDSolveValue[eqns,u,{t,tmin,tmax},{x,y}Ω]

時間依存偏微分方程式 eqnsΩ領域で解く.

詳細とオプション

  • NDSolveValue[eqns,y[x],{x,xmin,xmax}]は関数 y それ自体ではなく,y[x]の解を与える.
  • 微分方程式は,Dtによって得られた全微分商によってではなく,Dによって得られた y'[x]等の導関数によって述べられなければならない.
  • 偏微分方程式は,微分演算子Grad (),Div (.),Laplacian (2),Curl ()を使って指定することもできる.一般に,これらの演算子は,演算子形が評価されないように,Inactive[op]でのように用いられる.
  • NDSolveValueは,多種の常微分方程式と多くの偏微分方程式を解くことができる.
  • NDSolveValueは,多くの遅延微分方程式も解くことができる.
  • 常微分方程式では,関数 yiは単一変数 x だけに依存するものとする.偏微分方程式では,複数の変数に依存してもよい.
  • yiの完全解を得るには,十分な初期条件または境界条件を微分方程式に与えておかなければならない.
  • 初期条件と境界条件は,通常 y[x0]==c0y'[x0]==dc0等の形で与えられるが,実際に与える式はより複雑なものであっても構わない.
  • c0dc0等は,y[x]がベクトルあるいは一般的なリストの値を持つ関数であることを指定するリストでもよい.
  • 周期境界条件はy[x0]==y[x1]を用いて指定することができる.
  • 初期条件や境界条件に現れる点 x0は,解を求める xminから xmaxの範囲に必ずしもなくてよい.
  • 遅延微分方程式では,最初の履歴関数が y[x/;x<x0]==c0の形式で与えられる.ただし,c0は一般に x の関数である.
  • 方程式 eqnsWhenEvent[event,action]を含ませて eventTrueになったときに起きる action を指定することができる.
  • 境界値もまた,DirichletConditionおよびNeumannValueを使って指定することができる.
  • NDSolveValueの微分方程式には,複素数を使うことができる.
  • NDSolveValueは多くの微分代数方程式を解くことができる.この場合,eqns が純粋に代数的なこともあれば,変数の中に陰的に代数的なものがあることもある.
  • yiは従属変数の関数であり得るが,そのような変数すべてを含んでいる必要はない.
  • 指定可能なオプション
  • AccuracyGoalAutomatic目標とする絶対確度の桁数
    CompiledAutomatic自動的に式をコンパイルするかどうか
    DependentVariables Automatic全従属変数のリスト
    EvaluationMonitor None関数が評価されたときに常に評価される式
    InitialSeeding{}いくつかのアルゴリズムのためのシード方程式
    InterpolationOrder Automatic最終出力の連続性の程度
    MaxStepFraction 1/10各ステップでカバーする領域の最大割合
    MaxSteps Automatic最大ステップ数
    MaxStepSize Automatic各ステップの最大刻み幅
    Method Automatic使用されるアルゴリズム
    NormFunction Automatic誤差推定に用いるノルム
    PrecisionGoalAutomatic目標とする精度の桁数
    StartingStepSize Automatic使用される最初の刻み幅
    StepMonitor Noneステップを取ると評価される式
    WorkingPrecision MachinePrecision内部計算で使用する精度
  • NDSolveValueは解における推定誤差がPrecisionGoalAccuracyGoalで指定された許容範囲内に収まるような刻み幅を取る.
  • オプションNormFunction->f は各 yiの推定誤差を f[{e1,e2,}]を用いて統合するように指定する.
  • AccuracyGoalは,実質的に解を求める各ステップで許される絶対的な局所誤差を指定し,PrecisionGoalは相対的な局所誤差を指定する.
  • 解がゼロ近傍にあるときに,解が正確に求められなければならない場合は,AccuracyGoalを大き目に設定するか,Infinityに設定するとよい.
  • AccuracyGoalPrecisionGoalのデフォルト設定のAutomaticWorkingPrecision/2に等しい.
  • MaxStepsのデフォルト設定であるAutomaticは,開始時,終了時,刻み幅の推定値から,NDSolveの最大ステップ数を推定する.これが不可能な場合は,一定数のステップが取られる.
  • MaxStepFractionの設定で各独立変数の値の幅の割合としてNDSolveの最大刻み幅を指定する.
  • DependentVariables->Automaticの場合,NDSolveは与えられた方程式を解析して従属変数を決定しようとする.
  • NDSolveValueは一般に微分方程式を,その方程式のタイプによっていくつかの異なる段階を追って解く.Method->{s1->m1,s2->m2,}では,ステージ si がメソッド miによって処理される,実際に使われる段階とその順序は,解こうとしている問題に基づいてNDSolveによって決定される.
  • 使用可能な解法の段階
  • "TimeIntegration"微分方程式系の時間積分
    "BoundaryValues"常微分方程式の境界値解
    "DiscontinuityProcessing"不連続微分方程式を扱うための記号処理
    "EquationSimplification"数値評価のための方程式の形式の簡略
    "IndexReduction"微分代数方程式の記号指数最小化
    "DAEInitialization"微分代数方程式の一貫した初期化
    "PDEDiscretization"偏微分方程式の離散化
  • Method->m1 またはMethod->{m1,s2->m2,}を使うと,メソッド m1は時間積分に使われると仮定されるので,Method->m1Method->{"TimeIntegration"->m1}に等しい.
  • Methodオプションの可能な明示的時間積分設定
  • "Adams"一階から12階の予測器・修正子Adams法
    "BDF"一階から五階の陰的後退微分式
    "ExplicitRungeKutta"2(1)から9(8)までのルンゲ・クッタ法の適応的埋込み型ペア
    "ImplicitRungeKutta"任意階数の陰的ルンゲ・クッタ法族
    "SymplecticPartitionedRungeKutta"分離可能なハミルトン系のためにインターリーブされたルンゲ・クッタ法
  • Method->{"controller",Method->"submethod"}あるいはMethod->{"controller",Method->{m1,m2,}}のときの可能なコントローラ法
  • "Composition"サブメソッドのリストを作成
    "DoubleStep"ダブルステップ法による刻み幅を適用
    "EventLocator"指定された事象に応答
    "Extrapolation"多項式補外を用いて次数と刻み幅を適用
    "FixedStep"固定刻み幅を使用
    "OrthogonalProjection"直交制約条件を満たす解を投影
    "Projection"一般的な制約条件を満足する解を投影
    "Splitting"式を分割し異なるサブメソッドを使用
    "StiffnessSwitching"硬さが検出されたら陽的メソッドから陰的メソッドに変更
  • 主にサブメソッドとして使われるメソッド
  • "ExplicitEuler"前進オイラー法
    "ExplicitMidpoint"中点法則法
    "ExplicitModifiedMidpoint"Graggの補整を伴う中点法則法
    "LinearlyImplicitEuler"線形陰的オイラー法
    "LinearlyImplicitMidpoint"線形陰的中点法則法
    "LinearlyImplicitModifiedMidpoint"線形陰的Bader補整中点法則法
    "LocallyExact"局所的に厳密な記号解の数値近似
  • InterpolationOrder->Allと設定すると,NDSolveはもとになるメソッドと同じ階数の補間を使う解を生成するようになる. »

例題

すべて開くすべて閉じる

  (7)

一階常微分方程式を解く:

解をプロットに使う:

関数とその導関数をプロットに使う:

特定の値を求める:

NDSolveValueは,上の値を直接返すこともできる:

二階非線形常微分方程式:

関数と最初の2つの導関数をプロットする:

プロットする関数を直接NDSolveValueに代入することもできる:

常微分方程式系:

以下で一次元の熱伝導方程式を解く:

方程式の別の形:

ポアソン方程式をDisk上で解く:

正弦波境界条件でDisk上の最小面積を求める:

領域上で非線形結合サインゴルドン方程式を解く:

スコープ  (25)

常微分方程式  (7)

任意の階数の方程式を指定する.通常の形への簡約は自動的に行われる:

直接,解を微分し,位相面のプロットを作成する:

方程式系を直接指定する:

ベクトル値の関数について解く:

解の4つの成分をプロットする:

二階方程式としての調和振動子の異なる同等の指定方法:

一階方程式系として:

初期条件から次元を推定し,ベクトル変数を使う:

行列値の変数を使って基本的な行列解を計算する:

厳密解と比較する:

ファン・デル・ポル(Van der Pol)方程式を定義する:

デフォルトのソルバが自動的に扱う解の「硬い(stiff)」動作:

他のメソッドではこの系は解けない可能性がある:

ysol[x]は,区分関数を一度積分しており,連続的である:

ysol[x]は微分可能である.これに対し ysol'[x]は連続なだけである:

偏微分方程式  (5)

一次元の非線形移流拡散方程式:

放物線型と双曲線型をミックスした偏微分方程式系を定義する:

2つの空間次元における周期境界条件を持った非線形正弦Gordon方程式:

最終時間で解をプロットする:

解のラジアル断面の時間の進化をプロットする:

開口部のある領域上で波動方程式を解く:

周期境界条件があるポアソン方程式を曲線境界上で解く:

結果を可視化する:

境界値問題  (5)

非線形多点境界値問題:

ディリクレトノイマンの境界条件がある非線形拡散方程式 を,の初期シードから始めて解く:

結果を可視化する:

ディリクレ境界条件がある非線形方程式 を初期シード から始めて解く:

結果を可視化する:

ディリクレ境界条件がある複素数値の非線形反応方程式 を解く:

結果を可視化する:

非線形荷重項 がある境界値問題を解く:

結果を可視化する:

遅延微分方程式  (2)

一定の遅延2つと初期履歴関数 を持つ遅延型の微分方程式を解く:

不連続性は から遅延と等しい間隔で伝播する:

線形遅延微分方程式の安定性を調べる:

ハイブリッドな系と不連続な系  (5)

不連続な右辺を持つ微分方程式:

複数の右辺を持つ微分方程式:

右辺が定期的な時間間隔で変わる微分方程式:

解が負の 軸と交差するたびに,それを 軸に反映させる:

スライディングモードの周期解:

微分代数方程式  (1)

代数的制約を持つ微分方程式:

一般化と拡張  (1)

関数の名前は記号でなくともよい:

オプション  (29)

AccuracyGoalとPrecisionGoal  (1)

デフォルトを使って初期条件に鋭敏に依存する天体力学方程式を解く:

より高い確度と精度を目標とすると結果が変わる:

目標を増やすとさらに正しい解が広がる:

DependentVariables  (1)

非常に大きい方程式系を設定する:

すべての従属変数について解くが,x1についての解だけを保存する:

EvaluationMonitor  (2)

評価の総数:

連続する評価の間の距離.負の距離は拒絶されたステップを表す:

InitialSeedings  (2)

境界値問題に初期シード0を指定する:

空間座標に依存する初期シードを指定する:

InterpolationOrder  (1)

InterpolationOrder->Allを使ってメソッドと同じ次数の補間を得る:

これはデフォルトで使われている補間次数よりもはるかに時間がかかる:

ステップ間でははるかによい:

MaxStepFraction  (1)

積分区間の相対的に小さいサイズの特徴は見逃されることがある:

MaxStepFractionを使って区間の大きさにかかわらず特徴が見逃されないようにする:

MaxSteps  (1)

積分が,所望の区間よりも短い区間で止まってしまう:

解を得るためにはもっとステップ数が必要である:

位相面で解をプロットする:

MaxStepSize  (2)

デフォルトのステップ制御では突然変化する特徴を見逃すことがある:

MaxStepSizeの設定値を小さくしてNDSolveValueが特徴を確実に捉えるようにする:

より小さい正の整数の数を計算しようとするといくつかの事象を見逃してしまう:

MaxStepSizeを十分小さくして事象を一つも見逃さないようにする:

Method  (12)

TimeIntegration  (5)

デフォルトの解法による連続するステップにおける の値間の差分:

陽的ルンゲ・クッタ法を使うと刻み幅はより頻繁に変化する:

八次における差分:

三次での差分では,ステップがずっと小さい:

補外法ではステップが大変大きくなる傾向にある:

BoundaryValues  (1)

境界値問題を解く:

デフォルトのオプションが使われると,メソッドは自明な解を求める:

"Shooting"メソッドの別な初期条件を指定して,異なる解を求める:

DiscontinuityProcessing  (1)

NDSolveValueは,自動的にSignのような不連続関数を処理する:

処理ができないようになっていると,NDSolveValueは不連続点で失敗することがある:

時間積分メソッドの中には解が非常に不正確なものがある:

解を求める同等の方法に"DiscontinuitySignature"の使用がある:

解は事実上等しい:

EquationSimplification  (1)

二乗根関数が十分に滑らかではないため,解は完了しない:

残差を形成して微分代数方程式系として解くことで1つの解が求まる:

他の解の分岐は,の一定の値を指定することで与えられる:

IndexReduction  (1)

指数簡約を使った制約条件付き振子の指数3の形成:

デフォルトメソッドは,指数1の問題しか解くことができない:

記号指数簡約の結果による問題は解くことができる:

指数0への簡約と制約条件を保つ投影法を使って解く:

2つの解についての陰的なエネルギー制約を時間ステップでプロットする:

DAEInitialization  (1)

初期化に前進コロケーションを使って0におけるAbs項の問題を避ける:

PDEDiscretization  (2)

Bergers方程式の解はより急になり,数値的不安定に至るかもしれない:

フロントを分解するのに十分細かい空間離散化を指定する:

フロントの形式の後,解は比較的急速に減衰する:

時間依存シュレディンガー(Schrödinger)方程式を細分化メッシュ上で解く:

高確度の解をプロットする:

NormFunction  (1)

さまざまな誤差推定のノルムを使った場合の,実際の解の誤差をプロットする:

最良の解のプロット:

StartingStepSize  (1)

区間が非常に大きい場合には,始点近くの長続きしない特徴は見逃されることがある:

刻み幅を十分小さくして始めると入力が見逃されない:

StepMonitor  (3)

解の処理の中でステップが取られる各点における解をプロットする:

解を求めるのに取られたステップの総数:

連続するステップにおける の値間の差分:

WorkingPrecision  (1)

100周期以上の調和振動子の解における誤差:

作業精度を上げると,局所的な許容度もこれに伴って高くなる:

作業精度を非常に大きくすると,"Extrapolation"メソッドが効果的になることもある:

アプリケーション  (15)

ダッフィング(Duffing)方程式   (2)

解は初期条件に大きく依存する:

ロトカヴォルテラ(LotkaVolterra)方程式  (1)

ロトカヴォルテラの捕食者と被食者の方程式 [詳細]:

位相面プロット:

ローレンツ(Lorenz)方程式  (1)

ローレンツ方程式 [詳細]:

GavrilovShilnikovモデル  (1)

青空の災害軌道の外観を見る:

熱伝導方程式  (2)

表面を周期的に暖めた場合の深さ における地熱の簡単なモデル:

ロッド中の熱源で温度場をモデル化する:

偏微分方程式を解く:

解を可視化する:

熱方程式と適用可能な境界条件についての詳細は「熱移動」のチュートリアル「熱移動の偏微分方程式モデル」のガイドページをご覧いただきたい.

波動方程式  (1)

周期境界条件を持った単純な波の漸進的進化:

解をプロットする:

Wolframの非線形波動方程式  (2)

Wolframの非線形波動方程式 [詳細]:

これは,2+1次元における同じ方程式を解く:

n 体問題  (1)

簡約された3体(3-body)問題 [詳細]

いくつかの異なる初期条件に適した形式:

非線形シュレディンガー(Schrödinger)方程式  (1)

周期ポテンシャルによって摂動を与えられたソリトンの断面:

MackeyGlass方程式  (1)

MackeyGlassの遅延微分方程式の解を見る:

音響方程式  (1)

過渡音圧場のモデル変数 vars をモデルパラメータ pars で定義する:

右に進音波 の初期条件 ics を定義する:

右端の音のハード境界で方程式を設定する:

偏微分方程式を解く:

音場を時間領域で可視化する:

波動方程式および音響境界条件についての詳細は,「時間領域における音響学」のチュートリアル「音響の偏微分方程式モデル」のガイドページをご覧いただきたい.

物質移動  (1)

1つの反応速度でさまざまな材料を通過する1D化学種の移動をモデル化する.右辺と左辺はそれぞれ質量濃度と流入条件に従う:

 del .(-d del c(x))+a c(x)^(︷^(           mass transport model              )) =|_(Gamma_(x=0))q(x)^(︷^( mass flux value  ))

定常質量移動モデル変数 vars を設定する:

領域 を設定する:

領域 における質量移動モデルパラメータ種拡散率 と反応率 を指定する:

種流束境界条件を指定する:

質量濃度境界条件を指定する:

方程式を立てる:

偏微分方程式を解く:

解を可視化する:

物質移動方程式と境界条件についての詳細は,「物質輸送」のチュートリアル「物質移動の偏微分方程式モデル」のガイドページをご覧いただきたい.

特性と関係  (9)

NDSolveValueは解の関数を与えるのに対し,NDSolveは結果を規則として返す:

次の2つは等価である:

NDSolveValueは,指定された点における解の関数の結果を直接返すことができる:

NDSolveを使った場合:

NDSolveValueは複数の点で評価された解を直接返すことができる:

NDSolveを使った場合:

NDSolveValueは,解を含む任意の式の結果を直接返すことができる:

NDSolveを使った場合:

方程式に複数の解がある場合,NDSolveValueはその中の1つを選ぶ:

NDSolveは両方の解の分岐を得る:

ある区間の異なる点で積分の値を数値的に計算する:

独立変数の関数では,NDSolveは実質的に不定積分を返す:

事象を求めるのは解の関数の根を求めることと関連する:

事象の位置で正確かつ効率よく根を見付けることができる:

これは,微分方程式についての の関数としての を返す:

の根を求める:

同等の境界位置問題を解く:

NDSolveSystemModelのソルバとして使う:

シミュレーション結果から変数をプロットする:

SystemModelを使って大きい階層的モデルをモデル化する:

水槽の系の時間の経過に伴う水位をプロットする:

考えられる問題  (12)

NDSolveValueのメッセージの多くにはそのメッセージに特有の参照ページがある.各ページにアクセスする方法はワークフローのエラーメッセージを理解するを参照されたい.

複数の解  (1)

複数の解がある方程式について,NDSolveValueは1つの解しか返さない:

すべての解が得たければNDSolveを使う:

数値誤差  (3)

初期条件から遠ざかるにつれて誤差も大きくなる傾向がある:

数値解と厳密解の差分を求める:

非線形方程式の誤差:

高次のアルゴリズムでは,デフォルトの補間はステップ間で大きい誤差を生むことがある:

アルゴリズムに対応した次数の補間を使うとステップ間の誤差が小さくなる:

微分代数方程式  (2)

以下は微分代数方程式系である:

で解を求める:

NDSolveValueは,指定された初期条件では の解が求まらない場合には,その条件を変えることがある:

NDSolveValueは指数1に限定されているが,の解の指数は2である:

デフォルトのメソッドではデフォルトの許容度に収束しないことがある:

AccuracyGoalPrecisionGoalをより低く設定すると解が求まる:

"StateSpace"時間積分法はデフォルトの許容度でも解を求めることができる:

偏微分方程式  (4)

PDEModelsの概要には,さまざまな分野からの詳細な説明付きのPDEモデルの大規模コレクションが収められている.

非線形偏微分方程式を定義する:

空間的な離散化は初期値に基づいており,それは最終値に比べると変化が少ない:

空間的な格子点の最小数を大きくすることで,最終値が正確に計算できるようになる:

このプロットは,空間的により複雑な解の始まりを示している:

初期値が階段関数の熱伝導方程式を定義する:

初期値における不連続性によって空間格子点が多すぎるようになるかもしれない:

空間格子点の数をより少なく設定しても,基本的に同じような解になる:

初期値のあるラプラス(Laplace)方程式を定義する:

このソルバは初期値(Cauchy)問題としてよく設定できた方程式にしか使えない:

不適切な設定をすると数値的に不安定になる:

境界値問題  (1)

これは,境界値問題の自明な解を求める:

解の探索に開始条件を加えることで,他の解を求めることができる:

おもしろい例題  (1)

ラプラス方程式を解き,解の勾配を計算することで,迷路を解く:

Wolfram Research (2012), NDSolveValue, Wolfram言語関数, https://reference.wolfram.com/language/ref/NDSolveValue.html (2019年に更新).

テキスト

Wolfram Research (2012), NDSolveValue, Wolfram言語関数, https://reference.wolfram.com/language/ref/NDSolveValue.html (2019年に更新).

CMS

Wolfram Language. 2012. "NDSolveValue." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2019. https://reference.wolfram.com/language/ref/NDSolveValue.html.

APA

Wolfram Language. (2012). NDSolveValue. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/NDSolveValue.html

BibTeX

@misc{reference.wolfram_2024_ndsolvevalue, author="Wolfram Research", title="{NDSolveValue}", year="2019", howpublished="\url{https://reference.wolfram.com/language/ref/NDSolveValue.html}", note=[Accessed: 24-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_ndsolvevalue, organization={Wolfram Research}, title={NDSolveValue}, year={2019}, url={https://reference.wolfram.com/language/ref/NDSolveValue.html}, note=[Accessed: 24-November-2024 ]}