Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
974 views
in Technique[技术] by (71.8m points)

computer science - Standard approximation scheme of delay equations?

I would like to program an approximation method for delay differential equations, somewhat of a niche topic but I'd like to try it. However, the standard Euler's or other Runge-Kutta methods don't necessarily conform to this. How can I accurately approximate solutions to delay equations?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

For an ODE, the data to pass to the solver are the ODE function f(t,y), the initial point y(t_0)=y_0 and the end t_f of the integration interval.

For a DDE solver, the additional data needed to drive the evaluation of the DDE are the delays td[0..s], and the history function h(t) which also assumes the role of the initial values. The DDE "right-side" function f(t,y,yd) itself takes as inputs the current state y and the state vectors yd[i]=y(t-td[i]) at the delayed times.

To implement the solver you can take any method where you have an interpolation procedure, aka "dense output", of the same order as the method. This procedure or interpolator object contains the data from the previous integration steps and defaults to the history function h(t) for times before the start of the integration interval. Then during the solver stages this interpolation is used to compute the yd values, and after each integration step the interpolation data is updated to contain the new data.

Everything else proceeds as usual, the only restriction is that the time steps have to be smaller than the minimal delay so that all delayed states are inside the historical data of the interpolator.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...