快速的单位感知计算器


5

我希望能够按下键盘组合,开始键入包含单位和稍微高级数学(不仅仅是四功能计算器)的数学表达式,并立即以我指定的单位获得结果,我可以复制和糊。

  • 目前我打开Firefox并按Ctrl + K,在搜索框中输入,它通常会在下拉列表中显示结果 谷歌计算器 。但它并不总是如此,所以我在结尾按“=”,等待结果,删除等号,等待结果,意识到它不理解我输入单位的方式,打开结果新标签等等很糟糕。
  • Wolfram Alpha 是更聪明,但速度慢得多,输出是所有图像,而不是文本,我没有快速的小部件,如果这样的事情甚至可以存在。
  • GNU单位 有很多单位,很棒,我 可以定义我自己的单位 ,这很好,但它们必须以特定的,不直观的方式编写,它不处理太多高级数学,我需要打开一个终端,启动单元等。我讨厌命令行。
  • 我浪费了很多时间试图做前端 units 在桌面栏和 Launchy ,但我不是一个真正的编码器,我不再使用其中任何一个。

这些的任何其他解决方案或增强功能?

(跨平台最好)

理想的单位感知计算器将能够处理所有这些:

  • 7 nV/sqrt(Hz) ⋅ sqrt(20000 Hz - 20 Hz) → μV =0.99μV
  • sqrt(4*k*25 °C * 1 kΩ * (20 kHz - 20 Hz)) =0.57357μV
  • 3.5 billion kilowatt-hours per year = 399.5兆瓦
  • 60 billion kWh per year = 6.849吉瓦
  • 1/sqrt(2 mH * 2 nF) = 500 kHz
  • 1/(2*pi*10 kΩ * 22 µF) = 0.7234赫兹
  • 1/(2·π·100 Hz·30pF) → ohm =53.05MΩ
  • −10 dBV + 4 dB + 10 dB − 12 dB → dBu = -5.782 dBu
  • 94 dBSPL → Pa = 1.00237 Pa
  • 54 inches + 2 feet → cm = 198.1厘米
  • 12 V ÷ 141.5 µA =84.8kΩ
  • 16 bit * 44.1 kHz * 2 → kbit/s = 1411 kbit / s
  • 1 hundred V / 5 ohms = 20 A.
  • furlong per fortnight → cm/minute = 0.9979
  • attoparsec/microfortnight → in/second = 1.004
  • 1 ft / speed of sound = 0.89576毫秒

1
您要解决的问题的复杂程度是多少?
spowers

你试图编写一个组合的脚本 bc -lunits 做不到?
Benjamin Bannier

1
你能举个例子吗? bc -lunits 一起?我不知道那是可能的。
endolith

@honk:听起来像你应该在答案中发布的东西(你知道,举个例子)。 @endolith:使用@ for 评论通知 因此,当您回复时,用户会收到通知。
quack quixote

@endolith:其实我的评论太快了, bc 如果您不打算定义自己的功能,则不会获得任何好处。三角函数,指数函数和对数函数都已定义 units (只缺少贝塞尔函数)。
Benjamin Bannier

Answers:


7

我印象非常深刻 Qalculate!

Qalculate! screenshot


+1我也是,虽然我的用户界面(KDE的Qalculate plasmoid)没有提供以指定单位表达结果的方法。我通过将结果除以我想要的单位来解决它。我忘记了完整的界面,如果它仍然存在,是否可以做到这一点。 (就这么明确:即使有UI限制,对于我不需要Mathematica的任何东西,它仍然是我最喜欢的计算器)
David Z

我没有看到标准温度,声速,我不明白它如何处理dB,但我也印象非常深刻。我希望在没有按Enter的情况下短暂延迟后出现答案。但这些都是我可以抱怨的事情。 :)
endolith

1
@endolith:您可以进入编辑>管理变量>物理常量和编辑>管理单位并添加您自己的或编辑现有条目。我从未见过计算器在超时后完成计算。我希望在此程序中看到的一件事是使用箭头键进行历史导航或使用鼠标滚动并单击而不必从历史记录中复制粘贴。
Dennis Williamson

Firefox搜索栏中的Google Calculator会在我输入时完成,但我必须通过键入等号来刺激它。我为Launchy编写的内容也会在您键入时显示结果,但由于它访问Units的方式很慢。
endolith

@DavidZ :(同时)Qualculate提供转换单位的“to”命令:“2m to cm”将以cm为单位表示结果。请注意,(lib)qalculate附带qalc,这是一个使用readline的命令行版本,可以使用箭头键或Ctrl-R(以及readline提供的其他简洁的CLI技巧,如Tab完成,复制/粘贴,撤消,等,也可以在例如Bash中找到)。
AstroFloyd

