在Mathematica中计算特定x值的y值的语法

时间:2014-04-24 22:24:42

标签: wolfram-mathematica

这是问题陈述:

使用NDSolve求解两个非线性相互依赖的初始值一阶微分方程,以得到解析解。该解决方案用于计算另一个参数,作为相同x值的函数。

我们假设我们将ODE视为:

X'[t]=a*S[t]*X[t]/(b+S[t]
S'[t]=-a*S[t]*X[t]/(c(b+S[t])) where a,b,c are also known constants
X[0]=constant
S[0]=constant

soln = NDSolve[{X'[t]=a*S[t]*X[t]/(b+S[t],S'[t]=-a*S[t]*X[t]/(c(b+S[t])),X[0]=constant,S[0]=constant},{X,S},{t,0,50}]

    The solution is of the form
X-> InterpolatingFunction[{{0.0,50}},<>],S->InterpolationFunction[{{0.0,50}},<>}}

Now the new parameter is: Yvalue=(S[t]/.soln)+(X[t]/.soln)

我试图找出正确的语法来计算输入的t值的Y值。 Ex- One需要在t = 0.1,0.56,2.3等处计算Yvalue

感谢您的时间。

此致 ANKUR

1 个答案:

答案 0 :(得分:1)

NDSolve要求为所有参数指定特定的数值。如果您为a,b,c,X [0],S [0]指定值并仔细匹配所有parens并小心地正确使用== versus =,那么这可以工作

In[1]:= a = 2; b = 3; c = 5;
   soln = NDSolve[{X'[t] == a*S[t]*X[t]/(b + S[t]), 
   S'[t] == -a*S[t]*X[t]/(c(b+S[t])), X[0]==7, S[0]==11}, {X,S}, {t,0,50}][[1]]

Out[2]= {X -> InterpolatingFunction[{{0.,50.}}, <>],
         S -> InterpolatingFunction[{{0.,50.}}, <>]}

In[3]:= Yvalue = S[t] + X[t] /. soln /. t -> 0.1

Out[3]= 18.9506

In[4]:= Yvalue = S[t] + X[t] /. soln /. t -> 0.56

Out[4]= 25.6919

In[5]:= Yvalue = S[t] + X[t] /. soln /. t -> 2.3

Out[5]= 61.9823

甚至

In[6]:= Plot[S[t] + X[t] /. soln, {t, 0, 50}, PlotRange -> {0, 70}]

Out[6]= ...PlotSnipped...