@danielsimonjr/mathts-functions 0.29.0 → 0.30.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.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +568 -39
- package/dist/numeric/bfgs.d.ts +70 -0
- package/dist/numeric/bfgs.d.ts.map +1 -0
- package/dist/numeric/nnls.d.ts +72 -0
- package/dist/numeric/nnls.d.ts.map +1 -0
- package/dist/typed/numeric.d.ts +28 -7
- package/dist/typed/numeric.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -45,7 +45,11 @@ export type { LinregressResult } from './regression-extra.js';
|
|
|
45
45
|
export { nelderMead, gradientDescent, levenbergMarquardt } from './optimization-extra.js';
|
|
46
46
|
export type { OptimizeResult, LMResult } from './optimization-extra.js';
|
|
47
47
|
export { kmeans, spectralClustering } from './clustering-extra.js';
|
|
48
|
+
export { bfgs } from './numeric/bfgs.js';
|
|
49
|
+
export type { BfgsOptions, BfgsResult } from './numeric/bfgs.js';
|
|
48
50
|
export type { KMeansResult } from './clustering-extra.js';
|
|
51
|
+
export { nnls, lsqBounded } from './numeric/nnls.js';
|
|
52
|
+
export type { NnlsOptions, NnlsResult, LsqBoundedOptions, LsqBoundedResult, } from './numeric/nnls.js';
|
|
49
53
|
export { symbolicIntegral } from './cas-integration.js';
|
|
50
54
|
export { firwin, butter, lfilter, lfilterZi, filtfilt } from './signal-filter-extra.js';
|
|
51
55
|
export { haversine, EARTH_RADIUS_KM, slerp, quaternionMultiply, quaternionConjugate, quaternionNormalize, quaternionFromAxisAngle, quaternionRotate, quaternionToRotationMatrix, } from './geometry-extra.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -8381,18 +8381,18 @@ import { computePool as computePool7 } from "@danielsimonjr/mathts-parallel";
|
|
|
8381
8381
|
var GEOMETRY_WASM_THRESHOLD = 32;
|
|
8382
8382
|
var HULL3D_WASM_THRESHOLD = 1024;
|
|
8383
8383
|
function angle2D(v1, v2) {
|
|
8384
|
-
const
|
|
8384
|
+
const dot4 = v1[0] * v2[0] + v1[1] * v2[1];
|
|
8385
8385
|
const mag1 = Math.sqrt(v1[0] ** 2 + v1[1] ** 2);
|
|
8386
8386
|
const mag2 = Math.sqrt(v2[0] ** 2 + v2[1] ** 2);
|
|
8387
8387
|
if (mag1 === 0 || mag2 === 0) return NaN;
|
|
8388
|
-
return Math.acos(Math.max(-1, Math.min(1,
|
|
8388
|
+
return Math.acos(Math.max(-1, Math.min(1, dot4 / (mag1 * mag2))));
|
|
8389
8389
|
}
|
|
8390
8390
|
function angle3D(v1, v2) {
|
|
8391
|
-
const
|
|
8391
|
+
const dot4 = v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
|
|
8392
8392
|
const mag1 = Math.sqrt(v1[0] ** 2 + v1[1] ** 2 + v1[2] ** 2);
|
|
8393
8393
|
const mag2 = Math.sqrt(v2[0] ** 2 + v2[1] ** 2 + v2[2] ** 2);
|
|
8394
8394
|
if (mag1 === 0 || mag2 === 0) return NaN;
|
|
8395
|
-
return Math.acos(Math.max(-1, Math.min(1,
|
|
8395
|
+
return Math.acos(Math.max(-1, Math.min(1, dot4 / (mag1 * mag2))));
|
|
8396
8396
|
}
|
|
8397
8397
|
function cross3D(a, b) {
|
|
8398
8398
|
return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];
|
|
@@ -8497,14 +8497,14 @@ function reflectVector(v, normal) {
|
|
|
8497
8497
|
const mag = Math.sqrt(normal.reduce((s, c) => s + c * c, 0));
|
|
8498
8498
|
if (mag === 0) return v.slice();
|
|
8499
8499
|
const n = normal.map((c) => c / mag);
|
|
8500
|
-
const
|
|
8501
|
-
return v.map((c, i) => c - 2 *
|
|
8500
|
+
const dot4 = v.reduce((s, c, i) => s + c * n[i], 0);
|
|
8501
|
+
return v.map((c, i) => c - 2 * dot4 * n[i]);
|
|
8502
8502
|
}
|
|
8503
8503
|
function projectVector(v, onto) {
|
|
8504
|
-
const
|
|
8504
|
+
const dot4 = v.reduce((s, c, i) => s + c * onto[i], 0);
|
|
8505
8505
|
const magSq = onto.reduce((s, c) => s + c * c, 0);
|
|
8506
8506
|
if (magSq === 0) return onto.map(() => 0);
|
|
8507
|
-
const scale =
|
|
8507
|
+
const scale = dot4 / magSq;
|
|
8508
8508
|
return onto.map((c) => c * scale);
|
|
8509
8509
|
}
|
|
8510
8510
|
function distance2D(a, b) {
|
|
@@ -13108,7 +13108,7 @@ function quadprog(H, f, A, b) {
|
|
|
13108
13108
|
}
|
|
13109
13109
|
return x;
|
|
13110
13110
|
}
|
|
13111
|
-
function
|
|
13111
|
+
function linprogOnePhaseLegacy(c, A, b) {
|
|
13112
13112
|
const m = A.length;
|
|
13113
13113
|
const n = c.length;
|
|
13114
13114
|
const tableau = [];
|
|
@@ -13179,6 +13179,285 @@ function linprog(c, A, b) {
|
|
|
13179
13179
|
}
|
|
13180
13180
|
return x;
|
|
13181
13181
|
}
|
|
13182
|
+
var LINPROG_TOL = 1e-9;
|
|
13183
|
+
function linprogSolveTwoPhase(costWork, Aeq, beq, hasSlack, slackCol) {
|
|
13184
|
+
const m = Aeq.length;
|
|
13185
|
+
const nw = costWork.length;
|
|
13186
|
+
if (m === 0) {
|
|
13187
|
+
for (let j = 0; j < nw; j++) {
|
|
13188
|
+
if (costWork[j] < -LINPROG_TOL) return { xWork: [], status: "unbounded" };
|
|
13189
|
+
}
|
|
13190
|
+
return { xWork: new Array(nw).fill(0), status: "optimal" };
|
|
13191
|
+
}
|
|
13192
|
+
const rows = [];
|
|
13193
|
+
const rhs = [];
|
|
13194
|
+
const flipped = [];
|
|
13195
|
+
for (let i2 = 0; i2 < m; i2++) {
|
|
13196
|
+
let row2 = [...Aeq[i2]];
|
|
13197
|
+
let b = beq[i2];
|
|
13198
|
+
let f = false;
|
|
13199
|
+
if (b < 0) {
|
|
13200
|
+
row2 = row2.map((v) => -v);
|
|
13201
|
+
b = -b;
|
|
13202
|
+
f = true;
|
|
13203
|
+
}
|
|
13204
|
+
rows.push(row2);
|
|
13205
|
+
rhs.push(b);
|
|
13206
|
+
flipped.push(f);
|
|
13207
|
+
}
|
|
13208
|
+
const basis = new Array(m).fill(-1);
|
|
13209
|
+
const artificialCols = [];
|
|
13210
|
+
let nextCol = nw;
|
|
13211
|
+
for (let i2 = 0; i2 < m; i2++) {
|
|
13212
|
+
if (hasSlack[i2] && !flipped[i2]) {
|
|
13213
|
+
basis[i2] = slackCol[i2];
|
|
13214
|
+
} else {
|
|
13215
|
+
const col = nextCol++;
|
|
13216
|
+
artificialCols.push(col);
|
|
13217
|
+
basis[i2] = col;
|
|
13218
|
+
}
|
|
13219
|
+
}
|
|
13220
|
+
const totalCols = nextCol;
|
|
13221
|
+
const isArtificial = new Array(totalCols).fill(false);
|
|
13222
|
+
for (const col of artificialCols) isArtificial[col] = true;
|
|
13223
|
+
const width = totalCols + 1;
|
|
13224
|
+
const tableau = [];
|
|
13225
|
+
for (let i2 = 0; i2 < m; i2++) {
|
|
13226
|
+
const row2 = new Array(width).fill(0);
|
|
13227
|
+
for (let j = 0; j < nw; j++) row2[j] = rows[i2][j];
|
|
13228
|
+
if (isArtificial[basis[i2]]) row2[basis[i2]] = 1;
|
|
13229
|
+
row2[totalCols] = rhs[i2];
|
|
13230
|
+
tableau.push(row2);
|
|
13231
|
+
}
|
|
13232
|
+
const pivot = (pr, pc, objRow) => {
|
|
13233
|
+
const pivotVal = tableau[pr][pc];
|
|
13234
|
+
for (let j = 0; j < width; j++) tableau[pr][j] /= pivotVal;
|
|
13235
|
+
for (let i2 = 0; i2 < tableau.length; i2++) {
|
|
13236
|
+
if (i2 === pr) continue;
|
|
13237
|
+
const factor3 = tableau[i2][pc];
|
|
13238
|
+
if (factor3 === 0) continue;
|
|
13239
|
+
for (let j = 0; j < width; j++) tableau[i2][j] -= factor3 * tableau[pr][j];
|
|
13240
|
+
}
|
|
13241
|
+
const factor2 = objRow[pc];
|
|
13242
|
+
if (factor2 !== 0) {
|
|
13243
|
+
for (let j = 0; j < width; j++) objRow[j] -= factor2 * tableau[pr][j];
|
|
13244
|
+
}
|
|
13245
|
+
};
|
|
13246
|
+
const buildObjRow = (costFull) => {
|
|
13247
|
+
const row2 = new Array(width).fill(0);
|
|
13248
|
+
for (let j = 0; j < totalCols; j++) row2[j] = costFull[j];
|
|
13249
|
+
for (let i2 = 0; i2 < tableau.length; i2++) {
|
|
13250
|
+
const cb = costFull[basis[i2]];
|
|
13251
|
+
if (cb === 0) continue;
|
|
13252
|
+
for (let j = 0; j < width; j++) row2[j] -= cb * tableau[i2][j];
|
|
13253
|
+
}
|
|
13254
|
+
return row2;
|
|
13255
|
+
};
|
|
13256
|
+
const runSimplex = (objRow, excluded, maxIter = 2e3) => {
|
|
13257
|
+
for (let iter = 0; iter < maxIter; iter++) {
|
|
13258
|
+
let pivotCol = -1;
|
|
13259
|
+
let minVal = -LINPROG_TOL;
|
|
13260
|
+
for (let j = 0; j < totalCols; j++) {
|
|
13261
|
+
if (excluded[j]) continue;
|
|
13262
|
+
if (objRow[j] < minVal) {
|
|
13263
|
+
minVal = objRow[j];
|
|
13264
|
+
pivotCol = j;
|
|
13265
|
+
}
|
|
13266
|
+
}
|
|
13267
|
+
if (pivotCol === -1) return "optimal";
|
|
13268
|
+
let pivotRow = -1;
|
|
13269
|
+
let minRatio = Infinity;
|
|
13270
|
+
for (let i2 = 0; i2 < tableau.length; i2++) {
|
|
13271
|
+
if (tableau[i2][pivotCol] > LINPROG_TOL) {
|
|
13272
|
+
const ratio = tableau[i2][totalCols] / tableau[i2][pivotCol];
|
|
13273
|
+
if (ratio < minRatio - 1e-12) {
|
|
13274
|
+
minRatio = ratio;
|
|
13275
|
+
pivotRow = i2;
|
|
13276
|
+
}
|
|
13277
|
+
}
|
|
13278
|
+
}
|
|
13279
|
+
if (pivotRow === -1) return "unbounded";
|
|
13280
|
+
basis[pivotRow] = pivotCol;
|
|
13281
|
+
pivot(pivotRow, pivotCol, objRow);
|
|
13282
|
+
}
|
|
13283
|
+
return "optimal";
|
|
13284
|
+
};
|
|
13285
|
+
const noExclusions = new Array(totalCols).fill(false);
|
|
13286
|
+
const cost1 = new Array(totalCols).fill(0);
|
|
13287
|
+
for (const col of artificialCols) cost1[col] = 1;
|
|
13288
|
+
const objRow1 = buildObjRow(cost1);
|
|
13289
|
+
const phase1Status = runSimplex(objRow1, noExclusions);
|
|
13290
|
+
if (phase1Status === "unbounded") return { xWork: [], status: "infeasible" };
|
|
13291
|
+
let phase1Obj = 0;
|
|
13292
|
+
for (let i2 = 0; i2 < tableau.length; i2++) phase1Obj += cost1[basis[i2]] * tableau[i2][totalCols];
|
|
13293
|
+
if (phase1Obj > 1e-7) return { xWork: [], status: "infeasible" };
|
|
13294
|
+
let i = 0;
|
|
13295
|
+
while (i < tableau.length) {
|
|
13296
|
+
if (!isArtificial[basis[i]]) {
|
|
13297
|
+
i++;
|
|
13298
|
+
continue;
|
|
13299
|
+
}
|
|
13300
|
+
let pc = -1;
|
|
13301
|
+
for (let j = 0; j < nw; j++) {
|
|
13302
|
+
if (Math.abs(tableau[i][j]) > 1e-8) {
|
|
13303
|
+
pc = j;
|
|
13304
|
+
break;
|
|
13305
|
+
}
|
|
13306
|
+
}
|
|
13307
|
+
if (pc === -1) {
|
|
13308
|
+
tableau.splice(i, 1);
|
|
13309
|
+
basis.splice(i, 1);
|
|
13310
|
+
continue;
|
|
13311
|
+
}
|
|
13312
|
+
basis[i] = pc;
|
|
13313
|
+
pivot(i, pc, new Array(width).fill(0));
|
|
13314
|
+
i++;
|
|
13315
|
+
}
|
|
13316
|
+
const costFull2 = new Array(totalCols).fill(0);
|
|
13317
|
+
for (let j = 0; j < nw; j++) costFull2[j] = costWork[j];
|
|
13318
|
+
const objRow2 = buildObjRow(costFull2);
|
|
13319
|
+
const excludeArtificial = isArtificial.slice();
|
|
13320
|
+
const phase2Status = runSimplex(objRow2, excludeArtificial);
|
|
13321
|
+
if (phase2Status === "unbounded") return { xWork: [], status: "unbounded" };
|
|
13322
|
+
const xWork = new Array(nw).fill(0);
|
|
13323
|
+
for (let r = 0; r < tableau.length; r++) {
|
|
13324
|
+
if (basis[r] < nw) xWork[basis[r]] = Math.max(0, tableau[r][totalCols]);
|
|
13325
|
+
}
|
|
13326
|
+
return { xWork, status: "optimal" };
|
|
13327
|
+
}
|
|
13328
|
+
function linprogTwoPhase(c, opts) {
|
|
13329
|
+
const n = c.length;
|
|
13330
|
+
const boundsResolved = [];
|
|
13331
|
+
for (let j = 0; j < n; j++) {
|
|
13332
|
+
const b = opts.bounds?.[j];
|
|
13333
|
+
boundsResolved.push(b ? [b[0], b[1]] : [0, null]);
|
|
13334
|
+
}
|
|
13335
|
+
let col = 0;
|
|
13336
|
+
const expansions = [];
|
|
13337
|
+
for (let j = 0; j < n; j++) {
|
|
13338
|
+
const low = boundsResolved[j][0];
|
|
13339
|
+
if (low === null) {
|
|
13340
|
+
const colPos = col++;
|
|
13341
|
+
const colNeg = col++;
|
|
13342
|
+
expansions.push({ kind: "split", colPos, colNeg });
|
|
13343
|
+
} else {
|
|
13344
|
+
const c0 = col++;
|
|
13345
|
+
expansions.push({ kind: "shift", col: c0, shift: low });
|
|
13346
|
+
}
|
|
13347
|
+
}
|
|
13348
|
+
const nx = col;
|
|
13349
|
+
const expandRow = (row2) => {
|
|
13350
|
+
const out = new Array(nx).fill(0);
|
|
13351
|
+
for (let j = 0; j < n; j++) {
|
|
13352
|
+
const coeff = row2[j] ?? 0;
|
|
13353
|
+
if (coeff === 0) continue;
|
|
13354
|
+
const e = expansions[j];
|
|
13355
|
+
if (e.kind === "shift") out[e.col] += coeff;
|
|
13356
|
+
else {
|
|
13357
|
+
out[e.colPos] += coeff;
|
|
13358
|
+
out[e.colNeg] -= coeff;
|
|
13359
|
+
}
|
|
13360
|
+
}
|
|
13361
|
+
return out;
|
|
13362
|
+
};
|
|
13363
|
+
const shiftedRhs = (row2, rhsVal) => {
|
|
13364
|
+
let r = rhsVal;
|
|
13365
|
+
for (let j = 0; j < n; j++) {
|
|
13366
|
+
const e = expansions[j];
|
|
13367
|
+
if (e.kind === "shift" && e.shift !== 0) r -= (row2[j] ?? 0) * e.shift;
|
|
13368
|
+
}
|
|
13369
|
+
return r;
|
|
13370
|
+
};
|
|
13371
|
+
let constant = 0;
|
|
13372
|
+
const cWork = new Array(nx).fill(0);
|
|
13373
|
+
for (let j = 0; j < n; j++) {
|
|
13374
|
+
const e = expansions[j];
|
|
13375
|
+
if (e.kind === "shift") {
|
|
13376
|
+
cWork[e.col] = c[j];
|
|
13377
|
+
constant += c[j] * e.shift;
|
|
13378
|
+
} else {
|
|
13379
|
+
cWork[e.colPos] = c[j];
|
|
13380
|
+
cWork[e.colNeg] = -c[j];
|
|
13381
|
+
}
|
|
13382
|
+
}
|
|
13383
|
+
const ubRows = [];
|
|
13384
|
+
const ubRhs = [];
|
|
13385
|
+
const A_ub = opts.A_ub ?? [];
|
|
13386
|
+
const b_ub = opts.b_ub ?? [];
|
|
13387
|
+
for (let i = 0; i < A_ub.length; i++) {
|
|
13388
|
+
ubRows.push(expandRow(A_ub[i]));
|
|
13389
|
+
ubRhs.push(shiftedRhs(A_ub[i], b_ub[i]));
|
|
13390
|
+
}
|
|
13391
|
+
for (let j = 0; j < n; j++) {
|
|
13392
|
+
const high = boundsResolved[j][1];
|
|
13393
|
+
if (high === null) continue;
|
|
13394
|
+
const e = expansions[j];
|
|
13395
|
+
const row2 = new Array(nx).fill(0);
|
|
13396
|
+
let rhsVal;
|
|
13397
|
+
if (e.kind === "shift") {
|
|
13398
|
+
row2[e.col] = 1;
|
|
13399
|
+
rhsVal = high - e.shift;
|
|
13400
|
+
} else {
|
|
13401
|
+
row2[e.colPos] = 1;
|
|
13402
|
+
row2[e.colNeg] = -1;
|
|
13403
|
+
rhsVal = high;
|
|
13404
|
+
}
|
|
13405
|
+
ubRows.push(row2);
|
|
13406
|
+
ubRhs.push(rhsVal);
|
|
13407
|
+
}
|
|
13408
|
+
const A_eq = opts.A_eq ?? [];
|
|
13409
|
+
const b_eq = opts.b_eq ?? [];
|
|
13410
|
+
const eqRows = [];
|
|
13411
|
+
const eqRhs = [];
|
|
13412
|
+
for (let i = 0; i < A_eq.length; i++) {
|
|
13413
|
+
eqRows.push(expandRow(A_eq[i]));
|
|
13414
|
+
eqRhs.push(shiftedRhs(A_eq[i], b_eq[i]));
|
|
13415
|
+
}
|
|
13416
|
+
const mUb = ubRows.length;
|
|
13417
|
+
const mEq = eqRows.length;
|
|
13418
|
+
const nw = nx + mUb;
|
|
13419
|
+
const Aeq = [];
|
|
13420
|
+
const beq = [];
|
|
13421
|
+
const hasSlack = [];
|
|
13422
|
+
const slackCol = [];
|
|
13423
|
+
for (let i = 0; i < mUb; i++) {
|
|
13424
|
+
const row2 = new Array(nw).fill(0);
|
|
13425
|
+
for (let j = 0; j < nx; j++) row2[j] = ubRows[i][j];
|
|
13426
|
+
row2[nx + i] = 1;
|
|
13427
|
+
Aeq.push(row2);
|
|
13428
|
+
beq.push(ubRhs[i]);
|
|
13429
|
+
hasSlack.push(true);
|
|
13430
|
+
slackCol.push(nx + i);
|
|
13431
|
+
}
|
|
13432
|
+
for (let i = 0; i < mEq; i++) {
|
|
13433
|
+
const row2 = new Array(nw).fill(0);
|
|
13434
|
+
for (let j = 0; j < nx; j++) row2[j] = eqRows[i][j];
|
|
13435
|
+
Aeq.push(row2);
|
|
13436
|
+
beq.push(eqRhs[i]);
|
|
13437
|
+
hasSlack.push(false);
|
|
13438
|
+
slackCol.push(-1);
|
|
13439
|
+
}
|
|
13440
|
+
const costWorkFull = new Array(nw).fill(0);
|
|
13441
|
+
for (let j = 0; j < nx; j++) costWorkFull[j] = cWork[j];
|
|
13442
|
+
const raw = linprogSolveTwoPhase(costWorkFull, Aeq, beq, hasSlack, slackCol);
|
|
13443
|
+
if (raw.status !== "optimal") {
|
|
13444
|
+
return { x: new Array(n).fill(NaN), fun: NaN, success: false, status: raw.status };
|
|
13445
|
+
}
|
|
13446
|
+
const x = new Array(n).fill(0);
|
|
13447
|
+
for (let j = 0; j < n; j++) {
|
|
13448
|
+
const e = expansions[j];
|
|
13449
|
+
x[j] = e.kind === "shift" ? raw.xWork[e.col] + e.shift : raw.xWork[e.colPos] - raw.xWork[e.colNeg];
|
|
13450
|
+
}
|
|
13451
|
+
let fun = constant;
|
|
13452
|
+
for (let j = 0; j < nx; j++) fun += cWork[j] * raw.xWork[j];
|
|
13453
|
+
return { x, fun, success: true, status: "optimal" };
|
|
13454
|
+
}
|
|
13455
|
+
function linprog(c, arg22, arg3) {
|
|
13456
|
+
if (Array.isArray(arg22)) {
|
|
13457
|
+
return linprogOnePhaseLegacy(c, arg22, arg3);
|
|
13458
|
+
}
|
|
13459
|
+
return linprogTwoPhase(c, arg22);
|
|
13460
|
+
}
|
|
13182
13461
|
function solvePDE(pde, domain, bc) {
|
|
13183
13462
|
const { alpha } = pde;
|
|
13184
13463
|
const { L, nx, nt, T } = domain;
|
|
@@ -14118,9 +14397,9 @@ function _aggregateEigenvector(vectors, aggregation) {
|
|
|
14118
14397
|
const count2 = vectors.length;
|
|
14119
14398
|
const ref = vectors[0];
|
|
14120
14399
|
const aligned = vectors.map((v) => {
|
|
14121
|
-
let
|
|
14122
|
-
for (let i = 0; i < n; i++)
|
|
14123
|
-
if (
|
|
14400
|
+
let dot4 = 0;
|
|
14401
|
+
for (let i = 0; i < n; i++) dot4 += v[i] * ref[i];
|
|
14402
|
+
if (dot4 < 0) {
|
|
14124
14403
|
const flipped = new Float64Array(n);
|
|
14125
14404
|
for (let i = 0; i < n; i++) flipped[i] = -v[i];
|
|
14126
14405
|
return flipped;
|
|
@@ -15971,9 +16250,9 @@ function principalComponentAnalysis(data, k) {
|
|
|
15971
16250
|
const explained = eigenvalues.map((ev) => totalVar > 0 ? Math.abs(ev) / totalVar : 0);
|
|
15972
16251
|
const scores = centered.map((row2) => {
|
|
15973
16252
|
return eigenvectors.map((ev) => {
|
|
15974
|
-
let
|
|
15975
|
-
for (let j = 0; j < p; j++)
|
|
15976
|
-
return
|
|
16253
|
+
let dot4 = 0;
|
|
16254
|
+
for (let j = 0; j < p; j++) dot4 += row2[j] * ev[j];
|
|
16255
|
+
return dot4;
|
|
15977
16256
|
});
|
|
15978
16257
|
});
|
|
15979
16258
|
return { components: eigenvectors, explained, scores };
|
|
@@ -16584,30 +16863,30 @@ function hessenbergForm(A) {
|
|
|
16584
16863
|
if (normV < 1e-30) continue;
|
|
16585
16864
|
const beta2 = 2 / normV;
|
|
16586
16865
|
for (let j = k; j < n; j++) {
|
|
16587
|
-
let
|
|
16866
|
+
let dot4 = 0;
|
|
16588
16867
|
for (let i = 0; i < len; i++) {
|
|
16589
|
-
|
|
16868
|
+
dot4 += v[i] * H[k + 1 + i][j];
|
|
16590
16869
|
}
|
|
16591
16870
|
for (let i = 0; i < len; i++) {
|
|
16592
|
-
H[k + 1 + i][j] -= beta2 * v[i] *
|
|
16871
|
+
H[k + 1 + i][j] -= beta2 * v[i] * dot4;
|
|
16593
16872
|
}
|
|
16594
16873
|
}
|
|
16595
16874
|
for (let i = 0; i < n; i++) {
|
|
16596
|
-
let
|
|
16875
|
+
let dot4 = 0;
|
|
16597
16876
|
for (let j = 0; j < len; j++) {
|
|
16598
|
-
|
|
16877
|
+
dot4 += H[i][k + 1 + j] * v[j];
|
|
16599
16878
|
}
|
|
16600
16879
|
for (let j = 0; j < len; j++) {
|
|
16601
|
-
H[i][k + 1 + j] -= beta2 *
|
|
16880
|
+
H[i][k + 1 + j] -= beta2 * dot4 * v[j];
|
|
16602
16881
|
}
|
|
16603
16882
|
}
|
|
16604
16883
|
for (let i = 0; i < n; i++) {
|
|
16605
|
-
let
|
|
16884
|
+
let dot4 = 0;
|
|
16606
16885
|
for (let j = 0; j < len; j++) {
|
|
16607
|
-
|
|
16886
|
+
dot4 += Q2[i][k + 1 + j] * v[j];
|
|
16608
16887
|
}
|
|
16609
16888
|
for (let j = 0; j < len; j++) {
|
|
16610
|
-
Q2[i][k + 1 + j] -= beta2 *
|
|
16889
|
+
Q2[i][k + 1 + j] -= beta2 * dot4 * v[j];
|
|
16611
16890
|
}
|
|
16612
16891
|
}
|
|
16613
16892
|
}
|
|
@@ -29919,7 +30198,7 @@ var createPinv = /* @__PURE__ */ factory(
|
|
|
29919
30198
|
deepEqual: deepEqual3,
|
|
29920
30199
|
equal: equal2,
|
|
29921
30200
|
dotDivide: dotDivide2,
|
|
29922
|
-
dot:
|
|
30201
|
+
dot: dot4,
|
|
29923
30202
|
ctranspose: ctranspose2,
|
|
29924
30203
|
divideScalar: divideScalar2,
|
|
29925
30204
|
multiply: multiply2,
|
|
@@ -29935,7 +30214,7 @@ var createPinv = /* @__PURE__ */ factory(
|
|
|
29935
30214
|
if (size2[0] === 1) {
|
|
29936
30215
|
return inv2(x);
|
|
29937
30216
|
} else {
|
|
29938
|
-
return dotDivide2(ctranspose2(x),
|
|
30217
|
+
return dotDivide2(ctranspose2(x), dot4(x, x));
|
|
29939
30218
|
}
|
|
29940
30219
|
case 2: {
|
|
29941
30220
|
if (_isZeros(x)) return ctranspose2(x);
|
|
@@ -30014,8 +30293,8 @@ var createPinv = /* @__PURE__ */ factory(
|
|
|
30014
30293
|
}
|
|
30015
30294
|
function _rankFact(mat, rows, cols) {
|
|
30016
30295
|
const rref = _rref(mat, rows, cols);
|
|
30017
|
-
const C = mat.map((row2) => row2.filter((_, j) => j < rows && !_isZero(
|
|
30018
|
-
const F = rref.filter((_, i) => !_isZero(
|
|
30296
|
+
const C = mat.map((row2) => row2.filter((_, j) => j < rows && !_isZero(dot4(rref[j], rref[j]))));
|
|
30297
|
+
const F = rref.filter((_, i) => !_isZero(dot4(rref[i], rref[i])));
|
|
30019
30298
|
return { C, F };
|
|
30020
30299
|
}
|
|
30021
30300
|
function _isZero(x) {
|
|
@@ -36978,7 +37257,7 @@ function createComplexEigs({
|
|
|
36978
37257
|
larger: larger2,
|
|
36979
37258
|
smaller: smaller2,
|
|
36980
37259
|
matrixFromColumns: _matrixFromColumns,
|
|
36981
|
-
dot:
|
|
37260
|
+
dot: dot4
|
|
36982
37261
|
}) {
|
|
36983
37262
|
function complexEigs(arr7, N, prec, type, findVectors = true) {
|
|
36984
37263
|
if (!findVectors && type === "number" && N * N >= WASM_EIGS_THRESHOLD) {
|
|
@@ -37419,7 +37698,7 @@ function createComplexEigs({
|
|
|
37419
37698
|
v = subtract2(
|
|
37420
37699
|
v,
|
|
37421
37700
|
multiply2(
|
|
37422
|
-
divideScalar2(
|
|
37701
|
+
divideScalar2(dot4(w, v), dot4(w, w)),
|
|
37423
37702
|
w
|
|
37424
37703
|
)
|
|
37425
37704
|
);
|
|
@@ -37427,7 +37706,7 @@ function createComplexEigs({
|
|
|
37427
37706
|
return v;
|
|
37428
37707
|
}
|
|
37429
37708
|
function norm4(v) {
|
|
37430
|
-
return abs2(sqrt2(
|
|
37709
|
+
return abs2(sqrt2(dot4(v, v)));
|
|
37431
37710
|
}
|
|
37432
37711
|
function normalize2(v, type) {
|
|
37433
37712
|
const big = type === "BigNumber";
|
|
@@ -37847,7 +38126,7 @@ var createEigs = /* @__PURE__ */ factory(
|
|
|
37847
38126
|
re: re3,
|
|
37848
38127
|
smaller: smaller2,
|
|
37849
38128
|
matrixFromColumns: matrixFromColumns2,
|
|
37850
|
-
dot:
|
|
38129
|
+
dot: dot4
|
|
37851
38130
|
}) => {
|
|
37852
38131
|
const doRealSymmetric = createRealSymmetric({
|
|
37853
38132
|
config: config2,
|
|
@@ -37886,7 +38165,7 @@ var createEigs = /* @__PURE__ */ factory(
|
|
|
37886
38165
|
larger: larger2,
|
|
37887
38166
|
smaller: smaller2,
|
|
37888
38167
|
matrixFromColumns: matrixFromColumns2,
|
|
37889
|
-
dot:
|
|
38168
|
+
dot: dot4
|
|
37890
38169
|
});
|
|
37891
38170
|
return typed3("eigs", {
|
|
37892
38171
|
// The conversion to matrix in the first two implementations,
|
|
@@ -44978,16 +45257,16 @@ function fsolve(F, x0, opts = {}) {
|
|
|
44978
45257
|
const msg = err instanceof Error ? err.message : String(err);
|
|
44979
45258
|
throw new Error(`fsolve: singular Jacobian at iteration ${iter} (${msg})`);
|
|
44980
45259
|
}
|
|
44981
|
-
const
|
|
45260
|
+
const residualNorm2 = norm24(Fx);
|
|
44982
45261
|
let xNext = x.map((xi, i) => xi + delta[i]);
|
|
44983
45262
|
let FxNext = F(xNext);
|
|
44984
|
-
if (norm24(FxNext) >=
|
|
45263
|
+
if (norm24(FxNext) >= residualNorm2) {
|
|
44985
45264
|
let trialLambda = 1;
|
|
44986
45265
|
for (let halving = 0; halving < 20; halving++) {
|
|
44987
45266
|
trialLambda /= 2;
|
|
44988
45267
|
const xTrial = x.map((xi, i) => xi + trialLambda * delta[i]);
|
|
44989
45268
|
const FxTrial = F(xTrial);
|
|
44990
|
-
if (norm24(FxTrial) <
|
|
45269
|
+
if (norm24(FxTrial) < residualNorm2) {
|
|
44991
45270
|
xNext = xTrial;
|
|
44992
45271
|
FxNext = FxTrial;
|
|
44993
45272
|
break;
|
|
@@ -45413,6 +45692,253 @@ function spectralClustering(adjacency, k, opts = {}) {
|
|
|
45413
45692
|
return kmeans(embed, k, opts).labels;
|
|
45414
45693
|
}
|
|
45415
45694
|
|
|
45695
|
+
// src/numeric/bfgs.ts
|
|
45696
|
+
var CBRT_EPS = Math.cbrt(2220446049250313e-31);
|
|
45697
|
+
function numericGradient(f, x) {
|
|
45698
|
+
const n = x.length;
|
|
45699
|
+
const g = new Array(n);
|
|
45700
|
+
for (let i = 0; i < n; i++) {
|
|
45701
|
+
const h = Math.max(1, Math.abs(x[i])) * CBRT_EPS;
|
|
45702
|
+
const xp = x.slice();
|
|
45703
|
+
const xm = x.slice();
|
|
45704
|
+
xp[i] += h;
|
|
45705
|
+
xm[i] -= h;
|
|
45706
|
+
g[i] = (f(xp) - f(xm)) / (2 * h);
|
|
45707
|
+
}
|
|
45708
|
+
return g;
|
|
45709
|
+
}
|
|
45710
|
+
function clipToBounds(x, bounds) {
|
|
45711
|
+
if (!bounds) return x;
|
|
45712
|
+
return x.map((v, i) => {
|
|
45713
|
+
const b = bounds[i];
|
|
45714
|
+
if (!b) return v;
|
|
45715
|
+
const [lo, hi] = b;
|
|
45716
|
+
return Math.min(hi, Math.max(lo, v));
|
|
45717
|
+
});
|
|
45718
|
+
}
|
|
45719
|
+
function dot2(a, b) {
|
|
45720
|
+
let s = 0;
|
|
45721
|
+
for (let i = 0; i < a.length; i++) s += a[i] * b[i];
|
|
45722
|
+
return s;
|
|
45723
|
+
}
|
|
45724
|
+
function matVec(H, v) {
|
|
45725
|
+
const n = v.length;
|
|
45726
|
+
const out = new Array(n);
|
|
45727
|
+
for (let i = 0; i < n; i++) {
|
|
45728
|
+
let s = 0;
|
|
45729
|
+
for (let j = 0; j < n; j++) s += H[i][j] * v[j];
|
|
45730
|
+
out[i] = s;
|
|
45731
|
+
}
|
|
45732
|
+
return out;
|
|
45733
|
+
}
|
|
45734
|
+
function bfgs(f, x0, opts = {}) {
|
|
45735
|
+
const { grad, bounds, tol = 1e-8, maxIter = 500 } = opts;
|
|
45736
|
+
const gradOf = grad ?? ((x2) => numericGradient(f, x2));
|
|
45737
|
+
const n = x0.length;
|
|
45738
|
+
const c1 = 1e-4;
|
|
45739
|
+
let x = clipToBounds(x0.slice(), bounds);
|
|
45740
|
+
let fx = f(x);
|
|
45741
|
+
let g = gradOf(x);
|
|
45742
|
+
let H = Array.from(
|
|
45743
|
+
{ length: n },
|
|
45744
|
+
(_, i) => Array.from({ length: n }, (_2, j) => i === j ? 1 : 0)
|
|
45745
|
+
);
|
|
45746
|
+
const infNorm = (v) => v.reduce((m, c) => Math.max(m, Math.abs(c)), 0);
|
|
45747
|
+
let iter = 0;
|
|
45748
|
+
let converged = infNorm(g) < tol;
|
|
45749
|
+
while (!converged && iter < maxIter) {
|
|
45750
|
+
const d = matVec(H, g).map((v) => -v);
|
|
45751
|
+
const gd = dot2(g, d);
|
|
45752
|
+
const dir = gd < 0 ? d : g.map((v) => -v);
|
|
45753
|
+
const dirSlope = gd < 0 ? gd : -dot2(g, g);
|
|
45754
|
+
let alpha = 1;
|
|
45755
|
+
let xNew = clipToBounds(
|
|
45756
|
+
x.map((v, i) => v + alpha * dir[i]),
|
|
45757
|
+
bounds
|
|
45758
|
+
);
|
|
45759
|
+
let fNew = f(xNew);
|
|
45760
|
+
let halvings = 0;
|
|
45761
|
+
while (fNew > fx + c1 * alpha * dirSlope && halvings < 50) {
|
|
45762
|
+
alpha *= 0.5;
|
|
45763
|
+
xNew = clipToBounds(
|
|
45764
|
+
x.map((v, i) => v + alpha * dir[i]),
|
|
45765
|
+
bounds
|
|
45766
|
+
);
|
|
45767
|
+
fNew = f(xNew);
|
|
45768
|
+
halvings++;
|
|
45769
|
+
}
|
|
45770
|
+
const gNew = gradOf(xNew);
|
|
45771
|
+
const s = xNew.map((v, i) => v - x[i]);
|
|
45772
|
+
const y = gNew.map((v, i) => v - g[i]);
|
|
45773
|
+
const sy = dot2(s, y);
|
|
45774
|
+
if (sy > 1e-12) {
|
|
45775
|
+
const rho = 1 / sy;
|
|
45776
|
+
const Hy = matVec(H, y);
|
|
45777
|
+
const yHy = dot2(y, Hy);
|
|
45778
|
+
const HNew = Array.from({ length: n }, () => new Array(n).fill(0));
|
|
45779
|
+
for (let i = 0; i < n; i++) {
|
|
45780
|
+
for (let j = 0; j < n; j++) {
|
|
45781
|
+
HNew[i][j] = H[i][j] - rho * (s[i] * Hy[j] + Hy[i] * s[j]) + rho * rho * yHy * s[i] * s[j] + rho * s[i] * s[j];
|
|
45782
|
+
}
|
|
45783
|
+
}
|
|
45784
|
+
H = HNew;
|
|
45785
|
+
}
|
|
45786
|
+
x = xNew;
|
|
45787
|
+
fx = fNew;
|
|
45788
|
+
g = gNew;
|
|
45789
|
+
iter++;
|
|
45790
|
+
converged = infNorm(g) < tol;
|
|
45791
|
+
}
|
|
45792
|
+
return { x, fval: fx, iterations: iter, converged };
|
|
45793
|
+
}
|
|
45794
|
+
|
|
45795
|
+
// src/numeric/nnls.ts
|
|
45796
|
+
function matVec2(A, x) {
|
|
45797
|
+
const m = A.length;
|
|
45798
|
+
const result = new Array(m);
|
|
45799
|
+
for (let i = 0; i < m; i++) {
|
|
45800
|
+
const row2 = A[i];
|
|
45801
|
+
let s = 0;
|
|
45802
|
+
for (let j = 0; j < row2.length; j++) s += row2[j] * x[j];
|
|
45803
|
+
result[i] = s;
|
|
45804
|
+
}
|
|
45805
|
+
return result;
|
|
45806
|
+
}
|
|
45807
|
+
function residualNorm(A, x, b) {
|
|
45808
|
+
const Ax = matVec2(A, x);
|
|
45809
|
+
let s = 0;
|
|
45810
|
+
for (let i = 0; i < b.length; i++) {
|
|
45811
|
+
const d = Ax[i] - b[i];
|
|
45812
|
+
s += d * d;
|
|
45813
|
+
}
|
|
45814
|
+
return Math.sqrt(s);
|
|
45815
|
+
}
|
|
45816
|
+
function nnls(A, b, opts = {}) {
|
|
45817
|
+
const m = A.length;
|
|
45818
|
+
const n = A[0]?.length ?? 0;
|
|
45819
|
+
const tol = opts.tol ?? 1e-10;
|
|
45820
|
+
const maxIter = opts.maxIter ?? 3 * n;
|
|
45821
|
+
let x = new Array(n).fill(0);
|
|
45822
|
+
const passive = /* @__PURE__ */ new Set();
|
|
45823
|
+
const gradient2 = (xv) => {
|
|
45824
|
+
const Ax = matVec2(A, xv);
|
|
45825
|
+
const w = new Array(n).fill(0);
|
|
45826
|
+
for (let j = 0; j < n; j++) {
|
|
45827
|
+
let s = 0;
|
|
45828
|
+
for (let i = 0; i < m; i++) s += A[i][j] * (b[i] - Ax[i]);
|
|
45829
|
+
w[j] = s;
|
|
45830
|
+
}
|
|
45831
|
+
return w;
|
|
45832
|
+
};
|
|
45833
|
+
const solvePassive = (P2) => {
|
|
45834
|
+
const z = new Array(n).fill(0);
|
|
45835
|
+
if (P2.length === 0) return z;
|
|
45836
|
+
const Asub = A.map((row2) => P2.map((j) => row2[j]));
|
|
45837
|
+
let zp;
|
|
45838
|
+
try {
|
|
45839
|
+
zp = leastSquares(Asub, b);
|
|
45840
|
+
} catch {
|
|
45841
|
+
return x.slice();
|
|
45842
|
+
}
|
|
45843
|
+
for (let k = 0; k < P2.length; k++) z[P2[k]] = zp[k];
|
|
45844
|
+
return z;
|
|
45845
|
+
};
|
|
45846
|
+
let outerIter = 0;
|
|
45847
|
+
while (outerIter < maxIter) {
|
|
45848
|
+
const w = gradient2(x);
|
|
45849
|
+
let maxW = -Infinity;
|
|
45850
|
+
let maxJ = -1;
|
|
45851
|
+
for (let j = 0; j < n; j++) {
|
|
45852
|
+
if (!passive.has(j) && w[j] > maxW) {
|
|
45853
|
+
maxW = w[j];
|
|
45854
|
+
maxJ = j;
|
|
45855
|
+
}
|
|
45856
|
+
}
|
|
45857
|
+
if (maxJ === -1 || maxW <= tol) break;
|
|
45858
|
+
passive.add(maxJ);
|
|
45859
|
+
let z = solvePassive(Array.from(passive));
|
|
45860
|
+
let innerIter = 0;
|
|
45861
|
+
while (Array.from(passive).some((j) => z[j] <= tol) && innerIter < maxIter) {
|
|
45862
|
+
innerIter++;
|
|
45863
|
+
let alpha = Infinity;
|
|
45864
|
+
for (const j of passive) {
|
|
45865
|
+
if (z[j] <= tol) {
|
|
45866
|
+
const denom = x[j] - z[j];
|
|
45867
|
+
if (denom > 0) alpha = Math.min(alpha, x[j] / denom);
|
|
45868
|
+
}
|
|
45869
|
+
}
|
|
45870
|
+
if (!isFinite(alpha)) alpha = 0;
|
|
45871
|
+
for (let j = 0; j < n; j++) x[j] = x[j] + alpha * (z[j] - x[j]);
|
|
45872
|
+
for (const j of Array.from(passive)) {
|
|
45873
|
+
if (Math.abs(x[j]) < tol) passive.delete(j);
|
|
45874
|
+
}
|
|
45875
|
+
z = solvePassive(Array.from(passive));
|
|
45876
|
+
}
|
|
45877
|
+
x = z;
|
|
45878
|
+
outerIter++;
|
|
45879
|
+
}
|
|
45880
|
+
return { x, residual: residualNorm(A, x, b) };
|
|
45881
|
+
}
|
|
45882
|
+
function clip(v, lower, upper) {
|
|
45883
|
+
return v.map((vi, i) => Math.min(Math.max(vi, lower[i]), upper[i]));
|
|
45884
|
+
}
|
|
45885
|
+
function lsqBounded(A, b, lower, upper, opts = {}) {
|
|
45886
|
+
const m = A.length;
|
|
45887
|
+
const n = A[0]?.length ?? 0;
|
|
45888
|
+
const tol = opts.tol ?? 1e-10;
|
|
45889
|
+
const maxIter = opts.maxIter ?? Math.max(200, 20 * n);
|
|
45890
|
+
let x = clip(new Array(n).fill(0), lower, upper);
|
|
45891
|
+
const gradient2 = (xv) => {
|
|
45892
|
+
const Ax = matVec2(A, xv);
|
|
45893
|
+
const r = new Array(m);
|
|
45894
|
+
for (let i = 0; i < m; i++) r[i] = Ax[i] - b[i];
|
|
45895
|
+
const g = new Array(n).fill(0);
|
|
45896
|
+
for (let j = 0; j < n; j++) {
|
|
45897
|
+
let s = 0;
|
|
45898
|
+
for (let i = 0; i < m; i++) s += A[i][j] * r[i];
|
|
45899
|
+
g[j] = s;
|
|
45900
|
+
}
|
|
45901
|
+
return g;
|
|
45902
|
+
};
|
|
45903
|
+
const objective = (xv) => {
|
|
45904
|
+
const r = residualNorm(A, xv, b);
|
|
45905
|
+
return 0.5 * r * r;
|
|
45906
|
+
};
|
|
45907
|
+
for (let iter = 0; iter < maxIter; iter++) {
|
|
45908
|
+
const g = gradient2(x);
|
|
45909
|
+
const projFull = clip(
|
|
45910
|
+
x.map((xi, i) => xi - g[i]),
|
|
45911
|
+
lower,
|
|
45912
|
+
upper
|
|
45913
|
+
);
|
|
45914
|
+
let pgNorm = 0;
|
|
45915
|
+
for (let i = 0; i < n; i++) pgNorm += (x[i] - projFull[i]) ** 2;
|
|
45916
|
+
pgNorm = Math.sqrt(pgNorm);
|
|
45917
|
+
if (pgNorm < tol) break;
|
|
45918
|
+
const fx = objective(x);
|
|
45919
|
+
let alpha = 1;
|
|
45920
|
+
let xNext = clip(
|
|
45921
|
+
x.map((xi, i) => xi - alpha * g[i]),
|
|
45922
|
+
lower,
|
|
45923
|
+
upper
|
|
45924
|
+
);
|
|
45925
|
+
let fNext = objective(xNext);
|
|
45926
|
+
let backtrack = 0;
|
|
45927
|
+
while (fNext > fx && backtrack < 50) {
|
|
45928
|
+
alpha /= 2;
|
|
45929
|
+
xNext = clip(
|
|
45930
|
+
x.map((xi, i) => xi - alpha * g[i]),
|
|
45931
|
+
lower,
|
|
45932
|
+
upper
|
|
45933
|
+
);
|
|
45934
|
+
fNext = objective(xNext);
|
|
45935
|
+
backtrack++;
|
|
45936
|
+
}
|
|
45937
|
+
x = xNext;
|
|
45938
|
+
}
|
|
45939
|
+
return { x, residual: residualNorm(A, x, b) };
|
|
45940
|
+
}
|
|
45941
|
+
|
|
45416
45942
|
// src/cas-integration.ts
|
|
45417
45943
|
var parse2 = parse;
|
|
45418
45944
|
var evaluate2 = evaluate;
|
|
@@ -45671,15 +46197,15 @@ function haversine(lat1, lon1, lat2, lon2, radius = EARTH_RADIUS_KM) {
|
|
|
45671
46197
|
const a = Math.sin(dPhi / 2) ** 2 + Math.cos(phi1) * Math.cos(phi2) * Math.sin(dLambda / 2) ** 2;
|
|
45672
46198
|
return radius * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
|
45673
46199
|
}
|
|
45674
|
-
var
|
|
45675
|
-
var norm3 = (a) => Math.sqrt(
|
|
46200
|
+
var dot3 = (a, b) => a.reduce((s, v, i) => s + v * b[i], 0);
|
|
46201
|
+
var norm3 = (a) => Math.sqrt(dot3(a, a));
|
|
45676
46202
|
function slerp(v0, v1, t) {
|
|
45677
46203
|
const n0 = norm3(v0);
|
|
45678
46204
|
const n16 = norm3(v1);
|
|
45679
46205
|
if (n0 === 0 || n16 === 0) throw new Error("slerp: input vectors must be non-zero");
|
|
45680
46206
|
const u0 = v0.map((v) => v / n0);
|
|
45681
46207
|
const u1 = v1.map((v) => v / n16);
|
|
45682
|
-
let cos2 =
|
|
46208
|
+
let cos2 = dot3(u0, u1);
|
|
45683
46209
|
cos2 = cos2 > 1 ? 1 : cos2 < -1 ? -1 : cos2;
|
|
45684
46210
|
const omega = Math.acos(cos2);
|
|
45685
46211
|
const mag = n0 + (n16 - n0) * t;
|
|
@@ -45795,6 +46321,7 @@ export {
|
|
|
45795
46321
|
betainc,
|
|
45796
46322
|
betweennessCentrality,
|
|
45797
46323
|
bezierCurve,
|
|
46324
|
+
bfgs,
|
|
45798
46325
|
bigint,
|
|
45799
46326
|
bignumber,
|
|
45800
46327
|
bin,
|
|
@@ -46239,6 +46766,7 @@ export {
|
|
|
46239
46766
|
lowpassFilter,
|
|
46240
46767
|
lsolve,
|
|
46241
46768
|
lsolveAll,
|
|
46769
|
+
lsqBounded,
|
|
46242
46770
|
lucas,
|
|
46243
46771
|
lucasL,
|
|
46244
46772
|
lup,
|
|
@@ -46303,6 +46831,7 @@ export {
|
|
|
46303
46831
|
newtonInterp,
|
|
46304
46832
|
nextPrime,
|
|
46305
46833
|
nintegrate,
|
|
46834
|
+
nnls,
|
|
46306
46835
|
nodeOperations,
|
|
46307
46836
|
noncentralChi2PDF,
|
|
46308
46837
|
norm,
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BFGS quasi-Newton minimization of `f: ℝⁿ → ℝ`.
|
|
3
|
+
*
|
|
4
|
+
* Maintains an approximate inverse Hessian `H` (started at the identity) and
|
|
5
|
+
* updates it after every accepted step via the classic BFGS formula:
|
|
6
|
+
*
|
|
7
|
+
* s = x_{k+1} − x_k, y = g_{k+1} − g_k, ρ = 1 / (yᵀs)
|
|
8
|
+
* H ← (I − ρ s yᵀ) H (I − ρ y sᵀ) + ρ s sᵀ
|
|
9
|
+
*
|
|
10
|
+
* The update is skipped (H left unchanged) when `yᵀs ≤ 1e-12` — a near-zero
|
|
11
|
+
* or negative curvature pairing would make H indefinite. The search direction
|
|
12
|
+
* is `d = −H g`, accepted via a backtracking Armijo line search (`c1 = 1e-4`,
|
|
13
|
+
* starting step `α = 1`, halved up to 50 times).
|
|
14
|
+
*
|
|
15
|
+
* `opts.bounds`, if supplied, turns this into a lightweight **projected**
|
|
16
|
+
* BFGS: after every accepted step each coordinate is clipped into its
|
|
17
|
+
* `[lo, hi]` range. This is NOT the full active-set L-BFGS-B method (no
|
|
18
|
+
* distinction between free/active variables in the Hessian update) — it is a
|
|
19
|
+
* simple, effective projection that keeps the iterate feasible.
|
|
20
|
+
*
|
|
21
|
+
* Complements the derivative-free `minimize` (Nelder–Mead): BFGS converges
|
|
22
|
+
* superlinearly on smooth functions using gradient information (analytic or
|
|
23
|
+
* numeric), at the cost of assuming enough smoothness for the gradient/line
|
|
24
|
+
* search to behave.
|
|
25
|
+
*
|
|
26
|
+
* @packageDocumentation
|
|
27
|
+
*/
|
|
28
|
+
type f64 = number;
|
|
29
|
+
/** Options for {@link bfgs}. */
|
|
30
|
+
export interface BfgsOptions {
|
|
31
|
+
/**
|
|
32
|
+
* Analytic gradient `∇f(x)`. If omitted, a central-difference gradient is
|
|
33
|
+
* used with per-coordinate step `h_i = max(1, |x_i|) · cbrt(machine eps)`.
|
|
34
|
+
*/
|
|
35
|
+
grad?: (x: number[]) => number[];
|
|
36
|
+
/**
|
|
37
|
+
* Box constraints `[lo_i, hi_i]` per coordinate. After each accepted step,
|
|
38
|
+
* `x` is clipped into these bounds (projected BFGS — a lightweight
|
|
39
|
+
* approximation of L-BFGS-B, not the full active-set method).
|
|
40
|
+
*/
|
|
41
|
+
bounds?: [f64, f64][];
|
|
42
|
+
/** Convergence tolerance on `‖g‖∞` (default 1e-8). */
|
|
43
|
+
tol?: f64;
|
|
44
|
+
/** Maximum iterations (default 500). */
|
|
45
|
+
maxIter?: number;
|
|
46
|
+
}
|
|
47
|
+
/** Result of {@link bfgs}. */
|
|
48
|
+
export interface BfgsResult {
|
|
49
|
+
/** The minimizer. */
|
|
50
|
+
x: number[];
|
|
51
|
+
/** `f(x)` at the minimizer. */
|
|
52
|
+
fval: f64;
|
|
53
|
+
/** Number of iterations performed. */
|
|
54
|
+
iterations: number;
|
|
55
|
+
/** Whether `‖g‖∞ < tol` was reached within `maxIter`. */
|
|
56
|
+
converged: boolean;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Minimize `f: ℝⁿ → ℝ` from `x0` via BFGS quasi-Newton with an Armijo
|
|
60
|
+
* backtracking line search. Uses `opts.grad` if supplied, else a local
|
|
61
|
+
* central-difference gradient. `opts.bounds` clips each accepted step
|
|
62
|
+
* (projected BFGS, not full L-BFGS-B).
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* bfgs((v) => (1 - v[0]) ** 2 + 100 * (v[1] - v[0] ** 2) ** 2, [-1.2, 1])
|
|
66
|
+
* // => { x: ~[1, 1], fval: ~0, ... }
|
|
67
|
+
*/
|
|
68
|
+
export declare function bfgs(f: (x: number[]) => number, x0: number[], opts?: BfgsOptions): BfgsResult;
|
|
69
|
+
export {};
|
|
70
|
+
//# sourceMappingURL=bfgs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bfgs.d.ts","sourceRoot":"","sources":["../../src/numeric/bfgs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,KAAK,GAAG,GAAG,MAAM,CAAC;AAElB,gCAAgC;AAChC,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;IACjC;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACtB,sDAAsD;IACtD,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8BAA8B;AAC9B,MAAM,WAAW,UAAU;IACzB,qBAAqB;IACrB,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,+BAA+B;IAC/B,IAAI,EAAE,GAAG,CAAC;IACV,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,SAAS,EAAE,OAAO,CAAC;CACpB;AA+CD;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,WAAgB,GAAG,UAAU,CA8EjG"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constrained least squares: `nnls` (Lawson–Hanson active-set non-negative
|
|
3
|
+
* least squares) and `lsqBounded` (projected-gradient box-constrained least
|
|
4
|
+
* squares). Both minimize `||Ax - b||_2` subject to simple bound constraints
|
|
5
|
+
* on `x`, complementing the unconstrained `leastSquares` (`../typed/numeric.ts`).
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
/** Options shared by `nnls` and `lsqBounded`. */
|
|
10
|
+
export interface NnlsOptions {
|
|
11
|
+
/** Convergence tolerance (default 1e-10). */
|
|
12
|
+
tol?: number;
|
|
13
|
+
/** Maximum iterations (default `3 * n`). */
|
|
14
|
+
maxIter?: number;
|
|
15
|
+
}
|
|
16
|
+
/** Options for `lsqBounded` (same shape as `NnlsOptions`, kept as a distinct alias for clarity). */
|
|
17
|
+
export type LsqBoundedOptions = NnlsOptions;
|
|
18
|
+
/** Result of `nnls` / `lsqBounded`: the solution and its residual norm. */
|
|
19
|
+
export interface NnlsResult {
|
|
20
|
+
/** Solution vector x. */
|
|
21
|
+
x: number[];
|
|
22
|
+
/** `||Ax - b||_2` at the returned solution. */
|
|
23
|
+
residual: number;
|
|
24
|
+
}
|
|
25
|
+
/** Alias for `NnlsResult` (used by `lsqBounded`). */
|
|
26
|
+
export type LsqBoundedResult = NnlsResult;
|
|
27
|
+
/**
|
|
28
|
+
* Non-negative least squares: `min ||Ax - b||_2 s.t. x >= 0`, via the
|
|
29
|
+
* Lawson–Hanson active-set algorithm.
|
|
30
|
+
*
|
|
31
|
+
* Maintains a "passive" set `P` of coordinates allowed to be nonzero (all
|
|
32
|
+
* others held at 0). Each outer iteration adds to `P` the inactive index
|
|
33
|
+
* with the most positive gradient component `w_j = (A^T(b - Ax))_j`, solves
|
|
34
|
+
* the unconstrained least-squares problem restricted to the columns in `P`
|
|
35
|
+
* (via `leastSquares`), and — if that restricted solution has any
|
|
36
|
+
* non-positive component — walks back along the line from the current `x`
|
|
37
|
+
* toward it until the first such component would hit zero, dropping that
|
|
38
|
+
* index from `P` and re-solving. Terminates when no inactive index has a
|
|
39
|
+
* positive gradient (KKT optimality) or `maxIter` is exhausted.
|
|
40
|
+
*
|
|
41
|
+
* @param A - Matrix (m x n)
|
|
42
|
+
* @param b - Right-hand side (length m)
|
|
43
|
+
* @param opts - Options (tol, maxIter; default maxIter = 3n)
|
|
44
|
+
* @returns `{ x, residual }` with `x >= 0` (up to `tol`) and `residual = ||Ax - b||_2`
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* nnls([[1, 0], [0, 1]], [3, -2]) // => { x: [3, 0], residual: 2 }
|
|
48
|
+
*/
|
|
49
|
+
export declare function nnls(A: number[][], b: number[], opts?: NnlsOptions): NnlsResult;
|
|
50
|
+
/**
|
|
51
|
+
* Box-constrained least squares: `min ||Ax - b||_2 s.t. lower <= x <= upper`,
|
|
52
|
+
* via projected-gradient descent.
|
|
53
|
+
*
|
|
54
|
+
* Each iteration computes the gradient `g = A^T(Ax - b)` of the smooth
|
|
55
|
+
* objective `f(x) = (1/2)||Ax - b||^2`, takes a candidate step
|
|
56
|
+
* `x - alpha*g` projected (clipped) into the box, and backtracks
|
|
57
|
+
* (`alpha /= 2`) until the projected step does not increase `f`. Converges
|
|
58
|
+
* when the projected-gradient norm `||x - clip(x - g, lower, upper)||` is
|
|
59
|
+
* below `tol`.
|
|
60
|
+
*
|
|
61
|
+
* @param A - Matrix (m x n)
|
|
62
|
+
* @param b - Right-hand side (length m)
|
|
63
|
+
* @param lower - Per-component lower bounds (length n)
|
|
64
|
+
* @param upper - Per-component upper bounds (length n)
|
|
65
|
+
* @param opts - Options (tol, maxIter; default maxIter = max(200, 20n))
|
|
66
|
+
* @returns `{ x, residual }` with `lower <= x <= upper` and `residual = ||Ax - b||_2`
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* lsqBounded([[1, 0], [0, 1]], [5, -3], [0, 0], [2, 2]) // => { x: [2, 0], residual: ... }
|
|
70
|
+
*/
|
|
71
|
+
export declare function lsqBounded(A: number[][], b: number[], lower: number[], upper: number[], opts?: LsqBoundedOptions): LsqBoundedResult;
|
|
72
|
+
//# sourceMappingURL=nnls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nnls.d.ts","sourceRoot":"","sources":["../../src/numeric/nnls.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,6CAA6C;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,oGAAoG;AACpG,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAE5C,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IACzB,yBAAyB;IACzB,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qDAAqD;AACrD,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC;AA8B1C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,WAAgB,GAAG,UAAU,CA6EnF;AAOD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CACxB,CAAC,EAAE,MAAM,EAAE,EAAE,EACb,CAAC,EAAE,MAAM,EAAE,EACX,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,GAAE,iBAAsB,GAC3B,gBAAgB,CAgElB"}
|
package/dist/typed/numeric.d.ts
CHANGED
|
@@ -367,15 +367,36 @@ export declare function padeApproximant(coeffs: number[], m: i32, n: i32): {
|
|
|
367
367
|
*/
|
|
368
368
|
export declare function quadprog(H: number[][], f: number[], A: number[][], b: number[]): number[];
|
|
369
369
|
/**
|
|
370
|
-
*
|
|
371
|
-
*
|
|
370
|
+
* Options form of {@link linprog}: minimize c^T x subject to A_ub x <= b_ub,
|
|
371
|
+
* A_eq x = b_eq, and per-variable bounds.
|
|
372
|
+
*/
|
|
373
|
+
export interface LinprogOptions {
|
|
374
|
+
A_ub?: number[][];
|
|
375
|
+
b_ub?: number[];
|
|
376
|
+
A_eq?: number[][];
|
|
377
|
+
b_eq?: number[];
|
|
378
|
+
/** Per-variable [lower, upper] bounds; null = unbounded. Default: [0, null] for every variable. */
|
|
379
|
+
bounds?: readonly (readonly [number | null, number | null])[];
|
|
380
|
+
}
|
|
381
|
+
/** Result of the options form of {@link linprog}. */
|
|
382
|
+
export interface LinprogResult {
|
|
383
|
+
x: number[];
|
|
384
|
+
fun: number;
|
|
385
|
+
success: boolean;
|
|
386
|
+
status: 'optimal' | 'infeasible' | 'unbounded';
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Linear programming: minimize c^T x.
|
|
372
390
|
*
|
|
373
|
-
*
|
|
374
|
-
*
|
|
375
|
-
*
|
|
376
|
-
*
|
|
391
|
+
* Two overloads:
|
|
392
|
+
* - Legacy positional form `linprog(c, A_ub, b_ub)` — subject to `A_ub x <= b_ub`,
|
|
393
|
+
* `x >= 0`; returns the solution vector `x` (or `null` if unbounded).
|
|
394
|
+
* - Options form `linprog(c, { A_ub, b_ub, A_eq, b_eq, bounds })` — a two-phase
|
|
395
|
+
* simplex supporting equality constraints, variable bounds, and negative-RHS
|
|
396
|
+
* rows; returns `{ x, fun, success, status }`.
|
|
377
397
|
*/
|
|
378
|
-
export declare function linprog(c: number[],
|
|
398
|
+
export declare function linprog(c: number[], A_ub: number[][], b_ub: number[]): number[] | null;
|
|
399
|
+
export declare function linprog(c: number[], opts: LinprogOptions): LinprogResult;
|
|
379
400
|
/**
|
|
380
401
|
* Simple 1D PDE solver using finite differences (heat equation).
|
|
381
402
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numeric.d.ts","sourceRoot":"","sources":["../../src/typed/numeric.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"numeric.d.ts","sourceRoot":"","sources":["../../src/typed/numeric.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED