首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微分方程解曲线的绘制

微分方程解曲线的绘制
EN

Stack Overflow用户
提问于 2011-07-23 13:56:44
回答 4查看 3.8K关注 0票数 1

我有几个微分方程,我想为各种起始值N_0画出解决方案

以下是方程式:

代码语言:javascript
复制
dN\dt= bN^2 - aN

dN\dt = bN^2 (1 - N\K) - aN

我该怎么做呢?

我真的不关心所使用的语言。在专门的数学方面,我的电脑上有mathematica和matlab。我有权进入梅普。我必须做更多这样的事情,我希望有来自任何语言的例子,因为这将帮助我找出我想要使用的语言并学习它。

EN

回答 4

Stack Overflow用户

发布于 2011-07-23 19:40:00

我将假设第一个问题不能解析解决,以便展示一个人如何在mathematica中演奏一首一般的颂歌。

定义

代码语言:javascript
复制
p1[n0_, a_, b_, uplim_: 10] :=(n /. First@NDSolve[
      {n'[t] == b*n[t]^2 - a*n[t], n[0] == n0},n, {t, 0, uplim}]

它返回ODE的解,即a = p1[.1, 2., 3.],然后例如a[.3]告诉你n(.3)。然后可以做一些类似这样的事情

代码语言:javascript
复制
Show[Table[ans = p1[n0, 1, 1];
 Plot[ans[t], {t, 0, 10}, PlotRange \[Rule] Full],
 {n0, 0, 1, .05}], PlotRange \[Rule] {{0, 5}, {0, 1}}]

它绘制了几个具有不同初始值的解决方案:

或者,为了深入了解解决方案,可以交互地操作abn0的值

代码语言:javascript
复制
Manipulate[
 ans = p1[n0, a, b];
 Plot[ans[t], {t, 0, 10},PlotRange -> {0, 1}],
 {{n0, .1}, 0, 1},
 {{a, 1}, 0, 2},
 {{b, 1}, 0, 2}]

它给出了类似这样的东西

激活控件(即,您移动它们,绘图将发生变化;尝试实时了解我的意思;请注意,您可以设置初始条件给出不同解决方案的参数)。

当然,这可以任意地变得更加复杂。此外,在这种特殊情况下,这个常微分方程很容易解析集成,但这种数值方法可以应用于一般的常微分方程(以及许多偏微分方程)。

票数 7
EN

Stack Overflow用户

发布于 2011-07-26 20:44:15

除了几个很好的答案之外,如果您只是想要快速地勾勒出许多初始值的ODE解决方案,作为指导,您总是可以执行一行StreamPlot。假设a==1b==1,以及dy/dx == x^2 - x

代码语言:javascript
复制
StreamPlot[{1, x^2 - x}, {x, -3, 3}, {y, -3, 3}]

StreamStyle -> "Line"只会给你线条,没有箭头。

票数 2
EN

Stack Overflow用户

发布于 2011-07-23 14:12:50

在Mathematica中,您可以使用NDSolve (除非它可以解析地解决,在这种情况下,您可以使用DSolve。因此,对于您的第一个方程,我尝试了:

代码语言:javascript
复制
b = 1.1; a = 2;
s = NDSolve[{n'[t] == b n[t]^2 - a n[t], n[0] == 1}, n, {t, 0, 10}];
Plot[Evaluate[n[t] /. s], {t, 1, 10}, PlotRange -> All]

我不知道a、b或N0使用什么,但我得到了以下结果:

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

https://stackoverflow.com/questions/6798539

复制
相关文章

相似问题

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