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]==c0,y'[x0]==dc0等の形で与えられるが,実際に与える式はより複雑なものであっても構わない.
- c0,dc0等は,y[x]がベクトルあるいは一般的なリストの値を持つ関数であることを指定するリストでもよい.
- 周期境界条件はy[x0]==y[x1]を用いて指定することができる.
- 初期条件や境界条件に現れる点 x0は,解を求める xminから xmaxの範囲に必ずしもなくてよい.
- 遅延微分方程式では,最初の履歴関数が y[x/;x<x0]==c0の形式で与えられる.ただし,c0は一般に x の関数である.
- 方程式 eqns にWhenEvent[event,action]を含ませて event がTrueになったときに起きる action を指定することができる.
- 境界値もまた,DirichletConditionおよびNeumannValueを使って指定することができる.
- NDSolveValueの微分方程式には,複素数を使うことができる.
- NDSolveValueは多くの微分代数方程式を解くことができる.この場合,eqns が純粋に代数的なこともあれば,変数の中に陰的に代数的なものがあることもある.
- yiは従属変数の関数であり得るが,そのような変数すべてを含んでいる必要はない.
- 指定可能なオプション
-
AccuracyGoal Automatic 目標とする絶対確度の桁数 Compiled Automatic 自動的に式をコンパイルするかどうか DependentVariables Automatic 全従属変数のリスト EvaluationMonitor None 関数が評価されたときに常に評価される式 InitialSeeding {} いくつかのアルゴリズムのためのシード方程式 InterpolationOrder Automatic 最終出力の連続性の程度 MaxStepFraction 1/10 各ステップでカバーする領域の最大割合 MaxSteps Automatic 最大ステップ数 MaxStepSize Automatic 各ステップの最大刻み幅 Method Automatic 使用されるアルゴリズム NormFunction Automatic 誤差推定に用いるノルム PrecisionGoal Automatic 目標とする精度の桁数 StartingStepSize Automatic 使用される最初の刻み幅 StepMonitor None ステップを取ると評価される式 WorkingPrecision MachinePrecision 内部計算で使用する精度 - NDSolveValueは解における推定誤差がPrecisionGoalとAccuracyGoalで指定された許容範囲内に収まるような刻み幅を取る.
- オプションNormFunction->f は各 yiの推定誤差を f[{e1,e2,…}]を用いて統合するように指定する.
- AccuracyGoalは,実質的に解を求める各ステップで許される絶対的な局所誤差を指定し,PrecisionGoalは相対的な局所誤差を指定する.
- 解がゼロ近傍にあるときに,解が正確に求められなければならない場合は,AccuracyGoalを大き目に設定するか,Infinityに設定するとよい.
- AccuracyGoalやPrecisionGoalのデフォルト設定のAutomaticはWorkingPrecision/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->m1 はMethod->{"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は,上の値を直接返すこともできる:
プロットする関数を直接NDSolveValueに代入することもできる:
ポアソン方程式をDisk上で解く:
正弦波境界条件でDisk上の最小面積を求める:
スコープ (25)
オプション (29)
デフォルトを使って初期条件に鋭敏に依存する天体力学方程式を解く:
InterpolationOrder (1)
MaxStepFraction (1)
積分区間の相対的に小さいサイズの特徴は見逃されることがある:
MaxStepFractionを使って区間の大きさにかかわらず特徴が見逃されないようにする:
MaxStepSize (2)
デフォルトのステップ制御では突然変化する特徴を見逃すことがある:
MaxStepSizeの設定値を小さくしてNDSolveValueが特徴を確実に捉えるようにする:
より小さい正の整数の数を計算しようとするといくつかの事象を見逃してしまう:
MaxStepSizeを十分小さくして事象を一つも見逃さないようにする:
Method (12)
TimeIntegration (5)
DiscontinuityProcessing (1)
NDSolveValueは,自動的にSignのような不連続関数を処理する:
処理ができないようになっていると,NDSolveValueは不連続点で失敗することがある:
EquationSimplification (1)
IndexReduction (1)
DAEInitialization (1)
初期化に前進コロケーションを使って0におけるAbs項の問題を避ける:
アプリケーション (15)
ロトカ–ヴォルテラ(Lotka–Volterra)方程式 (1)
ロトカ–ヴォルテラの捕食者と被食者の方程式 [詳細]:
ローレンツ(Lorenz)方程式 (1)
ローレンツ方程式 [詳細]:
熱伝導方程式 (2)
表面を周期的に暖めた場合の深さ における地熱の簡単なモデル:
熱方程式と適用可能な境界条件についての詳細は「熱移動」のチュートリアル と「熱移動の偏微分方程式モデル」のガイドページをご覧いただきたい.
Wolframの非線形波動方程式 (2)
n 体問題 (1)
簡約された3体(3-body)問題 [詳細]:
音響方程式 (1)
過渡音圧場のモデル変数 vars をモデルパラメータ pars で定義する:
波動方程式および音響境界条件についての詳細は,「時間領域における音響学」のチュートリアルと「音響の偏微分方程式モデル」のガイドページをご覧いただきたい.
物質移動 (1)
1つの反応速度でさまざまな材料を通過する1D化学種の移動をモデル化する.右辺と左辺はそれぞれ質量濃度と流入条件に従う:
領域 における質量移動モデルパラメータ種拡散率 と反応率 を指定する:
物質移動方程式と境界条件についての詳細は,「物質輸送」のチュートリアルと「物質移動の偏微分方程式モデル」のガイドページをご覧いただきたい.
特性と関係 (9)
NDSolveValueは解の関数を与えるのに対し,NDSolveは結果を規則として返す:
NDSolveValueは,指定された点における解の関数の結果を直接返すことができる:
NDSolveを使った場合:
NDSolveValueは複数の点で評価された解を直接返すことができる:
NDSolveを使った場合:
NDSolveValueは,解を含む任意の式の結果を直接返すことができる:
NDSolveを使った場合:
方程式に複数の解がある場合,NDSolveValueはその中の1つを選ぶ:
NDSolveは両方の解の分岐を得る:
独立変数の関数では,NDSolveは実質的に不定積分を返す:
NDSolveをSystemModelのソルバとして使う:
SystemModelを使って大きい階層的モデルをモデル化する:
考えられる問題 (12)
NDSolveValueのメッセージの多くにはそのメッセージに特有の参照ページがある.各ページにアクセスする方法はワークフローのエラーメッセージを理解するを参照されたい.
複数の解 (1)
数値誤差 (3)
微分代数方程式 (2)
NDSolveValueは,指定された初期条件では の解が求まらない場合には,その条件を変えることがある:
NDSolveValueは指数1に限定されているが,の解の指数は2である:
デフォルトのメソッドではデフォルトの許容度に収束しないことがある:
AccuracyGoalとPrecisionGoalをより低く設定すると解が求まる:
偏微分方程式 (4)
PDEModelsの概要には,さまざまな分野からの詳細な説明付きのPDEモデルの大規模コレクションが収められている.
空間的な離散化は初期値に基づいており,それは最終値に比べると変化が少ない:
空間的な格子点の最小数を大きくすることで,最終値が正確に計算できるようになる:
初期値における不連続性によって空間格子点が多すぎるようになるかもしれない:
空間格子点の数をより少なく設定しても,基本的に同じような解になる:
このソルバは初期値(Cauchy)問題としてよく設定できた方程式にしか使えない:
テキスト
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