Wolfram mathematica 如何找到所需的初始条件?

Wolfram mathematica 如何找到所需的初始条件?,wolfram-mathematica,Wolfram Mathematica,我在解一组微分方程,其中系数由解本身决定。下面是一个简单的例子: s = NDSolve[{M'[r] == a r^2, M[0] == 0}, M, r]; Plot[Evaluate[M[r] /. s], {r, 0, 1}] 其中a通过要求M[r=1]=1来确定。一旦找到了正确的a,我就可以正常地解方程并绘制M[r]。在fortran中,我可以迭代一个函数,直到满足这样的要求。我想知道如何使用Mathematica来实现这一点,或者更好的是,更优雅地实现这一点,而不是迭代,因为Ma

我在解一组微分方程,其中系数由解本身决定。下面是一个简单的例子:

s = NDSolve[{M'[r] == a r^2, M[0] == 0}, M, r]; 
Plot[Evaluate[M[r] /. s], {r, 0, 1}]
其中a通过要求M[r=1]=1来确定。一旦找到了正确的a,我就可以正常地解方程并绘制M[r]。在fortran中,我可以迭代一个函数,直到满足这样的要求。我想知道如何使用Mathematica来实现这一点,或者更好的是,更优雅地实现这一点,而不是迭代,因为Mathematica非常耗时

或者,如果您觉得上面的示例太傻,那么下面是原始问题:

s = NDSolve[{M'[r] == r^2 Exp[lnp[r]], lnp'[r] == - M[r]/r^2, M[0.01] == 0, lnp[0.01] == a}, {M, lnp}, {r, 0.01, 1}]
Plot[Evaluate[M[r] /. s], {r, 0.01, 1}]
其中a通过要求M[1]=1来确定


谢谢

可能有一种更简洁的方法

DSolve[D[M[r], r] == a r^2, M[r], r]
{{M[r]->a r^3/3+C[1]}。eqn。一,

来自eqn。1,当r=0时,M[0]==C[1],因此

M[r] == (a r^3)/3 + M[0]
M[r_] := r^3

Plot[M[r], {r, 0, 10}]
给定M[0]=0

M[r] == (a r^3)/3
同样给定M[1]=1,a==3,因此

M[r] == (a r^3)/3 + M[0]
M[r_] := r^3

Plot[M[r], {r, 0, 10}]

看看ParameterCndSolve.@b.gatesChecks:正是我想要的。谢谢