0
|
7144 Views
|
|
2 Total Likes
View groups...
Share
GROUPS:

# Has anyone seen a bug with NDSolve using both Floor and a transformation?

Posted 10 years ago
 I ran into this problem using a slightly complicated model, but made as simple an example as I could to identify the exact problem.What I found was that, when solving a system of differential equations numerically, if NDSolve was asked to deal with both a floor function (e.g. Floor) and an algebraic transformation (e.g. y[t-5]), then it will not work. For example, the codeNDSolve[{y'[t] == y[t - 7]*Floor[t], y == 3}, {y[t]}, {t, 0, 2000}]returns the errorsNDSolve::ihist: "Conditions given at t = 0. will be interpreted as initial history functions for t/;t<=0.. "NDSolve::ndssc: Step size changed sign at t == 14.. and it only Interpolates from [{{0,14}},<>]Even though running NDSolve with a function involving either y[t-7] or Floor alone works fine. (For example, NDSolve is able to compute the following two lines of code.)NDSolve[{x'[t] == Floor[t], x == 0}, {x[t]}, {t, 0, 2000}]NDSolve[{y'[t] == y[t - 7], y == 3}, {y[t]}, {t, 0, 2000}]Finally, and most perplexingly, if you run NDSolve on the previous two functions together instead of separately, even though they do not depend on each other, it still returns errors as in the first example.  NDSolve[{x'[t] == Floor[t], y'[t] == y[t - 7], x == 0,   y == 3}, {x[t], y[t]}, {t, 0, 2000}]NDSolve::ihist: "Conditions given at t = 0. will be interpreted as initial history functions for t/;t<=0.. "NDSolve::ndssc: Step size changed sign at t == 14.. Interpolates from [{{0,14}},<>]Does anyone know anything about an error like this?