这个工具能做什么
本计算器可将一个你自定义的数学函数 \(f(x, y)\) 应用到整张数值数据表的每一行。第一列为 x 的取值,第二列为 y 的取值,每一行都会算出一个结果,即在该行 (x, y) 处求得的 \(f(x, y)\) 值。它是一个纯数学表达式求值器,因此通用性强,不涉及任何地区或货币方面的规则。
使用方法
在 f(x, y) = 输入框中,用变量 x 和 y 写出表达式。可使用运算符 + - * / ^ 和括号,以及常用函数:sqrt、exp、ln、log、sin、cos、tan、asin、acos、atan、abs、floor、ceil、round。然后在表格框中录入数据,每行一组,每行两个数字,用空格、制表符或逗号分隔。选定要显示的有效数字位数,工具便会逐行求值。
公式解析
表达式会先被解析成一串记号(token),并通过调度场算法(shunting-yard)转换为内部求值顺序。对于第 i 行,引擎会代入该行的取值并计算 \(result_i = f(x_i, y_i)\)。各行之间唯一变化的只是代入的数值;已解析好的结构会被反复复用,因此即使面对大型表格也能保持快速且结果一致。
$$z = f(x,\,y)\Big|_{(x,\,y)\,\in\,\text{Table}}$$实例演示
以默认表达式 x^2*y+x*y^2(可因式分解为 x*y*(x+y))和默认数据表为例:
第 1 行:x=1、y=2,得 \(1\cdot 2 + 1\cdot 4 = 6\)。第 2 行:x=2、y=3,得 \(12 + 18 = 30\)。第 3 行:x=3、y=4,得 \(36 + 48 = 84\)。结果列为 [6, 30, 84]。用因式分解形式复核:\(1\cdot 2\cdot 3 = 6\),\(2\cdot 3\cdot 5 = 30\),\(3\cdot 4\cdot 7 = 84\)——完全吻合。
常见问题
可以使用哪些变量?只能用 x 和 y,外加常量 pi 和 e。其他字母除非是受支持的函数名,否则都会被视为解析错误。
遇到除以零或对负数开平方会怎样?仅该行会显示「undefined」(未定义)或「infinity」(无穷大),其余各行仍可正常计算。
有效数字设置会改变计算结果吗?不会。它只影响显示结果的格式,底层计算始终采用完整的双精度浮点数。