Schneller Taschenrechner

1802
endolith

Ich möchte in der Lage sein, eine Tastenkombination zu drücken, einen mathematischen Ausdruck zu schreiben, der Einheiten und etwas fortgeschrittene Mathematik (nicht nur einen Vierfunktionsrechner) enthält, und sofort ein Ergebnis zu erhalten, in Einheiten, die ich angegeben habe und die ich kopieren kann Einfügen.

  • Derzeit öffne ich Firefox und drücke Strg + K, tippe das Suchfeld ein und normalerweise bekomme ich ein Ergebnis in der Dropdown-Liste von Google Calculator . Dies ist jedoch nicht immer der Fall, also drücke ich am Ende auf "=", warte auf ein Ergebnis, entferne das Gleiche, warte auf ein Ergebnis, erkenne, dass es nicht versteht, wie ich eine Einheit eingegeben habe, und öffne das Ergebnis in einer Neuer Tab, usw. Es ist scheiße.
  • Wolfram Alpha ist intelligenter, aber sehr viel langsamer. Die Ausgabe besteht aus Bildern, nicht aus Text, und ich habe kein schnelles Widget dafür, falls so etwas überhaupt existieren könnte.
  • GNU-Einheiten haben eine Unmenge von Einheiten, was großartig ist, und ich kann meine eigenen Einheiten definieren, was großartig ist, aber sie müssen auf spezifische, nicht intuitive Weise geschrieben werden, da sie nicht viel fortgeschrittene Mathematik beherrscht und ich brauche ein Terminal zu öffnen, Einheiten zu starten usw. Ich hasse die Befehlszeile.
  • Ich habe viel Zeit damit verschwendet, Frontends unitsin Deskbar und Launchy zu machen, aber ich bin kein richtiger Programmierer und verwende keinen der beiden mehr.

Irgendwelche anderen Lösungen oder Verbesserungen davon?

(Cross-Plattform ist am besten)

Der ideale gerätebezogene Rechner könnte all diese Aufgaben lösen:

  • 7 nV/sqrt(Hz) ⋅ sqrt(20000 Hz - 20 Hz) → μV = 0,99 & mgr; V
  • sqrt(4*k*25 °C * 1 kΩ * (20 kHz - 20 Hz)) = 0,57357 & mgr; V
  • 3.5 billion kilowatt-hours per year = 399,5 MW
  • 60 billion kWh per year = 6,849 GW
  • 1/sqrt(2 mH * 2 nF) = 500 kHz
  • 1/(2*pi*10 kΩ * 22 µF) = 0,7234 Hz
  • 1/(2·π·100 Hz·30pF) → ohm = 53,05 MΩ
  • −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 cm
  • 12 V ÷ 141.5 µA = 84,8 kΩ
  • 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 ms
5
Wie komplex ist das Problem, das Sie lösen möchten? spowers vor 14 Jahren 1
Was haben Sie versucht, ein Skript zu schreiben, das eine Kombination aus "bc -l" und "units" nicht konnte? Benjamin Bannier vor 14 Jahren 0
Können Sie ein Beispiel für die Verwendung von "bc -l" und "units" zusammen angeben? Ich wusste nicht, dass das möglich ist. endolith vor 14 Jahren 1
@honk: klingt wie etwas, das du in einer Antwort posten solltest (weißt du mit einem Beispiel). @endolith: Verwenden Sie @ für [Kommentarbenachrichtigungen] (http://meta.stackoverflow.com/questions/43019/how-do-comment-replies-work), damit der Benutzer benachrichtigt wird, wenn Sie darauf antworten. quack quixote vor 14 Jahren 0
@endolith: Eigentlich war mein Kommentar zu schnell, "bc" bringt dir nichts, wenn du nicht vorhast, eigene Funktionen zu definieren. Die trigonometrische, exponentielle und logarithmische Funktion sind alle bereits in "units" definiert (nur Bessel-Funktionen fehlen). Benjamin Bannier vor 14 Jahren 0
@ quack quixote: Dafür sollte es eine Antwort-Schaltfläche geben. endolith vor 14 Jahren 0
@endo: schlage es auf [meta] (http://meta.stackoverflow.com/), wenn du magst ... :) quack quixote vor 14 Jahren 0

5 Antworten auf die Frage

7
Dennis Williamson

I'm very impressed with Qalculate!.

Qalculate! screenshot

+1 Ich auch, obwohl meine Benutzeroberfläche (das Qalculate-Plasmoid für KDE) keine Möglichkeit bietet, ein Ergebnis in angegebenen Einheiten auszudrücken. Ich arbeite darum herum, indem ich mein Ergebnis durch die Einheiten teile, die ich will. Ich vergesse, ob das vollständige Interface, wenn es überhaupt noch existiert, das kann. (Nur so ist es klar: Trotz der Einschränkungen der Benutzeroberfläche ist es immer noch mein bevorzugter Taschenrechner für alles, für das ich Mathematica nicht brauche.) David Z vor 14 Jahren 0
Ich sehe keine Standardtemperatur, Schallgeschwindigkeit und ich verstehe nicht, wie sie mit dB umgeht, aber ich bin auch sehr beeindruckt. Ich wünschte, die Antworten würden nach kurzer Zeit erscheinen, ohne die Eingabetaste zu drücken. Aber das sind alles Dinge, über die ich mich beschweren kann. :) endolith vor 14 Jahren 0
@ Endolith: Sie können unter Bearbeiten> Variablen verwalten> Physische Konstanten und Bearbeiten> Einheiten verwalten weitere Einträge hinzufügen oder vorhandene bearbeiten. Ich habe noch nie gesehen, wie ein Rechner nach einem Timeout eine Berechnung abgeschlossen hat. Eine Sache, die ich in diesem Programm gerne sehen würde, ist die Verlaufsnavigation mit den Pfeiltasten oder Scrollen und Klicken mit der Maus, anstatt aus dem Verlauf kopieren und einfügen zu müssen. Dennis Williamson vor 14 Jahren 1
Google Calculator in the Firefox search bar completes as I type, though I have to prod it sometimes by typing an equals sign. The thing I wrote for Launchy also displays the result as you type, though it was slow because of the way it accesses Units. endolith vor 14 Jahren 0
@DavidZ: (mittlerweile) Qualculate bietet den Befehl "to" zum Konvertieren von Einheiten: "2m in cm" drückt das Ergebnis in cm aus. (Lib) qalculate wird mit qalc geliefert, einer Befehlszeilenversion, die readline verwendet und den Verlauf mit den Pfeiltasten oder mit Strg-R (und anderen netten CLI-Tricks, die von readline bereitgestellt werden, aufrufen kann, z. B. Tab-Vervollständigung, Kopieren / Einfügen, Rückgängigmachen). etc., auch in zB Bash) zu finden. AstroFloyd vor 7 Jahren 0
Das ist ein wirklich schönes Programm. Nun, da ich aufgehört habe, Linux zu verwenden, wünschte ich mir, es würde von Windows unterstützt. : / endolith vor 7 Jahren 0
3
shark.dp

