mathjs 11.3.2 → 11.4.0
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +25 -0
- package/lib/browser/math.js +1 -1
- package/lib/browser/math.js.LICENSE.txt +2 -2
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/entry/dependenciesAny/dependenciesLyap.generated.js +26 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesPolynomialRoot.generated.js +42 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSchur.generated.js +30 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSylvester.generated.js +46 -0
- package/lib/cjs/entry/dependenciesAny.generated.js +28 -0
- package/lib/cjs/entry/impureFunctionsAny.generated.js +21 -17
- package/lib/cjs/entry/pureFunctionsAny.generated.js +100 -48
- package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +8 -0
- package/lib/cjs/expression/embeddedDocs/function/algebra/polynomialRoot.js +15 -0
- package/lib/cjs/expression/embeddedDocs/function/arithmetic/sqrtm.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/matrix/lyap.js +15 -0
- package/lib/cjs/expression/embeddedDocs/function/matrix/schur.js +15 -0
- package/lib/cjs/expression/embeddedDocs/function/matrix/sylvester.js +15 -0
- package/lib/cjs/factoriesAny.js +28 -0
- package/lib/cjs/function/algebra/decomposition/schur.js +75 -0
- package/lib/cjs/function/algebra/lyap.js +57 -0
- package/lib/cjs/function/algebra/polynomialRoot.js +139 -0
- package/lib/cjs/function/algebra/simplify/wildcards.js +38 -0
- package/lib/cjs/function/algebra/simplify.js +104 -44
- package/lib/cjs/function/algebra/simplifyConstant.js +29 -12
- package/lib/cjs/function/algebra/sylvester.js +127 -0
- package/lib/cjs/function/matrix/forEach.js +1 -1
- package/lib/cjs/function/matrix/sqrtm.js +1 -1
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/type/matrix/SparseMatrix.js +4 -2
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesLyap.generated.js +18 -0
- package/lib/esm/entry/dependenciesAny/dependenciesPolynomialRoot.generated.js +34 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSchur.generated.js +22 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSylvester.generated.js +38 -0
- package/lib/esm/entry/dependenciesAny.generated.js +4 -0
- package/lib/esm/entry/impureFunctionsAny.generated.js +22 -18
- package/lib/esm/entry/pureFunctionsAny.generated.js +87 -39
- package/lib/esm/expression/embeddedDocs/embeddedDocs.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/algebra/polynomialRoot.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/arithmetic/sqrtm.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/matrix/lyap.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/matrix/schur.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/matrix/sylvester.js +8 -0
- package/lib/esm/factoriesAny.js +4 -0
- package/lib/esm/function/algebra/decomposition/schur.js +70 -0
- package/lib/esm/function/algebra/lyap.js +52 -0
- package/lib/esm/function/algebra/polynomialRoot.js +122 -0
- package/lib/esm/function/algebra/simplify/wildcards.js +20 -0
- package/lib/esm/function/algebra/simplify.js +105 -45
- package/lib/esm/function/algebra/simplifyConstant.js +29 -12
- package/lib/esm/function/algebra/sylvester.js +118 -0
- package/lib/esm/function/matrix/forEach.js +1 -1
- package/lib/esm/function/matrix/sqrtm.js +1 -1
- package/lib/esm/type/matrix/SparseMatrix.js +4 -2
- package/lib/esm/version.js +1 -1
- package/package.json +13 -13
- package/types/index.d.ts +85 -7
@@ -5,7 +5,7 @@
|
|
5
5
|
import { config } from './configReadonly.js';
|
6
6
|
import { createBigNumberClass, createComplexClass, createE, createFalse, createFineStructure, createFractionClass, createI, createInfinity, createLN10, createLOG10E, createMatrixClass, createNaN, createNull, createPhi, createRangeClass, createResultSet, createSQRT1_2,
|
7
7
|
// eslint-disable-line camelcase
|
8
|
-
createSackurTetrode, createTau, createTrue, createVersion, createDenseMatrixClass, createEfimovFactor, createLN2, createPi, createReplacer, createSQRT2, createTyped, createUnaryPlus, createWeakMixingAngle, createAbs, createAcos, createAcot, createAcsc, createAddScalar, createArg, createAsech, createAsinh, createAtan, createAtanh, createBignumber, createBitNot, createBoolean, createClone, createCombinations, createComplex, createConj, createCosh, createCoth, createCsc, createCube, createEqualScalar, createErf, createExp, createExpm1, createFilter, createForEach, createFormat, createGetMatrixDataType, createHex, createIm, createIsInteger, createIsNegative, createIsPositive, createIsZero, createLOG2E, createLgamma, createLog10, createLog2, createMap, createMultiplyScalar, createNot, createNumber, createOct, createPickRandom, createPrint, createRandom, createRe, createSec, createSign, createSin, createSparseMatrixClass, createSplitUnit, createSquare, createString, createTan, createTypeOf, createAcosh, createAcsch, createApply, createAsec, createBin, createCombinationsWithRep, createCos, createCsch, createIsNaN, createIsPrime, createRandomInt, createSech, createSinh, createSparse, createSqrt, createTanh, createUnaryMinus, createAcoth, createCot, createFraction, createIsNumeric, createMatrix, createMatrixFromFunction, createMod, createNthRoot, createNumeric, createOr, createProd, createReshape, createSize, createSmaller, createSqueeze, createSubset, createSubtract, createTo, createTranspose, createXgcd, createZeros, createAnd, createBitAnd, createBitXor, createCbrt, createCompare, createCompareText, createConcat, createCount, createCtranspose, createDiag, createDivideScalar, createDotDivide, createEqual, createFft, createFlatten, createGcd, createHasNumericValue, createHypot, createIfft, createKron, createLargerEq, createLeftShift, createLsolve, createMatrixFromColumns, createMin, createMode, createNthRoots, createOnes, createPartitionSelect, createResize, createRightArithShift, createRound, createSmallerEq, createUnequal, createUsolve, createXor, createAdd, createAtan2, createBitOr, createCatalan, createCompareNatural, createCumSum, createDeepEqual, createDiff, createDot, createEqualText, createFloor, createIdentity, createInvmod, createLarger, createLog, createLsolveAll, createMatrixFromRows, createMultiply, createQr, createRange, createRightLogShift, createSetSize, createSlu, createSum, createTrace, createUsolveAll, createAsin, createCeil, createComposition, createCross, createDet, createDistance, createDotMultiply, createFibonacciHeapClass, createFix, createImmutableDenseMatrixClass, createIndexClass, createIntersect, createLcm, createLog1p, createMax, createQuantileSeq, createRow, createSetCartesian, createSetDistinct, createSetIsSubset, createSetPowerset, createSort, createColumn, createIndex, createInv, createPinv, createPow, createSetDifference, createSetMultiplicity, createSpaClass, createSqrtm, createUnitClass, createVacuumImpedance, createWienDisplacement, createAtomicMass, createBohrMagneton, createBoltzmann, createConductanceQuantum, createCreateUnit, createDeuteronMass, createDotPow, createElectricConstant, createElementaryCharge, createExpm, createFaraday, createFirstRadiation, createGamma, createGravitationConstant, createHartreeEnergy, createKlitzing, createLoschmidt, createMagneticConstant, createMolarMass, createMolarPlanckConstant, createNeutronMass, createNuclearMagneton, createPlanckCharge, createPlanckLength, createPlanckTemperature, createProtonMass, createReducedPlanckConstant, createRydberg,
|
8
|
+
createSackurTetrode, createTau, createTrue, createVersion, createDenseMatrixClass, createEfimovFactor, createLN2, createPi, createReplacer, createSQRT2, createTyped, createUnaryPlus, createWeakMixingAngle, createAbs, createAcos, createAcot, createAcsc, createAddScalar, createArg, createAsech, createAsinh, createAtan, createAtanh, createBignumber, createBitNot, createBoolean, createClone, createCombinations, createComplex, createConj, createCosh, createCoth, createCsc, createCube, createEqualScalar, createErf, createExp, createExpm1, createFilter, createForEach, createFormat, createGetMatrixDataType, createHex, createIm, createIsInteger, createIsNegative, createIsPositive, createIsZero, createLOG2E, createLgamma, createLog10, createLog2, createMap, createMultiplyScalar, createNot, createNumber, createOct, createPickRandom, createPrint, createRandom, createRe, createSec, createSign, createSin, createSparseMatrixClass, createSplitUnit, createSquare, createString, createTan, createTypeOf, createAcosh, createAcsch, createApply, createAsec, createBin, createCombinationsWithRep, createCos, createCsch, createIsNaN, createIsPrime, createRandomInt, createSech, createSinh, createSparse, createSqrt, createTanh, createUnaryMinus, createAcoth, createCot, createFraction, createIsNumeric, createMatrix, createMatrixFromFunction, createMod, createNthRoot, createNumeric, createOr, createProd, createReshape, createSize, createSmaller, createSqueeze, createSubset, createSubtract, createTo, createTranspose, createXgcd, createZeros, createAnd, createBitAnd, createBitXor, createCbrt, createCompare, createCompareText, createConcat, createCount, createCtranspose, createDiag, createDivideScalar, createDotDivide, createEqual, createFft, createFlatten, createGcd, createHasNumericValue, createHypot, createIfft, createKron, createLargerEq, createLeftShift, createLsolve, createMatrixFromColumns, createMin, createMode, createNthRoots, createOnes, createPartitionSelect, createResize, createRightArithShift, createRound, createSmallerEq, createUnequal, createUsolve, createXor, createAdd, createAtan2, createBitOr, createCatalan, createCompareNatural, createCumSum, createDeepEqual, createDiff, createDot, createEqualText, createFloor, createIdentity, createInvmod, createLarger, createLog, createLsolveAll, createMatrixFromRows, createMultiply, createQr, createRange, createRightLogShift, createSetSize, createSlu, createSum, createTrace, createUsolveAll, createAsin, createCeil, createComposition, createCross, createDet, createDistance, createDotMultiply, createFibonacciHeapClass, createFix, createImmutableDenseMatrixClass, createIndexClass, createIntersect, createLcm, createLog1p, createMax, createQuantileSeq, createRow, createSetCartesian, createSetDistinct, createSetIsSubset, createSetPowerset, createSort, createColumn, createIndex, createInv, createPinv, createPow, createSetDifference, createSetMultiplicity, createSpaClass, createSqrtm, createUnitClass, createVacuumImpedance, createWienDisplacement, createAtomicMass, createBohrMagneton, createBoltzmann, createConductanceQuantum, createCreateUnit, createDeuteronMass, createDotPow, createElectricConstant, createElementaryCharge, createExpm, createFaraday, createFirstRadiation, createGamma, createGravitationConstant, createHartreeEnergy, createKlitzing, createLoschmidt, createMagneticConstant, createMolarMass, createMolarPlanckConstant, createNeutronMass, createNuclearMagneton, createPlanckCharge, createPlanckLength, createPlanckTemperature, createProtonMass, createReducedPlanckConstant, createRydberg, createSecondRadiation, createSetSymDifference, createSpeedOfLight, createStefanBoltzmann, createThomsonCrossSection, createAvogadro, createBohrRadius, createCoulomb, createDivide, createElectronMass, createFactorial, createGravity, createInverseConductanceQuantum, createLup, createMagneticFluxQuantum, createMolarMassC12, createMultinomial, createPermutations, createPlanckMass, createPolynomialRoot, createSetIntersect, createStirlingS2, createUnitFunction, createBellNumbers, createEigs, createFermiCoupling, createMean, createMolarVolume, createPlanckConstant, createQuantumOfCirculation, createSetUnion, createVariance, createClassicalElectronRadius, createLusolve, createMedian, createKldivergence, createMad, createStd, createGasConstant, createNorm, createRotationMatrix, createPlanckTime, createSchur, createRotate, createSylvester, createLyap } from '../factoriesAny.js';
|
9
9
|
export var BigNumber = /* #__PURE__ */createBigNumberClass({
|
10
10
|
config
|
11
11
|
});
|
@@ -1308,10 +1308,15 @@ export var rydberg = /* #__PURE__ */createRydberg({
|
|
1308
1308
|
Unit,
|
1309
1309
|
config
|
1310
1310
|
});
|
1311
|
-
export var
|
1312
|
-
|
1311
|
+
export var secondRadiation = /* #__PURE__ */createSecondRadiation({
|
1312
|
+
BigNumber,
|
1313
|
+
Unit,
|
1314
|
+
config
|
1315
|
+
});
|
1316
|
+
export var setSymDifference = /* #__PURE__ */createSetSymDifference({
|
1313
1317
|
Index,
|
1314
|
-
|
1318
|
+
concat,
|
1319
|
+
setDifference,
|
1315
1320
|
size,
|
1316
1321
|
subset,
|
1317
1322
|
typed
|
@@ -1416,15 +1421,28 @@ export var planckMass = /* #__PURE__ */createPlanckMass({
|
|
1416
1421
|
Unit,
|
1417
1422
|
config
|
1418
1423
|
});
|
1419
|
-
export var
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1424
|
+
export var polynomialRoot = /* #__PURE__ */createPolynomialRoot({
|
1425
|
+
add,
|
1426
|
+
cbrt,
|
1427
|
+
divide,
|
1428
|
+
equalScalar,
|
1429
|
+
im,
|
1430
|
+
isZero,
|
1431
|
+
multiply,
|
1432
|
+
re,
|
1433
|
+
sqrt,
|
1434
|
+
subtract,
|
1435
|
+
typeOf,
|
1436
|
+
typed,
|
1437
|
+
unaryMinus
|
1423
1438
|
});
|
1424
|
-
export var
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1439
|
+
export var setIntersect = /* #__PURE__ */createSetIntersect({
|
1440
|
+
DenseMatrix,
|
1441
|
+
Index,
|
1442
|
+
compareNatural,
|
1443
|
+
size,
|
1444
|
+
subset,
|
1445
|
+
typed
|
1428
1446
|
});
|
1429
1447
|
export var stirlingS2 = /* #__PURE__ */createStirlingS2({
|
1430
1448
|
bignumber,
|
@@ -1505,10 +1523,16 @@ export var planckConstant = /* #__PURE__ */createPlanckConstant({
|
|
1505
1523
|
Unit,
|
1506
1524
|
config
|
1507
1525
|
});
|
1508
|
-
export var
|
1526
|
+
export var quantumOfCirculation = /* #__PURE__ */createQuantumOfCirculation({
|
1527
|
+
BigNumber,
|
1528
|
+
Unit,
|
1529
|
+
config
|
1530
|
+
});
|
1531
|
+
export var setUnion = /* #__PURE__ */createSetUnion({
|
1509
1532
|
Index,
|
1510
1533
|
concat,
|
1511
|
-
|
1534
|
+
setIntersect,
|
1535
|
+
setSymDifference,
|
1512
1536
|
size,
|
1513
1537
|
subset,
|
1514
1538
|
typed
|
@@ -1543,13 +1567,22 @@ export var median = /* #__PURE__ */createMedian({
|
|
1543
1567
|
partitionSelect,
|
1544
1568
|
typed
|
1545
1569
|
});
|
1546
|
-
export var
|
1547
|
-
|
1548
|
-
|
1549
|
-
|
1550
|
-
|
1551
|
-
|
1552
|
-
|
1570
|
+
export var kldivergence = /* #__PURE__ */createKldivergence({
|
1571
|
+
divide,
|
1572
|
+
dotDivide,
|
1573
|
+
isNumeric,
|
1574
|
+
log,
|
1575
|
+
map,
|
1576
|
+
matrix,
|
1577
|
+
multiply,
|
1578
|
+
sum,
|
1579
|
+
typed
|
1580
|
+
});
|
1581
|
+
export var mad = /* #__PURE__ */createMad({
|
1582
|
+
abs,
|
1583
|
+
map,
|
1584
|
+
median,
|
1585
|
+
subtract,
|
1553
1586
|
typed
|
1554
1587
|
});
|
1555
1588
|
export var std = /* #__PURE__ */createStd({
|
@@ -1563,13 +1596,6 @@ export var gasConstant = /* #__PURE__ */createGasConstant({
|
|
1563
1596
|
Unit,
|
1564
1597
|
config
|
1565
1598
|
});
|
1566
|
-
export var mad = /* #__PURE__ */createMad({
|
1567
|
-
abs,
|
1568
|
-
map,
|
1569
|
-
median,
|
1570
|
-
subtract,
|
1571
|
-
typed
|
1572
|
-
});
|
1573
1599
|
export var norm = /* #__PURE__ */createNorm({
|
1574
1600
|
abs,
|
1575
1601
|
add,
|
@@ -1599,15 +1625,18 @@ export var rotationMatrix = /* #__PURE__ */createRotationMatrix({
|
|
1599
1625
|
typed,
|
1600
1626
|
unaryMinus
|
1601
1627
|
});
|
1602
|
-
export var
|
1603
|
-
|
1604
|
-
|
1605
|
-
|
1606
|
-
|
1607
|
-
|
1628
|
+
export var planckTime = /* #__PURE__ */createPlanckTime({
|
1629
|
+
BigNumber,
|
1630
|
+
Unit,
|
1631
|
+
config
|
1632
|
+
});
|
1633
|
+
export var schur = /* #__PURE__ */createSchur({
|
1634
|
+
identity,
|
1608
1635
|
matrix,
|
1609
1636
|
multiply,
|
1610
|
-
|
1637
|
+
norm,
|
1638
|
+
qr,
|
1639
|
+
subtract,
|
1611
1640
|
typed
|
1612
1641
|
});
|
1613
1642
|
export var rotate = /* #__PURE__ */createRotate({
|
@@ -1615,8 +1644,27 @@ export var rotate = /* #__PURE__ */createRotate({
|
|
1615
1644
|
rotationMatrix,
|
1616
1645
|
typed
|
1617
1646
|
});
|
1618
|
-
export var
|
1619
|
-
|
1620
|
-
|
1621
|
-
|
1647
|
+
export var sylvester = /* #__PURE__ */createSylvester({
|
1648
|
+
abs,
|
1649
|
+
add,
|
1650
|
+
concat,
|
1651
|
+
identity,
|
1652
|
+
index,
|
1653
|
+
lusolve,
|
1654
|
+
matrix,
|
1655
|
+
matrixFromColumns,
|
1656
|
+
multiply,
|
1657
|
+
range,
|
1658
|
+
schur,
|
1659
|
+
subset,
|
1660
|
+
subtract,
|
1661
|
+
transpose,
|
1662
|
+
typed
|
1663
|
+
});
|
1664
|
+
export var lyap = /* #__PURE__ */createLyap({
|
1665
|
+
matrix,
|
1666
|
+
multiply,
|
1667
|
+
sylvester,
|
1668
|
+
transpose,
|
1669
|
+
typed
|
1622
1670
|
});
|
@@ -36,6 +36,7 @@ import { lsolveDocs } from './function/algebra/lsolve.js';
|
|
36
36
|
import { lsolveAllDocs } from './function/algebra/lsolveAll.js';
|
37
37
|
import { lupDocs } from './function/algebra/lup.js';
|
38
38
|
import { lusolveDocs } from './function/algebra/lusolve.js';
|
39
|
+
import { polynomialRootDocs } from './function/algebra/polynomialRoot.js';
|
39
40
|
import { qrDocs } from './function/algebra/qr.js';
|
40
41
|
import { rationalizeDocs } from './function/algebra/rationalize.js';
|
41
42
|
import { resolveDocs } from './function/algebra/resolve.js';
|
@@ -78,6 +79,9 @@ import { roundDocs } from './function/arithmetic/round.js';
|
|
78
79
|
import { signDocs } from './function/arithmetic/sign.js';
|
79
80
|
import { sqrtDocs } from './function/arithmetic/sqrt.js';
|
80
81
|
import { sqrtmDocs } from './function/arithmetic/sqrtm.js';
|
82
|
+
import { sylvesterDocs } from './function/matrix/sylvester.js';
|
83
|
+
import { schurDocs } from './function/matrix/schur.js';
|
84
|
+
import { lyapDocs } from './function/matrix/lyap.js';
|
81
85
|
import { squareDocs } from './function/arithmetic/square.js';
|
82
86
|
import { subtractDocs } from './function/arithmetic/subtract.js';
|
83
87
|
import { unaryMinusDocs } from './function/arithmetic/unaryMinus.js';
|
@@ -478,6 +482,7 @@ export var embeddedDocs = {
|
|
478
482
|
lup: lupDocs,
|
479
483
|
lusolve: lusolveDocs,
|
480
484
|
leafCount: leafCountDocs,
|
485
|
+
polynomialRoot: polynomialRootDocs,
|
481
486
|
resolve: resolveDocs,
|
482
487
|
simplify: simplifyDocs,
|
483
488
|
simplifyConstant: simplifyConstantDocs,
|
@@ -599,6 +604,9 @@ export var embeddedDocs = {
|
|
599
604
|
zeros: zerosDocs,
|
600
605
|
fft: fftDocs,
|
601
606
|
ifft: ifftDocs,
|
607
|
+
sylvester: sylvesterDocs,
|
608
|
+
schur: schurDocs,
|
609
|
+
lyap: lyapDocs,
|
602
610
|
// functions - probability
|
603
611
|
combinations: combinationsDocs,
|
604
612
|
combinationsWithRep: combinationsWithRepDocs,
|
@@ -0,0 +1,8 @@
|
|
1
|
+
export var polynomialRootDocs = {
|
2
|
+
name: 'polynomialRoot',
|
3
|
+
category: 'Algebra',
|
4
|
+
syntax: ['x=polynomialRoot(-6, 3)', 'x=polynomialRoot(4, -4, 1)', 'x=polynomialRoot(-8, 12, -6, 1)'],
|
5
|
+
description: 'Finds the roots of a univariate polynomial given by its coefficients starting from constant, linear, and so on, increasing in degree.',
|
6
|
+
examples: ['a = polynomialRoot(-6, 11, -6 1)'],
|
7
|
+
seealso: ['cbrt', 'sqrt']
|
8
|
+
};
|
@@ -3,6 +3,6 @@ export var sqrtmDocs = {
|
|
3
3
|
category: 'Arithmetic',
|
4
4
|
syntax: ['sqrtm(x)'],
|
5
5
|
description: 'Calculate the principal square root of a square matrix. The principal square root matrix `X` of another matrix `A` is such that `X * X = A`.',
|
6
|
-
examples: ['sqrtm([[
|
6
|
+
examples: ['sqrtm([[33, 24], [48, 57]])'],
|
7
7
|
seealso: ['sqrt', 'abs', 'square', 'multiply']
|
8
8
|
};
|
@@ -0,0 +1,8 @@
|
|
1
|
+
export var lyapDocs = {
|
2
|
+
name: 'lyap',
|
3
|
+
category: 'Matrix',
|
4
|
+
syntax: ['lyap(A,Q)'],
|
5
|
+
description: 'Solves the Continuous-time Lyapunov equation AP+PA\'+Q=0 for P',
|
6
|
+
examples: ['lyap([[-2, 0], [1, -4]], [[3, 1], [1, 3]])', 'lyap(A,Q)'],
|
7
|
+
seealso: ['schur', 'sylvester']
|
8
|
+
};
|
@@ -0,0 +1,8 @@
|
|
1
|
+
export var sylvesterDocs = {
|
2
|
+
name: 'sylvester',
|
3
|
+
category: 'Matrix',
|
4
|
+
syntax: ['sylvester(A,B,C)'],
|
5
|
+
description: 'Solves the real-valued Sylvester equation AX+XB=C for X',
|
6
|
+
examples: ['sylvester([[-1, -2], [1, 1]], [[-2, 1], [-1, 2]], [[-3, 2], [3, 0]])', 'sylvester(A,B,C)'],
|
7
|
+
seealso: ['schur', 'lyap']
|
8
|
+
};
|
package/lib/esm/factoriesAny.js
CHANGED
@@ -210,6 +210,7 @@ export { createLup } from './function/algebra/decomposition/lup.js';
|
|
210
210
|
export { createQr } from './function/algebra/decomposition/qr.js';
|
211
211
|
export { createSlu } from './function/algebra/decomposition/slu.js';
|
212
212
|
export { createLusolve } from './function/algebra/solver/lusolve.js';
|
213
|
+
export { createPolynomialRoot } from './function/algebra/polynomialRoot.js';
|
213
214
|
export { createHelpClass } from './expression/Help.js';
|
214
215
|
export { createChainClass } from './type/chain/Chain.js';
|
215
216
|
export { createHelp } from './expression/function/help.js';
|
@@ -220,6 +221,9 @@ export { createPinv } from './function/matrix/pinv.js';
|
|
220
221
|
export { createEigs } from './function/matrix/eigs.js';
|
221
222
|
export { createExpm } from './function/matrix/expm.js';
|
222
223
|
export { createSqrtm } from './function/matrix/sqrtm.js';
|
224
|
+
export { createSylvester } from './function/algebra/sylvester.js';
|
225
|
+
export { createSchur } from './function/algebra/decomposition/schur.js';
|
226
|
+
export { createLyap } from './function/algebra/lyap.js';
|
223
227
|
export { createDivide } from './function/arithmetic/divide.js';
|
224
228
|
export { createDistance } from './function/geometry/distance.js';
|
225
229
|
export { createIntersect } from './function/geometry/intersect.js';
|
@@ -0,0 +1,70 @@
|
|
1
|
+
import { factory } from '../../../utils/factory.js';
|
2
|
+
var name = 'schur';
|
3
|
+
var dependencies = ['typed', 'matrix', 'identity', 'multiply', 'qr', 'norm', 'subtract'];
|
4
|
+
export var createSchur = /* #__PURE__ */factory(name, dependencies, _ref => {
|
5
|
+
var {
|
6
|
+
typed,
|
7
|
+
matrix,
|
8
|
+
identity,
|
9
|
+
multiply,
|
10
|
+
qr,
|
11
|
+
norm,
|
12
|
+
subtract
|
13
|
+
} = _ref;
|
14
|
+
/**
|
15
|
+
*
|
16
|
+
* Performs a real Schur decomposition of the real matrix A = UTU' where U is orthogonal
|
17
|
+
* and T is upper quasi-triangular.
|
18
|
+
* https://en.wikipedia.org/wiki/Schur_decomposition
|
19
|
+
*
|
20
|
+
* Syntax:
|
21
|
+
*
|
22
|
+
* math.schur(A)
|
23
|
+
*
|
24
|
+
* Examples:
|
25
|
+
*
|
26
|
+
* const A = [[1, 0], [-4, 3]]
|
27
|
+
* math.schur(A) // returns {T: [[3, 4], [0, 1]], R: [[0, 1], [-1, 0]]}
|
28
|
+
*
|
29
|
+
* See also:
|
30
|
+
*
|
31
|
+
* sylvester, lyap, qr
|
32
|
+
*
|
33
|
+
* @param {Array | Matrix} A Matrix A
|
34
|
+
* @return {{U: Array | Matrix, T: Array | Matrix}} Object containing both matrix U and T of the Schur Decomposition A=UTU'
|
35
|
+
*/
|
36
|
+
return typed(name, {
|
37
|
+
Array: function Array(X) {
|
38
|
+
var r = _schur(matrix(X));
|
39
|
+
return {
|
40
|
+
U: r.U.valueOf(),
|
41
|
+
T: r.T.valueOf()
|
42
|
+
};
|
43
|
+
},
|
44
|
+
Matrix: function Matrix(X) {
|
45
|
+
return _schur(X);
|
46
|
+
}
|
47
|
+
});
|
48
|
+
function _schur(X) {
|
49
|
+
var n = X.size()[0];
|
50
|
+
var A = X;
|
51
|
+
var U = identity(n);
|
52
|
+
var k = 0;
|
53
|
+
var A0;
|
54
|
+
do {
|
55
|
+
A0 = A;
|
56
|
+
var QR = qr(A);
|
57
|
+
var Q = QR.Q;
|
58
|
+
var R = QR.R;
|
59
|
+
A = multiply(R, Q);
|
60
|
+
U = multiply(U, Q);
|
61
|
+
if (k++ > 100) {
|
62
|
+
break;
|
63
|
+
}
|
64
|
+
} while (norm(subtract(A, A0)) > 1e-4);
|
65
|
+
return {
|
66
|
+
U,
|
67
|
+
T: A
|
68
|
+
};
|
69
|
+
}
|
70
|
+
});
|
@@ -0,0 +1,52 @@
|
|
1
|
+
import { factory } from '../../utils/factory.js';
|
2
|
+
var name = 'lyap';
|
3
|
+
var dependencies = ['typed', 'matrix', 'sylvester', 'multiply', 'transpose'];
|
4
|
+
export var createLyap = /* #__PURE__ */factory(name, dependencies, _ref => {
|
5
|
+
var {
|
6
|
+
typed,
|
7
|
+
matrix,
|
8
|
+
sylvester,
|
9
|
+
multiply,
|
10
|
+
transpose
|
11
|
+
} = _ref;
|
12
|
+
/**
|
13
|
+
*
|
14
|
+
* Solves the Continuous-time Lyapunov equation AP+PA'+Q=0 for P, where
|
15
|
+
* Q is an input matrix. When Q is symmetric, P is also symmetric. Notice
|
16
|
+
* that different equivalent definitions exist for the Continuous-time
|
17
|
+
* Lyapunov equation.
|
18
|
+
* https://en.wikipedia.org/wiki/Lyapunov_equation
|
19
|
+
*
|
20
|
+
* Syntax:
|
21
|
+
*
|
22
|
+
* math.lyap(A, Q)
|
23
|
+
*
|
24
|
+
* Examples:
|
25
|
+
*
|
26
|
+
* const A = [[-2, 0], [1, -4]]
|
27
|
+
* const Q = [[3, 1], [1, 3]]
|
28
|
+
* const P = math.lyap(A, Q)
|
29
|
+
*
|
30
|
+
* See also:
|
31
|
+
*
|
32
|
+
* sylvester, schur
|
33
|
+
*
|
34
|
+
* @param {Matrix | Array} A Matrix A
|
35
|
+
* @param {Matrix | Array} Q Matrix Q
|
36
|
+
* @return {Matrix | Array} Matrix P solution to the Continuous-time Lyapunov equation AP+PA'=Q
|
37
|
+
*/
|
38
|
+
return typed(name, {
|
39
|
+
'Matrix, Matrix': function MatrixMatrix(A, Q) {
|
40
|
+
return sylvester(A, transpose(A), multiply(-1, Q));
|
41
|
+
},
|
42
|
+
'Array, Matrix': function ArrayMatrix(A, Q) {
|
43
|
+
return sylvester(matrix(A), transpose(matrix(A)), multiply(-1, Q));
|
44
|
+
},
|
45
|
+
'Matrix, Array': function MatrixArray(A, Q) {
|
46
|
+
return sylvester(A, transpose(matrix(A)), matrix(multiply(-1, Q)));
|
47
|
+
},
|
48
|
+
'Array, Array': function ArrayArray(A, Q) {
|
49
|
+
return sylvester(matrix(A), transpose(matrix(A)), matrix(multiply(-1, Q))).toArray();
|
50
|
+
}
|
51
|
+
});
|
52
|
+
});
|
@@ -0,0 +1,122 @@
|
|
1
|
+
import { factory } from '../../utils/factory.js';
|
2
|
+
var name = 'polynomialRoot';
|
3
|
+
var dependencies = ['typed', 'isZero', 'equalScalar', 'add', 'subtract', 'multiply', 'divide', 'sqrt', 'unaryMinus', 'cbrt', 'typeOf', 'im', 're'];
|
4
|
+
export var createPolynomialRoot = /* #__PURE__ */factory(name, dependencies, _ref => {
|
5
|
+
var {
|
6
|
+
typed,
|
7
|
+
isZero,
|
8
|
+
equalScalar,
|
9
|
+
add,
|
10
|
+
subtract,
|
11
|
+
multiply,
|
12
|
+
divide,
|
13
|
+
sqrt,
|
14
|
+
unaryMinus,
|
15
|
+
cbrt,
|
16
|
+
typeOf,
|
17
|
+
im,
|
18
|
+
re
|
19
|
+
} = _ref;
|
20
|
+
/**
|
21
|
+
* Finds the numerical values of the distinct roots of a polynomial with real or complex coefficients.
|
22
|
+
* Currently operates only on linear, quadratic, and cubic polynomials using the standard
|
23
|
+
* formulas for the roots.
|
24
|
+
*
|
25
|
+
* Syntax:
|
26
|
+
*
|
27
|
+
* polynomialRoot(constant, linearCoeff, quadraticCoeff, cubicCoeff)
|
28
|
+
*
|
29
|
+
* Examples:
|
30
|
+
* // linear
|
31
|
+
* math.polynomialRoot(6, 3) // [-2]
|
32
|
+
* math.polynomialRoot(math.complex(6,3), 3) // [-2 - i]
|
33
|
+
* math.polynomialRoot(math.complex(6,3), math.complex(2,1)) // [-3 + 0i]
|
34
|
+
* // quadratic
|
35
|
+
* math.polynomialRoot(2, -3, 1) // [2, 1]
|
36
|
+
* math.polynomialRoot(8, 8, 2) // [-2]
|
37
|
+
* math.polynomialRoot(-2, 0, 1) // [1.4142135623730951, -1.4142135623730951]
|
38
|
+
* math.polynomialRoot(2, -2, 1) // [1 + i, 1 - i]
|
39
|
+
* math.polynomialRoot(math.complex(1,3), math.complex(-3, -2), 1) // [2 + i, 1 + i]
|
40
|
+
* // cubic
|
41
|
+
* math.polynomialRoot(-6, 11, -6, 1) // [1, 3, 2]
|
42
|
+
* math.polynomialRoot(-8, 0, 0, 1) // [-1 - 1.7320508075688774i, 2, -1 + 1.7320508075688774i]
|
43
|
+
* math.polynomialRoot(0, 8, 8, 2) // [0, -2]
|
44
|
+
* math.polynomialRoot(1, 1, 1, 1) // [-1 + 0i, 0 - i, 0 + i]
|
45
|
+
*
|
46
|
+
* See also:
|
47
|
+
* cbrt, sqrt
|
48
|
+
*
|
49
|
+
* @param {... number | Complex} coeffs
|
50
|
+
* The coefficients of the polynomial, starting with with the constant coefficent, followed
|
51
|
+
* by the linear coefficient and subsequent coefficients of increasing powers.
|
52
|
+
* @return {Array} The distinct roots of the polynomial
|
53
|
+
*/
|
54
|
+
|
55
|
+
return typed(name, {
|
56
|
+
'number|Complex, ...number|Complex': (constant, restCoeffs) => {
|
57
|
+
var coeffs = [constant, ...restCoeffs];
|
58
|
+
while (coeffs.length > 0 && isZero(coeffs[coeffs.length - 1])) {
|
59
|
+
coeffs.pop();
|
60
|
+
}
|
61
|
+
if (coeffs.length < 2) {
|
62
|
+
throw new RangeError("Polynomial [".concat(constant, ", ").concat(restCoeffs, "] must have a non-zero non-constant coefficient"));
|
63
|
+
}
|
64
|
+
switch (coeffs.length) {
|
65
|
+
case 2:
|
66
|
+
// linear
|
67
|
+
return [unaryMinus(divide(coeffs[0], coeffs[1]))];
|
68
|
+
case 3:
|
69
|
+
{
|
70
|
+
// quadratic
|
71
|
+
var [c, b, a] = coeffs;
|
72
|
+
var denom = multiply(2, a);
|
73
|
+
var d1 = multiply(b, b);
|
74
|
+
var d2 = multiply(4, a, c);
|
75
|
+
if (equalScalar(d1, d2)) return [divide(unaryMinus(b), denom)];
|
76
|
+
var discriminant = sqrt(subtract(d1, d2));
|
77
|
+
return [divide(subtract(discriminant, b), denom), divide(subtract(unaryMinus(discriminant), b), denom)];
|
78
|
+
}
|
79
|
+
case 4:
|
80
|
+
{
|
81
|
+
// cubic, cf. https://en.wikipedia.org/wiki/Cubic_equation
|
82
|
+
var [d, _c, _b, _a] = coeffs;
|
83
|
+
var _denom = unaryMinus(multiply(3, _a));
|
84
|
+
var D0_1 = multiply(_b, _b);
|
85
|
+
var D0_2 = multiply(3, _a, _c);
|
86
|
+
var D1_1 = add(multiply(2, _b, _b, _b), multiply(27, _a, _a, d));
|
87
|
+
var D1_2 = multiply(9, _a, _b, _c);
|
88
|
+
if (equalScalar(D0_1, D0_2) && equalScalar(D1_1, D1_2)) {
|
89
|
+
return [divide(_b, _denom)];
|
90
|
+
}
|
91
|
+
var Delta0 = subtract(D0_1, D0_2);
|
92
|
+
var Delta1 = subtract(D1_1, D1_2);
|
93
|
+
var discriminant1 = add(multiply(18, _a, _b, _c, d), multiply(_b, _b, _c, _c));
|
94
|
+
var discriminant2 = add(multiply(4, _b, _b, _b, d), multiply(4, _a, _c, _c, _c), multiply(27, _a, _a, d, d));
|
95
|
+
if (equalScalar(discriminant1, discriminant2)) {
|
96
|
+
return [divide(subtract(multiply(4, _a, _b, _c), add(multiply(9, _a, _a, d), multiply(_b, _b, _b))), multiply(_a, Delta0)),
|
97
|
+
// simple root
|
98
|
+
divide(subtract(multiply(9, _a, d), multiply(_b, _c)), multiply(2, Delta0)) // double root
|
99
|
+
];
|
100
|
+
}
|
101
|
+
// OK, we have three distinct roots
|
102
|
+
var Ccubed;
|
103
|
+
if (equalScalar(D0_1, D0_2)) {
|
104
|
+
Ccubed = Delta1;
|
105
|
+
} else {
|
106
|
+
Ccubed = divide(add(Delta1, sqrt(subtract(multiply(Delta1, Delta1), multiply(4, Delta0, Delta0, Delta0)))), 2);
|
107
|
+
}
|
108
|
+
var allRoots = true;
|
109
|
+
var rawRoots = cbrt(Ccubed, allRoots).toArray().map(C => divide(add(_b, C, divide(Delta0, C)), _denom));
|
110
|
+
return rawRoots.map(r => {
|
111
|
+
if (typeOf(r) === 'Complex' && equalScalar(re(r), re(r) + im(r))) {
|
112
|
+
return re(r);
|
113
|
+
}
|
114
|
+
return r;
|
115
|
+
});
|
116
|
+
}
|
117
|
+
default:
|
118
|
+
throw new RangeError("only implemented for cubic or lower-order polynomials, not ".concat(coeffs));
|
119
|
+
}
|
120
|
+
}
|
121
|
+
});
|
122
|
+
});
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { isConstantNode, isFunctionNode, isOperatorNode, isParenthesisNode } from '../../../utils/is.js';
|
2
|
+
export { isConstantNode, isSymbolNode as isVariableNode } from '../../../utils/is.js';
|
3
|
+
export function isNumericNode(x) {
|
4
|
+
return isConstantNode(x) || isOperatorNode(x) && x.isUnary() && isConstantNode(x.args[0]);
|
5
|
+
}
|
6
|
+
export function isConstantExpression(x) {
|
7
|
+
if (isConstantNode(x)) {
|
8
|
+
// Basic Constant types
|
9
|
+
return true;
|
10
|
+
}
|
11
|
+
if ((isFunctionNode(x) || isOperatorNode(x)) && x.args.every(isConstantExpression)) {
|
12
|
+
// Can be constant depending on arguments
|
13
|
+
return true;
|
14
|
+
}
|
15
|
+
if (isParenthesisNode(x) && isConstantExpression(x.content)) {
|
16
|
+
// Parenthesis are transparent
|
17
|
+
return true;
|
18
|
+
}
|
19
|
+
return false; // Probably missing some edge cases
|
20
|
+
}
|