win calc计算器妙用-功能键-编辑键-视图-命令键-脚本-迭代-连分数-批量和-批次高精度-内存-lisp-文本VS代码

来源:互联网 发布:ios 九宫格算法 编辑:程序博客网 时间:2024/05/18 01:10

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_HHF10菜单调用(计算器的帮助文件中没有的)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, BinF9正负号 ctrl-C剪切(计算器的帮助文件中没有的)菜单alt_ECctrl-V贴入(计算器的帮助文件中没有的)菜单alt_EPctrl-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

原创粉丝点击