Insect hat sowohl web- als auch terminalbasierte Versionen. Es unterstützt das Analysieren, Handhaben und Konvertieren physikalischer Einheiten, zum Beispiel:

>>> 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⁻¹) 
Dies bedeutet "dB" bedeutet "Dezibyte". : / endolith vor 7 Jahren 0
@ Endolith: Danke! Hier verfolgt: https://github.com/sharkdp/insect/issues/67 shark.dp vor 7 Jahren 1
2
Benjamin Bannier

For a easily scriptable solution you might want to have a look a the sympy python module.

$ 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 

which gives e.g. for some moderately ugly expression converted to 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 

Of course this is really studpid code that does no checking thet unit compatibility of the input and output, so you might end up extra units in the result.

$./conv.py 'c' 'parsec' Converting: 299792458*m ----------- s 9.71539598165644e-9/s parsec 
Siehe auch https://launchpad.net/python-quantities endolith vor 14 Jahren 0
@endolith: Es hängt wirklich nur davon ab, welche Art von Mathematik Sie wollen. Die Grundlagen sind in Einheiten, aber offensichtlich gibt es keine symbolische Algebra oder höhere Mathematik. Benjamin Bannier vor 14 Jahren 0
2
Ronald

Ich teile hauptsächlich Ihre Vorstellungen über einen idealen Rechner und die Nachteile der Verwendung von GNU-Einheiten und Wolfram und rollte meinen eigenen Online-Rechner, den ich bei PhyCalc.com online gestellt habe . Es führt eine eigene Einheitenalgebra für SI-Einheiten durch und verwendet GNU-Einheiten zur Konvertierung in andere Einheiten oder als Fallback, wenn der Ausdruck selbst Nicht-SI-Einheiten enthält.

Ziel ist es, Unicode-Eingaben dort zu interpretieren, wo es sinnvoll ist. Und versucht, die genaue Menge und die entsprechende Einheit zu erraten. Es fügt automatisch SI-Präfixe ein. (Ähnlich wie mein alter Casio-Taschenrechner im ENG-Modus)

Einige Kommentare zu den Eingaben und Antworten Ihres "idealen Rechners":

sqrt (4 · k · 25 ° C · 1 kΩ · (20 kHz - 20 Hz)) = 0,57357 & mgr; V

Es ist nicht genau genau, wenn automatisch angenommen wird, dass ° C eine absolute Temperatur ist. Auch k ist nicht genau ein eindeutiges Symbol für die Boltzmann-Konstante. Dies sollte Ihnen jedoch die erforderliche Antwort geben:

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

Diese versagen in GNU-Einheiten:

3,5 Milliarden Kilowattstunden pro Jahr

1 ft / Schallgeschwindigkeit

Alternativen für GNU-Einheiten könnten sein:

3.5 billion kWh per year 1 ft / mach in ms 

1 / (2 · π · 100 Hz · 30pF) T Ohm

Sie können den Teil "→ Ohm" weglassen. Das war es, was ich mit "schlau über das Erraten der Menge" meinte :-).

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

GNU-Einheiten verfügen über einige dB-Umrechnungen, die jedoch als 10 ^ (x / 10) definiert werden. Dies ist ein Skalar, der nicht zu einer Spannung addiert wird. Sie gehen davon aus, dass der Rechner erkennen sollte, dass er die Spannung anstelle von Leistung und skalieren sollte sollte stattdessen eine Skalierung von 10 ^ (x / 20) anwenden. Das wäre sehr cool, aber für GNU-Einheiten ist es eine zu große Brücke. Dies gibt Ihnen zumindest die richtige Antwort mit GNU-Einheiten:

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

Aber ich kann verstehen, warum Sie das vielleicht nicht intuitiv finden.

Ansonsten denke ich, dass PhyCalc.com Ihrem idealen Rechner sehr nahe kommt.

Um schnell darauf zugreifen zu können, ordne ich meine dedizierte Rechnertastaturtaste zu, indem ich das folgende Zeichenfolgenpaar (REG_SZ) in der Windows-Registrierung hinzufüge:

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

Wolfram Alpha is capable of crunching math and doesn't require you to download or install anything.

Check here for how to use its math functions.