Re: Why am I getting this error?
- To: mathgroup at smc.vnet.net
- Subject: [mg60366] Re: Why am I getting this error?
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Wed, 14 Sep 2005 03:27:33 -0400 (EDT)
- Organization: The Open University, Milton Keynes, U.K.
- References: <dg69s7$a9j$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
ksmath wrote: > I am attempting to solve a system with 3 pde's and I keep getting this error even though I think all of my equations have independent variables: > > NDSolve::dvnoarg: The function v appears with no arguments. > > If anyone could find the mistake in my code I would really appreciate it. C,V, and R are the dependent variables, and t (time) and x(distance-does not depend on time) are the independent variables. All other variables are constants. > > Thank you for any assistance you can provide me. > > \!\(\(rRHS\ = \ \(d\_r\) D[r[t, > x], {x, 2}] + β \((1 - \((r[t, x] - r\_base)\)/\((k\_r - > r\_base)\))\) \((r[t, x] - r\_base)\);\)\[IndentingNewLine] > \(vRHS\ = \ \(d\_v\) D[v[t, x], {x, 2}] - Ï?\ v[t, x]\ - > η\ v[t, x]\ c[t, x]/\((γ\_1 + v[t, x])\) + If[ > q\_large < q\_min, λ \((q\_large - q\_min)\), 0];\)\[IndentingNewLine] > \(\(cRHS\ = \ D[c[t, x]\ v[t, x]\ D[v[t, x], x], x] + If[v[ > t, x] â?¥ v\_g, Ï?\ v[t, x]\ c[t, > x]\ /\((γ\_2 + > v[t, x])\), Ï? \((v[t, x] - > v\_d)\) c[t, x]];\)\(\[IndentingNewLine]\) > \)\[IndentingNewLine] > \(reqn\ = D[r[t, x], t]\ == \ rRHS;\)\[IndentingNewLine] > \(veqn\ = \ D[v[t, x], t]\ == \ vRHS;\)\[IndentingNewLine] > \(ceqn\ = \ D[c[t, x], t]\ == \ cRHS;\)\) > > BC1 = Derivative[0, 1][r][t, 0] == 0; > BC2 = Derivative[0, 1][r][t, 1] == 0; > BC3 = Derivative[0, 1][v][t, 0] == 0; > BC4 = Derivative[0, 1][v][t, 1] == 0; > BC5 = c[t, 0] == 1; > BC6 = c[t, 1] v[t, 1] Derivative[0, 1][v][t, 1] == 0; > > \!\(\(c\_init = \(c\_o\) Exp \((\(-150\) x\^2)\) == c[0, > x];\)\[IndentingNewLine] > \(r\_init = \((K\_r - > r\_base)\) Exp \((\(-100\) x\^2)\) + r\_base == r[0, x];\)\ > \[IndentingNewLine] > \(v\_init = \((v\_g - v\_d)\)/\((2 v\_o)\) == v[0, x];\)\) > > \!\(\(solution\ = \ NDSolve[{reqn, \ veqn, \ ceqn, q1\_i, > q2\_i, \ c\_init, \ v\_init, \ > r\_init, \ BC1, \ BC2, \ BC3, \ BC4, \ BC5, \ BC6}, {r[t, x], v[t, > x], c[t, x], q1[t, x], q2[t, x]}, {t, 0, 1}, {x, 0, 1}];\)\) > > Any help is much appreciated. > > Katie > Hi Katie, By default, Mathematica does not recognized subscripted variables as symbols but as more complex constructions. Say we want to solve the following ODE. Note that we are using two subscripted variables y_0 and y_air. In[1]:= eqn = Derivative[1][y][t] == (-p)*(y[t] - Subscript[y, air]) Out[1]= Derivative[1][y][t] == (-p)*(-Subscript[y, air] + y[t]) Here, everything looks fine. However, when we try to solve the ODE with initial value y{0} == y_0 In[2]:= sols = DSolve[{eqn, y[0] == Subscript[y, 0]}, y, t] From In[2]:= DSolve::dvnoarg: The function y appears with no arguments. More... Out[2]= DSolve[{Derivative[1][y][t] == (-p)*(-Subscript[y, air] + y[t]), y[0] == Subscript[y, 0]}, y, t] Mathematica complains about the function y that is supposed to be called with no arguement. In fact, a mixed up in the interpretation of symbols and subscripts occurred. To fix this issue, you must use the *Notation* package and _from the notation palette_ use the function *Symbolize* to transform subscripted names into symbols. See the following example In[3]:= Needs["Utilities`Notation`"] In[4]:= Symbolize[NotationBoxTag[\(y\_air\)]] In[5]:= Symbolize[NotationBoxTag[\(y\_0\)]] In[6]:= eqn = Derivative[1][y][t] == (-p)*(y[t] - y\[UnderBracket]Subscript\[UnderBracket]air) Out[6]= Derivative[1][y][t] == (-p)*(-y\[UnderBracket]Subscript\[UnderBracket]air + y[t]) In[7]:= sols = DSolve[{eqn, y[0] == y\[UnderBracket]Subscript\[UnderBracket]0}, y, t] Out[7]= {{y -> Function[{t}, (y\[UnderBracket]Subscript\[UnderBracket]0 - y\[UnderBracket]Subscript\[UnderBracket]air + E^(p*t)* y\[UnderBracket]Subscript\[UnderBracket]air)/E^(p*t)]}} Hope this helps, /J.M.