@danielsimonjr/mathts-functions 0.53.0 → 0.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +299 -0
- package/dist/numeric/solveDAE.d.ts +134 -0
- package/dist/numeric/solveDAE.d.ts.map +1 -0
- package/dist/numeric/solveODE.d.ts +17 -0
- package/dist/numeric/solveODE.d.ts.map +1 -1
- package/dist/typed/numeric.d.ts +1 -0
- package/dist/typed/numeric.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -439,6 +439,7 @@ __export(typed_exports, {
|
|
|
439
439
|
smaller: () => smaller,
|
|
440
440
|
smallerEq: () => smallerEq,
|
|
441
441
|
solveBVP: () => solveBVP,
|
|
442
|
+
solveDAE: () => solveDAE,
|
|
442
443
|
solveODESystem: () => solveODESystem,
|
|
443
444
|
solvePDE: () => solvePDE,
|
|
444
445
|
solveParabolicPDE: () => solveParabolicPDE,
|
|
@@ -13209,6 +13210,303 @@ function interpState(stepT, stepY, tq) {
|
|
|
13209
13210
|
return y0.map((v, i) => v + w * (y1[i] - v));
|
|
13210
13211
|
}
|
|
13211
13212
|
|
|
13213
|
+
// src/numeric/solveDAE.ts
|
|
13214
|
+
function _arr(v) {
|
|
13215
|
+
return Array.isArray(v) ? v.slice() : [v];
|
|
13216
|
+
}
|
|
13217
|
+
function _evalArr(fn, t, y, z) {
|
|
13218
|
+
const r = fn(t, y, z);
|
|
13219
|
+
return Array.isArray(r) ? r : [r];
|
|
13220
|
+
}
|
|
13221
|
+
function _wrms(v, scale4) {
|
|
13222
|
+
let s = 0;
|
|
13223
|
+
for (let i = 0; i < v.length; i++) {
|
|
13224
|
+
const q = v[i] / scale4[i];
|
|
13225
|
+
s += q * q;
|
|
13226
|
+
}
|
|
13227
|
+
return Math.sqrt(s / v.length);
|
|
13228
|
+
}
|
|
13229
|
+
function _bdfCoeffs(nodes) {
|
|
13230
|
+
const m = nodes.length;
|
|
13231
|
+
const x0 = nodes[0];
|
|
13232
|
+
const c = new Array(m).fill(0);
|
|
13233
|
+
let diag2 = 0;
|
|
13234
|
+
for (let p = 1; p < m; p++) diag2 += 1 / (x0 - nodes[p]);
|
|
13235
|
+
c[0] = diag2;
|
|
13236
|
+
for (let j = 1; j < m; j++) {
|
|
13237
|
+
let val = 1 / (nodes[j] - x0);
|
|
13238
|
+
for (let p = 0; p < m; p++) {
|
|
13239
|
+
if (p === 0 || p === j) continue;
|
|
13240
|
+
val *= (x0 - nodes[p]) / (nodes[j] - nodes[p]);
|
|
13241
|
+
}
|
|
13242
|
+
c[j] = val;
|
|
13243
|
+
}
|
|
13244
|
+
return c;
|
|
13245
|
+
}
|
|
13246
|
+
function _polyExtrap(times, vals, tnew) {
|
|
13247
|
+
const p = times.length;
|
|
13248
|
+
const n = vals[0].length;
|
|
13249
|
+
const out = new Array(n).fill(0);
|
|
13250
|
+
for (let i = 0; i < p; i++) {
|
|
13251
|
+
let li = 1;
|
|
13252
|
+
for (let m = 0; m < p; m++) {
|
|
13253
|
+
if (m === i) continue;
|
|
13254
|
+
li *= (tnew - times[m]) / (times[i] - times[m]);
|
|
13255
|
+
}
|
|
13256
|
+
for (let d = 0; d < n; d++) out[d] += li * vals[i][d];
|
|
13257
|
+
}
|
|
13258
|
+
return out;
|
|
13259
|
+
}
|
|
13260
|
+
function _denseSolve(A, b) {
|
|
13261
|
+
const n = b.length;
|
|
13262
|
+
const M = A.map((r) => r.slice());
|
|
13263
|
+
const x = b.slice();
|
|
13264
|
+
for (let k = 0; k < n; k++) {
|
|
13265
|
+
let piv = k;
|
|
13266
|
+
for (let i = k + 1; i < n; i++) if (Math.abs(M[i][k]) > Math.abs(M[piv][k])) piv = i;
|
|
13267
|
+
if (Math.abs(M[piv][k]) < 1e-300) return new Array(n).fill(NaN);
|
|
13268
|
+
[M[k], M[piv]] = [M[piv], M[k]];
|
|
13269
|
+
[x[k], x[piv]] = [x[piv], x[k]];
|
|
13270
|
+
const akk = M[k][k];
|
|
13271
|
+
for (let i = k + 1; i < n; i++) {
|
|
13272
|
+
const factor2 = M[i][k] / akk;
|
|
13273
|
+
for (let j = k; j < n; j++) M[i][j] -= factor2 * M[k][j];
|
|
13274
|
+
x[i] -= factor2 * x[k];
|
|
13275
|
+
}
|
|
13276
|
+
}
|
|
13277
|
+
for (let i = n - 1; i >= 0; i--) {
|
|
13278
|
+
let s = x[i];
|
|
13279
|
+
for (let j = i + 1; j < n; j++) s -= M[i][j] * x[j];
|
|
13280
|
+
x[i] = s / M[i][i];
|
|
13281
|
+
}
|
|
13282
|
+
return x;
|
|
13283
|
+
}
|
|
13284
|
+
function _solveAlgebraic(g, t, y, zGuess, tol) {
|
|
13285
|
+
const na = zGuess.length;
|
|
13286
|
+
const z = zGuess.slice();
|
|
13287
|
+
for (let iter = 0; iter < 50; iter++) {
|
|
13288
|
+
const g0 = _evalArr(g, t, y, z);
|
|
13289
|
+
if (g0.length !== na) {
|
|
13290
|
+
throw new Error(
|
|
13291
|
+
`solveDAE: the constraint g must return ${na} value(s) (matching z0); got ${g0.length}`
|
|
13292
|
+
);
|
|
13293
|
+
}
|
|
13294
|
+
const J = Array.from({ length: na }, () => new Array(na));
|
|
13295
|
+
for (let j = 0; j < na; j++) {
|
|
13296
|
+
const eps = Math.max(1e-8, 1e-7 * Math.abs(z[j]));
|
|
13297
|
+
const zp = z.slice();
|
|
13298
|
+
zp[j] += eps;
|
|
13299
|
+
const gp = _evalArr(g, t, y, zp);
|
|
13300
|
+
for (let i = 0; i < na; i++) J[i][j] = (gp[i] - g0[i]) / eps;
|
|
13301
|
+
}
|
|
13302
|
+
const dz = _denseSolve(
|
|
13303
|
+
J,
|
|
13304
|
+
g0.map((v) => -v)
|
|
13305
|
+
);
|
|
13306
|
+
if (!dz.every((v) => Number.isFinite(v))) return null;
|
|
13307
|
+
let znorm = 0;
|
|
13308
|
+
let dnorm = 0;
|
|
13309
|
+
for (let i = 0; i < na; i++) {
|
|
13310
|
+
z[i] += dz[i];
|
|
13311
|
+
znorm += z[i] * z[i];
|
|
13312
|
+
dnorm += dz[i] * dz[i];
|
|
13313
|
+
}
|
|
13314
|
+
if (Math.sqrt(dnorm) <= tol * (1 + Math.sqrt(znorm))) {
|
|
13315
|
+
const gCheck = _evalArr(g, t, y, z);
|
|
13316
|
+
const res = Math.sqrt(gCheck.reduce((a, v) => a + v * v, 0));
|
|
13317
|
+
return res < 1e-6 ? z : null;
|
|
13318
|
+
}
|
|
13319
|
+
}
|
|
13320
|
+
return null;
|
|
13321
|
+
}
|
|
13322
|
+
function solveDAE(f, g, tspan, y0, z0, options = {}) {
|
|
13323
|
+
const t0 = tspan[0];
|
|
13324
|
+
const tf = tspan[1];
|
|
13325
|
+
if (!(typeof t0 === "number" && typeof tf === "number")) {
|
|
13326
|
+
throw new Error("solveDAE: tspan must be [t0, T] numbers");
|
|
13327
|
+
}
|
|
13328
|
+
if (!(tf > t0)) {
|
|
13329
|
+
throw new Error("solveDAE: require T > t0 (forward integration)");
|
|
13330
|
+
}
|
|
13331
|
+
const yScalar = !Array.isArray(y0);
|
|
13332
|
+
const zScalar = z0 === void 0 || !Array.isArray(z0);
|
|
13333
|
+
const y0v = _arr(y0);
|
|
13334
|
+
const z0v = z0 === void 0 ? [0] : _arr(z0);
|
|
13335
|
+
const nd = y0v.length;
|
|
13336
|
+
const na = z0v.length;
|
|
13337
|
+
const n = nd + na;
|
|
13338
|
+
const rtol = options.tol ?? 1e-6;
|
|
13339
|
+
const atol = options.atol ?? rtol * 1e-3;
|
|
13340
|
+
const maxOrder = options.maxOrder ?? 2;
|
|
13341
|
+
const maxIter = options.maxIter ?? 1e5;
|
|
13342
|
+
const maxStep = options.maxStep ?? Infinity;
|
|
13343
|
+
const minStepOpt = options.minStep ?? 0;
|
|
13344
|
+
const EPS5 = Number.EPSILON;
|
|
13345
|
+
const newtonTol = options.newtonTol ?? Math.max(10 * EPS5 / rtol, Math.min(0.03, Math.sqrt(rtol)));
|
|
13346
|
+
const span = tf - t0;
|
|
13347
|
+
const yOf = (w2) => w2.slice(0, nd);
|
|
13348
|
+
const zOf = (w2) => w2.slice(nd);
|
|
13349
|
+
const z0consistent = _solveAlgebraic(g, t0, y0v, z0v, newtonTol);
|
|
13350
|
+
if (z0consistent === null) {
|
|
13351
|
+
throw new Error(
|
|
13352
|
+
"solveDAE: could not solve g(t0, y0, z0) = 0 for a consistent z0 \u2014 \u2202g/\u2202z appears singular. The DAE is not semi-explicit index-1 (index-1 requires \u2202g/\u2202z nonsingular)."
|
|
13353
|
+
);
|
|
13354
|
+
}
|
|
13355
|
+
let t = t0;
|
|
13356
|
+
let w = [...y0v, ...z0consistent];
|
|
13357
|
+
const histT = [t];
|
|
13358
|
+
const histW = [w.slice()];
|
|
13359
|
+
const tOut = [t];
|
|
13360
|
+
const yOut = [yOf(w)];
|
|
13361
|
+
const zOut = [zOf(w)];
|
|
13362
|
+
let h;
|
|
13363
|
+
if (options.firstStep !== void 0) {
|
|
13364
|
+
h = Math.abs(options.firstStep);
|
|
13365
|
+
} else {
|
|
13366
|
+
const f0 = _evalArr(f, t0, y0v, z0consistent);
|
|
13367
|
+
const nrm = (v) => Math.sqrt(v.reduce((a, x) => a + x * x, 0) / Math.max(1, v.length));
|
|
13368
|
+
const d0 = nrm(y0v);
|
|
13369
|
+
const d1 = nrm(f0);
|
|
13370
|
+
h = Math.min(d0 < 1e-5 || d1 < 1e-5 ? 1e-3 : 0.01 * (d0 / d1), span);
|
|
13371
|
+
}
|
|
13372
|
+
h = Math.min(h, maxStep);
|
|
13373
|
+
function makeResidual(tNew, c0, histSum) {
|
|
13374
|
+
return (wc) => {
|
|
13375
|
+
const y = yOf(wc);
|
|
13376
|
+
const z = zOf(wc);
|
|
13377
|
+
const fv = _evalArr(f, tNew, y, z);
|
|
13378
|
+
const gv = _evalArr(g, tNew, y, z);
|
|
13379
|
+
if (fv.length !== nd) {
|
|
13380
|
+
throw new Error(`solveDAE: f must return ${nd} value(s) (matching y0); got ${fv.length}`);
|
|
13381
|
+
}
|
|
13382
|
+
if (gv.length !== na) {
|
|
13383
|
+
throw new Error(`solveDAE: g must return ${na} value(s) (matching z0); got ${gv.length}`);
|
|
13384
|
+
}
|
|
13385
|
+
const R = new Array(n);
|
|
13386
|
+
for (let i = 0; i < nd; i++) R[i] = c0 * wc[i] + histSum[i] - fv[i];
|
|
13387
|
+
for (let i = 0; i < na; i++) R[nd + i] = gv[i];
|
|
13388
|
+
return R;
|
|
13389
|
+
};
|
|
13390
|
+
}
|
|
13391
|
+
function newtonMatrix(tNew, wc, c0, residual, R0) {
|
|
13392
|
+
if (options.jacobian) {
|
|
13393
|
+
const { fy, fz, gy, gz } = options.jacobian(tNew, yOf(wc), zOf(wc));
|
|
13394
|
+
const J2 = Array.from({ length: n }, () => new Array(n).fill(0));
|
|
13395
|
+
for (let i = 0; i < nd; i++) {
|
|
13396
|
+
for (let j = 0; j < nd; j++) J2[i][j] = (i === j ? c0 : 0) - fy[i][j];
|
|
13397
|
+
for (let j = 0; j < na; j++) J2[i][nd + j] = -fz[i][j];
|
|
13398
|
+
}
|
|
13399
|
+
for (let i = 0; i < na; i++) {
|
|
13400
|
+
for (let j = 0; j < nd; j++) J2[nd + i][j] = gy[i][j];
|
|
13401
|
+
for (let j = 0; j < na; j++) J2[nd + i][nd + j] = gz[i][j];
|
|
13402
|
+
}
|
|
13403
|
+
return J2;
|
|
13404
|
+
}
|
|
13405
|
+
const J = Array.from({ length: n }, () => new Array(n));
|
|
13406
|
+
for (let col = 0; col < n; col++) {
|
|
13407
|
+
const eps = Math.max(1e-8, 1e-7 * Math.abs(wc[col]));
|
|
13408
|
+
const wp = wc.slice();
|
|
13409
|
+
wp[col] += eps;
|
|
13410
|
+
const Rp = residual(wp);
|
|
13411
|
+
for (let row2 = 0; row2 < n; row2++) J[row2][col] = (Rp[row2] - R0[row2]) / eps;
|
|
13412
|
+
}
|
|
13413
|
+
return J;
|
|
13414
|
+
}
|
|
13415
|
+
let iter = 0;
|
|
13416
|
+
while (t < tf && iter < maxIter) {
|
|
13417
|
+
iter++;
|
|
13418
|
+
if (t + h > tf) h = tf - t;
|
|
13419
|
+
const minStep = Math.max(minStepOpt, 1e-13 * Math.max(1, Math.abs(t)));
|
|
13420
|
+
const order = Math.max(1, Math.min(maxOrder, histT.length - 1));
|
|
13421
|
+
let accepted = false;
|
|
13422
|
+
let wNew = w;
|
|
13423
|
+
let acceptedTime = t;
|
|
13424
|
+
while (!accepted) {
|
|
13425
|
+
if (h < minStep) {
|
|
13426
|
+
throw new Error(
|
|
13427
|
+
"solveDAE: required step size fell below the minimum \u2014 the Newton iteration is not converging. The system may be higher-index (\u2202g/\u2202z singular) or the tolerance too tight."
|
|
13428
|
+
);
|
|
13429
|
+
}
|
|
13430
|
+
const tNew = t + h;
|
|
13431
|
+
const nodes = [tNew];
|
|
13432
|
+
for (let j = 0; j < order; j++) nodes.push(histT[j]);
|
|
13433
|
+
const coeffs = _bdfCoeffs(nodes);
|
|
13434
|
+
const c0 = coeffs[0];
|
|
13435
|
+
const histSum = new Array(nd).fill(0);
|
|
13436
|
+
for (let j = 1; j <= order; j++) {
|
|
13437
|
+
const cj = coeffs[j];
|
|
13438
|
+
const wj = histW[j - 1];
|
|
13439
|
+
for (let i = 0; i < nd; i++) histSum[i] += cj * wj[i];
|
|
13440
|
+
}
|
|
13441
|
+
const residual = makeResidual(tNew, c0, histSum);
|
|
13442
|
+
let wPred;
|
|
13443
|
+
if (histT.length >= order + 1) {
|
|
13444
|
+
wPred = _polyExtrap(histT.slice(0, order + 1), histW.slice(0, order + 1), tNew);
|
|
13445
|
+
} else {
|
|
13446
|
+
wPred = w.slice();
|
|
13447
|
+
const fn = _evalArr(f, histT[0], yOf(w), zOf(w));
|
|
13448
|
+
for (let i = 0; i < nd; i++) wPred[i] = w[i] + h * fn[i];
|
|
13449
|
+
}
|
|
13450
|
+
const wc = wPred.slice();
|
|
13451
|
+
let converged = false;
|
|
13452
|
+
const scale4 = new Array(n);
|
|
13453
|
+
for (let it = 0; it < 12; it++) {
|
|
13454
|
+
const R0 = residual(wc);
|
|
13455
|
+
const J = newtonMatrix(tNew, wc, c0, residual, R0);
|
|
13456
|
+
const solve2 = _factorSolver(J, n);
|
|
13457
|
+
const dw = solve2(R0.map((v) => -v));
|
|
13458
|
+
if (!dw.every((v) => Number.isFinite(v))) break;
|
|
13459
|
+
for (let i = 0; i < n; i++) {
|
|
13460
|
+
wc[i] += dw[i];
|
|
13461
|
+
scale4[i] = atol + rtol * Math.abs(wc[i]);
|
|
13462
|
+
}
|
|
13463
|
+
if (_wrms(dw, scale4) <= newtonTol) {
|
|
13464
|
+
converged = true;
|
|
13465
|
+
break;
|
|
13466
|
+
}
|
|
13467
|
+
}
|
|
13468
|
+
if (!converged) {
|
|
13469
|
+
h *= 0.5;
|
|
13470
|
+
continue;
|
|
13471
|
+
}
|
|
13472
|
+
for (let i = 0; i < n; i++) scale4[i] = atol + rtol * Math.abs(wc[i]);
|
|
13473
|
+
const errNorm = _wrms(
|
|
13474
|
+
wc.map((v, i) => v - wPred[i]),
|
|
13475
|
+
scale4
|
|
13476
|
+
);
|
|
13477
|
+
if (errNorm <= 1 || h <= minStep) {
|
|
13478
|
+
wNew = wc;
|
|
13479
|
+
acceptedTime = tNew;
|
|
13480
|
+
accepted = true;
|
|
13481
|
+
}
|
|
13482
|
+
const factor2 = errNorm === 0 ? 4 : 0.9 * Math.pow(errNorm, -1 / (order + 1));
|
|
13483
|
+
h *= Math.min(4, Math.max(0.2, factor2));
|
|
13484
|
+
if (h > maxStep) h = maxStep;
|
|
13485
|
+
}
|
|
13486
|
+
w = wNew;
|
|
13487
|
+
t = acceptedTime;
|
|
13488
|
+
histT.unshift(t);
|
|
13489
|
+
histW.unshift(w.slice());
|
|
13490
|
+
if (histT.length > maxOrder + 2) {
|
|
13491
|
+
histT.pop();
|
|
13492
|
+
histW.pop();
|
|
13493
|
+
}
|
|
13494
|
+
tOut.push(t);
|
|
13495
|
+
yOut.push(yOf(w));
|
|
13496
|
+
zOut.push(zOf(w));
|
|
13497
|
+
}
|
|
13498
|
+
if (iter >= maxIter) {
|
|
13499
|
+
throw new Error(
|
|
13500
|
+
"solveDAE: maximum number of steps reached \u2014 try loosening tol or raising maxIter"
|
|
13501
|
+
);
|
|
13502
|
+
}
|
|
13503
|
+
return {
|
|
13504
|
+
t: tOut,
|
|
13505
|
+
y: yScalar ? yOut.map((v) => v[0]) : yOut,
|
|
13506
|
+
z: zScalar ? zOut.map((v) => v[0]) : zOut
|
|
13507
|
+
};
|
|
13508
|
+
}
|
|
13509
|
+
|
|
13212
13510
|
// src/typed/numeric.ts
|
|
13213
13511
|
var NUMERIC_WASM_THRESHOLD = 16;
|
|
13214
13512
|
function findRoot(f, a, b, opts) {
|
|
@@ -54342,6 +54640,7 @@ export {
|
|
|
54342
54640
|
solve,
|
|
54343
54641
|
solveBVP,
|
|
54344
54642
|
solveBanded,
|
|
54643
|
+
solveDAE,
|
|
54345
54644
|
solveODE,
|
|
54346
54645
|
solveODESystem,
|
|
54347
54646
|
solvePDE,
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semi-explicit index-1 differential-algebraic equation (DAE) solver via BDF.
|
|
3
|
+
*
|
|
4
|
+
* Solves the semi-explicit index-1 system
|
|
5
|
+
*
|
|
6
|
+
* y' = f(t, y, z) (differential variables y)
|
|
7
|
+
* 0 = g(t, y, z) (algebraic constraint z)
|
|
8
|
+
*
|
|
9
|
+
* on `t ∈ [t0, T]`. "Index-1" means the algebraic Jacobian block `∂g/∂z` is
|
|
10
|
+
* **nonsingular**, so the constraint `g = 0` locally determines `z` from
|
|
11
|
+
* `(t, y)`; this is exactly the condition that makes the coupled per-step
|
|
12
|
+
* Newton system solvable.
|
|
13
|
+
*
|
|
14
|
+
* ## Method — variable-step, variable-order (1–2) BDF with a combined Newton step
|
|
15
|
+
*
|
|
16
|
+
* The differential derivative is discretised with a Backward Differentiation
|
|
17
|
+
* Formula (the same BDF family that backs {@link bdfSolve}): on the last `k`
|
|
18
|
+
* accepted times plus the new time `t_{n+1}`, the interpolating polynomial's
|
|
19
|
+
* derivative at `t_{n+1}` is `Σ_j c_j·w_{n+1-j}` (variable-step coefficients
|
|
20
|
+
* `c_j` from the Lagrange-basis derivative, so BDF1/BDF2 work on a non-uniform
|
|
21
|
+
* grid). Each step then solves the **combined** nonlinear system for the new
|
|
22
|
+
* `w_{n+1} = (y_{n+1}, z_{n+1})`
|
|
23
|
+
*
|
|
24
|
+
* differential rows: c_0·y_{n+1} + (history) − f(t_{n+1}, y_{n+1}, z_{n+1}) = 0
|
|
25
|
+
* algebraic rows: g(t_{n+1}, y_{n+1}, z_{n+1}) = 0
|
|
26
|
+
*
|
|
27
|
+
* by Newton's method. The Newton (iteration) matrix is the block
|
|
28
|
+
*
|
|
29
|
+
* ⎡ c_0·I − ∂f/∂y − ∂f/∂z ⎤
|
|
30
|
+
* ⎣ ∂g/∂y ∂g/∂z ⎦
|
|
31
|
+
*
|
|
32
|
+
* (finite-differenced from the residual by default, or built from analytic
|
|
33
|
+
* blocks supplied via `options.jacobian`) and is LU-solved through the shared
|
|
34
|
+
* matrix-package factorisation ({@link _factorSolver}). The index-1 condition
|
|
35
|
+
* (`∂g/∂z` nonsingular) is exactly what makes this matrix nonsingular, so a
|
|
36
|
+
* **higher-index** input is detected as a singular Jacobian and reported
|
|
37
|
+
* (it is not silently integrated to garbage).
|
|
38
|
+
*
|
|
39
|
+
* Adaptive step size uses a predictor/corrector local-error estimate (the
|
|
40
|
+
* corrector minus a lower-order extrapolation predictor), scaled by the usual
|
|
41
|
+
* `atol + rtol·|w|` weights.
|
|
42
|
+
*
|
|
43
|
+
* ## Consistent initial values
|
|
44
|
+
*
|
|
45
|
+
* The initial algebraic value `z0` is treated as a **guess**: the solver runs
|
|
46
|
+
* Newton on `g(t0, y0, z0) = 0` to land on the constraint manifold before the
|
|
47
|
+
* first step (so a slightly-off or omitted `z0` is corrected rather than
|
|
48
|
+
* silently propagated). If that Newton fails / `∂g/∂z` is singular at `t0`,
|
|
49
|
+
* the problem is not index-1 and an error is thrown.
|
|
50
|
+
*
|
|
51
|
+
* Plain-number state only (the Jacobian and linear solves are numeric).
|
|
52
|
+
*
|
|
53
|
+
* @packageDocumentation
|
|
54
|
+
*/
|
|
55
|
+
/** Differential forcing `y' = f(t, y, z)`. Returns the `y'` vector (a scalar is accepted for 1-D y). */
|
|
56
|
+
export type DAEDifferential = (t: number, y: number[], z: number[]) => number[] | number;
|
|
57
|
+
/** Algebraic constraint `0 = g(t, y, z)`. Returns the residual vector (a scalar is accepted for 1-D z). */
|
|
58
|
+
export type DAEConstraint = (t: number, y: number[], z: number[]) => number[] | number;
|
|
59
|
+
/**
|
|
60
|
+
* Analytic Jacobian blocks of the DAE at `(t, y, z)`, supplied via
|
|
61
|
+
* {@link SolveDAEOptions.jacobian} in place of the default finite differences.
|
|
62
|
+
* Each block is a matrix in the usual `[row][col]` convention:
|
|
63
|
+
* `fy[i][j] = ∂fᵢ/∂yⱼ`, `fz[i][j] = ∂fᵢ/∂zⱼ`, `gy`, `gz` likewise.
|
|
64
|
+
*/
|
|
65
|
+
export interface DAEJacobianBlocks {
|
|
66
|
+
fy: number[][];
|
|
67
|
+
fz: number[][];
|
|
68
|
+
gy: number[][];
|
|
69
|
+
gz: number[][];
|
|
70
|
+
}
|
|
71
|
+
/** Options for {@link solveDAE}. */
|
|
72
|
+
export interface SolveDAEOptions {
|
|
73
|
+
/** Relative tolerance for the local-error step control (default `1e-6`). */
|
|
74
|
+
tol?: number;
|
|
75
|
+
/** Absolute tolerance (default `tol · 1e-3`). */
|
|
76
|
+
atol?: number;
|
|
77
|
+
/** Initial step size (default: chosen from `‖f‖`). */
|
|
78
|
+
firstStep?: number;
|
|
79
|
+
/** Minimum step size (a hard floor; the solver throws if it must go below it). */
|
|
80
|
+
minStep?: number;
|
|
81
|
+
/** Maximum step size (default: no cap). */
|
|
82
|
+
maxStep?: number;
|
|
83
|
+
/** Maximum number of accepted steps (default `1e5`). */
|
|
84
|
+
maxIter?: number;
|
|
85
|
+
/** Maximum BDF order, 1 or 2 (default `2`). */
|
|
86
|
+
maxOrder?: 1 | 2;
|
|
87
|
+
/** Newton convergence tolerance on the scaled increment (default derived from `tol`). */
|
|
88
|
+
newtonTol?: number;
|
|
89
|
+
/**
|
|
90
|
+
* Analytic Jacobian blocks `(t, y, z) => { fy, fz, gy, gz }`. When given they
|
|
91
|
+
* replace the default finite-difference Newton matrix (faster + more accurate).
|
|
92
|
+
*/
|
|
93
|
+
jacobian?: (t: number, y: number[], z: number[]) => DAEJacobianBlocks;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Solution returned by {@link solveDAE}.
|
|
97
|
+
*
|
|
98
|
+
* `y`/`z` are `number[][]` (one state vector per time) when the corresponding
|
|
99
|
+
* initial value was an array, and unwrapped to `number[]` when it was a scalar.
|
|
100
|
+
*/
|
|
101
|
+
export interface DAESolution {
|
|
102
|
+
/** Accepted output times, `t[0] = t0`, last entry `= T`. */
|
|
103
|
+
t: number[];
|
|
104
|
+
/** Differential state at each time. */
|
|
105
|
+
y: number[][] | number[];
|
|
106
|
+
/** Algebraic state at each time. */
|
|
107
|
+
z: number[][] | number[];
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Solve the semi-explicit index-1 DAE `y' = f(t, y, z)`, `0 = g(t, y, z)` on
|
|
111
|
+
* `[tspan[0], tspan[1]]` with a variable-step BDF(1–2) integrator and a coupled
|
|
112
|
+
* Newton solve for `(y, z)` at each step.
|
|
113
|
+
*
|
|
114
|
+
* @param f Differential forcing `f(t, y, z) → y'`.
|
|
115
|
+
* @param g Algebraic constraint `g(t, y, z) → 0`.
|
|
116
|
+
* @param tspan `[t0, T]` (forward integration; `T > t0`).
|
|
117
|
+
* @param y0 Initial differential state (scalar or vector).
|
|
118
|
+
* @param z0 Initial algebraic guess (scalar or vector). Refined to satisfy
|
|
119
|
+
* `g(t0, y0, z0) = 0` before the first step. Defaults to `[0]`.
|
|
120
|
+
* @param options See {@link SolveDAEOptions}.
|
|
121
|
+
* @returns `{ t, y, z }` — `y`/`z` are unwrapped to `number[]` when the matching
|
|
122
|
+
* initial value was a scalar, else `number[][]`.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* // RC circuit: C·V' = i, i·R = Vs − V (semi-explicit, index-1)
|
|
126
|
+
* // with C=R=Vs=1, V(0)=0 → V = 1 − e^{−t}, i = e^{−t}
|
|
127
|
+
* const sol = solveDAE(
|
|
128
|
+
* (t, y, z) => [z[0]], // V' = i
|
|
129
|
+
* (t, y, z) => [z[0] - (1 - y[0])], // i − (Vs − V) = 0
|
|
130
|
+
* [0, 3], 0, 1,
|
|
131
|
+
* );
|
|
132
|
+
*/
|
|
133
|
+
export declare function solveDAE(f: DAEDifferential, g: DAEConstraint, tspan: [number, number] | number[], y0: number | number[], z0?: number | number[], options?: SolveDAEOptions): DAESolution;
|
|
134
|
+
//# sourceMappingURL=solveDAE.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solveDAE.d.ts","sourceRoot":"","sources":["../../src/numeric/solveDAE.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AAIH,wGAAwG;AACxG,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,GAAG,MAAM,CAAC;AAEzF,2GAA2G;AAC3G,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,GAAG,MAAM,CAAC;AAEvF;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;IACf,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;IACf,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;IACf,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;CAChB;AAED,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,iBAAiB,CAAC;CACvE;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,uCAAuC;IACvC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC;IACzB,oCAAoC;IACpC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC;CAC1B;AAiJD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,QAAQ,CACtB,CAAC,EAAE,eAAe,EAClB,CAAC,EAAE,aAAa,EAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,EAClC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,EACrB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EACtB,OAAO,GAAE,eAAoB,GAC5B,WAAW,CAwPb"}
|
|
@@ -54,6 +54,23 @@ interface ODEOptions {
|
|
|
54
54
|
* Forcing function type for ODE
|
|
55
55
|
*/
|
|
56
56
|
type ForcingFunction = (t: MathNumericType, y: MathNumericType | MathArray) => MathNumericType | MathArray;
|
|
57
|
+
/**
|
|
58
|
+
* Return a solver for `A·x = b` reused across the 3–6 right-hand sides a single stiff step solves
|
|
59
|
+
* against the same iteration matrix (W for Rosenbrock, E for RODAS).
|
|
60
|
+
*
|
|
61
|
+
* Small systems (n < {@link LU_ROUTE_THRESHOLD}) use the allocation-light inline elimination.
|
|
62
|
+
* Large systems factor `A` **once** with the matrix `lu()` primitive (per
|
|
63
|
+
* project-two-decomposition-layers-prefer-matrix) and solve each RHS with `luSolve` — one O(n³)
|
|
64
|
+
* factorisation instead of the old inline's re-factorisation per RHS.
|
|
65
|
+
*
|
|
66
|
+
* Numerics are unchanged on the small path (identical inline code) and, on the large path, the
|
|
67
|
+
* matrix `lu()` uses the same partial-pivoting strategy and elimination arithmetic, so results
|
|
68
|
+
* match to rounding (well within the solver's `tol`). The one edge case — a singular iteration
|
|
69
|
+
* matrix — made the inline solve emit NaN/Inf (division by zero), which fails the embedded error
|
|
70
|
+
* test and rejects the step (h is then reduced); the matrix `lu()` throws "singular" instead, so
|
|
71
|
+
* we catch it and return a NaN vector to preserve that step-rejection behaviour.
|
|
72
|
+
*/
|
|
73
|
+
export declare function _factorSolver(A: number[][], n: number): (b: number[]) => number[];
|
|
57
74
|
/**
|
|
58
75
|
* Rosenbrock stiff ODE solver — the linearly-implicit ode23s method (Shampine & Reichelt),
|
|
59
76
|
* L-stable, with an embedded error estimate for adaptive stepping. Unlike the explicit RK23/RK45
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solveODE.d.ts","sourceRoot":"","sources":["../../src/numeric/solveODE.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAU,IAAI,EAAa,MAAM,aAAa,CAAC;AAkCvF;;;;;;;;;;;GAWG;AACH,UAAU,aAAa;IACrB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4FAA4F;AAC5F,UAAU,SAAS;IACjB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yEAAyE;AACzE,KAAK,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;AAS9E;;GAEG;AACH,UAAU,UAAU;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,EAAE,CAAC;IAC7C;;;;;OAKG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAcD;;GAEG;AACH,KAAK,eAAe,GAAG,CACrB,CAAC,EAAE,eAAe,EAClB,CAAC,EAAE,eAAe,GAAG,SAAS,KAC3B,eAAe,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"solveODE.d.ts","sourceRoot":"","sources":["../../src/numeric/solveODE.ts"],"names":[],"mappings":"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"}
|
package/dist/typed/numeric.d.ts
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* @packageDocumentation
|
|
12
12
|
*/
|
|
13
13
|
export { solveParabolicPDE, type SolveParabolicPDEOptions, type ParabolicPDESolution, type ParabolicBC, type SpaceCoefficient, type BoundaryDatum, type ParabolicSource, } from '../numeric/solveParabolicPDE.js';
|
|
14
|
+
export { solveDAE, type SolveDAEOptions, type DAESolution, type DAEDifferential, type DAEConstraint, type DAEJacobianBlocks, } from '../numeric/solveDAE.js';
|
|
14
15
|
type f64 = number;
|
|
15
16
|
type i32 = number;
|
|
16
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numeric.d.ts","sourceRoot":"","sources":["../../src/typed/numeric.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"numeric.d.ts","sourceRoot":"","sources":["../../src/typed/numeric.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED