历史 #
2025-11-05, 15.1.0 #
- 新功能:实现函数
isFinite和isBounded(#3554,#3553)。感谢 @gwhitney。 - 新功能:添加函数
bernoulli以计算伯努利数(#3551)。感谢 @gwhitney。 - 新功能:支持可选链
object?.key(#3547)。感谢 @NilsDietrich。 - 修复:#3580、#3586、#3587 与可选链运算符相关的问题:不允许双点
?..,允许可选函数调用,在?.的无效用法时抛出错误(#3585)。感谢 @AnslemHack。 - 修复:#3579 条件语句被解析为可选链(#3584)。
- 修复:#3564 映射/过滤空数组/矩阵时避免错误抛出(#3567)。感谢 @richardt-cla。
- 修复:#3574 在函数
isInteger中遵守容差(#3575)。感谢 @gwhitney。 - 修复:#3562 序列化单位时缺少内部属性(#3572)。
2025-10-10, 15.0.0 #
!!! 请注意:可能存在不兼容的更改 !!!
- 新功能:#3349 解耦了一元百分比运算符和二元模运算符(它们都使用符号
%)的优先级,并提高了前者的优先级(#3432)。感谢 @kiprobinsonknack。 - 新功能:#1753 增强了克罗内克积以处理任意维度(#3461,#3455)。感谢 @gwhitney 和 @Delaney。
- 新功能:#2344 根据输入类型进行矩阵子集选择(#3485)。感谢 @dvd101x。
- 修复:#3501 仅在
%后面不跟项时才将其解析为一元运算符(#3505)。感谢 @gwhitney。 - 修复:#3421 要求十六进制、二进制和八进制值后面有空格或分隔符(#3463)。
- 修复:#3529 将函数
size更改为始终返回一个Array(#3535)。 - 修复:#3530 在尝试展平
SparseMatrix时抛出错误(#3536)。
2025-10-10, 14.9.1 #
- 修复:HISTORY.md 中将
v14.8.2的所有修复列在v14.9.0下的问题。
2025-10-10, 14.9.0 #
2025-10-03, 14.8.2 #
- 修复:在使用一元函数传递时,提高
map等函数中的性能(#3546)。感谢 @dvd101x。 - 修复:改进
abs(complex)的类型定义,该函数返回一个number(#3543)。感谢 @joshkel。 - 修复:添加
ctranspose的缺失类型定义(#3545)。感谢 @joshkel。 - 修复:代码注释中的拼写错误(#3544)。感谢 @joshkel。
2025-09-26, 14.8.1 #
2025-09-24, 14.8.0 #
2025-09-05, 14.7.0 #
- 新功能:更快的
DenseMatrix符号迭代器(#3521)。感谢 @dvd101x。 - 新功能:实现
Parser的序列化支持,修复了 #3509(#3525)。 - 修复:#3519、#3368 “核心函数”和“构造函数”类别未包含在生成的函数概述中。
- 修复:#3517
printTransformDependencies未在类型定义中导出。 - 修复:为函数
diff添加缺失的类型定义(#3520)。感谢 @dodokw。 - 修复:#3396 改进函数
range的文档。 - 修复:#3523 通过删除
core-js来清理浏览器包中的旧 polyfill(#3524)。
2025-07-25, 14.6.0 #
- 新功能:新函数
toBest(unit, unitList, offset),以及相应的unit.toBest(...)方法(#3484)。感谢 @Mundi93、@EliaAlesiani 和 @HeavyRainLQ。 - 修复:#3512 在分数情况下
sign为零时未返回零(#3513)。感谢 @kyle-compute。
2025-07-02, 14.5.3 #
- 修复:#2199 将不间断空格
解析为空格(#3487)。感谢 donmccurdy。 - 修复:细化
scope的类型定义(#3490)。感谢 @JayChang4w。 - 修复:#3493
unit(number)的类型定义(#3495)。感谢 @mrft。 - 修复:#3494 类型定义不支持
unit.to(unit)(#3495)。感谢 @mrft。 - 修复:#3499 细化
add和multiply的类型定义,不允许零个或一个参数(#3495)。感谢 @mrft。
2025-05-30, 14.5.2 #
- 修复:为已弃用的物理常数
coulomb添加嵌入式文档,参见 #3472。 - 修复:#3469 添加
ResultSet接口并改进isResultSet类型(#3481)。感谢 @ranidam。
2025-05-28, 14.5.1 #
- 修复:#3482 mathjs 在某些环境中加载时出现与
BigInt相关的错误。 - 修复:函数
numeric的语法部分(参见 #3448)。 - 修复:#3472 将物理常数
coulomb重命名为coulombConstant。旧名称仍保留以兼容。 - 修复:支持数组与单位的乘法(#3456)。感谢 @Delaney。
2025-05-21, 14.5.0 #
- 新功能:提高
DenseMatrix的map和forEach方法的性能(#3446)。感谢 @dvd101x。 - 新功能:提高
subset的性能(#3467)。感谢 @dvd101x。 - 新功能:为
compile、evaluate、parse和parser定义嵌入式文档,并为嵌入式文档中的示例添加测试(#3413)。感谢 @dvd101x。 - 修复:#3450 支持无值单位与任意类型的乘法(#3454)。
- 修复:#3474 正确解析
(lbf in)(#3476)。感谢 @costerwi。
2025-03-28, 14.4.0 #
- 新功能:提高函数
flatten的性能(#3400)。感谢 @dvd101x。 - 新功能:提高
map和forEach的性能(#3409)。感谢 @dvd101x。 - 新功能:为分数添加 LaTeX 表示(#3434,#3419)。感谢 @orelbn。
- 修复:#3422 允许在符号 E 后面使用点运算符(#3425)。
- 修复:
nthRootslatex 函数模板字符串中的问题(#3427)。感谢 @aitee。 - 修复:升级到最新版本的
@babel/runtime。
2025-03-06, 14.3.1 #
- 修复:#3350 无法导入一个复数常量。
2025-02-28, 14.3.0 #
- 新功能:提高函数
flatten的性能(#3354)。感谢 @dvd101x。 - 新功能:提高
DenseMatrixSymbol.iterator 的性能(#3395)。感谢 @dvd101x。 - 新功能:提高函数
map和forEach的性能(#3399)。感谢 @dvd101x。 - 修复:#3390 回调优化中的问题,并添加对无效参数类型的错误处理(#3394)。感谢 @dvd101x。
- 修复:#3356 向 TypeScript 定义添加缺失的
eigsDependencies导出(#3397)。感谢 @porst17。 - 修复:#3406 在函数
multiply中推断多维数组的正确类型(#3408)。感谢 @orelbn。 - 修复:#3387 使用
math.isNaN工具函数以获得一致的max和min结果(#3389)。感谢 @orelbn。
2025-02-05, 14.2.1 #
- 修复:#3377 移除冗余依赖
@lambdatest/node-tunnel。
2025-01-30, 14.2.0 #
- 新功能:#3041、#3340 将
apply重命名为mapSlices(#3357)。函数apply仍然可用,但已标记为弃用。感谢 @gwhitney。 - 修复:#3247 不要覆盖类型原生的 floor/ceil 在值的容差范围内(#3369)。感谢 @gwhitney。
- 修复:#3360 向矩阵索引和范围添加 bigint 支持(#3361)。感谢 @gwhitney。
- 修复:#3115 matrixFrom* 函数的类型定义(#3371)。感谢 @Hudsxn 和 @gwhitney。
2025-01-24, 14.1.0 #
- 新功能:在函数
log、log2、log10、larger、smaller、max、min中实现bigint支持(#3345)。感谢 @gwhitney。 - 修复:#3342 十六进制输入未转换为
bigint(#3348)。 - 修复
randomInt()不工作(#3345)。 - 文档:修复了
sign在嵌入式文档中的描述(#3338)。感谢 @witer33。
2024-12-11, 14.0.1 #
- 修复:使导数计算速度快很多(#3322)。感谢 @paulftw。
- 修复:#3317 从
fraction.js库导出Fraction类型,而不是使用自定义接口(#3330)。感谢 @fchu。
2024-11-20, 14.0.0 #
!!! 请注意:可能存在不兼容的更改 !!!
- 新功能:升级到
fraction.js@5,底层使用bigint(#3283)。 - 新功能:在函数
ceil、floor和fix中实现对Unit的支持。由于引入了泛型,数组和矩阵的类型定义可能存在不兼容的更改(#3269)。感谢 @orelbn。 - 新功能:实现对
log(x: Fraction, base: Fraction)的支持。 - 修复:#3301
%(mod) 的优先级高于*和/(#3311)。感谢 @nkumawat34。 - 修复:#3222 防止
math.import(...)覆盖单位,除非你指定{ override: true }(#3225)。 - 修复:#3219 当输入是两个稀疏矩阵时,让函数
dotDivide、dotPow、bitXor、xor、equal、larger、largerEq、smaller、smallerEq和unequal返回一个稀疏矩阵(#3307)。感谢 @Aakash-Rana。 - 修复:改进数组的类型定义(#3306)。感谢 @orelbn。
2024-11-20, 13.2.3 #
- 修复:#3260 改进
map、filter和forEach的回调索引的类型定义和文档。 - 修复:#3323 支持函数
clone中的函数。 - 文档:修复了文档中的一个损坏链接(#3316)。感谢 @emmanuel-ferdman。
2024-11-13, 13.2.2 #
- 修复:#1455 分数与单位
in的隐式乘法不正确(#3315)。感谢 @nkumawat34。
2024-11-06, 13.2.1 #
- 更新到最新版本的
complex.js。 - 修复
Index.dimension(dim)接受非数字输入。 - 修复:#3290 应验证
Parser.set方法中的变量名(#3308)。感谢 @nkumawat34。
2024-10-02, 13.2.0 #
- 新功能:提高函数
map、filter和forEach的性能(#3256)。感谢 @dvd101x。 - 新功能:提高
DenseMatrix的map()和forEach()方法的性能(#3251)。感谢 @Galm007。 - 修复:#3253 无法在函数
derivative中使用包含特殊字符的标识符。 - 修复:改进
ConstantNode的类型定义,以支持所有数据类型(#3257)。感谢 @smith120bh。 - 修复:#3259 函数
symbolicEqual在 TypeScript 定义中缺失。 - 修复:#3246 函数
leafCount在 TypeScript 定义中缺失。 - 修复:#3267 负数和单位
in的隐式乘法。 - 文档:修复配置页面上的损坏链接。感谢 @vassudanagunta。
- 文档:在表达式解析器的
map和forEach函数的语法文档中添加链接(#3272)。感谢 @dvd101x。
2024-08-27, 13.1.1 #
- 修复 CLI 和 Web API 中的安全漏洞,允许调用
import、createUnit和reviver函数,允许访问内部 math 命名空间并执行任意代码。感谢 @StarlightPWN。 - 修复安全漏洞:当用一个非
rawArgs函数覆盖一个rawArgs函数时,它仍然会用原始参数调用。这既是一个功能性问题,也是一个安全问题。感谢 @StarlightPWN。 - 修复安全漏洞:确保
ObjectWrappingMap不能删除不安全属性。感谢 @StarlightPWN。 - 修复:无法在表达式解析器中的数组上使用方法和属性。
2024-08-26, 13.1.0 #
- 新功能:支持函数
map中的多个输入(#3228,#3196)。感谢 @dvd101x。 - 新功能:在更多情况下添加矩阵数据类型(#3235)。感谢 @dvd101x。
- 新功能:导出 util 函数
isMap、isPartitionedMap和isObjectWrappingMap。 - 修复:#3241 函数
map并非总是与矩阵一起工作(#3242)。感谢 @dvd101x。 - 修复:#3244 修复了关于类的文档中
ResultSet的损坏链接。 - 文档:在函数
evaluate的文档中添加指向表达式语法页面的链接(参见 #3238)。 - 文档:改进
scope的文档,并修复示例custom_scope_objects.js(#3150)。 - 文档:嵌入式文档中的拼写修复(#3252)。感谢 @dvd101x。
2024-07-19, 13.0.3 #
- 修复:#3232 修复函数
format的类型定义,以支持hex、bin和oct的表示法。 - 修复:为美制液体体积单位使用更精确的定义(#3229)。感谢 @Vistinum。
- 修复:#2286 为 Unit 类添加静态方法和成员的类型(#3230)。感谢 @orelbn。
2024-07-04, 13.0.2 #
- 修复
quantileSeq类型定义中的一个错误(#3223)。感谢 @domdomegg。
2024-06-28, 13.0.1 #
2024-05-31, 13.0.0 #
不兼容的更改
- 更改
isZero、isPositive和isNegative以遵守config.epsilon(#3139,#2838)。感谢 @dvd101x。 - 更改内部
nearlyEqual的行为,使其与 Python 和 Julia 对齐(#3152,#2838)。感谢 @dvd101x。 - 升级到
fraction.js@4.3.7,参见 https://github.com/rawify/Fraction.js/issues/68。 - 不再支持不完全支持 ES6 或
bigint,或未积极维护的 JavaScript 引擎。ES2020 现在是最低要求的 EcmaScript 版本。
非不兼容的更改
- 实现了对
bigint的支持(#3207,#3207) - 实现了一个新的配置选项
config.numberFallback,用于bigint(#3207)。 - 内部:重构了工具为 ES 模块,并升级了所有 devDependencies。
2024-05-31, 12.4.3 #
- 修复:单位的序列化(无值),参见 #1240。
- 修复:关于模运算符
%的优先级顺序的文档过时且不正确。参见 #3189。 - 修复:#3197 改进
quantileSeq类型定义(#3198)。感谢 @domdomegg。
2024-04-24, 12.4.2 #
- 修复 #3192:函数
isNaN对于矩阵或数组中的NaN单位返回false(#3193)。感谢 @lgerin。 - 修复:#3180 修复函数
add和multiply的类型定义,以允许超过两个参数。 - 文档:纠正了关于
traverse返回 void 的文档(#3177)。感谢 @rohildshah。
2024-03-13, 12.4.1 #
- 文档:实现 Lorenz 示例的交互式版本,并显示全屏图表(#3151)。感谢 @dvd101x。
- 修复 #3172:简化
"true and true"。 - 修复 #3163:
toTex对于大的 BigNumbers 错误地返回Infinity。 - 修复 #3162:添加关于 CSParse 的许可信息(#3164)。
- 修复 #3175:无法使用
math.Unit.deleteUnit删除单位。 - 修复:通过加载 bundle 来加快 CLI 和 REPL 的启动时间。
- 修复:在示例
pretty_printing_with_mathjax.html中移除 polyfill.io 的使用(#3167)。感谢 @SukkaW。
2024-02-22, 12.4.0 #
- 新功能:实现对矩阵中尾随逗号的支持(#3154,#2968)。感谢 @dvd101x。
- 新功能:通过添加矩阵类型推断,极大地提高了
multiply的性能(#3149)。感谢 @RandomGamingDev。 - 修复:#3100 函数
round未处理舍入误差(#3136)。感谢 @BrianFugate。 - 修复:
PartitionedMap和ObjectWrappingMap缺少属性Symbol.iterator,导致在尝试new Map(scope)时出现问题(#3156)。 - 修复:函数
mode的类型定义(#3153)。感谢 @rich-martinez。 - 文档:在 Parser 文档中描述方法
getAllAsMap(#3158, #3157)。感谢 @dvd101x。
2024-02-08, 12.3.2 #
2024-02-01, 12.3.1 #
- 改进了
ArrayNode、FunctionNode、IndexNode、OperatorNode和RelationalNode参数的类型定义(#3123)。感谢 @sylee957。 - 添加了使用 CodeMirror 和 Katex 的功能齐全的代码编辑器示例(#3027)。感谢 @dvd101x。
- 修复:#3114 构建警告,涉及多个错误的
/* #__PURE__ */注释。 - 修复:#3142 为函数
format的选项precision、wordSize、lowerExp、upperExp支持 BigNumber 值。在函数hex、bin和oct中支持wordSize选项的 BigNumber 值。 - 修复:#3125 函数
hypot的类型定义(#3144)。感谢 @silentmissile。 - 修复:#3141
help(config)在评估示例时会更改实际的config。 - 文档:#3145 修复 REPL 的文档,它现在需要一个构建步骤。
2024-01-12, 12.3.0 #
- 实现了对新度量前缀的支持:
ronna(R)、quetta(Q)、ronto(r)和quecto(q)(#3113, #3112)。感谢 @AlexEdgcomb。 - 修复了无单位单位的转换错误(#3117)。感谢 @costerwi。
- 修复:#3097
toSI()错误地转换degC(#3118)。感谢 @costerwi。
2023-12-20, 12.2.1 #
- 修复 #3109:方法
Node.toHTML不接受自定义handler。
2023-12-08, 12.2.0 #
- 特性:运算符
and、or、&、|的惰性求值(#3090, #3101, #2766)。感谢 @smith120bh。 - 修复:将第四个参数(包含 scope)传递给原始函数。
- 修复:#3096 嵌入式 eigs 文档抛出错误。
2023-11-17, 12.1.0 #
- 特性:将函数
round扩展为支持单位(#2761, #3095)。 - 特性:将函数
mod扩展为支持在使用BigNumber或Fraction时使用负除数(#3087)。 - 修复:#3092 将字符串转换为数字时错误消息中的拼写错误。
- 修复:#3094 函数
derivative在失败时会修改输入表达式。
2023-10-26, 12.0.0 #
不兼容的更改
-
修复 #2879, #2927, #3014:更改
eigs令人困惑的接口(#3037),感谢 @gwhitney。之前,函数eigs返回一个对象{ values: MathCollection; vectors: MathCollection }其中
vectors是一个二维矩阵,其列包含向量。现在已更改为eigs返回一个对象{ values: MathCollection eigenvectors: Array<{ value: number | BigNumber vector: MathCollection }> }其中
eigenvectors是一个数组,包含一个具有相应特征值和向量的对象。 - 重构了 TypeScript 类型定义,使其能够与
NodeNext模块解析配合使用(#3079, #2919)。- 类型
MathJsStatic已重命名为MathJsInstance。 - 类型
FactoryDependencies已弃用,请使用MathJsFactory,并直接从库中导入依赖项映射。
- 类型
- 将
.toTex()输出的赋值运算符从:=更改为=(参见 #2980, #2987)。 - 不再官方支持 Node.js 14 和 16。
功能
修复
2023-10-26, 11.12.0 #
- 实现了函数
subtractScalar(#3081, #2643),感谢 @vrushaket。 - 修复 #3073:format 函数未转义控制字符和双引号(#3082)。
- 修复:函数
clone在传入函数等不支持的类型时未抛出错误。 - 修复:#2960 添加函数
symbolicEqual的类型定义(#3035),感谢 @juancodeaudio。
2023-10-11, 11.11.2 #
- 修复 #3025:在函数
corr中改进了矩阵处理和错误处理(#3030)。感谢 @vrushaket。 - 修复 #3074:改进在使用函数
max在derivative中时的错误消息。 - 修复 #3073:修复了字符串中引号的解析。
- 修复 #2027:无法将命名运算符(如
to或mod)用作属性名。
2023-09-20, 11.11.1 #
- 修复 #2989:在解析器中的
print中使用从 1 开始的索引(#3009)。感谢 @dvd101x。 - 修复 #2936:
mod由于内部舍入误差有时会给出错误的结果(#3011)。感谢 @praisennamonu1。 - 对
quantileSeq进行内部重构,并修复了嵌入式帮助(#3003)。感谢 @dvd101x。 - 更新了依赖项和开发依赖项。
2023-09-05, 11.11.0 #
- 实现了函数
corr以计算两个矩阵之间的相关性(#3015, #2624)。感谢 @vrushaket。 - 暂时将
fraction.js锁定在版本4.3.4,参见 #3024, 3022, https://github.com/rawify/Fraction.js/issues/68。
2023-08-31, 11.10.1 #
- 升级到
fraction.js@4.3.4,参见 #3022。 - 修复 #3020:
lruQueue使用了全局hasOwnProperty,这可能会被污染。 - 为单位
erg添加了对前缀的支持,并限制joule单位的前缀仅为长前缀,如kilo,而不支持短前缀,如k(#3019)。感谢 @costerwi。 - 添加了一个新的浏览器示例
examples/browser/lorenz.html,它使用solveODE并在图表中绘制结果(#3018)。感谢 @dvd101x。
2023-08-23, 11.10.0 #
- 将函数
quantileSeq扩展为支持dimension参数(#3002)。感谢 @dvd101x。 - 实现 #2735:支持使用布尔值数组进行索引,例如
a[[true, false, true]]和a[a > 2](#2994)。感谢 @dvd101x。 - 实现了函数
zeta(#2950, #2975, #2904)。感谢 @Bobingstern。 - 修复 #2990:
DenseMatrix可能会修改输入数组(#2991)。
2023-07-24, 11.9.1 #
- 修复
FunctionNode和SymbolNode中的一个安全漏洞,该漏洞允许通过math.evaluate执行任意代码。感谢 Harry Chen。 - 修复 #3001:mathjs 包包含
new Function(...)(CSP 问题)。
2023-07-19, 11.9.0 #
- 实现了函数
solveODE(#2958)。感谢 @dvd101x。 - 实现了函数
zpk2tf和freqz(#2988, #2969)。感谢 @alykhaled。 - 在函数
range中实现了对单位的支持(#2997)。感谢 @dvd101x。 - 修复 #2974:
simplify将加号和减号放在一起(#2981)。感谢 @MaybePixem。 - 修复 #2973:修复并改进了嵌入式文档(#2976)。感谢 @dvd101x。
- 修复 #2996:关于表达式树的文档中的两个示例错误。
- 修复了在转换温度时接近零的舍入误差(#2962)。感谢 @costerwi。
- 重构了函数
range,减少了代码量(#2995)。感谢 @dvd101x。
2023-06-20, 11.8.2 #
- 修复 #2971:改进了统计函数
min,max,mean,median,mode,std,sum,prod,variance的类型定义。修复了 v11.8.1 中引入的回归。 - 修复 #2972:
Unit.divide(Unit)的类型定义返回类型错误。
2023-06-13, 11.8.1 #
- 修复 #2964:函数
distance在计算点到直线的距离时存在问题(#2965)。感谢 @Kiku-CN。 - 修复
math.format在使用 BigNumbers 的engineering格式以及配置precision: 0的fixed格式时无法正确工作(#2956)。感谢 @mgreminger。 - 修复 #2880:无法映射立方根
cbrt。 - 修复 #2938:使文档中所有函数的语法描述一致(#2941)。感谢 @dvd101x。
- 修复 #2954:改进函数
min和max的 TypeScript 定义返回类型(#2955)。感谢 @Maxim-Mazurok。 - 修复 #2959:文档中的示例拼写错误。感谢 @kunalagrwl。
- 停止官方支持 Node.js 14,因为它已达到生命周期终点。
2023-04-03, 11.8.0 #
- 将函数
fraction、bignumber和number扩展为支持单位,参见 #2918(#2926)。 - 实现了单位
ampere的别名amp和amps(#2917)。感谢 @veggiesaurus。 - 改进了函数
gcd的 TypeScript 定义(#2922)。感谢 @brunoSnoww。 - 修复 #2923:改进函数
distance的文档(#2924)。感谢 @tmtron。
2023-03-15, 11.7.0 #
- 实现 #2567:函数
gcd接受数组作为参数(#2878)。感谢 @jakubriegel。 - 修复 #2908:改进了函数
partitionSelect、diff、expm1、round、nthRoots、sign、rigthArithShift、setIsSubset、setSize的文档和示例,以及关于单位的文档。感谢 @tmtron。 - 修复 #2907:空矩阵的行列式应为 1。
- 通过使用泛型编写函数声明,重构了 index.d.ts,大大减少了重复(#2913)。感谢 @brunoSnoww。
2023-02-24, 11.6.0 #
- 为以下函数及其相应运算符实现广播:
add,dotDivide,dotMultiply,dotPow,gcd,lcm,mod,nthRoot,subtract,bitAnd,bitOr,bitXor,leftShift,rightArithShift,rightLogShift,and,or,xor,compare,compareText,equal,larger,largerEq,smaller,smallerEq,unequal,atan2和to(#2895, #2753)。感谢 @dvd101x。 - 实现对非 2 的幂的 FFT 的支持(#2900, #2577)。感谢 @cyavictor88。
- 修复 #2888:更新函数
unit的类型定义,以允许从分数或复数创建单位。 - 修复 #2892:函数
sort的嵌入式帮助中的示例错误。 - 修复 #2891:函数
column和row有时会返回标量。 - 修复 #2896:在 TypeScript 定义中将函数
intersect的第四个参数定义为可选。感谢 @wodndb。 - 修复:quantileSeq 不接受矩阵作为第二个参数
prob(参见 #2902)。 - 修复了函数
to、distance、getMatrixDataType、subset和max中的示例错误(参见 #2902)。
2023-01-31, 11.5.1 #
- 为函数
rotationMatrix添加类型定义(#2860)。感谢 @brunoSnoww。 - 添加
lusolve(LUDecomposition, ...)的类型签名(#2864)。感谢 @evanmiller。 - 修复 #2873:rocket_trajectory_optimization.html 示例部分损坏。感谢 @dvd101x。
- 修复 #2871:覆盖率报告损坏(#2877)。感谢 @bornova。
- 修复 #2883:更新统计函数的文档,描述了缺失的语法。
- 修复 #2884:修复了函数
pow和其他一些函数嵌入式文档中的示例。 - 修复函数
complex的类型定义,针对单个数值输入(#2886),感谢 @ariymarkowitz。 - 修复
map()和forEach()的类型定义(#2887),感谢 @xiaohk。 - 修复 #2606:改进
dotMultiply、dotPow和dotDivide的类型定义(#2890)。感谢 @brunoSnoww。
2022-12-05, 11.5.0 #
- 改进
simplify在非交换上下文中的规则匹配(#2841)。感谢 @samueltlg。 - 简化:为非交换上下文添加规则并重组测试(#2847)。感谢 @samueltlg。
- 修复函数
reshape在矩阵情况下会修改输入(参见 #2854)。 - 修复
multiply()与number[]和number[][]的 TypeScript 类型(#2852)。感谢 @hfhchan。
2022-11-18, 11.4.0 #
- 为
simplify实现更多通配符来描述规则,例如更轻松地描述一元减号(#1915)。感谢 @thatcomputerguy0101。 - 实现了函数
schur、sylvester和lyap(#2646)。感谢 @egidioln。 - 实现了函数
polynomialRoot,并在基准测试中使用它(#2839)。感谢 @gwhitney。 - 修复 #2825 的部分问题:改进了非交换上下文中的常量运算简化(#2827)。感谢 @samueltlg。
- 修复 #2840:
Node.traverse和Node.forEach的文档和类型定义中的错误,它们返回void。
2022-11-07, 11.3.3 #
- 修复 #2830:防止在从
DenseMatrix创建SparseMatrix时插入零值(#2836)。感谢 @AlexandreAlvesDB。 - 修复 #2835:
v11.3.2中引入的FunctionNode类型定义的回归。参见 #2733。感谢 @dsteve。
2022-10-25, 11.3.2 #
- 为剩余的 Node 类型定义添加泛型(#2733)。感谢 @mattvague。
- 允许对(绝对)温度
kelvin、rankine、celsius和fahrenheit使用单位前缀(#2824)。感谢 @jfeist
2022-10-19, 11.3.1 #
2022-10-11, 11.3.0 #
- 在 TypeScript 中允许创建
Node的新子类(#2772)。请注意,这会禁用通过使用.type属性来缩小 MathNodes 的范围。请改用类型保护器,如isOperatorNode(...)(参见 #2810)。感谢 @mattvague。 - 修复 #2793:
flatten()克隆数组/Matrix 的条目(#2799)。 - 修复 #2627:
pinv的 TypeScript 定义缺失(#2804)。感谢 @HanchaiN。 - 将依赖项更新到
decimal.js@10.4.1。
2022-09-13, 11.2.1 #
- 修复了文档生成器,它无法生成函数引用。
2022-09-12, 11.2.0 #
- 实现了函数
isRelationalNode(#2731)。感谢 @isaacbyr。 - 在 TypeScript 定义的
OperatorNodeMap中添加了缺失的类型'largerEq'和'or'。感谢 @ajinkyac03。 - 修复了 min 函数类型定义中的拼写错误(#2768)。感谢 @mabdullahadeel。
- 改进了
pickRandom的 TypeScript 定义。感谢 @mattvague。 - 修复了单位
min的文档,它表示minutes,而不是minim(#2773)。感谢 @jasonhornsby。
2022-08-23, 11.1.0 #
- 添加了从值和纯(无值)Unit 创建 Unit 的构造函数(#2628)。感谢 @costerwi
- 修复 #2144:
examples/advanced/custom_loading.js已损坏。 - 修复了 TypeScript 定义中缺失的 JSON
replacer函数。感谢 @mattvague。 - 将依赖项更新到
typed-function@4.1.0和decimal.js@10.4.0。
2022-07-25,版本 11.0.1 #
- 修复 #2632:
simplifyConstant和simplifyCore的 TypeScript 问题,它们没有定义返回类型。
2022-07-23,版本 11.0.0 #
!!! 请注意:可能存在不兼容的更改 !!!
不兼容的更改
- 停止官方支持 IE11。
- 升级到
typed-function@3,参见 josdejong/typed-function/HISTORY.md。感谢 @gwhitney。最重要的是- 转换现在优先于
any。 - 变量
this不再绑定到类型化函数本身。 - 属性
typed.types、typed.conversions和typed.ignore已被移除。 - 现在有新的静态函数可用,如
typed.referTo、typed.referToSelf、typed.addTypes、typed.addConversions。
- 转换现在优先于
- 实现修改后的“规则 2”用于隐式乘法(#2370, #2460):当有一个除法后跟一个隐式乘法时,当 (a) 分子是带有可选前缀运算符(
-,+,~)的常量,以及 (b) 分母是常量时,除法的优先级高于隐式乘法。例如:以前-1 / 2 x被解释为-1 / (2 * x),而现在它被解释为(-1 / 2) * x。感谢 @gwhitney。 - 为三角函数、exp、log、gamma、square、sqrt、cube 和 cbrt 删除了元素级矩阵支持,以防止与标准矩阵函数混淆(#2440, #2465)。而是使用
math.map(matrix, fn)。感谢 @gwhitney。 - 简化:将等价的函数调用转换为运算符,例如,
add(2, x)现在将被简化为2 + x(#2415, #2466)。感谢 @gwhitney。 - 移除了从
number到string的自动转换(#2482)。感谢 @gwhitney。 - 修复 #2412:当输入只包含一个元素时,让函数
diff返回一个空矩阵(#2422)。 - 对
simplifyCore逻辑进行了内部重构(#2490, #2484, #2459)。函数simplifyCore不会再(部分)合并常量,该行为已移至simplifyConstant。simplifyConstant和simplifyCore的组合仍然接近simplifyCore的旧行为,但存在一些差异。要重现与旧simplifyCore相同的行为,您可以使用math.simplify(expr, [math.simplifyCore, math.simplifyConstant])。得益于重构,simplify在减少常量方面更加彻底。感谢 @gwhitney。 - 禁用对链式计算中剩余参数的拆分支持(#2485,#2474)。例如:
math.chain(3).max(4, 2).done()现在会抛出错误而不是返回4,因为math.max(...number)的剩余参数已在链式计算的内容和 max 函数的参数之间拆分。感谢 @gwhitney。 - 函数
typeOf现在对于函数返回function(小写),而不是Function(#2560)。感谢 @gwhitney。
非不兼容的更改
- 修复 #2600:改进
simplify的 TypeScript 定义。感谢 @laureen-m 和 @mattvague。 - 修复 #2607:改进
createUnit的类型定义。感谢 @egziko。 - 修复 #2608:澄清有关在使用 BigNumber 时需要配置较小
epsilon的文档。 - 修复 #2613:在文档中描述矩阵方法
get和set。 - 修复文档中
math.rationalize的链接(#2616)。感谢 @nukisman。 - 修复 #2621:为
count添加 TypeScript 定义(#2622)。感谢 @Hansuku。 - 改进
multiply的 TypeScript 定义(#2623)。感谢 @Windrill。
2022-06-28,版本 10.6.4 #
- 改进
factory函数的 TypeScript 定义,感谢 @mattvague。
2022-06-24,版本 10.6.3 #
- 撤销
v10.6.2中对factory应用的 TypeScript 定义修复,它们会引起一些复杂问题。
2022-06-24,版本 10.6.2 #
- 改进
ParenthesisNode的 TypeScript 定义。感谢 @mattvague。 - 将
MathNodeCommon['type']的 TypeScript 定义更改为不那么严格的字符串,以便可以用新的 Node 类进行扩展。感谢 @mattvague。 - 改进
factory函数的 TypeScript 定义,感谢 @mattvague。
2022-05-31,版本 10.6.1 #
- 改进
OperatorNode的 TypeScript 类型:现在可以定义泛型类型,如OperatorNode<'+', 'add'>。感谢 @mattvague。
2022-05-24,版本 10.6.0 #
- 实现傅里叶变换函数
fft和ifft(#2540)。感谢 @HanchaiN。 - 修复 TypeScript 类型未在导出的字段中列出的问题(#2569)。感谢 @mattvague。
- 对链式表达式的 TypeScript 定义进行了大幅改进(#2537)。感谢 @mattvague。
- 修复 #2571:改进函数
clone和cloneDeep的 TypeScript 定义(#2572)。感谢 @mattvague。 - 修复
derivative的第一个参数(持有表达式)在使用.toTex()时未正确转换的问题(#2564)。感谢 @mattvague。
2022-05-11,版本 10.5.3 #
- 修复 #2337:npm 包包含示例和文档,以解决在示例及其依赖项上报告的安全漏洞。
- 修复文档中缺少核心、构造和其他一些函数的问题。
- 停止对已结束生命周期的 Node.js 12 的官方支持。
2022-05-09,版本 10.5.2 #
- 修复 #2553:
@types/mocha被定义在dependencies而不是devDependencies中,导致使用此依赖项不同版本的项目出现问题。感谢 @Kolahzary。 - 修复 #2550:从 npm 包中移除
examples/node_modules文件夹。 - 修复 #2528:改进贡献指南(#2548)。
- 记录
SymbolNode.onUndefinedSymbol和FunctionNode.onUndefinedFunction。
2022-05-02,版本 10.5.1 #
- 修复 #2526,#2529:改进函数
round、fix、floor、ceil和nthRoot的 TypeScript 定义,并改进了这些函数的仅数字实现(#2531,#2539)。感谢 @simlaticak 和 @gwhitney。 - 修复 #2532:当在子表达式中使用时,矩阵索引符号
end不起作用。 - 修复 #2524:在生成 AUTHORS 列表时,忽略特定提交列表(例如,避免列表中出现不必要的重复)(#2543)。
- 为函数
resolve添加类型定义(#2536)。感谢 @mattvague。
2022-04-19,版本 10.5.0 #
- 实现 #1563:函数
pinv,摩尔-彭罗斯逆(#2521)。感谢 @HanchaiN。 - 为整数优化函数
det,通过切换到 Bareiss 算法:整数输入不再有舍入误差(#2516)。感谢 @HanchaiN。 - 实现 #2463:允许可逆方阵的负整数幂(#2517)。感谢 @HanchaiN。
- 为 number 和 Complex 类型实现
lgamma函数(定义为 log(gamma(z)))。取代 #320。(#2417)。感谢 @yifanwww。 - 修复 #2523:更新到最新的 complex.js 以改进
sin(z)对于小的im(z)(#2525)。感谢 @gwhitney。 - 修复 #2526:更新
ceil的 TypeScript 定义(#2531)。感谢 @simlaticak。 - 将 mocha 报告器更改为“dot”,以避免过长的日志文件。(#2520)。
2022-04-08,版本 10.4.3 #
- 修复 #2508:提高 stirlingS2 的精度(#2509)。感谢 @gwhitney。
- 修复 #2514:在函数
log的数字实现中添加可选参数base(#2515)。感谢 @gwhitney。 - 改进关于操作符
;的文档(#2512)。感谢 @gwhitney。
2022-03-29,版本 10.4.2 #
- 修复 #2499:单位转换“degC”和“K”的行为不同(#2501)。同时禁用获取具有偏移量的单位的符号,这是含糊不清的。感谢 @gwhitney。
- 修复 #2503:修复
log()中复数处理的一个问题,其中虚部绝对值远大于实部,已在complex.js@2.1.0中修复(#2505),感谢 @gwhitney,@infusion。 - 修复 #2493:当一个非函数的实体被当作函数调用时,错误消息不清晰(#2494)。感谢 @gwhitney。
- 在单位文档中的一些修复(#2498)。感谢 @dvd101x。
- 在嵌入式文档中添加
forEach示例(#2507)。感谢 @dvd101x。 - 将 approx.deepEqual() 改为接受一个 epsilon 参数,该参数指定比较容差。它已经被这样调用,但默默地忽略了容差。感谢 @yifanwww。
2022-03-23,版本 10.4.1 #
- 改进函数
unit的 TypeScript 定义(#2479)。感谢 @SinanAkkoyun。 - 为类型声明添加测试(#2448)。感谢 @samestep。
- 进一步改进
std和variance的 TypeScript 定义(使维度参数可选,#2474)。感谢 @NattapongSiri。 - 下一步(根据 #2431)为了完全发布“is”函数,如
isMatrix等:提供“is”函数的 TypeScript 定义并使其成为类型保护符。(#2432)。感谢 @ChristopherChudzicki。 - 修复 #2491:多行对象表达式在带注释时无法工作(#2492)。感谢 @gwhitney。
- 修复 #2478:在处理复数时计算特征向量的错误(#2496)。感谢 @gwhitney。
- 更新项目依赖项和 devDependencies。
2022-03-07,版本 10.4.0 #
- 修复 #2461:确保
simplifyCore递归处理所有二元节点(#2462)。感谢 @gwhitney。 - 修复 #2429:修复
std和variance函数的 TypeScript 定义(#2455)。感谢 @NattapongSiri。 - 修复 #1633:实现
cumsum函数,生成值列表或矩阵的累积和。(#1870)。感谢 @hjonasson。 - 升级到最新版本的
Fraction.js,具有更严格的输入,仅接受整数分子和分母。参见 #2427。 - 修复
format的文档示例中的拼写错误。(#2468)感谢 @abranhe。 - 为所有 jsdoc 示例编写单元测试。参见 #2452。感谢 @gwhitney。
2021-03-02,版本 10.3.0 #
- 修复 #1260:实现函数
symbolicEqual(#2424)。感谢 @gwhitney。 - 修复 #2441,#2442:支持将函数作为参数传递给表达式解析器中创建的函数(#2443)。感谢 @gwhitney。
- 修复 #2325:改进子集索引的文档(#2446)。感谢 @gwhitney。
- 修复 #2439:修复
complexEigs中的一个错误,其中实值范数无意中被类型化为复数(#2445)。感谢 @gwhitney。 - 修复 #2436:改进函数
map的文档和错误消息(#2457)。感谢 @gwhitney。
2022-03-01,版本 10.2.0 #
- 实现了上下文选项来控制
simplify中允许的简化,请参见 #2399,#2391。感谢 @gwhitney。 - 实现了函数
leafCount,作为衡量表达式复杂度的第一个简单指标,请参见 #2411,#2389。感谢 @gwhitney。 - 修复 #2413:改进
combinations以返回整数结果,对于较大的值没有舍入误差,请参见 #2414。感谢 @gwhitney。 - 修复 #2385:TypeScript 定义中缺少函数
rotate。感谢 @DIVYA-19。 - 修复 #2450:将 BigNumber 添加到
math.unit函数的参数类型中,并添加Unit.simplify和Unit.units的 TypeScript 类型(#2353)。感谢 @joshhansen。 - 修复 #2383:检测
simplify中的无限循环(#2405)。感谢 @gwhitney。 - 修复 #1423:合并同类项并约分和式(#2388)。感谢 @gwhitney。
2022-02-02,版本 10.1.1 #
- 改进和修复函数
simplify,感谢 @gwhitney。- 修复 #2393:
simplify('2-(x+1)')中的回归错误。 - 向
simplify添加consoleDebug选项,以查看正在发生什么。
- 修复 #2393:
- 修复
ConfigOptions的 TypeScript 定义,其中缺少选项predictable。
2022-01-15,版本 10.1.0 #
- 实现了函数
invmod,请参见 #2368,#1744。感谢 @thetazero。 - 改进和修复函数
simplify,感谢 @gwhitney。 - 修复 #2379:为函数
print添加嵌入式文档。 - 从函数
forEach的嵌入式文档中移除损坏的示例。
2021-12-29,版本 10.0.2 #
- 修复 #2156:简化形如
-1 / (-x)的表达式为1/x。感谢 @ony3000。 - 修复 #2363:移除用于分割数字的正则表达式的冗余部分。
- 修复 #2291:为函数
intersect添加对分数的支持。感谢 @thetazero。 - 修复 #2358:
SparseMatrix在用非连续索引替换矩阵子集时的错误。感谢 @Al-0。
2021-12-22,版本 10.0.1 #
- 修复 #1681:函数
gamma在某些情况下给出不精确的复数结果。感谢 @kmdrGroch。 - 修复了示例中的一个拼写错误,参见 #2366。感谢 @blackwindforce。
2021-11-03,版本 10.0.0 #
!!! 注意:TypeScript 定义中有重大更改!!!
-
对 TypeScript 类型进行了改进(提交 fc5c202e)。感谢 @joshhansen。首次引入于 v9.5.1,但因包含重大更改而被撤销。
重大更改:接口
MathNode已重命名为MathNodeCommon,并且相关接口的结构有所不同。 -
修复了 toHTML 的 TypeScript 定义中的拼写错误。感谢 @TheToto。
2021-11-03,版本 9.5.2 #
- 撤销对 TypeScript 类型的改进,因为它们包含重大更改。改进将在 v10.0.0 中发布。参见 #2339。
2021-10-13,版本 9.5.1 #
- 对 TypeScript 类型进行了各种改进。感谢 @joshhansen 和 @DianaTdr。
2021-09-22,版本 9.5.0 #
- 实现了对百分比计算的支持,请参见 #2303。感谢 @rvramesh。
- 修复 #2319:使
Parser.evaluate的 API 与math.evaluate一致:支持以表达式列表作为输入。 - 改进函数
setCartesian的文档。感谢 @fieldfoxWim。
2021-09-15,版本 9.4.5 #
- 通过改进内部函数
deepStrictEqual,提高了Node.equals的性能。感谢 @tomlarkworthy。 - TypeScript 定义中的修复。
- 定义
hasNumericValue。感谢 @write2kcl。 - 定义
MathNode.isRelationalNode。感谢 @m93a。 - 修复
MathNode.isConditionalNode中的拼写错误。感谢 @m93a。
- 定义
2021-07-07,版本 9.4.4 #
- 修复
ArrayNode.toTex():移除最后一行的行分隔符,参见 #2267。感谢 @davidtranhq。 - 修复 #2269:
intersect未对矩阵输入返回null。感谢 @m93a。 - 修复 #2245:由于缺少
Symbol的 polyfill,mathjs 在 IE11 中不再工作。浏览器捆绑包现在包含必要的 polyfills(因此它变大了,另参见 #2266)。感谢 @m93a。 - 更新依赖项(
complex.js@2.0.15,decimal.js@10.3.1)。 - 停止对已结束生命周期的 node.js 10 的官方支持。参见 #2258。
2021-06-23,版本 9.4.3 #
- 修复 #2222:mathjs 污染了
Decimal的原型。感谢 @m93a。 - 修复 #2253:表达式解析器在访问名为
e的嵌套对象属性时抛出错误。 - TypeScript 定义中的修复。
- 函数
floor,#2159,#2246。感谢 @write2kcl。 - 函数
simplify,参见 #2252。感谢 @nitroin。
- 函数
- 升级到
decimal.js@10.3.0。
2021-06-05,版本 9.4.2 #
- 实现了
eigs的迭代特征值查找器,使其更加健壮。参见 #2179,#2237。感谢 @m93a。 - 改进函数
parse的 TypeScript 定义。感谢 @OpportunityLiu。
2021-05-24,版本 9.4.1 #
- 修复 #2100:为
eigs添加 TypeScript 声明。感谢 @andrebianchessi。 - 修复 #2220:将 TypeScript 文件添加到发布的 npm 包中。感谢 @dhritzkiv。
- 更新关于 TypeScript 定义文件的 readme。感谢 @dhritzkiv。
- 更新至
fraction.js@4.1.1。
2021-05-16,版本 9.4.0 #
- 实现了对使用具有
Map接口的对象作为作用域的支持,请参见 #2143,#2166。感谢 @jhugman。 - 将
eigs扩展到支持一般的复数矩阵,请参见 #1741。感谢 @m93a。 - DenseMatrix 和 SparseMatrix 现在可迭代,请参见 #1184。感谢 @m93a。
- 实现了实用函数
matrixFromRows,matrixFromColumns,和matrixFromFunction,请参见 #2155,#2153。感谢 @m93a。 - 向项目中添加了 TypeScript 定义,使得安装
@types/mathjs不再是必需的,并且更容易改进定义。参见 #2187,#2192。感谢 @CatsMiaow。 - 升级了依赖项。
- 修复 #2174:函数
pickRandom没有名称。感谢 @HK-SHAO。 - 修复 #2019:VSCode 自动导入一直添加 import { null } from ‘mathjs’。
- 修复 #2185:修复单位除法(也可能返回数字)的 TypeScript 定义。
- 修复 #2123:为函数
row和column添加类型定义。 - 修复了包中未公开的一些文件,参见 #2213。感谢 @javiermarinros。
2021-04-12,版本 9.3.2 #
- 修复 #2169:mathjs 请求
@babel/runtime依赖项。此回归在v9.3.1中引入。
2021-04-10,版本 9.3.1 #
- 修复 #2133:大大提高了
isPrime的性能,参见 #2139。感谢 @Yaffle。 - 修复 #2150:在评估不存在的函数时,给出清晰的错误“Error: Undefined function …”
- 修复 #660:公开内部函数
FunctionNode.onUndefinedFunction(name)和SymbolNode.onUndefinedSymbol(name),允许覆盖行为。默认情况下,会抛出错误。
2021-03-10,版本 9.3.0 #
2021-02-03,版本 9.2.0 #
- 实现了函数
count来计算矩阵中的总元素数,请参见 #2085。感谢 @Josef37。 - 修复 #2096:清理对外部依赖
crypto的旧引用。 - 代码中的一些重构以消除重复,请参见 #2093。感谢 @Josef37。
2021-01-27,版本 9.1.0 #
- 扩展函数
reshape,支持通配符-1来自动计算剩余大小,例如reshape([1, 2, 3, 4, 5, 6], [-1, 2])将输出[[0, 1], [2, 3], [4, 5]]。参见 #2075。感谢 @Josef37。 - 修复 #2087:函数
simplify忽略log的第二个参数,例如在simplify('log(e, 9)')中。感谢 @quentintruong。
2021-01-16,版本 9.0.0 #
- 改进了对 bin、hex 和 oct 字面量的支持。参见 #1996。感谢 @clnhlzmn。
- 重大更改:解析带有前缀
0b、0c和0x的字面量现在
默认是无符号的。要将它们解析为有符号,您必须指定一个后缀来指定字长,例如i16或i32。 - 函数
format现在支持更多表示法:bin、‘hex’ 和oct,例如format(255, {notation: "hex"})。 - 函数
format、bin、hex、oct现在允许指定字长,例如bin(10, 32)和format(10, {notation: "bin", wordSize: 32})。 - BigNumber 支持 bin、hex 和 oct 字面量。
- 重大更改:解析带有前缀
- 扩展并改进了示例 rocket_trajectory_optimization.html。感谢 @Josef37。
2020-12-30,版本 8.1.1 #
- 大大提高了解析和评估单位的性能,请参见 #2065。感谢 @flaviut。
- 将依赖项
fraction.js升级到v4.0.13。 - 将持续集成测试从 Travis CI 迁移到 Github Workflow,请参见 #2024,#2041。感谢 @harrysarson。
2020-12-04,版本 8.1.0 #
- 实现了单位
kilogramforce(kgf)。感谢 @rnd-debug。 - 修复 #2026:为函数
simplify实现了一个新选项fractionsLimit,默认值为Infinity。 - 改进了函数
clone的文档。感谢 @redbar0n。
2020-11-09,版本 8.0.1 #
- 修复 #1979:使用“mathjs/number”入口点时缺少“subset”依赖项。
- 修复 #2022:更新 pretty printing with MathJax 示例到最新版本的 MathJax。感谢 @pkra。
2020-11-06,版本 8.0.0 #
!!! 请注意:可能存在不兼容的更改 !!!
- 您现在可以直接在 Node.js 中使用 mathjs 和 ES 模块,无需转译器(请参阅 #1928、#1941、#1962)。自动加载 commonjs 或 ES 模块代码得到了改进。所有生成的代码已移至
/lib:浏览器 bundle 已从/dist移至/lib/browser,ES 模块文件移至/lib/esm,commonjs 文件移至/lib/cjs。感谢 @GreenImp。 - 不再提供未压缩的 bundle
dist/math.js。请使用压缩后的 bundle,或自行创建 bundle。 - 用
seedrandom替换了随机库seed-random,请参阅 #1955。感谢 @poppinlp。 pickRandom中的重大更改,请参阅 #1990、#1976。- 当给定的数字大于提供的可能项的长度时,将不再返回输入矩阵。而是始终返回具有所需数量选择项的结果。
- 当输入是
Matrix时,现在将返回Matrix作为输出。 -
引入了新语法
math.pickRandom(array, { weights, number, elementWise }) - 引入了新选项
elementWise,默认值为true。当将elementWise设置为false时,包含数组的数组将返回数组的选择项,而不是嵌套数组中的元素。
2020-11-02,版本 7.6.0 #
- 实现了函数
rotate(w, theta)。请参阅 #1992、#1160。感谢 @rnd-debug。 - 通过
Unit.isValidAlpha实现了对 Units 中自定义字符的支持。请参阅 #1663、#2000。感谢 @rnd-debug。
2020-10-10,版本 7.5.1 #
- 修复了
math.config中的对象污染漏洞。感谢 Snyk。
2020-10-07,版本 7.5.0 #
- 函数
pickRandom现在允许从 2 维或更高维度的矩阵中随机选择元素,而不仅仅是从向量中,请参阅 #1974。感谢 @KonradLinkowski。
2020-10-07,版本 7.4.0 #
- 在函数
ceil、floor和fix中实现了对精度参数的支持,与round类似,请参阅 #1967、#1901。感谢 @rnd-debug。 - 实现了函数
rotationMatrix,请参阅 #1160、#1984。感谢 @rnd-debug。 - 当使用
sqrtm处理维度大于 2 的矩阵时,实现清晰的错误消息。感谢 @KonradLinkowski。 - 将依赖项
decimal.js更新至10.2.1。
2020-09-26,版本 7.3.0 #
- 实现了函数
usolveAll和lsolveAll,请参阅 #1916。感谢 @m93a。 - 实现了对函数
std和variance中单位的支持,请参阅 #1950。感谢 @rnd-debug。 - 在表达式解析器中实现了对二进制、八进制和十六进制表示法的支持,并实现了用于格式化的函数
bin、oct和hex。感谢 @clnhlzmn。 - 修复 #1964:
BigNumber和Fraction的负被除数模不一致的计算。感谢 @ovk。
2020-08-24,版本 7.2.0 #
- 实现了新函数
diff,请参阅 #1634、#1920。感谢 @Veeloxfire。 - 在
norm函数中实现了对矩阵的范数 2 支持。感谢 @rnd-debug。
2020-07-13,版本 7.1.0 #
- 实现了对类型化函数递归(自引用)的支持,新功能源于
typed-function@2.0.0。这修复了 #1885:扩展了新数据类型的函数并非总能正常工作。感谢 @nickewing。 - 修复 #1899:表达式树的文档仍在使用旧命名空间
math.expression.node.*而不是math.*。
2020-06-24,版本 7.0.2 #
- 修复 #1882:使
DenseMatrix.resize和SparseMatrix.resize也能接受DenseMatrix和SparseMatrix作为输入,而不仅仅是Array。 - 修复函数
sum、prod、min和max在传递单个字符串(如sum("abc"))时未抛出转换错误。
2020-05-30,版本 7.0.1 #
- 修复 #1844:澄清函数
eigs的文档。感谢 @Lazersmoke。 - 修复 #1855:修复
math.nthRoots(x)文档中的错误。 - 修复 #1856:使库能够抵抗原型链污染。
2020-05-07,版本 7.0.0 #
不兼容的更改
- 改进了复数
dot积的计算。第一个参数现在被共轭。请参阅 #1761。感谢 @m93a。 - 已停止官方支持 Node.js v8,因为它已达到生命周期终点。
- 移除了 v6 中引入的所有弃用警告。要从 v5 平滑升级到 v7 或更高版本,请先升级到 v6 并解决所有弃用警告。
2020-05-04,版本 6.6.5 #
- 修复 #1834:值
Infinity无法序列化和反序列化。这现在已通过新的math.replacer函数得到解决,该函数用作JSON.stringify(value, math.replacer)。 - 修复 #1842:值
Infinity未转换为 LaTeX 符号\\infty。
2020-04-15,版本 6.6.4 #
- 修复了发布的文件包含 Windows 行尾符(CRLF 而非 LF)。
2020-04-10,版本 6.6.3 #
- 修复 #1813:函数
format的工程表示法中存在错误,有时会导致不必要的尾随零。 - 修复 #1808:方法
.toNumber()和.toNumeric()在无单位的单位上不起作用。 - 修复 #1645:无法使用命名运算符
mod、and、not、or、xor、to、in作为对象键。感谢 @Veeloxfire。 - 修复
eigs未使用config.epsilon。
2020-03-29,版本 6.6.2 #
- 修复 #1789:当输入包含 BigNumber 时,函数
eigs未使用 BigNumber 精度进行计算。 - 在 npm
prepare期间运行构建脚本,因此可以直接从 git 安装时使用该库。请参阅 #1751。感谢 @cinderblock。
2020-02-26,版本 6.6.1 #
- 修复 #1725:简化
a/(b/c)。感谢 @dbramwell。 - 修复了
row和column文档中的示例。
2020-02-01,版本 6.6.0 #
- 实现了函数
eigs,请参阅 #1705、#542、#1175。感谢 @arkajitmandal。 - 修复了 #1727:使用
fromJSON创建DenseMatrix时验证矩阵大小。 - 修复了
DenseMatrix.map复制原始矩阵的大小和数据类型,而不是检查回调返回的维度和类型。 - 在依赖项中添加了插入符号(例如
^1.2.3),以允许下游更新,而无需等待 mathjs 的新版本发布。
2020-01-08,版本 6.5.0 #
- 为
createUnit实现了baseName选项,请参阅 #1707。感谢 @ericman314。
2020-01-06,版本 6.4.0 #
- 使用 n 维点扩展了
dimension函数的支持。感谢 @Veeloxfire。
2019-12-31,版本 6.3.0 #
- 将
BigNumber的factorial性能提高了高达两倍,请参阅 #1687。感谢 @kmdrGroch。
2019-11-20,版本 6.2.5 #
- 修复了
IndexNode使用硬编码、基于一的index实现,导致无法实例化基于零的表达式解析器版本。请参阅 #782。
2019-11-20,版本 6.2.4 #
- 修复 #1669:当主元为零时,函数 'qr' 抛出错误,感谢 @kevinkelleher12 和 @harrysarson。
- 解决 #942:在 'qr' 中删除误导性断言。感谢 @harrysarson。
- 解决了 complex.js 中的一个 bug,其中
sign(0)返回 complex NaN。感谢 @harrysarson。
2019-10-06,版本 6.2.3 #
- 修复 #1640:函数
mean对单位不起作用。感谢 @ Clintonc。 - 修复 #1639:函数
min在函数std的嵌入式文档的“另请参阅”部分中重复出现。 - 提高了
isPrime的性能,请参阅 #1641。感谢 @arguiot。
2019-09-23,版本 6.2.2 #
- 修复了
map和clone方法未复制IndexNode的dotNotation属性。感谢 @rianmcguire。 - 修复了
toHTML文档中的拼写错误。感谢 @maytanthegeek。 - 修复 #1615:
isNumeric文档中的错误。 - 修复 #1628:无法对空字符串或值为
0的数字调用方法。
2019-08-31,版本 6.2.1 #
- 修复 #1606:函数
format对表达式不起作用。
2019-08-28,版本 6.2.0 #
- 提高了
combinationsWithRep的性能。感谢 @waseemyusuf。 - 添加了单位别名
bit和byte。 - 修复了文档中将
bit和byte引用为bits和bytes。 - 更新了依赖项
typed-function@1.1.1。
2019-08-17,版本 6.1.0 #
- 实现了函数
combinationsWithRep(请参阅 #1329)。感谢 @waseemyusuf。
2019-08-05,版本 6.0.4 #
2019-07-07,版本 6.0.3 #
2019-06-11,版本 6.0.2 #
- 修复了在禁用
import函数后无法设置配置(自 v6.0.0 以来的回归)。
2019-06-09,版本 6.0.1 #
- 修复了 npm 库中未发布函数引用的问题。
- 修复了生成文档中
evaluate和parse函数缺失的问题。
2019-06-08,版本 6.0.0 #
!!! 请注意:可能存在不兼容的更改 !!!
最显著的更改 #
-
完全支持 **ES 模块**。开箱即支持 tree-shaking。
加载所有函数
import * as math from 'mathjs'使用少量函数
import { add, multiply } from 'mathjs'加载所有函数并进行自定义配置
import { create, all } from 'mathjs' const config = { number: 'BigNumber' } const math = create(all, config)加载少量函数并进行自定义配置
import { create, addDependencies, multiplyDependencies } from 'mathjs' const config = { number: 'BigNumber' } const { add, multiply } = create({ addDependencies, multiplyDependencies }, config) -
支持所有函数 **轻量级、仅数字** 的实现
import { add, multiply } from 'mathjs/number' -
幕后使用新的 **依赖注入** 解决方案。
重大更改 #
-
不再支持 Node 6。
-
函数
config和import不再可用于全局上下文// v5 import * as mathjs from 'mathjs' mathjs.config(...) // error in v6.0.0 mathjs.import(...) // error in v6.0.0而是创建您自己的 mathjs 实例,并在其中传递配置和导入
// v6 import { create, all } from 'mathjs' const config = { number: 'BigNumber' } const mathjs = create(all, config) mathjs.import(...) - 将函数
typeof重命名为typeOf,var重命名为variance,eval重命名为evaluate。(旧函数名是保留关键字,不能用作变量名)。 - 弃用了
Matrix.storage函数。请使用math.matrix代替来创建矩阵。 - 弃用了函数
math.expression.parse,请使用math.parse代替。以前用于自定义支持字符,例如通过替换math.parse.isAlpha。 - 将所有类(如
math.type.Unit和math.expression.Parser)分别移至math.Unit和math.Parser。 - 修复 #1428:转换迭代已替换的节点。新行为是当节点被替换时停止迭代。
- 不再支持在导入工厂函数时重命名它们。
- 弃用了函数
erf的伪 BigNumber 支持。 -
移除了所有用于加载特定函数而不是全部函数的 index.js 文件,例如
// v5 // ... set up empty instance of mathjs, then load a set of functions: math.import(require('mathjs/lib/function/arithmetic'))现在只需像这样加载单个函数
// v6 import { add, multiply } from 'mathjs'要为函数设置特定配置
// v6 import { create, addDependencies, multiplyDependencies } from 'mathjs' const config = { number: 'BigNumber' } const math = create({ addDependencies, multiplyDependencies }, config)请参阅示例
advanced/custom_loading.js。 - 更新了所有物理单位的最新官方值。请参阅 #1529。感谢 @ericman314。
非破坏性更改 #
- 实现了单位
t、tonne、bel、decibel、dB,以及candela的前缀。感谢 @mcvladthegoat。 - 修复了
epsilon设置全局应用于复数的问题。 - 修复了
math.simplify('add(2, 3)')抛出错误的问题。 - 修复 #1530:数字格式化先应用
lowerExp和upperExp,然后再舍入值,而不是反过来。 - 修复 #1473:移除了每个文件中的
'use strict',不再需要。
2019-05-18,版本 5.10.3 #
- 修复了
del依赖项被列为依赖项而不是开发依赖项。
2019-05-18,版本 5.10.2 #
2019-05-17,版本 5.10.1 #
- 修复 #1512:使用
engineering符号的格式化在值有效数字少于输出位数时可能产生错误结果。
2019-05-08,版本 5.10.0 #
- 修复了
lib/header.js未填充日期和版本的问题。感谢 @kevjin。 - 升级了依赖项
decimal.js@10.2.0,修复了 node.js 12 上的一个问题。
2019-04-08,版本 5.9.0 #
- 实现了函数
row和column(请参阅 #1413)。感谢 @SzechuanSage。 - 修复 #1459:函数
format的engineering表示法对BigNumber不可用。 - 修复 #1465:
node.toHTML()对于一元运算符(如factorial)不正确。
2019-03-20,版本 5.8.0 #
2019-03-10,版本 5.7.0 #
- 在
derivative中实现了对pow()的支持。感谢 @sam-19。 - 优雅处理
fix、ceil、floor和range中的舍入误差(修复 #1429,另请参阅 #1434、#1432)。感谢 @ericman314。
2019-03-02,版本 5.6.0 #
2019-02-20,版本 5.5.0 #
- 修复 #1401:
SparseMatrix的map和forEach方法在索引无序时无法正常工作。 - 修复 #1404:负数的舍入不一致。
- 将 tiny-emitter 升级到 v2.1.0(#1397)。
2019-01-25,版本 5.4.2 #
- 修复了
math.format在精度大于 1025 位时对 BigNumbers 不起作用(请参阅 #1385)。感谢 @ericman314。 - 修复了
RelationalNode不正确的 LaTeX 输出。感谢 @rianmcguire。 - 修复了
FunctionNode的map、forEach、traverse和transform方法中的一个 bug。
2019-01-10,版本 5.4.1 #
2018-12-09,版本 5.4.0 #
- 扩展了 sum.js 以接受 dimension 参数来计算特定轴上的总和。感谢 @bnlcas。
- 修复 #1328:对象不能多行书写。感谢 @GHolk。
- 移除了
Unit.format和Unit.toString引起的副作用,这些副作用会在执行时更改单位。感谢 @ericman314。
2018-12-03,版本 5.3.1 #
- 修复 #1336:Unit.toSI() 返回带前缀的单位,如
mm而不是m。感谢 @ericman314。
2018-11-29,版本 5.3.0 #
- 实现了函数
hasNumericValue。感谢 @Sathish-kumar-Subramani。 - 修复 #1326:print.js 中的非 ASCII 字符。
- 修复 #1337:
math.format在使用{ precision: 0 }时无法正常工作。感谢 @dkenul。
2018-10-30,版本 5.2.3 #
- 修复 #1293:
escape-latex中的非 Unicode 字符在某些特定情况下会引起问题。感谢 @dangmai。 - 修复了函数
bitNot的不正确的 LaTeX 输出,请参阅 #1299。感谢 @FSMaxB。 - 修复 #1304:函数
pow不支持输入pow(Unit, BigNumber)。 - 升级了依赖项(
escape-latex@1.2.0)
2018-10-23,版本 5.2.2 #
- 修复 #1286:修复了自定义单位的单位基础识别和格式化。感谢 @ericman314。
2018-10-18,版本 5.2.1 #
- 修复了单位
rod定义为5.02921而不是5.0292。感谢 @ericman314。 - 升级了依赖项(
fraction.js@4.0.10) - 升级了开发依赖项(
@babel/core@7.1.2、nyc@13.1.0、webpack@4.21.0)。
2018-10-05,版本 5.2.0 #
- 实现了对链式条件(如
10 < x <= 50)的支持。感谢 @ericman314。 - 添加了一个示例,展示了在 mathjs 中使用
BigInt的概念验证。 - 修复 #1269:BigNumber 除以 Unit 的 bugfix。感谢 @ericman314。
- 修复 #1240:允许只有值没有单位的单位。感谢 @ericman314。
2018-09-09,版本 5.1.2 #
- 修复了
parse文档中的拼写错误。感谢 @mathiasvr。 - 修复 #1222:
subset文档中的拼写错误。 - 修复 #1236:
quantileSeq返回不一致。 - 修复 #1237:norm 有时返回复数而不是数字。
- 升级了依赖项(
fraction.js@4.0.9) - 升级了开发依赖项(
babel@7、karma-webpack@3.0.4、nyc@13.0.1、standard@12.0.0、uglify-js@3.4.9、webpack@4.17.2)
2018-08-21,版本 5.1.1 #
- 函数
isNumeric现在能识别更多类型。 - 修复 #1214:函数
sqrt、max、min、var、std、mode、mad、median和partitionSelect未能妥善处理NaN输入。在某些情况下(median、mad和partitionSelect),这会导致无限循环。 - 升级了依赖项(
escape-latex@1.1.1) - 升级了开发依赖项(
webpack@4.17.0)
2018-08-12,版本 5.1.0 #
- 实现了对单引号包围的字符串的支持。感谢 @jean-emmanuel。
- 实现了函数
getMatrixDataType。感谢 @JasonShin。 - 在
simplify中实现了新的options参数。感谢 @paulobuchsbaum。 - 修复了
rationalize中的错误,请参见 #1173。感谢 @paulobuchsbaum。
2018-07-22, 版本 5.0.4 #
- 大幅提高了
factorial函数处理数字的性能。这也提高了gamma、permutation和combination函数的性能。请参见 #1170。感谢 @honeybar。 - 由于 @honeybar 的朋友的帮助,大幅提高了
reshape函数的性能。
2018-07-14, 版本 5.0.3 #
- 修复了许多函数(例如
add和subtract)在处理定义了datatype的矩阵时无法正常工作的问题。 - 修复了 #1147:
format函数在engineering记数法下输出的有效数字位数不正确的问题。感谢 @ericman314。 - 修复了在导入同名工厂函数覆盖转换函数时,转换函数未能被正确清理的问题。
- 修复了文档中损坏的链接。感谢 @stropitek。
- 将
parse的代码重构为函数式方法。感谢 @harrysarson。 - 将
decimal.js的导入更改为 ES6。感谢 @weinshel。
2018-07-07, 版本 5.0.2 #
- 修复了 #1136:火箭轨迹示例(自 v4.0.0 起)损坏的问题。
- 修复了 #1137:
simplify不必要地将隐式乘法替换为显式乘法的问题。 - 修复了 #1146:
rationalize对某些带小数的输入抛出异常的问题。感谢 @maruta。 - 修复了 #1088:函数参数未传递给
rawArgs函数的问题。 - 修复了高级示例
add_new_datatypes。 - 修复了 mathjs 核心常量在没有复数时无法工作的问题。感谢 @ChristopherChudzicki。
- 修复了文档中关于单位的损坏链接。感谢 @stropitek。
- 升级了依赖项(
typed-function@1.0.4,complex.js@2.0.11)。 - 升级了开发依赖项(
babel-loader@7.1.5,uglify-js@3.4.3,expr-eval@1.2.2,webpack@4.15.1)。
2018-07-01, 版本 5.0.1 #
- 改进了转换单位时的错误消息。感谢 @gap777。
- 升级了开发依赖项(
kerma,uglify-js,webpack)。
2018-06-16, 版本 5.0.0 #
!!! 请注意:可能存在不兼容的更改 !!!
- 实现了复共轭转置
math.ctranspose。请参见 #1097。感谢 @jackschmidt。 - 更改了表达式解析器中
A'(转置)的行为,使其计算复共轭转置。请参见 #1097。感谢 @jackschmidt。 - 添加了对
complex({abs: 1, arg: 1})的支持,并改进了复数文档。感谢 @ssaket。 - 将
eye重命名为identity,请参见 #1054。 - Math.js 代码现在可以包含 ES6。ES6 源代码已从
lib移动到src,而lib现在包含编译后的 ES5 代码。 - 升级了依赖项。
decimal.js从9.0.1升级到10.0.1- 升级了开发依赖项
- 将代码风格更改为 https://standardjs.com/,在
npm test上运行 Linter。请参见 #1110。 - 停止支持 bower。请改用 npm 或其他包管理器。
- 停止支持
clone和typeof函数的(非原始)Number、Boolean和String实例。 - 停止官方支持 IE9(可能仍可用,但未进行测试)。
- 修复了 #851:sqrt、nthRoot 和 pow 的行为更一致。感谢 @dakotablair。
- 修复了 #1103:在包含
derivative的节点上调用toTex会导致异常。感谢 @joelhoover。
2018-06-02, 版本 4.4.2 #
- 大幅提高了
det的性能。感谢 @ericman314。 - 修复了 #1065, #1121:修复了
compareNatural函数的错误文档,并阐明了字符串的行为。 - 修复了 #1122:
inv函数中的回归(自v4.4.1起)。感谢 @ericman314。
2018-05-29, 版本 4.4.1 #
- 修复了 #1109:
inv函数在处理接近零的值时的错误。感谢 @ericman314。
2018-05-28, 版本 4.4.0 #
- 实现了函数
equalText和compareText。请参见 #1085。
2018-05-21, 版本 4.3.0 #
- 实现了矩阵指数
math.expm。感谢 @ericman314。 - 修复了 #1101:在 WebWorker 中加载时 math.js bundle 无法工作的问题。
- 升级了依赖项。
complex.js从v2.0.2升级到v2.0.10。fraction.js从v4.0.4升级到v4.0.8。
- 升级了开发依赖项(
mocha,uglify-js,webpack)。
2018-05-05, 版本 4.2.2 #
- 正确计算了复数矩阵的弗罗贝尼乌斯范数,请参见 #1098。感谢 @jackschmidt。
- 修复了 #1076:由于升级到
escape-latex@1.0.3,无法在 React VR 中使用 mathjs 的问题。
2018-05-02, 版本 4.2.1 #
- 修复了
dist/math.js被压缩的问题。
2018-05-02, 版本 4.2.0 #
- 实现了函数
math.sqrtm。感谢 @ferrolho。 - 实现了函数
math.log2、math.log1p和math.expm1。感谢 @BigFav 和 @harrysarson。 - 修复了在 nodejs v10 上损坏的一些单元测试。
- 升级了开发依赖项。
- 停止了在 nodejs v4 上的集成测试。
2018-04-18, 版本 4.1.2 #
- 修复了 #1082:实现了对单位复数形式
decades、centuries和millennia的支持。 - 修复了 #1083:
decade和watt单位在字符串化时名称错误。感谢 @ericman314。
2018-04-11, 版本 4.1.1 #
- 修复了 #1063:在解析带有单目负号的变量时,
derivative无法工作,例如math.derivative('-x', 'x')。
2018-04-08, 版本 4.1.0 #
- 使用数组和矩阵扩展了
math.print函数的支持。感谢 @jean-emmanuel。 - 修复了 #1077:使用 reviver 对节点进行 JSON 序列化/反序列化时不受支持的问题。
- 修复了 #1016:使用
ResultSet和SymbolNode等节点扩展了math.typeof的支持。 - 修复了 #1072:为单位
bar添加了长前缀和短前缀的支持(例如millibar和mbar)。
2018-03-17, 版本 4.0.1 #
2018-02-25, 版本 4.0.0 #
!!! 请注意:可能存在不兼容的更改 !!!
破坏性更改(另请参见 #682)
-
新的表达式编译器
表达式解析器的编译器已替换为不使用内部
eval的编译器。请参见 #1019。这意味着- 在大多数浏览器上性能略有提升。
- 安全漏洞风险降低。
-
新的编译器代码更容易理解、维护和调试。
破坏性更改:在使用表达式解析器中的自定义节点时,
_compile的语法已更改。但这属于未记录的功能。
-
解析后的表达式
-
类
ConstantNode已更改,它仅保存值而不是保存字符串值及其类型。ConstantNode(valueStr, valueType) 现在是ConstantNode(value)。字符串化使用math.format,这可能会导致数字输出格式不同。 -
常量
true、false、null、undefined、NaN、Infinity和uninitialized现在在表达式解析器中被解析为 ConstantNodes 而不是 SymbolNodes。请参见 #833。
-
-
隐式乘法
-
更改了隐式乘法的行为,使其优先级高于显式乘法和除法,但在某些特定情况下除外。这为隐式乘法提供了更自然的行为。例如
24h / 6h现在返回4,而1/2 kg求值为0.5 kg。感谢 @ericman314。参见:https://github.com/josdejong/mathjs/blob/v4/docs/expressions/syntax.md#implicit-multiplication。 -
不再支持立即调用函数返回的函数,例如
partialAdd(2)(3),而是将这些表达式评估为隐式乘法partialAdd(2) * (3)。请参见 #1035。
-
-
字符串格式化
-
在函数
math.format中,选项{exponential: {lower: number, upper: number}}(其中lower和upper是值)被替换为{lowerExp: number, upperExp: number}}(其中lowerExp和upperExp是指数)。请参见 #676。例如math.format(2000, {exponential: {lower: 1e-2, upper: 1e2}})现在是
math.format(2000, {lowerExp: -2, upperExp: 2}) -
在函数
math.format中,选项notation: 'fixed'不再在未指定精度时四舍五入到零位数:它会保留原有的数字。请参见 #676。
-
-
字符串比较
更改了关系函数(
compare,equal,equalScalar,larger,largerEq,smaller,smallerEq,unequal)的行为,使其按字符串中包含的数值进行比较,而不是按字母顺序。这也影响了函数deepEqual,sort,min,max,median和partitionSelect。如果需要按文本对数组进行排序,请使用compareNatural。请参见 #680。 -
角度单位
将
rad、deg和grad改为具有短前缀,并引入了radian、degree和gradian及其复数形式,并具有长前缀。请参见 #749。 -
Null
-
新的 typed-function 库
- 用于检查函数输入类型的
typed-function库已完全重写,不再在底层使用eval。这意味着降低了安全风险,代码更容易调试。API 保持不变,但错误消息可能略有不同。性能相当,但在特定用例和浏览器中可能有所不同。
- 用于检查函数输入类型的
非破坏性更改
- 得益于新的表达式编译器和
typed-function实现,mathjs 不再在底层使用 JavaScript 的eval。这使得 mathjs 可以在具有安全限制的环境中使用。请参见 #401。 - 在
OperatorNode上实现了附加方法isUnary()和isBinary()。请参见 #1025。 - 改进了统计函数的错误消息。
- 升级了开发依赖项。
- 修复了 #1014:
derivative悄悄忽略了具有多个参数的运算符节点中的附加参数。
2018-02-07, 版本 3.20.2 #
- 升级到
typed-function@0.10.7(错误修复版本)。 - 修复了在应用
map函数时,implicit选项未从OperatorNode复制的问题。感谢 @HarrySarson。 - 修复了 #995:
toTex()中空格和下划线未正确转义的问题。感谢 @FSMaxB。
2018-01-17, 版本 3.20.1 #
- 修复了 #1018:
simplifyCore在某些情况下使用括号时失败。感谢 @firepick1。
2018-01-14, 版本 3.20.0 #
- 在
derivative中为运算符+和*实现对 3 个或更多参数的支持。感谢 @HarrySarson。请参见 #1002。 - 修复了
simplify错误地评估具有多个参数的函数的问题:simplify('f(x, y, z)')的评估结果为f(f(x, y), z)而不是f(x, y, z)。感谢 @joelhoover。 - 修复了
simplify在某些情况下简化未知函数时抛出错误的问题,例如simplify('f(4)')。感谢 @joelhoover。 - 修复了 #1013:
simplify错误地简化了一些包含单目负号的表达式,例如0 - -x。感谢 @joelhoover。 - 修复了
xor文档中示例的错误。感谢 @denisx。
2018-01-06, 版本 3.19.0 #
- 将函数
distance和intersect扩展为支持 BigNumbers。感谢 @ovk。 - 改进了
simplify函数:添加了一个规则,允许合并嵌入式数量的同类项。感谢 @joelhoover。
2017-12-28, 版本 3.18.1 #
- 修复了 #998:简化包含减法的表达式时出现的问题。感谢 @firepick1。
2017-12-16, 版本 3.18.0 #
- 实现了函数
rationalize。感谢 @paulobuchsbaum。 -
升级了依赖项。
decimal.js 7.2.3 → 9.0.1 (no breaking changes affecting mathjs) fraction.js 4.0.2 → 4.0.4 tiny-emitter 2.0.0 → 2.0.2 - 升级了开发依赖项。
- 修复了 #975:lusolve 文档中错误的示例。
- 修复了 #983:
pickRandom在输入只有一个值的数组时返回数组而不是单个值。澄清了文档。 - 修复了 #969:通过重命名内部使用的文件夹“docs”为“embeddedDocs”来避免 yarn autoclean 问题。
2017-11-18, 版本 3.17.0 #
- 改进了
simplify处理嵌套指数的问题。感谢 @IvanVergiliev。 - 修复了
typed-function中的安全漏洞,该漏洞允许通过创建带有 JavaScript 代码作为名称的类型化函数来在 JavaScript 引擎中执行任意代码。感谢 Masato Kinugawa。 - 修复了安全漏洞,该漏洞允许通过使用 Unicode 字符创建对象来替换像 constructor 这样的禁止属性。未发现已知漏洞,但可能允许执行任意代码。感谢 Masato Kinugawa。
2017-10-18, 版本 3.16.5 #
- 修复了 #954:当传递三个或更多数组或矩阵时,函数
add和multiply无法工作。
2017-10-01, 版本 3.16.4 #
- 修复了 #948, #949:函数
simplify返回错误结果或陷入无限递归循环。感谢 @ericman314。 - 修复了嵌入式文档中的许多小问题。感谢 @Schnark。
2017-08-28, 版本 3.16.3 #
- 修复了 #934:单目负号的错误简化。感谢 @firepick1。
- 修复了 #933:函数
simplify重新排列操作。感谢 @firepick1。 - 修复了 #930:函数
isNaN对复数(只有实部或虚部为NaN)返回错误结果。 - 修复了 #929:
FibonacciHeap.isEmpty返回错误结果。
2017-08-20, 版本 3.16.2 #
- 修复了 #924:
simplify中的回归,不再接受simplify(expr, rules, scope)签名。感谢 @firepick1。 - 修复了字符串化包含隐式乘法的表达式时缺少括号的问题(参见 #922)。感谢 @FSMaxB。
2017-08-12, 版本 3.16.1 #
- 出于安全原因,类型检查现在通过更严格的函数(如
isComplex(x))进行,而不是通过鸭子类型检查(如x && x.isComplex === true)。 - 修复了 #915:无法访问属性“name”。
- 修复了 #901:调用
unit.toNumeric()时简化单位。感谢 @AlexanderBeyn。 - 修复了包含立即调用的函数赋值的解析表达式树的
toString没有被括号括起来(例如(f(x) = x^2)(4))。
2017-08-06, 版本 3.16.0 #
- 在
math.simplify中显著提高了性能。感谢 @firepick1。 - 改进了
math.simplify的 API,可以选择传递一个包含已解析变量的作用域,请参见 #907。感谢 @firepick1。 - 修复了 #912:math.js 在 IE10 上无法工作(自 3.15.0 起的回归)。
2017-07-29, 版本 3.15.0 #
- 添加了对符号名称中美元字符
$的支持(参见 #895)。 - 再次允许表达式解析器中使用带有原型的对象作为作用域,这在一段时间前出于安全原因被禁用。请参见 #888, #899。感谢 @ThomasBrierley。
- 修复了 #846:在表达式解析器中使用
map、forEach和filter函数时出现的问题- 无法将函数赋值作为回调函数的内联表达式使用。
- 无法将内联表达式作为
map和forEach的回调函数传递。 map和filter中未传递索引和原始数组/矩阵。
2017-07-05, 版本 3.14.2 #
- 升级到
fraction.js@4.0.2 - 修复了 #891:在浏览器环境中无法使用 BigNumbers 的问题。
2017-06-30, 版本 3.14.1 #
- 恢复到
fraction.js@4.0.0,4.0.1在浏览器中存在问题。
2017-06-30, 版本 3.14.0 #
- 实现了集合方法
setCartesian,setDifference,setDistinct,setIntersect,setIsSubset,setPowerset,setSize。感谢 @Nekomajin42。 - 在节点上实现了方法
toHTML。感谢 @Nekomajin42。 - 实现了
compareNatural和sort([...], 'natural')。 - 将依赖项升级到最新版本
complex.js@2.0.4decimal.js@7.2.3fraction.js@4.0.1tiny-emitter@2.0.0- 以及所有开发依赖项。
- 修复了 #865:
splitUnit现在可以处理舍入误差。感谢 @ericman314。 - 修复了 #876:单位
erg的定义不正确。感谢 @pjhampton。 - 当使用单引号代替双引号包围字符串时,提供更具信息量的错误消息。感谢 @HarrySarson。
2017-05-27, 版本 3.13.3 #
- 修复了直线与平面相交函数中的错误。感谢 @viclai。
- 修复了安全漏洞。
2017-05-26, 版本 3.13.2 #
- 出于安全原因,禁用了表达式解析器中的
chain函数(在那里它也不需要)。 - 修复了 #856:函数
subset在从 Arrays 中正确返回非原始标量时出错。(例如math.eval('arr[1]', {arr: [math.bignumber(2)]})。 - 修复了 #861:表达式解析器中无法使用物理常量。
2017-05-12, 版本 3.13.1 #
- 修复了在表达式解析器中创建带有别名的单位不起作用的问题。
- 修复了安全漏洞。感谢 Sam。
2017-05-12, 版本 3.13.0 #
- 命令行应用程序现在可以评估内联表达式,例如
mathjs 1+2。感谢 @slavaGanzin。 - 函数
derivative现在支持abs。感谢 @tetslee。 - 函数
simplify现在支持 BigNumbers。感谢 @tetslee。 - 防止
simplify中的无限循环。感谢 @tetslee。 - 修复了 #813:函数
simplify将小数字转换为不精确的分数。感谢 @tetslee。 - 修复了 #838:函数
simplify现在支持e等常数。感谢 @tetslee。
2017-05-05, 版本 3.12.3 #
- 修复了安全漏洞。感谢 Dan 和 Sam。
2017-04-30, 版本 3.12.2 #
- 添加了一个火箭轨迹优化示例。
2017-04-24, 版本 3.12.1 #
- 修复了 #804
- 改进了
Infinity的幂的处理。感谢 @HarrySarson。 - 修复了复数 NaN 的错误格式。
- 改进了
- 修复了表达式解析器中的安全漏洞。感谢 Sam 和 Dan。
2017-04-17, 版本 3.12.0 #
- 实现了 QR 分解,函数
math.qr。感谢 @HarrySarson。 - 修复了 #824:调用
math.random()会冻结 IE 和 node.js。
2017-04-08, 版本 3.11.5 #
- 在表达式解析器中实施更多安全措施。警告:表达式解析器的行为现在更严格,一些未记录的功能可能不再起作用。
- 访问和赋值属性现在只允许在普通对象上进行,而不允许在类、数组和函数上。
- 访问方法限制为一组已知、安全的已知方法。
2017-04-03, 版本 3.11.4 #
- 修复了表达式解析器中的安全漏洞。感谢 @xfix。
2017-04-03, 版本 3.11.3 #
- 修复了表达式解析器中的安全漏洞。感谢 @xfix。
2017-04-03, 版本 3.11.2 #
- 修复了表达式解析器中的安全漏洞。感谢 @xfix。
2017-04-02, 版本 3.11.1 #
- 修复了表达式解析器中的安全漏洞。感谢 Joe Vennix 和 @xfix。
2017-04-02, 版本 3.11.0 #
- 实现了方法 Unit.toSI(),用于将单位转换为基本 SI 单位。感谢 @ericman314。
- 修复了 #821, #822:表达式解析器中的安全漏洞。感谢 @comex 和 @xfix。
2017-03-31, version 3.10.3 #
- 修复了与 v3.10.2 中修复的安全问题相关的更多安全修复。
2017-03-31, version 3.10.2 #
- 修复了表达式解析器中的一个安全漏洞,该漏洞允许执行任意 JavaScript。感谢 @CapacitorSet 和 @denvit。
2017-03-26, version 3.10.1 #
2017-03-05, version 3.10.0 #
- 实现了
reshape函数。感谢 @patgrasso 和 @ericman314。 - 实现了配置选项
seedRandom,用于生成确定性随机数。感谢 @morsecodist。 - 文档中的小修复。感谢 @HarrySarson。
- 放弃了对 component 包管理器的支持(该管理器大约在一年前半被弃用)。
2017-02-22, version 3.9.3 #
- 修复了 #797:React Native 项目的生产构建问题。
- 修复了
math.round不接受NaN、Infinity、-Infinity作为输入的问题。 - 升级了所有依赖项。
2017-02-16, version 3.9.2 #
- 修复了 #795:仅包含注释的多行表达式解析错误。
2017-02-06, version 3.9.1 #
- 修复了 #789:Math.js 不支持将
string转换为BigNumber、Fraction或Complex数字。 - 修复了 #790:表达式解析器未通过
scope将嵌套函数的函数参数传递给具有rawArgs = true的函数。 - 文档中的小修复。感谢 @HarrySarson。
2017-01-23, version 3.9.0 #
- 实现了对代数(algebra)的支持:强大的新函数
simplify和derivative。感谢 @ericman314、@tetslee 和 @BigFav。 - 实现了克罗内克积(Kronecker Product)
kron。感谢 @adamisntdead。 - 撤销了
FunctionNode不再接受字符串作为函数名的问题。 - 修复了 #765:
FunctionAssignmentNode.toString()返回的字符串与函数赋值语法不兼容。
2016-12-15, version 3.8.1 #
2016-11-18, version 3.8.0 #
add和multiply函数现在接受两个以上的参数。参见 #739。OperatorNode现在支持两个以上的参数。参见 #739。感谢 @FSMaxB。- 为表达式节点实现了一个
Node.cloneDeep方法。参见 #745。 - 修复了
Node.clone()未正确克隆隐式乘法的错误。感谢 @FSMaxB。 - 修复了 #737:改进了确定单位最佳前缀的算法。它现在会在足够接近时保留原始单位,如
1 cm,而不是返回10 mm。感谢 @ericman314。 - 修复了 #732:允许使用字母状的 Unicode 字符,如欧姆(Ohm)
\u2126。 - 修复了 #749:单位
rad、deg和grad现在可以使用前缀,如millirad。 - 文档和示例注释中的一些修复。感谢 @HarrySarson。
2016-11-05, version 3.7.0 #
- 为表达式解析器的所有节点实现了
Node.equals(other)方法。 - 在
arg()函数中实现了对 BigNumber 的支持。 - 命令行界面加载速度更快。
- Fraction 和 BigNumber 之间的隐式转换现在会抛出一个明确的错误(参见 #710)。
2016-10-21, version 3.6.0 #
- 实现了
erf()函数。感谢 @patgrasso。 - 将
cross()函数扩展为支持 n 维向量。感谢 @patgrasso。 - 通过选项扩展了
pickRandom函数,使其能够从数组中选择多个值并为这些值指定权重:pickRandom(possibles, number, weights)。感谢 @woylie。 - 解析器现在公开了
isAlpha等测试函数,这些函数可以被替换以调整变量名中允许的字符(参见 #715)。 - 修复了 #727:解析器未对无效的隐式乘法(如
-2 2和2^3 4(在运算符的第二个值之后))抛出错误。 - 修复了 #688:在文档中描述了允许的变量名。
2016-09-21, version 3.5.3 #
- 对以小数点结尾的数字(如
2.)进行了更多修复。
2016-09-20, version 3.5.2 #
2016-09-12, version 3.5.1 #
- 移除了遗留的 console.log 语句。感谢 @eknkc。
2016-09-07, version 3.5.0 #
- 表达式的注释现在已存储在解析后的节点中。参见 #690。
- 修复了
print函数未接受包含格式化选项的对象作为第三个参数的问题。感谢 @ThomasBrierley。 - 修复了 #707:表达式解析器不再接受以点结尾的数字,如
2.。
2016-08-08, version 3.4.1 #
- 修复了损坏的 bundle 文件(
dist/math.js、dist/math.min.js)。 - 修复了函数参考文档中的一些布局问题。
2016-08-07, version 3.4.0 #
- 通过
createUnit实现对自定义单位的支持。感谢 @ericman314。 - 实现了
splitUnits函数。感谢 @ericman314。 - 实现了
isPrime函数。感谢 @MathBunny。
2016-07-05, version 3.3.0 #
- 实现了
isNaN函数。 - 函数
math.filter现在向回调函数传递三个参数:值、索引和数组。 - 从表达式解析器中定义的函数移除了对参数数量的检查(参见 #665)。
- 修复了 #665:
map、forEach和filter函数现在调用的是具有正确参数数量的类型化函数回调。
2016-04-26, version 3.2.1 #
- 修复了 #651:无法对“无单位”的单位执行计算。
- 修复了 matrix.subset 在进行 unsqueeze 操作时会改变 replacement matrix 的问题。
2016-04-16, version 3.2.0 #
- 实现了 #644:
Parser.getAll()方法用于检索所有已定义的变量。 - 升级了依赖项(decimal.js@5.0.8, fraction.js@3.3.1, typed-function@0.10.4)。
- 修复了 #601:通过升级到 typed-function v0.10.4 解决了未命名类型化函数的问题。
- 修复了 #636:更严格的
toTex模板,考虑了参数数量。 - 修复了 #641:表达式解析器在特定情况下解析隐式乘法时具有错误优先级的 bug。
- 修复了 #645:为函数
math.format的engineering表示法添加了文档。
2016-04-03, version 3.1.4 #
- 在可用时使用 ES6 Math 函数,如
Math.sinh、Math.cbrt、Math.sign等。 - 修复了 #631:缺少单位别名
weeks、months和years。 - 修复了 #632:转义的反斜杠出现在字符串末尾的问题。
- 修复了 #635:
Node.toString选项未传递给函数参数。 - 修复了 #629:表达式解析器在传递带有小数指数的数字时抛出错误,而不是将其解析为隐式乘法。
- 修复了 #484、#555:
math.sinh对于 -1 到 1 之间的值不准确。 - 修复了 #625:单位
in(inch)并非总是有效,因为与运算符a in b(a to b的别名)存在歧义。
2016-03-24, version 3.1.3 #
- 修复了损坏的 bundle。
2016-03-24, version 3.1.2 #
- 修复了损坏的 npm 发布。
2016-03-24, version 3.1.1 #
- 修复了 #621:解析像
(2)(3)+4这样的隐式乘法的 bug。 - 修复了 #623:零的
nthRoot(负根)返回0而不是Infinity。 - 当函数
min、max、mean或median被多个矩阵作为参数调用时,抛出错误(参见 #598)。
2016-03-19, version 3.1.0 #
- 默认情况下,在输出
toTex和toString时隐藏隐式乘法的乘法运算符。实现了一个输出运算符的选项。 - 实现了单位
kip和别名kips。感谢 @hgupta9。 - 为单位
mol和mole添加了对前缀的支持。感谢 @stu-blair。 - 恢复了对隐式乘法(如
2(3+4)和(2+3)(4+5))的支持。 - 文档的一些改进。
- 添加了从
boolean和null到Fraction的自动转换,以及从Fraction到Complex的转换。
2016-03-04, version 3.0.0 #
重大变更 #
- 对表达式解析器中的隐式乘法提供了更严格的支持:
(...)(...)现在被评估为函数调用,而[...][...]被评估为矩阵子集。 - 矩阵乘法不再将标量输出压缩为标量值,而是保持原样:一个包含单个值的向量或矩阵。参见 #529。
-
表达式解析器中的赋值现在返回赋值的值,而不是创建或更新的对象(参见 #533)。示例
A = eye(3) A[1,1] = 2 # this assignment now returns 2 instead of A - 表达式解析器现在支持对象。这涉及表达式节点的重构和扩展。
- 实现了新的节点
ObjectNode。 AssignmentNode、UpdateNode和IndexNode被重构为AccessorNode、AssignmentNode和IndexNode,具有不同的 API。
- 实现了新的节点
- 将使用的 BigNumber 库
decimal.js升级到 v5。用 decimal.js v5 提供的三角函数替换 math.js 的三角函数。这在舍入误差方面可能产生略有不同的行为。 - 用 @infusion 创建的
complex.js库替换了内部的Complex.js类。 - 矩阵中的条目(通常是数字、BigNumbers、Units 等)现在被视为不可变的,在对条目执行操作时不再复制它们,从而提高了性能。
- 在关系函数(
equal、larger、smaller等)中使用 BigNumbers 时,实现了近似相等比较。 - 更改了配置选项
matrix(Array或Matrix)和number(number、BigNumber、Fraction)的大小写,使其与math.typeof返回的类型匹配。错误的大小写会产生控制台警告,但仍能正常工作。 - 将
epsilon的默认配置值从1e-14更改为1e-12,参见 #561。
非重大变更 #
- 将
pow函数扩展为返回负数立方根的实数根。参见 #525、#482、#567。 - 在表达式解析器和
math.format函数中实现了对 JSON 对象的支持。 math.fraction函数现在支持BigNumber,而math.bignumber函数现在支持Fraction。- 表达式解析器现在允许在访问器和条件表达式内部进行函数和/或变量赋值,例如
A[x=2]或a > 2 ? b="ok" : b="fail"。 - 命令行界面
- 输出了赋值的变量名。
- 修复了 BigNumbers 未像数字一样四舍五入到 14 位数的问题。
- 修复了用户定义变量自动完成功能失效的问题。
- 重新组织和扩展了文档,添加了关于类等的文档。感谢 @hgupta9。
- 添加了新单位
acre、hectare、torr、bar、mmHg、mmH2O、cmH2O,并添加了新别名acres、hectares、sqfeet、sqyard、sqmile、sqmiles、mmhg、mmh2o、cmh2o。感谢 @hgupta9。 - 修复了
IndexNode的 toString 方法中的一个 bug。 - 修复了角度单位
deg、rad、grad、cycle、arcsec和arcmin在配置为使用 BigNumbers 时未定义为 BigNumbers 的问题。
2016-02-03, version 2.7.0 #
- 为时间添加了更多单位别名:
secs、mins、hr、hrs。参见 #551。 - 添加了混合
Fractions和BigNumbers进行运算的支持。 - 修复了 #540:
math.intersect()在某些情况下返回 null。感谢 @void42。 - 修复了 #546:无法导入 BigNumber、Fraction、Matrix、Array。感谢 @brettjurgens。
2016-01-08, version 2.6.0 #
- 实现了(复数)单位
VA和VAR。 - 实现了周、月、年、十年、世纪和千年的时间单位。感谢 @owenversteeg。
- 在
math.format函数中实现了新的engineering表示法。感谢 @johnmarinelli。 - 修复了 #523:在某些情况下,矩阵子集返回了标量而不是正确的子集。
- 修复了 #536:稀疏矩阵内部方法的一个 bug。
2015-12-05, version 2.5.0 #
- 在单位中实现了对数字类型
Fraction和BigNumber的支持。 - 实现了单位的新方法
toNumeric。 - 实现了新单位
arcsec、arcsecond、arcmin、arcminute。感谢 @devdevdata222。 - 实现了新单位
Herts(Hz)。感谢 @SwamWithTurtles。 - 修复了 #485:全局使用以及在函数定义中使用变量时的作用域问题。
- 修复了:
number函数不支持Fraction作为输入。
2015-11-14, version 2.4.2 #
- 修复了 #502:某些 JavaScript 引擎中的
format问题。 - 修复了 #503:移除了末尾的逗号以及
import关键字作为属性的使用,因为这会给旧的 JavaScript 引擎带来问题。
2015-10-29, version 2.4.1 #
- 修复了 #480:
nthRoot在 Internet Explorer(最高到 IE11)上无法工作。 - 修复了 #490:
nthRoot对负值(如nthRoot(-2, 3))返回错误。 - 修复了 #489:初始化没有数据的稀疏矩阵时出现的问题。感谢 @Retsam。
- 修复了:#493:
combinations函数未对k的非整数值抛出异常。 - 修复了:
import函数未覆盖类型化函数(即使override选项设置为 true)。 - 修复了:将
math.sparse和math.index函数添加到参考文档,它们之前是缺失的。 - 修复了:从
gamma和factorial函数中移除了记忆化,这可能导致内存溢出。
2015-10-09, version 2.4.0 #
- 在表达式解析器中增加了对数学字母数字符号的支持:Unicode 范围 \u{1D400} 到 \u{1D7FF},不包括无效码点。
- 扩展了
distance函数以支持更多签名。感谢 @kv-kunalvyas。 - 修复了
sin和cos函数中的一个 bug,该 bug 在处理 BigNumber 整数值(接近 tau 的倍数,例如sin(bignumber(7)))时会产生错误结果。 - 修复了单位
stone的值。感谢 @Esvandiary 发现错误。
2015-09-19, version 2.3.0 #
- 实现了
distance函数。感谢 @devanp92。 - 在
lcm函数中实现了对 Fractions 的支持。感谢 @infusion。 - 为数字、复数、BigNumbers、Units 实现了
cbrt函数。 - 实现了
hypot函数。 - 升级到 fraction.js v3.0.0。
- 修复了 #450:稀疏矩阵中索引未排序的问题。
- 修复了 #463、#322:隐式乘法处理不一致。
- 修复了 #444:无穷大的阶乘未返回无穷大。
2015-08-30, version 2.2.0 #
- 带有幂的单位(如
m^2和s^-1)现在会输出最佳前缀。 - 实现了对
abs、cube、sign、sqrt、square函数中单位的支持。感谢 @ericman314。 - 实现了
catalan函数(组合数学)。感谢 @devanp92。 - 改进了
canDefineProperty检查,以便在 IE8 中返回 false,因为 IE8 对defineProperty的实现存在问题。感谢 @golmansax。 - 修复了
to函数在单位简化后不工作的问题。 - 修复了 #437:
lup中行交换的问题,这也影响了lusolve。
2015-08-12, version 2.1.1 #
- 修复了物理常数
speedOfLight、molarMassC12和magneticFluxQuantum的错误值。感谢 @ericman314 发现其中两个。
2015-08-11, version 2.1.0 #
- 实现了派生单位(如
110 km/h in m/s)。感谢 @ericman314。 - 实现了对电单位的支持。感谢 @ericman314。
- 实现了大约 50 个物理常数,如
speedOfLight、gravity等。 - 实现了
kldivergence(Kullback-Leibler 散度)函数。感谢 @saromanov。 - 实现了
mode函数。感谢 @kv-kunalvyas。 - 在表达式解析器中添加了对 Unicode 字符的支持:希腊字母和带重音符号的拉丁字母。参见 #265。
- 内部函数
Unit.parse和Complex.parse在接收到无效输入时现在会抛出 Error 而不是返回 null。
2015-07-29, version 2.0.1 #
- 修复了混合分数和数字的运算被转换为数字而不是分数的错误。
2015-07-28, version 2.0.0 #
- 大规模内部重构
- 性能改进。
- 允许创建自定义 bundle。
- 函数使用
typed-function进行组合,并且是可扩展的。
- 通过
fraction.js库实现了对分数(Fractions)的支持。 - 实现了带部分主元的矩阵 LU 分解和一个基于 LU 的线性方程组求解器(函数
lup和lusolve)。感谢 @rjbaucells。 - 实现了一个新的配置选项
predictable,可以设置为 true 以确保函数输出类型可预测。 - 实现了函数
intersect。感谢 @kv-kunalvyas。 - 实现了为自定义函数添加
toTex属性的支持。感谢 @FSMaxB。 - 实现了对
nthRoot的复数值支持。感谢 @gangachris。 - 实现了 util 函数
isInteger、isNegative、isNumeric、isPositive和isZero。
重大变更 #
- 现在默认将字符串输入转换为数字,用于所有函数。
- 现在将两个字符串相加将不再是连接它们,而是将字符串转换为数字并相加。
- 函数
index不再接受数组[start, end, step],而是接受具有任意索引值的数组。它也接受Range对象作为输入。 - 函数
typeof不再返回小写名称,而是为基本类型(如number、boolean、string)返回小写名称,为非基本类型(如Array、Complex、Function)返回驼峰式大写名称。 - 函数
import不再支持模块名作为参数。现在可以使用 require 加载模块:math.import(require('module-name'))。 - 函数
import有一个新选项silent,用于忽略错误,并默认在遇到重复项时抛出错误。 - 方法
Node.compile()不再需要将math作为参数传递。 - 重新引入了方法
Node.eval([scope])。 - 当输入为空数组时,函数
sum现在返回零。感谢 @FSMAxB。 - 数组的大小不再进行验证。矩阵将在创建时进行此验证。
2015-07-12,版本 1.7.1 #
2015-05-31,版本 1.7.0 #
- 实现了函数
quantileSeq和partitionSelect。感谢 @BigFav。 - 实现了函数
stirlingS2、bellNumbers、composition和multinomial。感谢 @devanp92。 - 提高了
median的性能(参见 #373)。感谢 @BigFav。 - 扩展了命令行界面,增加了
mode选项,可以输出表达式结果、字符串表示或 tex 表示。感谢 @FSMaxB。 - 修复了 #309:函数 median 会修改输入矩阵。感谢 @FSMaxB。
- 修复了
Node.transform未能递归遍历节点树的已替换部分(参见 #349)。 - 修复了 #381:
randomInt文档中的问题。
2015-04-22,版本 1.6.0 #
2015-04-09,版本 1.5.2 #
- 修复了 #313:解析的函数未能正确处理递归调用。
- 修复了 #251:二进制前缀和 SI 前缀错误地用于字节。现在遵循 SI 标准(
1 KiB == 1024 B,1 kB == 1000 B)。 - 解析函数的性能改进。
2015-04-08,版本 1.5.1 #
2015-03-28,版本 1.5.0 #
- 添加了单位
stone(6.35 kg)。 - 实现了对稀疏矩阵的支持。感谢 @rjbaucells。
- 为函数
atan2实现了 BigNumber 支持。感谢 @BigFav。 - 实现了对自定义 LaTeX 表示的支持。感谢 @FSMaxB。
- 改进了
Node.toString和Node.toTex函数中括号输出的改进和错误修复。感谢 @FSMaxB。 - 修复了 #291:函数
format有时会在应该返回固定表示法时返回指数表示法。
2015-02-28,版本 1.4.0 #
- 实现了三角函数:
acosh、acoth、acsch、asech、asinh、atanh、acot、acsc、asec。感谢 @BigFav。 - 为函数
cot、csc、sec、coth、csch、sech添加了 BigNumber 支持。感谢 @BigFav。 - 实现了对 math.js 数据类型的序列化和反序列化的支持。
- 修复了计算大复数的
norm()和abs()。感谢 @rjbaucells。 - 修复了 #281:改进了复数格式化。当差值大于配置的精度时,将实部或虚部舍入为零。
2015-02-09,版本 1.3.0 #
- 实现了大多数三角函数的大数实现:
sin、cos、tan、asin、acos、atan、cosh、sinh、tanh。感谢 @BigFav。 - 实现了函数
trace。感谢 @pcorey。 - 通过惰性加载
pi和e等常量,提高了高精度 BigNumber 配置的加载速度。 - 修复了当配置了 BigNumbers 时,常量
NaN和Infinity未能成为 BigNumber 对象的问题。 - 修复了函数
permutations的toTex表示中缺少括号的问题。 - 文档的一些小修复。感谢 @KenanY。
2014-12-25,版本 1.2.0 #
- 支持位运算
bitAnd、bitNot、bitOr、bitXor、leftShift、rightArithShift和rightLogShift。感谢 @BigFav。 - 支持布尔运算
and、not、or、xor。感谢 @BigFav。 - 支持
gamma函数。感谢 @BigFav。 - 不带值的单位转换现在将生成一个*带*值的单位,例如
inch in cm将返回2.54 cm而不是cm。 - 提高了
sinh以及复数cos和sin的精度。感谢 @pavpanchekha。 - 重命名函数
select为chain。旧函数select在 math.js v2.0 之前仍然可用。 - 升级到 decimal.js v4.0.1(BigNumber 库)。
2014-11-22,版本 1.1.1 #
- 修复了单位除以数字返回零的问题。
- 修复了 BigNumber 在
pow中对于负基数时降级为 Number 的问题。 - 修复了一些错误消息(感谢 @andy0130tw)和文档中的拼写错误。
2014-11-15,版本 1.1.0 #
- 实现了函数
dot(点积)、cross(叉乘)和nthRoot。 - 正式开放表达式树的 API。
- 文档化了 API。
- 为表达式树实现了递归函数
clone、map、forEach、traverse、transform和filter。 map和forEach的回调中的参数index现在会为每次回调进行克隆。- 节点内部进行了一些重构,以使 API 保持一致。
- 重命名了
params为args,反之亦然,以保持一致性。 - 重命名了
Block.nodes为Block.blocks。 FunctionNode现在有一个name: string属性,而不是symbol: SymbolNode。- 将
RangeNode的构造函数更改为new RangeNode(start: Node, end: Node [, step: Node])。 - 现在必须通过构造函数而不是通过
add函数来传递BlockNode的节点。
- 重命名了
- 修复了
2e产生语法错误而不是被解析为2 * e的问题。
2014-09-12,版本 1.0.1 #
- 在表达式解析器中禁用了矩阵索引中范围的数组表示法(在那里它令人困惑且多余)。
- 修复了函数子集构建的一个回归问题,即无法返回标量。
- 修复了文档中一些缺失的文档和损坏的链接。
2014-09-04,版本 1.0.0 #
- 实现了一个函数
filter(x, test)。 - 暂时移除了
math.distribution,需要重新考虑。 math.number可以将单位转换为数字(需要第二个参数)。- 修复了范围运算符和转换运算符的一些优先级问题。
- 修复了使用包含矩阵的索引获取矩阵子集时的零基数问题。
2014-08-21,版本 0.27.0 #
- 实现了函数
sort(x [, compare])和flatten(x)。 - 实现了对所有函数中
null的支持。 - 在表达式解析器中实现了对“原始参数”函数的支持。原始函数使用未评估的参数(节点)调用。
- 表达式解析器中的表达式现在可以跨越多行,例如 ‘2 +\n3’。
math.import函数的wrap选项的默认值已更改为 false。- 调整了调整大小的矩阵中新条目的默认值,将其设为零。要将新条目保留为未初始化,请使用新的常量
math.uninitialized作为默认值。 - 将 transform 属性从
__transform__重命名为transform,并记录了 transform 功能。 - 修复了
math.import在传递模块名时未应用选项的错误。 - 返回的矩阵子集现在仅在
index由标量值组成时才会被挤压,而对于解析为单个值的范围则不再如此。
2014-08-03,版本 0.26.0 #
- 现在无法像
math([options])这样创建 math.js 的新实例,以防止 math 作为函数而不是对象产生副作用。相反,使用函数math.create([options])来创建新实例。 - 为所有常量实现了
BigNumber支持:pi、tau、e、phi、E、LN2、LN10、LOG2E、LOG10E、PI、SQRT1_2和SQRT2。 - 为函数
gcd、xgcd和lcm实现了BigNumber支持。 - 修复了当 math.js 配置为
{matrix: 'matrix'}时,函数gxcd返回 Array 的问题。 - 多行表达式现在返回
ResultSet而不是Array。 - 实现了转换(目前用于将一对一索引转换为表达式的零基索引)。
- 在表达式解析器中使用时,函数
concat、min、max和mean期望一个一对一的维度编号。 - 从表达式解析器内部使用时,函数
map和forEach会用一对一的索引调用回调。 - 当在调整矩阵大小时添加或删除维度时,维度是从内侧(右侧)添加/删除,而不是从外侧(左侧)。
- 改进了索引越界错误。
- 修复了函数
concat不接受BigNumber作为参数dim的问题。 - 函数
squeeze现在挤压内部和外部的单例维度。 - 获取矩阵子集的输出不再自动挤压,除非是标量输出。
- 将
FunctionNode重命名为FunctionAssignmentNode,并将ParamsNode重命名为FunctionNode以获得更好的清晰度。 - 修复了 CLI 中自动补全的错误。
- 一些小修复。
2014-07-01,版本 0.25.0 #
-
该库现在立即返回一个默认的 mathjs 实例,无需单独实例化 math.js,除非想要设置配置选项。
// instead of: var mathjs = require('mathjs'), // load math.js math = mathjs(); // create an instance // just do: var math = require('mathjs'); - 实现了对隐式乘法的支持,例如
math.eval('2a', {a:3})和math.eval('(2+3)(1-3)')。这也改变了矩阵索引的行为:表达式如[...][...]不再被评估为取第一个矩阵的子集,而是作为两个矩阵的隐式乘法。 - 移除了实用函数
ifElse。该函数现在冗余,因为表达式解析器有一个条件运算符a ? b : c。 - 修复了将数字乘以温度(例如
math.eval('10 * celsius'))时的错误。 - 修复了值为
undefined的符号未被求值时的错误。
2014-06-20,版本 0.24.1 #
- 在 npm 上发布时出错了。
2014-06-20,版本 0.24.0 #
- 添加了常量
null。 - 函数
equal和unequal现在支持null和undefined。 - 函数
typeof现在也识别正则表达式。 - 对象
Complex、Unit和Help在调用.valueOf()时现在返回它们的字符串表示。 - 更改了 BigNumbers 的默认有效数字位数,从 20 更改为 64。
- 更改了条件运算符 (a ? b : c) 的行为,使其惰性求值。
- 修复了导入的、包装的函数无法接受
null和undefined作为函数参数的问题。
2014-06-10,版本 0.23.0 #
- 重命名了一些函数(所有函数现在都有一个逻辑的、驼峰式的名称)。
- 将函数
edivide、emultiply和epow分别重命名为dotDivide、dotMultiply和dotPow。 - 将函数
smallereq和largereq重命名为smallerEq和largerEq。 - 将函数
unary重命名为unaryMinus,并增加了对字符串的支持。
- 将函数
end现在是一个保留关键字,不能用作表达式解析器中的函数或符号名称,并且不允许在对其求值的范围中使用。- 实现了函数
unaryPlus和一元加运算符。 - 实现了函数
deepEqual用于矩阵比较。 - 添加了常量
phi,即黄金比例(phi = 1.618...)。 - 添加了常量
version,返回 math.js 的版本号作为字符串。 - 添加了单位
drop(gtt)。 - 修复了使用 AMD/require.js 加载 math.js 的问题。
- 将
math.parse(expr, nodes)的签名更改为math.parse(expr, options),其中options: {nodes: Object.<String, Node>} - 从条件函数
ifElse中移除了矩阵支持。 -
移除了表达式结果到变量
ans的自动赋值。此功能可以通过预处理或后处理每次求值来恢复,类似function evalWithAns (expr, scope) { var ans = math.eval(expr, scope); if (scope) { scope.ans = ans; } return ans; }
2014-05-22,版本 0.22.0 #
- 实现了将表达式导出到 LaTeX 的支持。感谢 Niels Heisterkamp (@nheisterkamp)。
- 矩阵乘法的输出现在一致地被挤压。
- 在 /docs/reference 部分添加了参考文档。
- 修复了将不带值的单位乘以数字(例如
5 * cm)时的错误。 - 修复了乘以包含向量的两个矩阵时的错误(对于数组工作正常)。
- 修复了随机函数不接受 Matrix 作为输入,并且始终返回 Matrix 作为输出的问题。
2014-05-13,版本 0.21.1 #
- 从 bundle 中移除了
crypto库。 - 弃用了函数
Parser.parse和Parser.compile。请使用math.parse和math.compile。 - 修复了函数
add未能逐元素相加字符串和矩阵的问题。 - 修复了解析器无法计算指数后面跟一元负数的(例如
2^-3),以及转置后面跟索引的(例如[3]'[1])问题。
2014-04-24,版本 0.21.0 #
- 实现了三角双曲函数
cosh、coth、csch、sech、sinh、tanh。感谢 Rogelio J. Baucells (@rjbaucells)。 - 向表达式树中的所有表达式节点添加了
type属性。 - 修复了函数
log、log10、pow和sqrt不支持 BigNumber 输入的复数结果(例如sqrt(bignumber(-4)))的问题。
2014-04-16,版本 0.20.0 #
- 切换到
decimal.js模块以支持 BigNumber,而不是bignumber.js。 - 为
Complex数据类型实现了对极坐标的支持。感谢 Finn Pauls (@finnp)。 - 为函数
exp、log和log10实现了 BigNumber 支持。 - 在表达式解析器中实现了条件运算符
a ? b : c。 - 改进了浮点数比较:函数现在检查值是否接近相等,并与配置的最大相对差
epsilon进行比较。感谢 Rogelio J. Baucells (@rjbaucells)。 - 实现了函数
norm。感谢 Rogelio J. Baucells (@rjbaucells)。 - 改进了函数
ifElse,现在也为特殊数据类型进行了指定。 - 改进了函数
det。感谢 Bryan Cuccioli (@bcuccioli)。 - 为函数
det和diag实现了BigNumber支持。 - 添加了单位别名
lbs(磅质量)。 - 将配置选项
decimals更改为precision(仅适用于 BigNumbers)。 - 修复了字符串和矩阵之间元素比较的支持。
- 修复:表达式解析器现在使用一对一索引抛出
IndexErrors,而不是零基索引。 - 小的错误修复。
2014-03-30,版本 0.19.0 #
- 实现了函数
compare、sum、prod、var、std、median。 - 实现了函数
ifElse。感谢 @mtraynham。 - 小的错误修复。
2014-02-15,版本 0.18.1 #
- 添加了单位
feet。 - 实现了函数
compile(作为解析然后编译的快捷方式)。 - 提高了矩阵
pow函数的性能。感谢 @hamadu。 - 修复了命令行界面中自动补全的错误。
- 修复了
combinations函数处理大数的错误,并提高了combinations和permutations这两个函数的性能。
2014-01-18,版本 0.18.0 #
- 将表达式解析器中的矩阵索引表示法从圆括号改为方括号,例如
A[1, 1:3]而不是A(1, 1:3)。 - 移除了在表达式解析器中进行函数赋值时使用
function关键字的需要,现在可以像f(x) = x^2这样定义函数。 - 在表达式解析器中实现了一个编译步骤:表达式被编译成 JavaScript,提供了更好的性能(速度快 10 倍)。
- 将单位转换函数和运算符
in重命名为to。运算符in在表达式解析器中仍然可用,作为to的别名。添加了单位in,是inch的缩写。感谢 Elijah Insua (@tmpvar)。 - 为单位添加了复数形式和别名。
- 为函数
range实现了一个参数includeEnd(默认为 false)。 - 表达式解析器中的范围现在支持大数。
- 实现了函数
permutations和combinations。感谢 Daniel Levin (@daniel-levin)。 - 为单位升(litre)添加了小写缩写
l。
2013-12-19,版本 0.17.1 #
- 修复了负温度的错误。
- 修复了单位平方仪表
m2和立方仪表m3前缀的错误。
2013-12-12,版本 0.17.0 #
- 重命名和扁平化了配置设置。
number.defaultType现在是number。number.precision现在是decimals。matrix.defaultType现在是matrix。
- 函数
multiply现在在复数输入时一致地输出复数。 - 修复了
mod和in只能作为运算符而不能作为函数工作的问题。 - 修复了对旧浏览器(IE8 及更早版本)的支持,在使用 es5-shim 时兼容。
- 修复了对 Java 的 ScriptEngine 的支持。
2013-11-28,版本 0.16.0 #
- 实现了 BigNumber 对任意精度计算的支持。添加了设置
number.defaultType和number.precision来配置大数。 - 文档已扩展。
- 从
Matrix和Range中移除了实用函数isScalar、toScalar、isVector、toVector。请使用math.squeeze和math.size。 - 在
Matrix上实现了函数get和set,以便更轻松、更快速地检索/替换矩阵中的元素。 - 实现了函数
resize,支持矩阵、标量和字符串。 - 当不提供参数时,函数
ones和zeros现在返回空矩阵而不是数字 1 或 0。 - 为
Range和Index实现了函数min和max。 - 调整矩阵大小时,新元素默认留空(未初始化)而不是用零填充。函数
resize现在有一个额外的可选参数defaultValue。 - 表达式解析器中的范围运算符
:的优先级已提高。 - 函数不再允许未知类型的参数。
- Options can be set when constructing a math.js instance or using the new function
config(options。选项不再可以通过math.options访问。 - 在
format函数中,将scientific表示法重命名为exponential。 format函数现在始终使用+符号输出正指数的指数表示法,因此输出2.1e+3而不是2.1e3。- 修复了
squeeze函数无法压缩为标量的问题。 resize和subset函数的一些修复和性能改进。size函数现在遵守matrix.defaultType选项进行标量输入。- 小的错误修复。
2013-10-26,版本 0.15.0 #
- Math.js 现在必须实例化,不再支持静态调用。用法
- node.js:
var math = require('mathjs')(); - browser:
var math = mathjs();
- node.js:
- 实现了对向量与矩阵乘法的支持。
- 改进了数字格式化
format函数现在支持各种选项:精度、不同的表示法(fixed、scientific、auto)等。- 默认情况下,数字格式化时不再四舍五入到 5 位。
- 为
Matrix、Complex、Unit、Range和Selector实现了format函数,以使用选项进行格式化。 format函数现在只对值进行字符串化,并有一个新的参数precision来四舍五入到特定位数。- 移除了选项
math.options.precision,请改用math.format(value [, precision])。 - 修复了将数字格式化为科学计数法时,在某些情况下小数点左侧返回零位数字。(例如“0.33333e8”而不是“3.3333e7”)。感谢 @husayt。
- 实现了
print函数,用于在模板字符串中插值,此功能已从format函数移出。 - 实现了统计函数
mean。感谢 Guillermo Indalecio Fernandez (@guillermobox)。 - 扩展和更改了多维矩阵的
max和min:它们现在返回展平数组的最大值和最小值。可选的第二个参数dim允许计算指定维度的max或min。 - 将选项
math.options.matrix.default重命名为math.options.matrix.defaultType。 - 移除了在
smaller、smallereq、larger、largereq函数中比较复数的支持。复数无法排序。
2013-10-08,版本 0.14.0 #
- 引入了选项
math.options.matrix.default,其值可以是matrix(默认)或array。此选项由eye、ones、range和zeros函数使用,以确定矩阵输出的类型。 - 获取矩阵的子集将自动压缩结果子集,设置矩阵的子集将自动解压缩给定子集。
- 移除了表达式解析器中嵌套数组的连接。现在可以像 JavaScript 一样输入嵌套数组。可以使用
concat函数连接矩阵。 - 表达式解析器中的矩阵语法
[...]现在默认创建一维矩阵。math.eval('[1,2,3,4]')返回大小为[4]的矩阵,math.eval('[1,2;3,4]')返回大小为[2,2]的矩阵。 - 文档结构已重组和扩展。
- 修复了不工作的
mod(模运算符)。
2013-09-03,版本 0.13.0 #
- 实现了对所有相关函数中布尔值的支持。
- 实现了函数
map和forEach。感谢 Sebastien Piquemal (@sebpic)。 - 所有构造函数都可以用于转换变量类型,也适用于 Array 或 Matrix 中所有元素的逐元素转换。
- 将表达式解析器的矩阵索引更改为基于一的,并包含上限,类似于大多数数学应用。请注意,在 JavaScript 级别,math.js 使用基于零的索引,排除上限。
- 移除了
subset函数对标量的支持,它现在只支持 Array、Matrix 和 String。 - 从选择器中移除了
get和set函数,它们是subset函数的重复。 - 用单个函数
subset替换了Matrix的get和set函数。 - 代码和命名空间的一些调整
- 将命名空间
math.expr重命名为math.expression(包含 Scope、Parser、node 对象)。 - 将命名空间
math.docs重命名为math.expression.docs。 - 将
math.expr.Selector移动到math.chaining.Selector。
- 将命名空间
- 修复了
lcm和xgcd函数中的一些边缘情况。
2013-08-22,版本 0.12.1 #
- 修复了 README.md 的过时版本。
- 修复了一个损坏的单元测试。
2013-08-22,版本 0.12.0 #
- 实现了函数
random([min, max])、randomInt([min, max])、pickRandom(array)。感谢 Sebastien Piquemal (@sebpic)。 - 实现了函数
distribution(name),生成一个具有random、randomInt、pickRandom函数的分布对象,用于不同的分布。目前支持uniform和normal。 - 更改了
range的行为,使其排除上限,因此range(1, 4)现在返回[1, 2, 3]而不是[1, 2, 3, 4]。 - 更改了
range的语法,现在是range(start, end [, step])而不是range(start, [step, ] end)。 - 更改了
ones和zeros的行为,使其支持几何维度,例如ones(3)返回一个长度为 3 的向量,填充为 1,而ones(3,3)返回一个大小为 [3, 3] 的二维数组。 - 更改了
ones和zeros的返回类型:当参数是 Numbers 或 Array 时,它们现在返回 Array;当参数是 Matrix 时,返回 Matrix。 - 将解析器中的矩阵索引表示法从圆括号更改为方括号,例如
A[0, 0:3]。 - 移除了 v0.10.0 中引入的将虚部为零的复数自动转换为数字的功能。
- 修复了零被格式化为 null 的问题。感谢 @TimKraft。
2013-07-23,版本 0.11.1 #
- 修复了丢失的开发依赖项。
2013-07-23,版本 0.11.0 #
- 将 math.js 从基于一的索引更改为基于零的索引。
- 获取和设置矩阵子集现在是基于零的。
concat函数中的维度参数现在是基于零的。
- 改进了函数 help 的字符串输出。
- 添加了常量
true和false。 - 添加了构造函数
boolean。 - 修复了
select函数不接受0作为输入的问题。感谢 Elijah Manor (@elijahmanor)。 - 解析器现在支持多个连续的负一元运算符。
- 修复了不接受空矩阵(如
[[], []])的问题。 - 对最终用户文档进行了一些修复。
2013-07-08,版本 0.10.0 #
- 对于复数计算,所有函数现在都会自动将虚部为零的结果替换为 Number。(
2i * 2i现在返回 Number-4而不是 Complex-4 + 0i)。 - 实现了向解析器注入自定义节点处理器的支持。例如,可用于实现用于绘制图形的节点处理器。
- 实现了最终用户文档和新的
help函数。 size和squeeze函数在输入为 Matrix 时,现在返回 Matrix 而不是 Array 作为输出。- 添加了常量 tau (2 * pi)。感谢 Zak Zibrat (@palimpsests)。
- 将函数
unaryminus重命名为unary。 - 修复了在函数赋值中确定节点依赖项的错误。
2013-06-14,版本 0.9.1 #
- 实现了逐元素函数和运算符:
emultiply(x .* y)、edivide(x ./ y)、epow(x .^ y)。 - 添加了常量
Infinity和NaN。 - 移除了对 Workspace 的支持,以使库专注于其核心任务。
- 修复了 Complex 构造函数中不接受 NaN 值的错误。
- 修复了纯复数值除以零的情况。
- 修复了函数 multiply 将纯复数值与 Infinity 相乘的错误。
2013-05-29,版本 0.9.0 #
- 实现了函数
math.parse(expr [,scope])。可选参数 scope 可以是包含变量的普通 JavaScript 对象。 - 扩展了函数
math.expr(expr [, scope]),增加了scope参数,类似于parse。例如:math.eval('x^a', {x:3, a:2});。 - 实现了函数
subset,用于从矩阵、字符串或其他数据类型获取或设置子集。 - 实现了构造函数 number 和 string(主要在解析器内部有用)。
- 改进了函数
det。感谢 Bryan Cuccioli (@bcuccioli)。 - 将 prototype math.expr.Parser 的解析代码移至函数 math.parse,并稍微简化了 Parser。
- 大大简化了 Scope 和 Workspace 的代码。
- 修复了负分子
mod函数,并在输入错误时添加了错误消息。
2013-05-18,版本 0.8.2 #
- 扩展了 import 函数和其他一些小改进。
- 修复了将一维向量合并到矩阵中的错误。
- 修复了 subtract 函数在从实数减去复数时的错误。
2013-05-10,版本 0.8.1 #
- 修复了全局安装 mathjs 时的 npm 警告。
2013-05-10,版本 0.8.0 #
- 实现了命令行接口。当 math.js 通过 npm 全局安装时,可以在系统上将该应用程序作为“mathjs”使用。
- 为索引运算符实现了
end关键字,并增加了对隐式开始和结束的支持(现在支持a(2,:)和b(2:end,3:end-1)等表达式)。 - math.eval 函数现在更灵活:它支持变量和多行表达式。
- 移除了 Parser 和 Scope 的只读选项。
- 修复了解析器中不工作的不等运算符 != 。
- 修复了替换子集时调整矩阵大小的错误。
- 修复了更新不存在变量的子集的错误。
- 小的错误修复。
2013-05-04,版本 0.7.2 #
- 修复了 unequal 方法,该方法之前检查相等而不是不等。感谢 @FJS2。
2013-04-27,版本 0.7.1 #
- 解析器改进
- 添加了对链式参数的支持。
- 添加了对链式变量赋值的支持。
- 添加了一个 remove(name) 函数,用于从解析器的作用域中删除变量。
- 重命名了节点以提高一致性并解决命名冲突。
- 改进了表达式树的字符串化。
- 代码的一些简化。
- 小的错误修复。
- 修复了解析器中的一个错误,该错误将具有多个小数点(如
2.3.4)的数字返回 NaN 而不是抛出错误。 - 修复了 Workspace.insertAfter 中的错误。
- 修复:math.js 现在也可以在 IE 6-8 上运行。
2013-04-20,版本 0.7.0 #
- 实现了方法
math.eval,它使用只读解析器来评估表达式。 - 实现了方法
xgcd(扩展欧几里得算法)。感谢 Bart Kiers (@bkiers)。 - 改进了 math.format,它现在将值四舍五入到最大位数而不是小数位数(默认是 5 位,例如
math.format(math.pi)返回3.1416)。 - 添加了示例。
- 更改了方法 square 和 cube 以逐元素评估矩阵(与所有其他方法一致)。
- 更改了方法 import 的第二个参数为一个包含选项的对象。
- 修复了 IE 中 math.typeof 方法。
- 次要 bug 修复和改进。
2013-04-13,版本 0.6.0 #
- 通过方法 math.select() 实现了链式操作。例如
math.select(3).add(4).subtract(2).done()将返回5。 - 实现了方法 gcd 和 lcm。
- 实现了方法
Unit.in(unit),它创建一个具有固定表示法的单元克隆。例如math.unit('5.08 cm').in('inch')将返回一个其字符串表示始终为英寸的单元,因此2 inch。Unit.in(unit)与方法math.in(x, unit)相同。 - 实现了
Unit.toNumber(unit),它返回以给定单位表示的单元的值。例如math.unit('5.08 cm').toNumber('inch')返回数字2,因为该单元在英寸中的表示值为 2。 - 改进:方法
math.in(x, unit)现在支持字符串作为第二个参数,例如math.in(math.unit('5.08 cm'), 'inch')。 - 将解析器终端用户文档与源文件分开。
- 从核心库中移除了 help 函数和内置文档。
- 修复了常量 i 被定义为 -1i 而不是 1i 的错误。
- 小的错误修复。
2013-04-06,版本 0.5.0 #
- 实现了数据类型 Matrix 和 Range。
- 实现了矩阵方法 clone、concat、det、diag、eye、inv、ones、size、squeeze、transpose、zeros。
- 在解析器中实现了范围运算符
:和转置运算符'。 - 更改:为所有数据类型和解析器创建了方便的对象创建的构造方法。例如,复值现在使用
math.complex(2, 3)而不是new math.Complex(2, 3)创建,解析器现在使用math.parser()而不是new math.parser.Parser()创建。 - 更改:将所有数据类型移动到 math.type 命名空间下,并将 Parser、Workspace 等移动到 math.expr 命名空间下。
- 更改:更改了幂运算符的运算符优先级。
- 它现在是右结合的,而不是像大多数脚本语言那样是左结合的。因此
2^3^4现在计算为2^(3^4)。 - 它的优先级现在高于一元负号,大多数语言都是如此,因此
-3^2现在计算为-(3^2)。
- 它现在是右结合的,而不是像大多数脚本语言那样是左结合的。因此
- 更改:将解析器的 'put' 方法重命名为 'set'。
- 修复:'in' 方法没有检查单位是否具有相同的基数。
2013-03-16,版本 0.4.0 #
- 实现了所有方法的 Array 支持。
- 在解析器中实现了 Array 支持。
- 实现了 format 方法。
- 实现了单位的解析器,math.Unit.parse(str)。
- 改进了复数的解析器 math.Complex.parse(str);
- 改进了 help 方法:现在它会评估示例。
- 修复:解析器在定义函数时的作用域问题。
- 修复:'typeof' 方法在使用 minified 和 mangled 代码时工作不正常。
- 修复:确定单位最佳前缀的错误。
2013-03-09,版本 0.3.0 #
- 实现了 Workspace。
- 实现了 cot、csc、sec 方法。
- 实现了带有一个参数的方法的 Array 支持。
2013-02-25,版本 0.2.0 #
- 实现了 Parser、Scope 和带 Nodes 的表达式树。
- 实现了 import 方法,该方法可以轻松扩展 math.js。
- 实现了 arg、conj、cube、equal、factorial、im、largereq、log(x, base)、log10、mod、re、sign、smallereq、square、unequal 方法。
2013-02-18,版本 0.1.0 #
- 实现了与 JavaScript 内置 Math 库完全兼容。
- 实现了更多函数。
- 一些 bug 修复。
2013-02-16,版本 0.0.2 #
- 实现了 Math 的所有常量,加上虚数单位 i。
- 实现了数据类型 Complex 和 Unit。
- 实现了第一组函数。
2013-02-15,版本 0.0.1 #
- mathjs 包的首次发布。(包仍然是空的)