InitialSeeding
是 NDSolve 和其他函数的一个选项,对用来指定迭代算法可能使用的变量的初始种子值的方程式进行指定.
更多信息
- 对于 NDSolve 和其他函数中的微分代数方程,InitialSeeding->{u[t0]==val} 表明应使用数值 val 来求得一致的初始条件.
- 对于 NDSolve 和其他函数中的静态非线性偏微分方程,InitialSeeding->{u[x1,…]==fun[x1,…]} 表明应使用自变量为 x1,… 的数值函数 fun 来获取网格的初始向量.
- 不同的初始种子值可能会导致不同的解. »
范例
打开所有单元 关闭所有单元基本范例 (1)
范围 (7)
NDSolveValue[{-2 u[x] Derivative[1][u][x] - Derivative[2][u][x] == 0, DirichletCondition[u[x] == 0, x == 0], DirichletCondition[u[x] == 1, x == 1]}, u, {x}∈Line[{{0}, {1}}], InitialSeeding -> {u[x] == x}]linear = NDSolveValue[{-2 u[x] - Derivative[2][u][x] == 0, DirichletCondition[u[x] == 0, x == 0], DirichletCondition[u[x] == 1, x == 1]}, u, {x}∈Line[{{0}, {1}}]]NDSolveValue[{-2 u[x] Derivative[1][u][x] - Derivative[2][u][x] == 0, DirichletCondition[u[x] == 0, x == 0], DirichletCondition[u[x] == 1, x == 1]}, u, {x}∈Line[{{0}, {1}}], InitialSeeding -> {u[x] == linear[x]}]InitialSeeding 的不同设置可能会得到边界值问题不同的解:
eqn = Inactive[Div][{{1 / 100, 0}, {0, 1 / 100}}. Inactive[Grad][u[x, y], {x, y}], {x, y}] - (u[x, y] ^ 3 - u[x, y]) == 0;
ifun = NDSolveValue[{eqn, DirichletCondition[u[x, y] == 0, True]}, u, {x, y}∈Rectangle[{-1, -1}, {1, 1}], InitialSeeding -> {u[x, y] == 0}];
Plot3D[ifun[x, y], {x, y}∈Rectangle[{-1, -1}, {1, 1}]]ifun = NDSolveValue[{eqn, DirichletCondition[u[x, y] == 0, True]}, u, {x, y}∈Rectangle[{-1, -1}, {1, 1}], InitialSeeding -> {u[x, y] == 1}];
Plot3D[ifun[x, y], {x, y}∈Rectangle[{-1, -1}, {1, 1}]]NDSolveValue[{Inactive[Plus][Inactive[Div][-Inactive[Grad][u[x], {x}], {x}], u[x] ^ 3] == 0, DirichletCondition[u[x] == 0, True]}, u, {x}∈Line[{{0}, {1}}], InitialSeeding -> {u[x] == 0.I}]solution1 = NDSolveValue[{-Derivative[1][u][x] - x Derivative[2][u][x] == E^u[x] x, DirichletCondition[u[x] == 0, x == 1]}, u, Element[{x}, Line[{{0}, {1}}]], InitialSeeding -> {u[x] == 1}]Plot[solution1[x], {x, 0, 1}, PlotRange -> All]通过设置不同的 InitialSeeding 求不同的解:
solution2 = NDSolveValue[{-Derivative[1][u][x] - x Derivative[2][u][x] == E^u[x] x, DirichletCondition[u[x] == 0, x == 1]}, u, Element[{x}, Line[{{0}, {1}}]], InitialSeeding -> {u[x] == -4x + 4}]Plot[solution2[x], {x, 0, 1}, PlotRange -> All]对于非线性边界值问题,为 "Shooting" 方法设置不同的初始种子:
pfun = ParametricNDSolveValue[{x''[t] + Sin[x[t]] == 0, x[0] == x[10] == 0}, x, t, s, Method -> "Shooting", InitialSeeding -> {x'[0] == s}]Plot[{pfun[1.5][t], pfun[1.75][t], pfun[2.][t]}, {t, 0, 10}, PlotStyle -> {Red, Blue, Green}]对于 "Shooting" 方法,初始种子也可以在解的区间内:
mid = NDSolveValue[{x''[t] + Sin[x[t]] == 0, x[0] == x[10] == 0}, x, t, InitialSeeding -> {x[5] == 0, x'[5] == -2}];
Plot[mid[t], {t, 0, 10}]用 InitialSeeding 来求微分代数方程组的一致初始条件:
sol = NDSolve[{Subscript[x, 1]'[t] == Subscript[x, 3][t], Subscript[x, 2][t](1 - Subscript[x, 2][t]) == 0, Subscript[x, 1][t] Subscript[x, 2][t] + Subscript[x, 3][t] (1 - Subscript[x, 2][t]) == t, Subscript[x, 1][0] == 1}, {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]}, {t, 0, 1}, InitialSeeding -> {Subscript[x, 2][0] == 0}];Plot[Evaluate[{Subscript[x, 1][t], Subscript[x, 3][t]} /. First[sol]], {t, 0, 1}, PlotStyle -> {Red, Blue}]可能存在的问题 (2)
对于有些 DAE 方程组,如果未指定初始种子,可能会发出有关初始条件不一致的消息:
sol = NDSolve[{Subscript[x, 1]'[t] == Subscript[x, 3][t], Subscript[x, 2][t](1 - Subscript[x, 2][t]) == 0, Subscript[x, 1][t] Subscript[x, 2][t] + Subscript[x, 3][t] (1 - Subscript[x, 2][t]) == t, Subscript[x, 1][0] == 1}, {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]}, {t, 0, 1}];Plot[Evaluate[{Subscript[x, 1][t], Subscript[x, 3][t]} /. First[sol]], {t, 0, 1}, PlotStyle -> {Red, Blue}]sol = NDSolve[{Subscript[x, 1]'[t] == Subscript[x, 3][t], Subscript[x, 2][t](1 - Subscript[x, 2][t]) == 0, Subscript[x, 1][t] Subscript[x, 2][t] + Subscript[x, 3][t] (1 - Subscript[x, 2][t]) == t, Subscript[x, 1][0] == 1}, {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]}, {t, 0, 1}, InitialSeeding -> {Subscript[x, 2][0] == 0}];Plot[Evaluate[{Subscript[x, 1][t], Subscript[x, 3][t]} /. First[sol]], {t, 0, 1}, PlotStyle -> {Red, Blue}]pendulumDAE = (| |
| ---------------------- |
| x''[t] == x[t] λ[t] |
| y''[t] == y[t] λ[t] - 1 |
| x[t]^2 + y[t]^2 == 1 |) ;sol = NDSolve[{pendulumDAE, y'[0] == 1, x'[0] == 0}, {x, y, λ}, {t, 0, 10}, Method -> {"IndexReduction" -> Automatic, "DAEInitialization" -> "Collocation"}, InitialSeeding -> {x[0] == 1}];
Plot[Evaluate[{x[t], y[t]} /. First[sol]], {t, 0, 10}]sol = NDSolve[{pendulumDAE, y'[0] == 1, x'[0] == 0}, {x, y, λ}, {t, 0, 10}, Method -> {"IndexReduction" -> Automatic, "DAEInitialization" -> "Collocation"}, InitialSeeding -> {x[0] == -1}];
Plot[Evaluate[{x[t], y[t]} /. First[sol]], {t, 0, 10}]文本
Wolfram Research (2019),InitialSeeding,Wolfram 语言函数,https://reference.wolfram.com/language/ref/InitialSeeding.html.
CMS
Wolfram 语言. 2019. "InitialSeeding." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/InitialSeeding.html.
APA
Wolfram 语言. (2019). InitialSeeding. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/InitialSeeding.html 年
BibTeX
@misc{reference.wolfram_2026_initialseeding, author="Wolfram Research", title="{InitialSeeding}", year="2019", howpublished="\url{https://reference.wolfram.com/language/ref/InitialSeeding.html}", note=[Accessed: 10-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_initialseeding, organization={Wolfram Research}, title={InitialSeeding}, year={2019}, url={https://reference.wolfram.com/language/ref/InitialSeeding.html}, note=[Accessed: 10-November-2026]}