Math 绘制微分方程的解曲线
我有一些微分方程,我想为各种起始值画出解Math 绘制微分方程的解曲线,math,matlab,wolfram-mathematica,maple,Math,Matlab,Wolfram Mathematica,Maple,我有一些微分方程,我想为各种起始值画出解N_0 以下是方程式: dN\dt= bN^2 - aN dN\dt = bN^2 (1 - N\K) - aN 我该怎么做呢 我真的不在乎所用的语言。在专用数学方面,我的计算机上有mathematica和matlab。我有权接触枫树。我必须做更多的这方面的工作,我想从任何语言中得到一些例子,因为这将帮助我找出我想要使用和学习的语言 在Mathematica中,您使用NDSolve(除非它可以解析求解,在这种情况下,您使用DSolve。因此,对于您的第
N_0
以下是方程式:
dN\dt= bN^2 - aN
dN\dt = bN^2 (1 - N\K) - aN
我该怎么做呢
我真的不在乎所用的语言。在专用数学方面,我的计算机上有mathematica和matlab。我有权接触枫树。我必须做更多的这方面的工作,我想从任何语言中得到一些例子,因为这将帮助我找出我想要使用和学习的语言 在Mathematica中,您使用NDSolve(除非它可以解析求解,在这种情况下,您使用DSolve。因此,对于您的第一个方程,我尝试了:
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使用什么,但我得到了以下结果:
在Mathematica中,您使用NDSolve(除非它可以解析求解,在这种情况下,您使用DSolve)。因此,对于您的第一个等式,我尝试了:
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使用什么,但我得到了以下结果:
如果您乐于用数值方法求解方程,
MATLAB
提供了一组可能有用的ODE解算器。请查看ode45
函数的文档
一般方法是定义一个描述微分方程右侧的“ode函数”。然后将该函数连同初始条件和积分范围传递给ode
解算器
这种方法的一个吸引人的特点是,它以一种直接的方式扩展到耦合ODE的复杂系统
希望这能有所帮助。如果您乐于用数值方法求解方程,
MATLAB
提供了一组可能有用的ODE解算器。请查看ode45
函数的文档
一般方法是定义一个描述微分方程右侧的“ode函数”。然后将该函数连同初始条件和积分范围传递给ode
解算器
这种方法的一个吸引人的特点是,它以一种直接的方式扩展到耦合ODE的复杂系统
希望这能有所帮助。我将假设第一个问题不能通过分析来解决,以便展示如何在数学中演奏一首普通的颂歌 定义
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)
。然后可以执行以下操作
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}}]
其中绘制了几个具有不同初始值的解决方案:
或者,为了深入了解解决方案,可以交互操作a
、b
和n0
的值:
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}]
这就产生了
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}}]
当控件处于活动状态时(即,移动控件,绘图会发生变化;请尝试使用live来了解我的意思;请注意,您可以设置初始条件给出不同解决方案的参数)
当然,这可以任意变得更复杂。在这种特殊情况下,这种常微分方程很容易进行解析积分,但这种数值方法可以应用于一般常微分方程(以及许多偏微分方程).我将假装第一个问题不能用解析法解决,以展示如何在数学中运用一般的颂歌 定义
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)
。然后可以执行以下操作
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}}]
其中绘制了几个具有不同初始值的解决方案:
或者,为了深入了解解决方案,可以交互操作a
、b
和n0
的值:
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}]
这就产生了
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}}]
当控件处于活动状态时(即,移动控件,绘图会发生变化;请尝试使用live来了解我的意思;请注意,您可以设置初始条件给出不同解决方案的参数)
当然,这可以任意变得更复杂。在这种特殊情况下,这种常微分方程很容易进行解析积分,但这种数值方法可以应用于一般常微分方程(以及许多偏微分方程).除了几个好的答案之外,如果你只是想快速绘制一个ODE的许多起始值的解决方案,作为指导,你总是可以做一行
流程图。假设a==1
和b==1
,以及dy/dx==x^2-x
StreamPlot[{1, x^2 - x}, {x, -3, 3}, {y, -3, 3}]
StreamStyle->“行”
只给你线条,没有箭头。再加上几个好的答案,如果你只是想快速绘制一个ODE的许多起始值的解决方案,作为指导,你总是可以做一行流程图。假设a==1
和b==1
,以及dy/dx==x^2-x
StreamPlot[{1, x^2 - x}, {x, -3, 3}, {y, -3, 3}]
StreamStyle->“Line”
只提供直线,没有箭头。{a,b,N(0)}和{a,b,K,N(0)}是两个大参数空间。您应该指定一个感兴趣的区域。(例如,第一个等式中的a==b){a,b,N(0)}和{a,b,K,N(0)}是两个大参数空间。您应该指定一个感兴趣的区域。(例如,第一个等式中的a==b)…由于NDSolve
接受初始条件列表,您还可以执行类似于Plot[(评估[p1[范围[0,1,05],1,1][t]],{t,0,5}]
在同一个图中绘制解决方案列表。由于NDSolve
接受初始条件列表,您也可以执行类似于plot[(Evaluate[p1[Range[0,1,05],1,1][t]],{t,0,5}],
的操作来在同一个图中绘制解决方案列表。事实上,我的印象是,处理许多可变ODE更容易通过使用向量表示法,Matlab中的(即常微分方程组)比Mathematica中的(即常微分方程组)。对于一个或几个变量,我更喜欢Mathematica。事实上,我的印象是,在Matlab中处理多个变量常微分方程组(即常微分方程组)比Mathematt更容易