Qalculate! Qt 用户界面
Qalculate! 是一款多功能跨平台桌面计算器。它使用简单,但提供了通常只有复杂数学软件包才具备的强大功能和多样性,以及日常所需的实用工具(如货币转换和百分比计算)。其特性包括大量可自定义函数库、单位计算和转换、符号计算(包括积分和方程)、任意精度、不确定性传播、区间运算、绘图,以及用户友好的界面(GTK、Qt和命令行界面)。
系统要求
- Qt5(>= 5.6)或 Qt6
- libqalculate(>= 5.2.0)
安装
Qalculate! 已发布版本的安装程序、二进制包和源代码的下载链接及安装说明可在 https://qalculate.github.io/downloads.html 获取。
在源代码顶级目录的终端窗口中运行
qmake
make
make install
(以root身份运行,例如sudo make install
)
生成的可执行文件名为 qalculate-qt
。
功能(来自libqalculate)
- 计算和解析:
- 基本运算和运算符:+ - * / mod ^ E () && || ! < > >= <= != ~ & | << >> xor
- 容错字符串解析:log 5 / 2 .5 (3) + (2( 3 +5 = ln(5) / (2.5 * 3) + 2 * (3 + 5)
- 表达式可包含任意组合的数字、函数、单位、变量、向量和矩阵,以及日期
- 支持复数和无穷大数
- 不确定性传播
- 区间运算(用于确定有效数字或直接计算数字区间)
- 支持所有常见进制,以及负数和非整数基数、六十进制数、时间格式和罗马数字
- 可禁用函数、变量、单位或未知变量以减少混淆:例如,当你不希望(a+b)^2表示(are+barn)^2而是("a"+"b")^2时
- 可控的隐式乘法
- 矩阵和向量及相关运算(行列式等)
- 详细的错误消息
- 任意精度
- RPN模式
- 结果显示:
- 支持所有常见进制,以及负数和非整数基数、六十进制数、时间格式和罗马数字
- 众多自定义选项:精度、最大/最小小数位、复数形式、乘法符号等
- 精确或近似:sqrt(32)返回4 * sqrt(2)或5.66
- 简单分数和带分数:4 / 6 * 2 = 1.333... = 4/3 = 1 + 1/3
- 符号计算:
- 例如:(x + y)^2 = x^2 + 2xy + y^2; 4 "apples" + 3 "oranges"
- 因式分解和化简
- 微分和积分
- 可解决大多数方程和不等式
- 可自定义假设以得到不同结果(例如,若假设x为正数,则ln(2x) = ln(2) + ln(x))
- 函数:
- 数百个灵活函数:三角函数、指数和对数、组合学、几何、微积分、统计、金融、时间和日期等
- 可轻松创建、编辑并保存为标准XML文件
- 单位:
- 支持所有SI单位和前缀(包括二进制),以及英制和其他单位系统
- 自动转换:ft + yd + m = 2.2192 m
- 显式转换:5 m/s to mi/h = 11.18 miles/hour
- 智能转换:自动将5 kg*m/s^2转换为5 N
- 货币转换,可获取每日汇率
- 不同名称形式:缩写、单数、复数(m、meter、meters)
- 可轻松创建、编辑并保存为标准XML文件
- 变量和常量:
- 基本常量:pi、e等
- 大量物理常量(带或不带单位)和化学元素属性
- CSV文件导入和导出
- 可轻松创建、编辑并保存为标准XML文件
- 灵活性高 - 可包含简单数字、单位或完整表达式
- 具有对象和相关属性的数据集,类似数据库结构
- 绘图:
- 使用Gnuplot
- 可绘制函数或数据(矩阵和向量)
- 能将图表保存为PNG图像、postscript等格式
- 多种自定义选项
- 以及更多...
有关语法、可用函数、单位和变量的更多详细信息,请参阅手册(https://qalculate.github.io/manual/)
示例(表达式)
注意:如果逗号不用作小数点或千位分隔符,函数参数中的分号可以替换为逗号。
基本函数和运算符
sqrt 4 = sqrt(4) = 4^(0.5) = 4^(1/2) = 2
sqrt(25; 16; 9; 4) = [5 4 3 2]
sqrt(32) = 4 × √(2)(在精确模式下)
cbrt(−27) = root(-27; 3) = −3(实根)
(−27)^(1/3) ≈ 1.5 + 2.5980762i(主根)
ln 25 = log(25; e) ≈ 3.2188758
log2(4)/log10(100) = log(4; 2)/log(100; 10) = 1
5! = 1 × 2 × 3 × 4 × 5 = 120 5\2 = 5//2 = trunc(5 / 2) = 2(整数除法)
5 mod 3 = mod(5; 3) = 2
52的因式分解 = 2^2 × 13
25/4 × 3/5化为分数 = 3 + 3/4
gcd(63; 27) = 9
sin(pi/2) − cos(pi) = sin(90度) − cos(180度) = 2
sum(x; 1; 5) = 1 + 2 + 3 + 4 + 5 = 15
sum(\i^2+sin(\i); 1; 5; \i) = 1^2 + sin(1) + 2^2 + sin(2) + ... ≈ 55.176162
product(x; 1; 5) = 1 × 2 × 3 × 4 × 5 = 120
var1:=5 (将值5存储在变量var1中) var1 × 2 = 10
5^2 #这是一条注释 = 25
sinh(0.5) 其中 sinh()=cosh() = cosh(0.5) ≈ 1.1276260
plot(x^2; −5; 5) (绘制函数y=x^2,从-5到5)
单位
5 dm3 转换为 L = 5 dm^3 转换为 L = 5 L
20英里/2小时 转换为 km/h = 16.09344 km/h
1.74 转换为 英尺 = 1.74 m 转换为 ft ≈ 5 ft + 8.5039370 in
1.74 m 转换为 -ft ≈ 5.7086614 ft
100 lbf × 60 mph 转换为 hp ≈ 16 hp
50 Ω × 2 A = 100 V
50 Ω × 2 A 转换为基本单位 = 100 kg·m²/(s³·A)
10 N / 5 Pa = (10 N)/(5 Pa) = 2 m²
5 m/s 转换为 s/m = 0.2 s/m
500 € − 20% 转换为 $ ≈ $451.04
500 megabit/s × 2 h 转换为 b?byte ≈ 419.09516 吉比字节
物理常数
k_e / G × a_0 = (库仑常数 / 牛顿常数) × 玻尔半径 ≈ 7.126e9 kg·H·m^−1
ℎ / (λ_C × c) = 普朗克常数 ∕ (康普顿波长 × 光速) ≈ 9.1093837e-31 kg
5 ns × 里德伯常数 转换为 c ≈ 6.0793194E-8c
atom(Hg; weight) + atom(C; weight) × 4 转换为 g ≈ 4.129e-22 g
(G × planet(earth; mass) × planet(mars; mass))/(54.6e6 km)^2 ≈ 8.58e16 N(地球和火星之间的引力)
不确定度和区间运算
"±"可以替换为"+/-";启用区间运算的结果显示在括号中
sin(5±0.2)^2/2±0.3 ≈ 0.460±0.088 (0.46±0.12)
(2±0.02 J)/(523±5 W) ≈ 3.824±0.053 ms (3.825±0.075 ms)
interval(−2; 5)^2 ≈ intervall(−8.2500000; 12.750000) (intervall(0; 25))
代数
(5x^2 + 2)/(x − 3) = 5x + 15 + 47/(x − 3)
(\a + \b)(\a − \b) = ("a" + "b")("a" − "b") = 'a'^2 − 'b'^2
(x + 2)(x − 3)^3 = x^4 − 7x^3 + 9x^2 + 27x − 54
因式分解 x^4 − 7x^3 + 9x^2 + 27x − 54 = x^4 − 7x^3 + 9x^2 + 27x − 54 因式分解 = (x + 2)(x − 3)^3
cos(x)+3y^2 其中 x=pi 且 y=2 = 11
gcd(25x; 5x^2) = 5x
1/(x^2+2x−3) 转换为部分分式 = 1/(4x − 4) − 1/(4x + 12)
x+x^2+4 = 16 = (x = 3 或 x = −4)
x^2/(5 m) − hypot(x; 4 m) = 2 m 其中 x > 0 = (x ≈ 7.1340411 m)
cylinder(20cm; x) = 20L (计算半径为20 cm的20 L圆柱体的高度) = (x = (1 / (2π)) m) = (x ≈ 16 cm)
asin(sqrt(x)) = 0.2 = (x = sin(0.2)^2) = (x ≈ 0.039469503)
x^2 > 25x = (x > 25 或 x < 0)
solve(x = y+ln(y); y) = lambertw(e^x)
solve2(5x=2y^2; sqrt(y)=2; x; y) = 32/5
multisolve([5x=2y+32, y=2z, z=2x]; [x, y, z]) = [−32/3 −128/3 −64/3] dsolve(diff(y; x) − 2y = 4x; 5) = 6e^(2x) − 2x − 1
微积分
diff(6x^2) = 12x
diff(sinh(x^2)/(5x) + 3xy/sqrt(x)) = (2/5) × cosh(x^2) − sinh(x^2)/(5x^2) + (3y)/(2 × √(x))
integrate(6x^2) = 2x^3 + C
integrate(6x^2; 1; 5) = 248
integrate(sinh(x^2)/(5x) + 3xy/sqrt(x)) = 2x × √(x) × y + Shi(x^2) / 10 + C
integrate(sinh(x^2)/(5x) + 3xy/sqrt(x); 1; 2) ≈ 3.6568542y + 0.87600760
limit(ln(1 + 4x)/(3^x − 1); 0) = 4 / ln(3)
矩阵和向量
[1, 2, 3; 4, 5, 6] = ((1; 2; 3); (4; 5; 6)) = [1 2 3; 4 5 6] (2×3矩阵)
1...5 = (1:5) = (1:1:5) = [1 2 3 4 5]
(1; 2; 3) × 2 − 2 = [(1 × 2 − 2), (2 × 2 − 2), (3 × 2 − 2)] = [0 2 4]
[1 2 3].[4 5 6] = dot([1 2 3]; [4 5 6]) = 32 (点积)
cross([1 2 3]; [4 5 6]) = [−3 6 −3] (叉积)
[1 2 3; 4 5 6].×[7 8 9; 10 11 12] = hadamard([1 2 3; 4 5 6]; [7 8 9; 10 11 12]) = [7 16 27; 40 55 72] (哈达玛积)
[1 2 3; 4 5 6] × [7 8; 9 10; 11 12] = [58 64; 139 154] (矩阵乘法)
[1 2; 3 4]^-1 = inverse([1 2; 3 4]) = [−2 1; 1.5 −0.5]
统计学
mean(5; 6; 4; 2; 3; 7) = 4.5
stdev(5; 6; 4; 2; 3; 7) ≈ 1.87
quartile([5 6 4 2 3 7]; 1) = percentile((5; 6; 4; 2; 3; 7); 25) ≈ 2.9166667
normdist(7; 5) ≈ 0.053990967
spearman(column(load(test.csv); 1); column(load(test.csv); 2)) ≈ −0.33737388 (取决于CSV文件中的数据)
时间和日期
10:31 + 8:30 to time = 19:01
10h 31min + 8h 30min to time = 19:01
now to utc = "2020-07-10T07:50:40Z"
"2020-07-10T07:50CET" to utc+8 = "2020-07-10T14:50:00+08:00"
"2020-05-20" + 523d = addDays(2020-05-20; 523) = "2021-10-25"
today − 5 days = "2020-07-05"
"2020-10-05" − today = days(today; 2020-10-05) = 87 d
timestamp(2020-05-20) = 1 589 925 600
stamptodate(1 589 925 600) = "2020-05-20T00:00:00"
"2020-05-20" to calendars (返回希伯来、伊斯兰、波斯、印度、中国、儒略、科普特和埃塞俄比亚日历中的日期)
数制
52 to bin = 0011 0100
52 to bin16 = 0000 0000 0011 0100
52 to oct = 064
52 to hex = 0x34
0x34 = hex(34) = base(34; 16) = 52
523<<2&250 to bin = 0010 1000
52.345 to float ≈ 0100 0010 0101 0001 0110 0001 0100 1000
float(01000010010100010110000101001000) = 1715241/32768 ≈ 52.345001
floatError(52.345) ≈ 1.2207031e-6
52.34 to sexa = 52°20′24″
1978 to roman = MCMLXXVIII
52 to base 32 = 1K
sqrt(32) to base sqrt(2) ≈ 100000
0xD8 to unicode = Ø code(Ø)的十六进制值 = 0xD8