Solving Delay Differential Equations With Julia | David Widmann | JuliaCon 2019

The Julia Programming Language
23 Jul 201931:44

Summary

TLDRThe speaker, a PhD student at Uppsala University, discusses their research on solving delayed differential equations (DDEs) using Julia's differential equations package ecosystem. They explain the concept of DDEs, which extend ordinary differential equations by incorporating past values of the state, and highlight the challenges in solving them due to potential discontinuities and richer dynamical structures. The presentation outlines the process of formulating DDEs in Julia, leveraging existing solvers for ordinary differential equations, and the innovative approaches taken to handle discontinuities and state-dependent delays. The speaker also shares their experience with the Julia package, their contributions to it, and the successful simulation of complex models, emphasizing the potential for further enhancements like Anderson acceleration and the development of stochastic DDE solvers.

Takeaways

  • 🎓 The speaker is a PhD student at Uppsala University researching uncertainty in deep learning but is presenting on solving delayed differential equations (DDEs).
  • 🔍 The speaker's initial work on DDEs began during their master's project at Technical University in Munich, involving comparing two models formulated as DDEs.
  • 💡 The motivation for contributing to the Julia differential equations package ecosystem stemmed from the need to simulate models reliably for parameter estimation.
  • 🧩 DDEs extend ordinary differential equations (ODEs) by allowing the derivative to depend on past values of the state, which is crucial for modeling certain biological phenomena.
  • 📉 The speaker faced issues with simulating DDEs, including negative concentrations and unreliable simulations, prompting the opening of issues and pull requests in the Julia ecosystem.
  • 🛠 The 'delayed' package in Julia was improved by the speaker to address the inability to solve their specific problem, incorporating functionality from the existing ordinary differential equation solvers.
  • 🔬 DDEs can exhibit richer dynamical structures, such as chaotic behavior, even in scalar cases, which is not possible with ODEs unless there are at least three components.
  • 📝 The formulation of DDEs in Julia's 'delayed' package closely mirrors that of ODEs, but with the critical addition of dependence on past state values.
  • 🔄 The 'delayed' package uses a method of steps approach, leveraging the existing ecosystem of ODE solvers in Julia to iteratively solve DDEs by breaking them down into a sequence of ODEs.
  • 🚧 Challenges in solving DDEs include handling discontinuities and ensuring the solution's smoothness, which the 'delayed' package addresses by tracking discontinuities and using fixed point iteration.
  • 🔭 Future work for the 'delayed' package includes implementing Anderson acceleration to speed up fixed point iterations and conducting more extensive benchmarking.

Q & A

  • What is the main research topic of the speaker at Uppsala University?

    -The speaker is a PhD student at Uppsala University, and their main research topic is about uncertainty in deep learning.

  • What was the initial problem the speaker faced during their master's project?

    -The speaker faced issues with simulating trajectories for two different models formulated as delay differential equations, which led to negative concentrations and unreliable simulations.

  • Why did the speaker choose to work with Julia instead of MATLAB for solving differential equations?

    -The speaker chose Julia because they had heard about its great ecosystem for solving differential equations and encountered issues with MATLAB that they did not attempt to fix.

  • What is a delay differential equation and how does it differ from an ordinary differential equation?

    -A delay differential equation is an equation in which the derivative can depend on past values of the state, unlike ordinary differential equations where the derivative only depends on the current time and state.

  • Can you provide an example of a delay differential equation?

    -An example given in the script is Hutchinson's equation, which models population growth with a delay, taking into account resources available at a previous time point.

  • What are some challenges in solving delay differential equations compared to ordinary differential equations?

    -Challenges include the need for a history function instead of just an initial condition, the potential for discontinuities in the solution, and a richer dynamical structure that can exhibit chaotic behavior even in scalar cases.

  • How does the DelayDiffEq package in Julia handle the solution of delay differential equations?

    -The DelayDiffEq package uses a method of steps approach, leveraging the existing ecosystem of ordinary differential equation solvers in Julia by setting up a dummy solver and wrapping the history function to evaluate the solution at any time point.

  • What is the significance of tracking discontinuities in delay differential equation solvers?

    -Tracking discontinuities ensures the correct level of smoothness in the solution and helps solvers hit discontinuities accurately without stepping over them, which is crucial for the accuracy and efficiency of the solution.

  • How did the speaker and their team improve the efficiency of solving state-dependent delay differential equations?

    -They improved efficiency by implementing fixed point iteration for state-dependent delays and updating the method for tracking discontinuities, which allowed for better use of stiff solvers from ordinary differential equations.

  • What are some future improvements planned for the DelayDiffEq package?

    -Future improvements include the potential use of Anderson acceleration to speed up fixed point iterations and more extensive benchmarking to further refine the solver's performance.

  • Can the speaker provide an example of how to specify a delay differential equation problem in Julia?

    -Yes, the speaker can provide an example, which involves specifying a history function, initial values, and the timespan for integration, similar to how ordinary differential equations are specified in Julia.

  • How does the speaker plan to demonstrate the solution of a delay differential equation in Julia?

    -The speaker mentioned working on a special branch to implement Anderson acceleration and is willing to live code the problem after precompiling, to show how the problem is solved in Julia.

Outlines

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Mindmap

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Keywords

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Highlights

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Transcripts

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now
Rate This

5.0 / 5 (0 votes)

Related Tags
Delay Differential EquationsJulia ProgrammingAcademic ResearchNumerical MethodsPhD InsightsUppsala UniversityTechnical UniversityMathematicsBiology ModelsSimulation Techniques