前言
卡西欧classwiz系列计算器的法国版fx-92+ Spéciale Collège引入了脚本功能,不仅可以在192*47的点阵区域绘制图形,还可以进行编程计算。在法国的德仪计算器网站tiplanet上众多机友编写了多个脚本,涉及数学计算、游戏娱乐等(参见:Casio fx-92+ Speciale College 程序下载,法语)。
因为是法国机型,fx-92+ Spéciale Collège的机上功能较少,没有定积分功能。那么可不可以用脚本编程来实现一个呢?答案是可以的。笔者用复合辛普森算法实现了这一功能。
基本原理
复合辛普森积分法是一种用抛物线近似函数曲线来求定积分数值解的方法。把积分区间等分成若干段,对被积函数在每一段上使用辛普森公式,根据其在每一段的两端和中点处的取值近似为抛物线,逐段积分后加起来,即得到原定积分的数值解。辛普森公式也是牛顿-柯特斯公式(Newton-Cotes)的特例。
辛普森公式为:
复合辛普森公式为:
其中
为了便于编写脚本,将复合辛普森公式的求和项进行合并:
这样,只用编写一次循环就可以了,然后加上余项就完成计算了。
考虑到fx-92+的程序不能永久保存,编写的脚本程序不宜过于复杂。用复合辛普森积分法可以在保证较好的精度的同时,脚本也较为简短,可以说是比较适合用于日常计算的算法了。
脚本代码
在[A,B]的范围对sin(x)积分,运行脚本后会提示输入积分下限A、积分上限B和分割区间F。程序运行后在绘图区有箭头从左向右移动表示计算进度。脚本中的循环体结束符号用“↑”表示。运行完毕在结果区显示数值。注意因为三角函数的计算为角度制,所以输入的A、B区间为角度,在脚本末尾对积分值也乘了pi/180的系数。对于非三角函数的积分,不需要此系数。
用到的变量有:
A 积分下限
B 积分上限
C 积分值
D 中间变量
E 积分区间步长
F 积分区间数
M 积分区间数
?→A
?→B
?→F
(B-A)/F→E
0→C
(A+E)→D
F→M
Aller à x=-95;y=0
Stylo écrit
Répéter jusqu'à F=1
C+sin(D)/3+2*sin(D+E/2)/3→C
D+E→D
F-1→F
Aller à x=x+191/M;y=0
↑
(C+2/3*sin(A+E/2))*E→C
C+(sin(A)+sin(B))*E/6→C
Aller à x=x+191/M;y=0
C=C*pi/180
Afficher result C
实际效果
对sin(x)在[0,180]范围进行积分运算,结果如下:
分割区间数 | 计算结果 | 误差 |
---|---|---|
10 | 2.000006784 | 6.7e-6 |
20 | 2.000000423 | 4.2e-7 |
40 | 2.000000026 | 2.6e-8 |
100 | 2.000000001 | 1e-9 |
![d319452f092dd42e514428c7c5b6c02c.png](https://i-blog.csdnimg.cn/blog_migrate/cb11aa2b0b25c0942ff40ddadd2e6acf.jpeg)
可见对于sin(x)这样较为光滑的函数,F=10即可满足工程上计算的需要。通过增加区间数量,可以获得更高的精度(代价是计算时间增加)。
广大机友们有兴趣也可以尝试更为复杂的积分算法,如自适应区间算法,龙贝格积分法等。