@danielsimonjr/mathts-functions

中文文档
0.83.0发布于 2026/11/11MITTypeScriptES Module近 30 天下载 7009

MathTS的数学函数 - 算术,代数,三角学,统计学等

中文使用文档
文档目录3 节
  1. 安装
  2. 它提供的东西
  3. 许可证

@danielsimonjr/ mathts-函数

用于 数学。 。 。 .

MathTS的数学函数库——算术,三角学,代数,统计学,信号处理等等——通过打字功能通过数字/复杂/分数/大数/矩阵发送多态.

安装

npm install @danielsimonjr/mathts-functions

它提供的东西

  • 数以百计的被键入函数( A)add, (中文(简体) ), sin, (中文(简体) ), svd-意识到行动, parallelFFT(中文(简体) ).
  • 窃听器 parse 编号 : evaluate 在完全激活的数学范围.
  • scalar 编号 : evaluateScalar 评估被打成平板树(+ - * / ^, (中文(简体) ), ln • 自然 log, (中文(简体) ), log → log10,而另一个scalar呼叫。 公式字符串被拒绝 . compileScalar 评估同一树 Float64Array 列并标记行无效 evaluateScalar 会扔出. compileScalarGradient 重用磁带以返回每行精确的qqf/qx参数. fitScalarParameters 这些常数与数据通过 levenbergMarquardt, (中文(简体) ), bfgs,或 nelderMead (以可选的界限进行多重起搜索).
  • levenbergMarquardt 接受可选分析 jacobian 内 LMOptions; 默认值仍为前向偏差 numericJacobian. Stiff (英语) solveODE, (中文(简体) ), solveDAE,以及 solveBVP 使用相同的帮助( 前置差异; ODE/ DAE 使用) step: { rel: 1e-7, floor: 1e-8 },BVP射击用途 h: 1e-7) (中文(简体) ).
  • minimize (奈德尔-米德) nelderMead 具有绝对简单音阶; nelderMead 保存相对默认值 fitScalarParameters。 。 。 .
  • scalarToNode 编号 : nodeToScalar 编号 : simplifyScalar 编号 : scalarToTex —— 在平面树和有线表达式节点之间转换(无公式字符串); simplifyScalar 使用同样的 simplify 作为表达语言.
  • paretoFront 编号 : scoreFront 编号 : selectFrontModel - 名人堂,每复杂,日志损失得分,以及 accuracy 编号 : score 编号 : best 选择.
  • frontToLatexTable 编号 : frontToJson ——导出得分前锋(M15). frontToLatexTable(scored, { precision }) 写一个 tabular 包含列复杂度、损失、分数、方程和标题行;损失和分数为 toPrecision(precision) 文本 (默认 6, 从 1 到 100 的整数), a null 得分(线性损失尺度)是一个空单元格,每个等式单元格都是 scalarToTex 内部 $…$ 因为a tabular 单元格是文本模式和 \cdot, (中文(简体) ), \frac 财务报告和审定财务报表 \sin 需要数学模式(无限分数是) $\infty$) (中文(简体) ). frontToJson(scored) 返回时 { schemaVersion: 1, rows: [{ complexity, loss, score, key, tex }] } 与 key =: scalarCanonicalKey(item) 财务报告和审定财务报表 tex =: scalarToTex(item); 非无限 loss 或者说 score 是字符串 'Infinity', (中文(简体) ), '-Infinity' 或者说 'NaN',因此报告存活下来 JSON.stringify 财务报告和审定财务报表 JSON.parse (准确的合适分数) Infinity,以及 JSON 会变成线性尺度的 null) (中文(简体) ). 非无限复杂 RangeError。 。 。 .
  • inferScalarDimension 编号 : solveParameterDimensions - 精确的斜角树的 SI 维度 Fraction 在线 SiDimensionVector (单位:千美元)[L,M,T,I,Θ,N,J]),或用失效节点路径标明的4起侵犯事件之一(add-mismatch, (中文(简体) ), transcendental-arg-not-dimensionless, (中文(简体) ), non-literal-exponent-on-dimensional-base, (中文(简体) ), unknown-symbol) (中文(简体) ). solveParameterDimensions 从树所暗示的等式中解决每个未知的已安装参数的尺寸(+ 演义同意,超凡的论据是无维的,根等同 target),准确通过 rationalNullspace; 返回时 solved, (中文(简体) ), underdetermined,或 inconsistent。 。 。 .
  • weightedMutation 编号 : mutateConstant 编号 : mutateOperator 编号 : mutateFeature 编号 : swapOperands 编号 : addNode 编号 : insertNode 编号 : deleteNode 编号 : rotateTree 编号 : randomizeTree 编号 : simplifyConstants 编号 : identityMutation 编号 : crossoverSubtrees - 变异操作员在一棵树上。 每一个都要 (node, rng, ctx) 带有 SeededRng 财务报告和审定财务报表 ctx = { grammar, perturbationFactor, temperature },永不更改输入,并返回 null 当突变不适用或结果失败时 scalarGrammarAccepts。 。 。 . weightedMutation(weights?) 选择一个操作员 DEFAULT_MUTATION_WEIGHTS (总结为8.512392). 身份操作员被命名 identityMutation 因为 identity 是此包的矩阵身份导出;其权重键仍然是 identity。 。 。 .
  • searchScalars ——在平板树上进行进化式搜索,即: SearchProgress 返回一个 ScalarSearchResult由锦标赛选拔和 weightedMutation; 开始于 seeds 加上最小的树木 enumerateScalars (两者均由 scalarGrammarAccepts 然后,当设置, grammar.admit; 拒绝的种子被跳过, 拒绝的突变是失败的尝试), refuse parameters 树的概率 optimizeProbability (单位:千美元)fitScalarParameters并保持一个名人堂 其Pareto的正面报道通过 paretoFront 编号 : scoreFront (单位:千美元)modelSelection 添加 selectFrontModel· ; bestLossFactor 联合国 bestLossFactor 何时 modelSelection 设置,默认为1.5). crossoverProbability 默认为 0 (没有硬币,只有变异). 上层 0 每一个后代都可能 crossoverSubtrees 继承的参数是第一任父母的. admit 必须是节点的纯函数;搜索不会复制。 损失是指默认的平方差错之和( E)loss: 'l2'页:1 loss 改为 'l1' 或者说 'huber' 大厅和每一间修道院都使用同样的损失 fitScalarParameters可选 rowWeights (一个有限 >= 0 每行重量)适用于两者. 可选 fit 对象被转发到 fitScalarParameters数字 : restarts (违约2), maxIterations (违约8), bounds, (中文(简体) ), algorithm,以及 initial (默认继承的向量); 错误的绑定或长度抛出 RangeError 在第一次收获之前。 在正重行上无效的树会丢失 Infinity 永远不能到达前面 invalidRows: 'penalize' 得分如适者无效行刑(1e8乘以其无效行,加上所选行 loss 相反,在有效行上. fittedParameters 给出每行损失后面的值. options.rng 所以一个种子能产生一个结果. runScalarSearch(problem, options) 是单调形式:它消耗生成器并返回最后结果;其选项为 seed (确切地说是其中之一) seed 财务报告和审定财务报表 rng及其问题可能给 columns 作为用可变名称而不是对齐数组键入的记录. maxEvaluations 上限评价,包括初始人口。 与 populations > 1 独立岛屿rng.fork('island:' + index))并并进;每代后,每个岛屿最差的树木被其他岛屿最好(英语:fractionReplaced,默认0.00036),常扰动温度从 initialTemperature (3.17) 每代0.995个annealing)和联赛排名 loss * exp(adaptiveParsimonyScaling * share) 地点 share 树的大小有多常见adaptiveParsimony,缩放1040. 只有几个岛屿 才有适应性的变质违约 所以 populations: 1 是一个人口搜索到最后一点. parallel: { timeoutMs?, pool? } 每一代树的分数一次 observed 有100行或100行以上(scalar-batch.worker.js,由 URL 所加载的第二个 tsdown 条目; 参数 refit and every 随机绘图停留在调用者线程上,所以并行运行等于相同种子的串行运行,位取位. complexityWeights 联合国 ScalarComplexityWeights 从 @danielsimonjr/mathts-expression) 权衡了厅内复杂度的节点,分出分解的领带断裂,以及适应性的分解等分级;省略了,这是今天节点的计数,一个非无限的分量抛出 RangeError 在第一次收获之前. simplify (单位:千美元)'off' | 'constants' | 'algebraic'默认值 'off'在语法检查和分数之前,简化每个种子和每个后代一次: 'constants' 折叠只显示数字的子树( s)simplifyConstants, (中文(简体) ), 'algebraic' 运行 simplifyScalar页:1 ScalarBuildError, (中文(简体) ), RangeError,语法拒绝(包括 admit),或行评价不匹配使未简化的树保持不变(simplifyFallbacks 所列举的树木是不会被简化的. timeoutMs (默认30000,必须是正数) 限制每个工人的呼叫,包括排队。 A 类 pool 您的通过由您终止;否则,当它首先需要时,搜索即开始,当生成器结束或关闭时,搜索即结束。 百行楼层出自M3基准(磁带与每行翻译,在呼叫者线上);没有工人往返的时间,因此平行是选入的,并不包含速度要求.
  • numericallyEquivalent - 两棵树的样品 createSeededRng,通过 compileScalar,与核心比较 nearlyEqual。 。 。 . 仅凭数字协议并不能证明具有象征意义的等同性; (单位:千美元) consistent 判决是证据,不是证据.
import { createSeededRng } from '@danielsimonjr/mathts-core';
import {
  compileScalar,
  compileScalarGradient,
  fitScalarParameters,
  numericallyEquivalent,
  frontToJson,
  frontToLatexTable,
  paretoFront,
  scoreFront,
  selectFrontModel,
  scalar,
  simplifyScalar,
  scalarToTex,
  runScalarSearch,
} from '@danielsimonjr/mathts-functions';

const node = scalar.op('*', [scalar.symbol('x'), scalar.symbol('x')]);
const linear = scalar.op('+', [
  scalar.op('*', [scalar.symbol('a'), scalar.symbol('x')]),
  scalar.symbol('b'),
]);
const gradCompiled = compileScalarGradient(linear, { variables: ['x'], parameters: ['a', 'b'] });
const { values, grad } = gradCompiled.evaluate([new Float64Array([3])], [2, -1]);
values[0]; // 5
[...grad]; // 3, 1 — ∂/∂a = x, ∂/∂b = 1
const quotient = scalar.op('/', [
  scalar.symbol('a'),
  scalar.op('/', [scalar.symbol('b'), scalar.symbol('c')]),
]);
scalarToTex(simplifyScalar(quotient)); // \frac{ a\cdot c}{ b}

const compiled = compileScalar(node, { variables: ['x'] });
compiled.evaluate([new Float64Array([2, 3])]).values; // Float64Array [4, 9]

const slope = scalar.op('*', [scalar.symbol('a'), scalar.symbol('x')]);
const xCol = new Float64Array([1, 2, 3]);
const yCol = new Float64Array([2, 4, 6]);
fitScalarParameters(slope, [xCol], yCol, ['x'], { parameters: ['a'], restarts: 0 }).parameters[0]; // 2

const front = paretoFront([
  { loss: 0.5, complexity: 1, item: 'x' },
  { loss: 0.1, complexity: 3, item: 'x^3' },
]);
selectFrontModel(scoreFront(front), 'best').item; // 'x^3'
frontToJson(scoreFront([{ loss: 0.5, complexity: 1, item: scalar.symbol('x') }])).rows[0]!.key; // '{"k":"s","v":"x"}'

const rng = createSeededRng(1);
const id = scalar.op('+', [
  scalar.op('^', [scalar.call('sin', scalar.symbol('x')), scalar.number(2)]),
  scalar.op('^', [scalar.call('cos', scalar.symbol('x')), scalar.number(2)]),
]);
numericallyEquivalent(id, scalar.number(1), { domain: { x: [0, 1] }, rng }).verdict; // 'consistent' — evidence, not proof

const quadGrammar = {
  variables: ['x'],
  binary: ['+', '*', '^'],
  unary: [],
  literals: [1],
  maxSize: 7,
} as const;
const quad = scalar.op('+', [
  scalar.op('*', [scalar.symbol('x'), scalar.symbol('x')]),
  scalar.symbol('x'),
]);
const xs = new Float64Array(20);
for (let i = 0; i < 20; i += 1) xs[i] = -1 + (2 * i) / 19;
const quadResult = await runScalarSearch(
  {
    variables: ['x'],
    columns: { x: xs },
    observed: compileScalar(quad, { variables: ['x'] }).evaluate([xs]).values,
  },
  { grammar: quadGrammar, seed: 7, populationSize: 8, tournamentSize: 4, maxEvaluations: 120 }
);
quadResult.front.at(-1)?.item; // x^2 + x — the planted law, at loss 0
quadResult.stopReason; // 'max-evaluations' — runScalarSearch consumes the generator for you
  • 还将公布每个领域的重点切入点: @danielsimonjr/mathts-{arithmetic,trigonometry,statistics,signal}。 。 。 .

许可证

MIT (c) 小丹尼尔·西蒙.

版本与发布记录

@danielsimonjr/mathts-functions 共发布 132 个版本,首次发布于 2026/04/05;过去 12 个月发布了 132 个版本。

版本发布日期距今
0.83.0latest2026/11/11今天
0.82.02026/11/11今天
0.81.02026/11/11今天
0.80.12026/11/10今天
0.80.02026/11/10今天
0.79.02026/11/101 天前

关于 @danielsimonjr/mathts-functions 的常见问题

@danielsimonjr/mathts-functions 是什么?

MathTS的数学函数 - 算术,代数,三角学,统计学等

如何安装 @danielsimonjr/mathts-functions?

在项目目录运行 npm install @danielsimonjr/mathts-functions,或使用 pnpm add / yarn add / bun add。

@danielsimonjr/mathts-functions 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@danielsimonjr/mathts-functions 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@danielsimonjr/mathts-functions 可以商用吗?

@danielsimonjr/mathts-functions 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@danielsimonjr/mathts-functions 的下载量有多少?

根据 npm 官方下载统计,@danielsimonjr/mathts-functions 在 2026/10/12 – 2026/11/10 这 30 天内被下载 7,009 次,日均约 234 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@danielsimonjr/mathts-functions 还在维护吗?

最新版本 0.83.0 发布于 2026/11/11(今天);至今共发布 132 个版本,其中过去 12 个月发布了 132 个;首次发布于 2026/04/05。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。