MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

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.


  • Prev by Date: Re: Draw3D ColorFunction->Hue
  • Next by Date: Re: Why am I getting this error?
  • Previous by thread: Re: Why am I getting this error?
  • Next by thread: Re: Why am I getting this error?