首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到所需的初始条件?

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

Stack Overflow用户
提问于 2014-01-13 16:33:31
回答 1查看 60关注 0票数 1

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

代码语言:javascript
复制
s = NDSolve[{M'[r] == a r^2, M[0] == 0}, M, r]; 
Plot[Evaluate[M[r] /. s], {r, 0, 1}]

其中,通过要求M[r=1]=1来确定a。一旦找到了正确的a,我就可以正常地求解方程并绘制M[r]。在fortran中,我可以遍历a,直到满足这样的要求。我想知道如何使用Mathematica做到这一点,或者更好的是,更优雅地做到这一点(不是迭代,因为在Mathematica中这很耗时)。

或者,如果你觉得上面的例子太傻了,这里是原始问题:

代码语言:javascript
复制
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}]

其中,通过要求M[1]=1来确定a

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-01-16 17:28:14

可能有一种更好的方法来做到这一点。

代码语言:javascript
复制
DSolve[D[M[r], r] == a r^2, M[r], r]

{{Mr -> (a r^3)/3 + C1}}。。。(等式1)

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

代码语言:javascript
复制
M[r] == (a r^3)/3 + M[0]

给定M=0

代码语言:javascript
复制
M[r] == (a r^3)/3

同样给定M1 = 1,a == 3,因此

代码语言:javascript
复制
M[r_] := r^3

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21086825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档