PDESolve[cdata,bcdata,vd,sd,mdata]
係数データ cdata,境界条件データ bcdata,変数データ vd,解データ sd,メソッドデータ mdata に基づいて偏微分方程式を解き,新しい解のデータを返す.
PDESolve
PDESolve[cdata,bcdata,vd,sd,mdata]
係数データ cdata,境界条件データ bcdata,変数データ vd,解データ sd,メソッドデータ mdata に基づいて偏微分方程式を解き,新しい解のデータを返す.
詳細とオプション
- PDESolveは,線形と非線形の定常偏微分方程式を解く.
- PDESolveは,solution dataであるリストを返す.
- 係数データ cdata は,InitializePDECoefficientsによって生成されるPDECoefficientDataオブジェクトである.
- 境界条件データ bcdata は,InitializeBoundaryConditionsによって生成されるBoundaryConditionDataオブジェクトである.
- 変数データ vd と解データ sd は,変数と値の対応するリストである.vd と sd のテンプレートは,NDSolve`VariableDataとNDSolve`SolutionDataを使って生成され,コンポーネントはNDSolve`SetSolutionDataComponentを使って設定されることがある.
- メソッドデータ mdata は,InitializePDEMethodDataを通して生成されるFEMMethodDataのような偏微分方程式のメソッドデータオブジェクトである.
- PDESolveは以下のオプションを取る.
-
"FindRootOptions" Automatic FindRootのオプションを指定する "LinearSolver" Automatic 線形ソルバおよびそのオプションを指定する - PDESolveに与えられるオプションは,"PDESolveOptions"を指定することによってNDSolveに与えることができる. »
- NDSolveおよび関連の関数からオプションを設定することについては,有限要素のためのNDSolveオプションに説明がある.
例題
すべて開く すべて閉じる例 (3)
Needs["NDSolve`FEM`"]NumericalRegionを設定する:
nRegion = ToNumericalRegion[Rectangle[{0, 0}, {1, 1 / 2}]]vd = NDSolve`VariableData[{"DependentVariables", "Space"} -> {{u}, {x, y}}];
sd = NDSolve`SolutionData[{"Space"} -> {nRegion}];methodData = InitializePDEMethodData[vd, sd]pdeData = InitializePDECoefficients[vd, sd, "DiffusionCoefficients" -> {{-IdentityMatrix[2]}}]bcData = InitializeBoundaryConditions[vd, sd, {{DirichletCondition[u[x, y] == 0., x == 0]}}]sdNew = PDESolve[pdeData, bcData, vd, sd, methodData];ProcessPDESolutions[methodData, sdNew]npdeData = InitializePDECoefficients[vd, sd, "DiffusionCoefficients" -> {{-Sqrt[u[x, y]] * IdentityMatrix[2]}}]nbcData = InitializeBoundaryConditions[vd, sd, {{DirichletCondition[u[x, y] == 0., x == 0], NeumannValue[u[x, y] ^ 2, x == 1]}}]NDSolve`SetSolutionDataComponent[sd, "Dependent", {1}]sdnew = PDESolve[npdeData, nbcData, vd, sd, methodData];ProcessPDESolutions[methodData, sdNew]オプション (8)
"FindRootOptions" (5)
関数の呼出し,ステップ,関数行列式の評価の必要な数を調べる:
Block[{e = 0, s = 0, j = 0},
PDESolve[npdeData, nbcData, vd, sd, methodData,
"FindRootOptions" -> {
Jacobian -> {Automatic, EvaluationMonitor :> j++}
, EvaluationMonitor :> e++, StepMonitor :> s++}
];
Print["Function Evaluations = ", e, "
Steps = ", s, "
Jacobian Evaluations = ", j];
]PDESolveがデフォルトのFindRoot の求根アルゴリズムを使うように指定する:
Block[{e = 0, s = 0, j = 0},
PDESolve[npdeData, nbcData, vd, sd, methodData,
"FindRootOptions" -> {
Method -> {"Newton"}
, Jacobian -> {Automatic, EvaluationMonitor :> j++}
, EvaluationMonitor :> e++, StepMonitor :> s++}
];
Print["Function Evaluations = ", e, "
Steps = ", s, "
Jacobian Evaluations = ", j];
]PDESolveがデフォルトのアフィン共変ニュートン法を使うように指定する:
Block[{e = 0, s = 0, j = 0},
PDESolve[npdeData, nbcData, vd, sd, methodData,
"FindRootOptions" -> {
Method -> {"AffineCovariantNewton"}
, Jacobian -> {Automatic, EvaluationMonitor :> j++}
, EvaluationMonitor :> e++, StepMonitor :> s++}
];
Print["Function Evaluations = ", e, "
Steps = ", s, "
Jacobian Evaluations = ", j];
]PDESolveがブロイデン法のアップデートを使わないように設定する:
Block[{e = 0, s = 0, j = 0},
PDESolve[npdeData, nbcData, vd, sd, methodData,
"FindRootOptions" -> {
Method -> {"AffineCovariantNewton", "BroydenUpdates" -> False}
, Jacobian -> {Automatic, EvaluationMonitor :> j++}
, EvaluationMonitor :> e++, StepMonitor :> s++}
];
Print["Function Evaluations = ", e, "
Steps = ", s, "
Jacobian Evaluations = ", j];
]デフォルトのPDESolve FindRootメソッド用にPrecisionGoalを設定する:
Block[{e = 0, s = 0, j = 0},
PDESolve[npdeData, nbcData, vd, sd, methodData,
"FindRootOptions" -> {PrecisionGoal -> 4,
Jacobian -> {Automatic, EvaluationMonitor :> j++},
EvaluationMonitor :> e++, StepMonitor :> s++}
];
Print["Function Evaluations = ", e, "
Steps = ", s, "
Jacobian Evaluations = ", j];
]"LinearSolver" (3)
PDESolveがLinearSolveに直接法を使うように指定する:
Block[{e = 0, s = 0, j = 0},
PDESolve[npdeData, nbcData, vd, sd, methodData,
"LinearSolver" -> {LinearSolve, "Method" -> "Direct"},
"FindRootOptions" -> {Jacobian -> {Automatic, EvaluationMonitor :> j++},
EvaluationMonitor :> e++, StepMonitor :> s++}
];
Print["Function Evaluations = ", e, "
Steps = ", s, "
Jacobian Evaluations = ", j];
]PDESolveがLinearSolveにKeylovメソッドを使うように指定する:
Block[{e = 0, s = 0, j = 0},
PDESolve[npdeData, nbcData, vd, sd, methodData,
"LinearSolver" -> {Automatic, "Method" -> "Krylov"},
"FindRootOptions" -> {
Jacobian -> {Automatic, EvaluationMonitor :> j++}
, EvaluationMonitor :> e++, StepMonitor :> s++}
];
Print["Function Evaluations = ", e, "
Steps = ", s, "
Jacobian Evaluations = ", j];
]MaxIterations PDESolveがLinearSolveにKeylovメソッドを使うように指定する:
Block[{e = 0, s = 0, j = 0},
PDESolve[npdeData, nbcData, vd, sd, methodData,
"LinearSolver" -> {(Print["LinearSolverCall"];LinearSolve[#])&},
"FindRootOptions" -> {
Jacobian -> {Automatic, EvaluationMonitor :> j++},
EvaluationMonitor :> e++, StepMonitor :> s++}
];
Print["Function Evaluations = ", e, "
Steps = ", s, "
Jacobian Evaluations = ", j];
]特性と関係 (1)
PDESolveに与えられたオプションは,"PDESolveOptions"を指定することで NDSolveに与えることができる:
Block[{e = 0, s = 0, j = 0},
NDSolve[{-Inactive[Div][(1/Sqrt[1 + Grad[u[x, y], {x, y}] . Grad[u[x, y], {x, y}]])*
Inactive[Grad][u[x, y], {x, y}], {x, y}] == 0, DirichletCondition[u[x, y] == Sin[2π * (x + y)], True]}, u, {x, y}∈Disk[], Method -> {"FiniteElement", "PDESolveOptions" -> "FindRootOptions" -> {
Jacobian -> {Automatic, EvaluationMonitor :> j++}
, EvaluationMonitor :> e++, StepMonitor :> s++}}];
Print["Function Evaluations = ", e, "
Steps = ", s, "
Jacobian Evaluations = ", j];
]テクニカルノート
関連するガイド
-
▪
- 有限要素法
テキスト
Wolfram Research (2019), PDESolve, Wolfram言語関数, https://reference.wolfram.com/language/FEMDocumentation/ref/PDESolve.html.
CMS
Wolfram Language. 2019. "PDESolve." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/FEMDocumentation/ref/PDESolve.html.
APA
Wolfram Language. (2019). PDESolve. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/FEMDocumentation/ref/PDESolve.html
BibTeX
@misc{reference.wolfram_2026_pdesolve, author="Wolfram Research", title="{PDESolve}", year="2019", howpublished="\url{https://reference.wolfram.com/language/FEMDocumentation/ref/PDESolve.html}", note=[Accessed: 08-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_pdesolve, organization={Wolfram Research}, title={PDESolve}, year={2019}, url={https://reference.wolfram.com/language/FEMDocumentation/ref/PDESolve.html}, note=[Accessed: 08-August-2026]}