一个Emacs org-模式文件I要嵌入在org-模式文件简单的数学表达式,例如:简单的数学结果与巴别
sqrt(p * (1-p) * N)
其中p = 0.8,N = 10,000和根据一个简单的桌面计算器,答案是40,我有没有运气获取组织,巴贝尔给我这个答案...这里是一个组织文件:
Some weird rounding errors with Python:
#+begin_src python :var N=100000 :var p=0.8
from math import sqrt
return sqrt(p * (1 - p) * N)
#+end_src
#+results:
: 126.491106407
Some other weird rounding errors, this time with Emacs lisp:
#+begin_src elisp :var N=100000 :var p=0.8
(sqrt (* p (- 1 p) N))
#+end_src
#+results:
: 126.49110640673517
Note sure which number calc is unhappy with:
#+begin_src calc :var N=100000 :var p=0.8
sqrt(p * (1 - p) * N)
#+end_src
#+results:
| 5 | Expected a number |
Yet more weird rounding errors, using bc in the shell:
#+begin_src sh :var N=100000 :var p=0.8
echo "sqrt($p * (1 - $p) * $N)" | bc
#+end_src
#+results:
: 100.0
A different set of rounding errors with bc without using variables:
#+begin_src sh
echo "sqrt(0.8 * (1 - 0.8) * 10000)" | bc
#+end_src
#+results:
: 31.6
Looks like the variables are being substituted OK:
#+begin_src sh :var N=100000 :var p=0.8
echo "sqrt($p * (1 - $p) * $N)"
#+end_src
#+results:
: sqrt(0.8 * (1 - 0.8) * 100000)
Using extra precision directly gives the correct result:
#+begin_src sh
echo "sqrt(0.80 * (1 - 0.80) * 10000)" | bc
#+end_src
#+results:
: 40.0
So, just use extra precision in the p variable, eh:
#+begin_src sh :var N=100000 :var p=0.80
echo "sqrt($p * (1 - $p) * $N)" | bc
#+end_src
#+results:
: 100.0
No! Because it get stripped out:
#+begin_src sh :var N=100000 :var p=0.80
echo "sqrt($p * (1 - $p) * $N)"
#+end_src
#+results:
: sqrt(0.8 * (1 - 0.8) * 100000)
Please God, kill me now...
我只是在寻找一种方便的方法来在组织文件中嵌入一些数学。
(组织模式从最近的混帐chekout 03年7月8日从最近的git结帐时,Emacs 24.0.93.1)
Yikes,在整个文件中传播了一个错字,并剪下了'n贴... – jimmy 2012-03-04 22:17:46