4

昆虫 有基于Web和终端的版本。它支持解析,处理和转换物理单位,例如:

>>> 2min + 30s

   = 2.5min

>>> 40000km / speedOfLight -> ms

   = 133.426ms

>>> 6Mbit/s * 1.5h -> GB

   = 4.05GB

>>> 2J·s + 3W

  Unification error:

    Cannot unify unit W (base units: kg·m²·s⁻³)
            with unit J·s (base units: kg·m²·s⁻¹)

这个想法 dB 意思是“decibyte”。 :/
endolith

1
@endolith:谢谢!跟踪到这里: github.com/sharkdp/insect/issues/67
shark.dp

2

对于易于编写脚本的解决方案,您可能希望看一下 sympy python模块。

$ cat conv.py

#!/usr/bin/env python
import sys
from sympy.physics.units import *
from sympy.printing.pretty.pretty import pprint
from sympy.abc import x, y, z
from sympy import *

# adding extra units is easy
parsec = 3.26163626*ly

if __name__ == '__main__':
  s_input = sys.argv[1]
  s_unit  = sys.argv[2]
  input = eval(s_input)  # input string
  unit  = eval(s_unit)   # output unit

  print 'Converting:'
  pprint(input)
  print
  print str((input/unit).evalf()) +' '+ s_unit

这给了例如对于一些转化为mm的中度丑陋表达:

$./conv.py 'tanh(3*m/(2*m))*sinh(60*deg)*1*parsec' 'mm'


Converting:
                           /π\
3.08574615554565e+16*m*sinh|--|*tanh(3/2)
                           \3 /

3.48955431541888e+19 mm

当然这是非常愚蠢的代码,不检查单位 输入和输出的兼容性,所以你 可能会在结果中结束额外的单位。

$./conv.py 'c' 'parsec'

Converting:
299792458*m
-----------
     s

9.71539598165644e-9/s parsec


@endolith:这完全取决于你想要什么样的数学。基础知识在 units,但显然它没有符号代数或更高的数学。
Benjamin Bannier

2

我主要分享你对理想计算器的看法和使用的缺点 GNU单位 和Wolfram一起推出了我自己在线的计算器 PhyCalc.com 。它为SI单位和用途提供了自己的单位代数 GNU单位 转换为其他单位,或当表达式本身包含非SI单位时作为后备。

它的目的是在有意义的地方解释Unicode输入。并试图聪明地猜测确切的数量和相应的单位。它会自动插入SI前缀。 (就像我信赖的旧卡西欧袖珍计算器在“ENG”模式下一样)

关于您的“理想计算器”输入和响应的一些评论:

sqrt(4 * k * 25°C *1kΩ*(20 kHz - 20 Hz))=0.57357μV

将C自动设为绝对温度并不准确。 k也不是Boltzmann常数的明确符号。但是,这应该给你所需的答案:

sqrt(4*1.38064852e-23J/K*(273.15K+25 °C) * 1 kΩ * (20 kHz - 20 Hz)) in μV

这些在GNU单元中失败:

每年35亿千瓦时

1英尺/声速

GNU单位替代品可以是:

3.5 billion kWh per year
1 ft / mach in ms

1 /(2·π·100 Hz·30pF) →欧姆

你可以省略“→ohm”部分。这就是我所说的“聪明地猜测数量”:-)。

-10 dBV + 4 dB + 10 dB - 12 dB→dBu

GNU单位有一些dB转换,但它被定义为10 ^(x / 10)这是一个标量,它不会添加到电压,你假设计算器应该认识到它应该是缩放电压而不是电源和应该应用10 ^(x / 20)的缩放比例。那将是非常酷的,但对于我害怕的gnu单位来说,这是一座太过分的桥梁。这至少会为您提供使用GNU单元的正确答案:

 1V*dB(-10)^0.5*dB(4)^0.5*dB(10)^0.5*dB(-12)^0.5 → dBu

但我明白为什么你会发现这是不直观的。

否则我想 PhyCalc.com 可能非常接近你的理想计算器。

为了快速访问它,我通过在Windows注册表中添加以下字符串(REG_SZ)名称/值对来映射我的专用计算器键盘键:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\18]
"ShellExecute"="http://phycalc.com"

-1

Wolfram Alpha能够处理数学运算,不需要您下载或安装任何东西。

点击这里 如何使用其数学函数。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.