[Date Index]
[Thread Index]
[Author Index]
Re: How to rectify the error for NDSolve ?
*To*: mathgroup at smc.vnet.net
*Subject*: [mg127148] Re: How to rectify the error for NDSolve ?
*From*: Murray Eisenberg <murray at math.umass.edu>
*Date*: Mon, 2 Jul 2012 05:29:06 -0400 (EDT)
*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com
*References*: <201207010611.CAA01041@smc.vnet.net>
*Reply-to*: murray at math.umass.edu
So many errors in your code!
(1) As somebody already noted in a reply to your earlier post (before
you showed any code), you forgot to use an uppercase letter in Clear.
And you also forgot to use an uppercase letter in the sine expression on
the right-hand side of the differential equation.
(2) The root cause of the error message you received is because first
you set t = 5 and then a multiple of that; now t is a constant! But then
you use the _same_ symbol t as if it were the variable in your
differential equation. Change either the constant t to some other name
or the variable t in your differential equation et seq. to some other name.
(3) You are not using correct syntax in the definition of eqn: all
function arguments should be enclosed in brackets, not parentheses. And
you forgot to include the argument of t for x at the end of the
left-hand side of the equation. Thus you seem to want:
eqn = x''[\[Tau]] +1/Q x'[\[Tau]] +
(1+Subscript[V,1] Sqrt[2] Sin[2 \[Tau]]) x[t]
==\[CapitalGamma] (Sin[\[Tau]+\[Phi]]);
Note that I removed the parentheses in the right-hand side, as there's
no reason to have them.
(4) Remove Subscript[V,p] and Subscript[V,1] from the Clear expression,
as they are not Symbols (or Strings). If they don't already have values,
you don't need to get "clear" them in any sense. If they do, you have to
use Unset:
Unset[Subscript[V,p]]
Unset[Subscript[V,1]]
(You can Unset several things at once by using Map.)
(5) After all that, at this point I do not understand your differential
equation -- I don't know what you really intend the value of \[Tau] to
be. You had set t = 5, so that after
\[Tau] = Subscript[\[Omega], 0] t;
\[Tau] is also a constant, as is, therefore, the right-hand side of your
differential equation. I suspect that's NOT what you intended.
In fact, I don't understand at all why you even set t to be a constant.
But if you simply fix all the things indicated above and omit the
assignment t = 5, I think Mathematica will not be able to deal with this
differential equation.
However, if you change the term that involving what I said should be
x[t] in place of just x to have variable \[Tau] instead of t -- is that
what you actually intended?? -- I think Mathematica will still balk at
providing a solution.
If, though, you make a change of variable from t to tt ....
neweqn = eqn /. t -> tt/10
... then the following _will_ provide a numerical solution:
NDSolve[{neweqn, x[0] == 0.5, x'[0] == 0}, x[tt], {tt, 0, 250}]
P.S. By any chance, did you retype your code when writing your e-mail
post? If so, that in itself may have introduced errors. You should use
Mathematica's menu selection Edit > Copy As Plain Text to copy, then
past into your message.
On 7/1/12 2:11 AM, Rahul Chakraborty wrote:
> Here is my code:
>
>
> clear[x, t, \[Tau], Q, Subscript[V, p], Subscript[V,
> 1], \[CapitalGamma], \[Phi]];
> Q = 100;
> \[CapitalGamma] = 50;
> Subscript[\[Omega], 0] = 10;
> Subscript[V, p] = 0.5;
> Subscript[C, 0] = 4.06 * 10^-4;
> t = 5;
> \[Tau] = Subscript[\[Omega], 0] t;
> \[Phi] = 90;
> Subscript[V, 1] = Subscript[C, 0]*Subscript[V, p];
> eqn = x'' (\[Tau]) +
> 1/Q x' (\[Tau]) + (1 +
> Subscript[V, 1] Sqrt[2]
> Sin[2 \[Tau]]) x == \[CapitalGamma] (sin[\[Tau] + \[Phi]]);
> sol = NDSolve[{eqn, x[0] == 0.5, x'[0] == 0}, x, {t, 0, 250},
> MaxSteps -> 500000, WorkingPrecision -> 25][[1]]
> ParametricPlot[Evaluate[{x[t], x'[t]} /. sol], {t, 0, 100},
> Frame -> True, PlotRange -> All,
> AxesLabel -> {"t", "\!\(\*OverscriptBox[\(\[Theta]\), \(.\)]\)"}]
>
>
> Output i'm getting is as below:
>
> NDSolve::dsvar: 5 cannot be used as a variable. >>
>
>
> {0.999855 x + Derivative[1][x]/2 + 50 x^\[Prime]\[Prime] ==
> 50 sin[140], x[0] == 0.5, Derivative[1][x][0] == 0}
>
>
> ReplaceAll::reps: {0.999855 x+x^\[Prime]/2+50 x^\[Prime]\[Prime]==50 sin[140],x[0]==0.5,(x^\[Prime])[0]==0} is neither a list of replacement rules nor a valid dispatch table, and so cannot be used for replacing. >>
>
>
> ReplaceAll::reps: {0.999855 x+0.5 x^\[Prime]+50. x^\[Prime]\[Prime]==50. sin[140.],x[0.]==0.5,(x^\[Prime])[0.]==0.} is neither a list of replacement rules nor a valid dispatch table, and so cannot be used for replacing. >>
>
> ReplaceAll::reps: {0.999855 x+0.5 x^\[Prime]+50. x^\[Prime]\[Prime]==50. sin[140.],x[0.]==0.5,(x^\[Prime])[0.]==0.} is neither a list of replacement rules nor a valid dispatch table, and so cannot be used for replacing. >>
>
> General::stop: Further output of ReplaceAll::reps will be suppressed during this calculation. >>
>
>
> Regards,
>
> rahul
>
--
Murray Eisenberg murray at math.umass.edu
Mathematics & Statistics Dept.
Lederle Graduate Research Tower phone 413 549-1020 (H)
University of Massachusetts 413 545-2859 (W)
710 North Pleasant Street fax 413 545-1801
Amherst, MA 01003-9305
Prev by Date:
**Re: multiplying, element wise, a row by each column of a matrix.**
Next by Date:
**Re: Approximate Zero Times A Symbol**
Previous by thread:
**Re: How to rectify the error for NDSolve ?**
Next by thread:
**Re: How to rectify the error for NDSolve ?**
| |