win calc计算器妙用-功能键-编辑键-视图-命令键-脚本-迭代-连分数-批量和-批次高精度-内存-lisp-文本VS代码
windows计算器低级使用-运行-功能键-编辑键-视图-命令键-脚本-迭代开方-连分数-批量求和-批次式高精度-内存使用-lisp- 文本与代码合一
一直觉得windows计算器是个好东西.四年前,曾在网吧教收银员在交班时用统计框进行计算.
今天试用了一些计算器来计算数论问题, 发现它的方便性仍然无可取代.
首先,
它是内置于操作系统的, 调用方便:
(ctrl-ESC-R或win键-R) 开始菜单-运行 calc
或 开始菜单-程序-附件-计算器
(ctrl_shift_ESC)- alt_FR 任务管理器:菜单-运行 calc
其次,
比excel的计算精度要高,可以到32位有效数字.
当然, excel也可以有高精度计算包, 但是我发现excel 2010居然不能计算 mod (139*81*10^8k+a, k), a>=0, 对excel有些不信任了.
朋友们如果发现有excel的高精度计算包, 请推荐一个.
{
数学软件, mathematica, maple, matlab好久没用了. 因为它们处理文本和数据列表, 没有excel 方便.比如excel可以方便的分组折叠与展开.
如果是我掌握不够好的原因,请朋友们指点一下.谢谢.
matlab 可以嵌入到office, 尤其是excel中, 倒是很好. 这个有空的话, 我再多多应用. 朋友们有这方面的心得的话, 请不吝指教. 谢谢.
}
再次,
calc也支持简单的按键命令脚本.与excel结合, 也很有效.
一个问题是如何利用calc批量计算,将统计框内的数据复制到excel中.
再次,calc的按键命令,实在是太方便,使我想起了vim.由此编成的脚本也十分简炼,有点像J语言与lisp之类的了。
迭代, 是可以用脚本实现的; 但是似乎只能支持一个内存变量.
多变量的交换, 是个问题.如何能调用统计框中的多个内存变量,是个问题.
下面的例子可以用现成的函数计算出来, 但我举这样的例子,是为了说明, calc的确可以使用脚本来处理问题.
其实, 用数学软件很容易完成,也不必在calc上煞费苦心. 不过, 或者能够带来些什么启发也说不定吧.
DDDBBB12
注: 下面的例子要调用计算器的科学型界面. 如有必要, 请先参考 AAA. 如熟悉计算器功能, 先测试无妨.指令的意义见BBB
例一:利用x(n+1)=(x(n)+a/x(n))/2计算sqrt(a)
例二: 用连分数计算黄金分割数(sqrt(5)-1)/2=1/(1+1/(1+...))=[0; {1}]
例三: 批量数据用计算器求和.
例四: 用来进行高精度计算.
例一(1): 计算银数,即满足X(n+3)=X(n+1)+X(n)的数列的邻值比X(n+1)/X(n)的极根.利用x^3=x+1,由初值x进行(x+1)^(1/3)迭代.
计算得到银数:1.3247179572447460259609088544781.用excel单变量求解,则可以得到1.32471795724475,精确到14位有效值,舍入到15位有效值.
例一: 利用x(n+1)=(x(n)+a/x(n))/2计算sqrt(a)
注意, 不能有多余的等号或回车.
注意, :p,:m要连在结果数(常数,等号或回车产生的数)的后面,:r则作为输入数出现.
步聚(1):调出统计框, 在计算过程中将结果置入到其中,以起到提示作用:
ctrl_S
步聚(2):清内存,输入初值x(0),初值为正数,如1到a之间,可固定为1.但为了起到提示作用,我将初值写入统计框,指令行如下:
(
2:m\
)
注:
1: 手动输入: 2, 再按 MS 键, 即 store in memory.
2: 这一步很要紧. 如果中途发现与下面的描述不符, 常见的原因是: 内存中存储的变量在计算中变得与这里的预置不同,
那么你应当重新复制这个步聚运行一次再进行下面的过程.
3: 统计框也应当及时全清(全部清除), 以利观看.
步聚(3):用x(n+1)=(x(n)+a/x(n))/2进行迭代(循环操作),直到再次结果相同,即得32位的a的平方根. 过程是:
读内存,取倒数,乘以被求平方根的数a,得到值后加到内存; 读内存,除以2,存入内存与统计框;
然后复制下面的指令行,反复循环.
下面是计算根号5的过程.
(
:rr*5=:p:r/2=:m\
)
注: 复制此指令, 粘贴多次就是迭代过程. 这里用5次迭代即得到32位精确值.不信你平方可以得到5
统计框下面会显示 6, 这是包含初值在内统计框内数据的数目.
例二: 用连分数计算黄金分割数(sqrt(5)-1)/2=1/(1+1/(1+...))=[0; {1}]
初值,这一步一般可以省略.因为下面的循环体中,第一步没有用除法.
(
1:m\
)
迭代过程:
(
:r+1=r:m\
)
再如计算sqrt(2)-1,将上面代码改为:
(
:r+2=r:m\
)
一般地,计算x=1/(a+x)的实根x=(-a+sqrt(aa+4))/2,用:r+a=r:m\.当a=2n时,x=-n+sqrt(nn+1).
如-2+sqrt(5)对应 ( :r+4=r:m\ )
-3+sqrt(10)对应 ( :r+6=r:m\ )
写到这里,我发现,用括号来包含脚本,而其它内容均不视为脚本而被调用和读取的话,那么文本与代码就合二为一了.
并且这种方式与lisp (包手Scheme)的点像. 从另一方面看,上面的代码还真是有lisp的意味吧?好精炼.
AAA
windows软件中通用的功能及windows计算器中的功能键总说
按钮 | 键 | 何冬州详注 |
F1 | 帮助 | (计算器的帮助文件中没有的)菜单alt_HH |
F10 | 菜单调用 | (计算器的帮助文件中没有的) |
F11 | 未知 | (计算器的帮助文件中没有的),一般用来全屏显示,计算器中可能没有到) |
F2-F4,F5-F8,F9,F12有定义. | 有特殊指定 | |
F2-F4 | Alt_VE,alt_VR,alt_VG, 分别是anglE, Rad, Grand. | |
F2-F4,F12 | alt_VR, alt_VW, alt_VY, alt_VQ, 分别是R, Word, Y, Qword | |
总说: | ||
F2,F3,F4 在Dec时为角度, 弧度, 梯度; hex-Oct-bin 时为Dw双字,W字,Byte字节,F12为Qw四字; | ||
F5,F6,F7,F8分别为hex, Dec, Oct, Bin | ||
F9 | 正负号 | |
ctrl-C | 剪切 | (计算器的帮助文件中没有的)菜单alt_EC |
ctrl-V | 贴入 | (计算器的帮助文件中没有的)菜单alt_EP |
ctrl-X | 未定义 | (计算器的帮助文件中没有的)计算器中没有用到) |
alt_VT | 普通型 | |
alt_VS | 科学型 | |
alt_VI | 数字分组 |
BBB
以下的帮助文件中的按键说明加了位置调整和我的注释.
(BBB1)
使用“计算器”按钮的等价键盘键下面按字母顺序列出了“计算器”按钮及其等价键盘键。单击“选项”菜单,然后单击“打印”,可以打印该列表。使用“计算器”时,您可以通过右键单击任意的“计算器”按钮,然后单击“这是什么?”来查看其等价键盘操作
按钮 键 何冬州注
% %
( (
) )
* *
+ +
+/- F9
- -
. . or ,
/ /
0-9 0-9
1/x r 大小写均可
= Enter
A-F A-F
And &
Ave Ctrl + A
BackSpace BackSpace
二进制 F8 F5,F6,F7,F8分别为hex, Dec, Oct, Bin
字节 F4 F2,F3,F4 在Dec时为角度, 弧度, 梯度; hex-Oct-bin 时为双字,字,字节,F12为四字;
C Esc
CE DEL
cos o
Dat INS ctrl-D是 求标准差(标准误差,标准偏差)standarderr. Ins是将Data加入统计框
十进制 F6 F5,F6,F7,F8分别为hex, Dec, Oct, Bin
角度 F2 F2,F3,F4 在Dec时为角度, 弧度, 梯度; hex-Oct-bin 时为Dw双字,W字,Byte字节,F12为Qw四字;
dms m F2,F3,F4 在Dec时为角度, 弧度, 梯度; hex-Oct-bin 时为Dw双字,W字,Byte字节,F12为Qw四字;
双字 F2 F2,F3,F4 在Dec时为角度, 弧度, 梯度; hex-Oct-bin 时为Dw双字,W字,Byte字节,F12为Qw四字;
Exp x 允许视输入为浮点数据A*10^B, 先输入A, 再输入x, 显示为A.e0, 后面接着输指数,指数最多四位数.
F-E v Floatpoint, 浮点数字表示, 科学计数法, 指数表示法.
梯度 F4 F2,F3,F4 在Dec时为角度, 弧度, 梯度; hex-Oct-bin 时为Dw双字,W字,Byte字节,F12为Qw四字;
十六进制 F5 F5,F6,F7,F8分别为hex, Dec, Oct, Bin
按钮 键 原帮助文件中,下面的列表与上面是并列在一起,共四列。
Hyp h
Int ;
Inv i
ln n e^x可以用按键序列 xin(x为数字),即x,inv,ln来实现。
log l
Lsh <
M+ CTRL+P
MC CTRL+L
Mod %
MR CTRL+R
MS CTRL+M
n! !
Not ~
八进制 F7 F5,F6,F7,F8分别为hex, Dec, Oct, Bin
Or |(pipe)
pi p
四字 F12 F2,F3,F4 在Dec时为角度, 弧度, 梯度; hex-Oct-bin 时为Dw双字,W字,Byte字节,F12为Qw四字;
弧度 F3 F2,F3,F4 在Dec时为角度, 弧度, 梯度; hex-Oct-bin 时为Dw双字,W字,Byte字节,F12为Qw四字;
s CTRL+D ctrl-D是 求标准差(标准误差,标准偏差)standarderr. Ins是将Data加入统计框
sin s
sqrt @
Sta CTRL+S ctrl-T居然是Sum, ctrl-S是Sta.
Sum CTRL+T ctrl-T居然是Sum, ctrl-S是Sta.
tan t
单字 F3 F2,F3,F4 在Dec时为角度, 弧度, 梯度; hex-Oct-bin 时为Dw双字,W字,Byte字节,F12为Qw四字;
Xor ^
x^2 @ 开平方(Sqrt), 用i@或y.5或iy2
x^3 # 开立方(Cbrt), 用i#或iy3
x^y y 开N次方用iyN. 如64iy3=3.
BBB2
将数据粘贴进“计算器”时,下述键序列会作为函数被解释。比如,打开
记事本并输入以下内容:123 :m 从“记事本”复制“123 :m”并将它粘贴进“计算器”。此时计算器会显示出数字 123,同时在其存储区中保存该数字。
:c 清除内存。
:e 允许您以十进制格式键入科学计数法数字。
:m 将显示数字保存在存储区内。
:p 将所显示的数字与存储器中的数字相加。
:q 清除当前的计算。
:r 显示存储在内存中的数字。
\ 与“Dat”功能相同。使用该键之前,请单击“Sta”。
CCC-BBB12
例三:批量数据用计算器求和.
注意, 以下{}内的各行可以连成一整行,复制到计算器中.
方法一:将下面{}内的内容复制到计算器,会直接得到结果.不要复制{},否则没动作.当然也可以改用().
{
1.2345678:e7+
1.23456e+5+
123
=
}
方法二:最优方法, 因为是可以看到的,并可以在计算器上修改与验证.
先点击打开统计框(或ctrl-S打开),再将下面{}内的内容复制到计算器,会在统计框产生列表.
{
1.2345678:e7\
1.23456e+5\
123\
}
再点sum或按ctrl_T求总和.
方法三:将下面{}内的内容复制到计算器,会直接得到结果
(
:c
1.2345678:e7:p
1.23456e+5 :p
123 :p
:r
)
方法五=二+三:直接得结果,并且可以利用统计框修改.
先点击打开统计框(或ctrl-S打开),再将下面()内的内容复制到计算器,会得到结果并在统计框产生列表.
(
:c
1.2345678:e7:p\
1.23456e+5 :p\
123 :p\
:r\
)
BBB3
在标准型和科学型间转换数据
1. 单击“MS”存储显示的数字。
2. 在“查看”菜单上,单击所需的视图。
3. 单击“MR”再次调用存储的数字。
BBB4
使用存储的数
要存储显示的数据,请单击“MS”。
要重新调用存储的数据,请单击“MR”。
要清除内存,请单击“MC”。
EEEBBB12
例四: 高精度计算一个数的小数部分,如355/113=3+16/113, 计算16/113.
初值 b, a<b, 被除数16放在后面,除数113在循环体中作为不变数直接输入.
(
113:m\16:m\
)
以下代码,在统计框中生成高精度数值序列,每次生成10位有效数字,当然还可以更多,比如15位,需改成10y15.其中y表示求乘幂,不用^表示.^表示的是异或Xor运算. %表示求余,m则是表示切换到度分秒表示.
用下面的算法,16位就不行了,因为两个16位数相乘可能超出32位有效数字,溢出了calc正常精度范围,在我不了解其"扩展精度"的 情况下,不一定正确.
当然,还有其它的算法,如一次可精确到的位数<=31-除数的位数.但是,设计起来不如下面的方便.
例如只取商的最后与除数位数相同的部分与除数相乘,最后的得到的那几位与过程中的被除数比较,如何如何.用calc自动实现起来麻烦(恐怕有些时候做不到).
(
:r*10y10/113=;\
:r*10y10%113=:m
)
例一(1): 计算银数,即满足X(n+3)=X(n+1)+X(n)的数列的邻值比X(n+1)/X(n)的极根.
利用x^3=x+1,由初值x进行(x+1)^(1/3)迭代.
计算得到银数:1.3247179572447460259609088544781.用excel单变量求解,则可以得到1.32471795724475,精确到14位有效值,舍入到15位有效值.
初值任意,不过绝对值越小越好.我们规定为零,查看一下迭代到32位不变有效值的迭代步数.为44
先打开统计框(ctrl-S),然后如下执行循环过程
(
:r+1=i#:m\
)
第一步得1,第44步到1.3247179572447460259609088544781,此后一直不变.
另解: excel单变量求解的过程:
在x单元格输入初值,如0
可以在名称框为该单元格指令一个名称,例如就用x. 也可由菜单alt_IND(插入-名称-定义)来指定.
如果定义了名称x,在另一单元格输入公式=x^3-x-1. 如未定义, 将这里的x替换成单元格的引用.
然后用菜单Alt_TG(工具-单变量求解),进行设置:
目标单元格:含多项式公式的单元格
目标值:0
可变单元格:放值初值的单元格.注意,将单元格的格式改为:(ctrl_1)-科学记数法-15位小数, 或 #.###############,此处#也可以用0来代替.
excel会自动迭代,如果初值合适,会给出精确到15位有效数字的四舍五入值.
如果定义了名称x,在另一单元格输入公式=x^3-x-1. 如未定义, 将这里的x替换成单元格的引用.
0 | <此格输入初值,例如是2.定义名称x,执行单变量求解后将改变为15位有效数字的解. |
=x^3-x-1 | <此格输入公式=x^3-x-1 |
更多推荐
win calc计算器妙用-功能键-编辑键-视图-命令键-脚本-迭代-连分数-批量和-批次高精度-内存-lisp-文本VS代码
发布评论