(order, t, i, j)
| 245 | |
| 246 | |
| 247 | def linear_multistep_coeff(order, t, i, j): |
| 248 | if order - 1 > i: |
| 249 | raise ValueError(f'Order {order} too high for step {i}') |
| 250 | def fn(tau): |
| 251 | prod = 1. |
| 252 | for k in range(order): |
| 253 | if j == k: |
| 254 | continue |
| 255 | prod *= (tau - t[i - k]) / (t[i - j] - t[i - k]) |
| 256 | return prod |
| 257 | return integrate.quad(fn, t[i], t[i + 1], epsrel=1e-4)[0] |
| 258 | |
| 259 | |
| 260 | @torch.no_grad() |