Re: NDSolve and hybrid dynamics (Differential Algebraic Equation DAE)
- To: mathgroup at smc.vnet.net
- Subject: [mg113553] Re: NDSolve and hybrid dynamics (Differential Algebraic Equation DAE)
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Tue, 2 Nov 2010 05:02:17 -0500 (EST)
If is a programming construct not a mathematical function. Use Piecewise eqns = {x'[t] == y[t] + Sin[t], y[t] == Piecewise[{{1, t < 1/10}}, 2], x[-Pi] == 1/2}; sol = {x[t], y[t]} /. DSolve[eqns, {x[t], y[t]}, t][[1]] {(1/2)*(-1 + 2*Pi + 2*Piecewise[{{t - Cos[t], t <= 1/10}}, -(1/10) + 2*t - Cos[t]]), Piecewise[{{1, t < 1/10}}, 2]} Plot[sol, {t, -5, 1}, Frame -> True, Axes -> False, Exclusions -> 1/10, ExclusionsStyle -> Red] For NDSolve break the problem into two regions Bob Hanlon ---- Ravi Balasubramanian <ravi.balasubramanian at yale.edu> wrote: ============= Friends, I am trying to solve a hybrid dynamics problem using NDSolve. I am aware that I could use the event locator methods in NDSolve and manually take care of the transitions (set initial conditions etc). But my system is complicated, and I would have to do a lot of book-keeping. The following represents a simplified version of the problem. eqns = {x'[t] == y[t] + Sin[t], y[t] == If[t < 0.1, 1, 2], x[-Pi] == 1/2}; sol = NDSolve[eqns, {x[t], y[t]}, {t, -5, 5}] It is a first order differential equation in x[t], but it includes a y[t] variable that is discontinuous. There should be solution for this problem, but I get the following error message from NDSolve. LinearSolve::"nosol" : "Linear equation encountered that has no solution. The error is probably arising from the "If" condition. FYI, in my real system the y[t] variable is a Lagrange multiplier that is enforcing a constraint. Under certain conditions, that constraint is broken and the system transitions into another state. It will be great if this problem can be solved with NDSolve keeping track of the y[t] variable for me. Any suggestions greatly appreciated. Thanks! Ravi Balasubramanian Yale University