cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 1915|回复: 0

fx-92+ Spéciale Collège 实现Y轴“自动缩放”绘图

[复制链接]
发表于 2020-10-26 15:21:09 | 显示全部楼层 |阅读模式
前言

卡西欧classwiz系列计算器的法国版fx-92+ Spéciale Collège引入了脚本绘图功能,可以在192*47的点阵区域绘制图形。在法国卡西欧计算器网站Planète Casio上引发讨论,并实现了对函数图形的绘制(参见:测试新款 FX-92+ Spéciale Collège,法语)。
但是在实际操作中,要能够很好的观察函数图形的全貌,需要预估函数值域,在脚本中仔细调整y轴绘制范围。否则,可能出现函数值域太大或太小,显示效果不佳的问题。能不能让机器根据函数值域的范围自动实现y轴方向的缩放呢?答案是可以的。经过笔者的探索,实现了这一功能。

基本原理

首先将函数在x轴各像素处的值计算一遍,将最大值和最小值存入变量,然后根据最大值和最小值计算缩放比例和x轴,y轴的位置。
假设函数在绘图范围的最大值为D,最小值为C,如果要观察函数的全貌,需要将这两个值显示在绘图区最上方(y=23)和最下方(y=-23)。设函数值为f,对应在屏幕上的纵坐标为y,则有:

,即
带入上式可以得到x轴在屏幕上的纵坐标为:

假设待绘制函数定义域下限为A,上限为B,则相应的y轴在屏幕上的横坐标为:


因为自动缩放后x轴和y轴都可能偏移,所以需要将绘图背景设置为空,不显示x轴和y轴。x轴和y轴单另绘制。

脚本代码

运行脚本后会提示输入函数绘图下限A和上限B,输入的上下限不需要关于y轴对称。运行后先处理数据,同时箭头从左向右移动表示数据处理进度。数据处理完毕开始绘图,绘制完毕后在结果区域显示绘制范围内函数的最小值和最大值。
本脚本以e^(x)为例。如果需要绘制其它函数,将脚本中的e^替换为其它函数即可(共四处)。
脚本中的循环体结束符号用“↑”表示。

用到的变量有:
A 定义域下限
B 定义域上限
C 值域下限
D 值域上限
E 步长
F 临时变量
M 临时变量

  1. ?→A
  2. ?→B
  3. e^(A)→C
  4. C→D
  5. (B-A)/191→E
  6. A→M
  7. Aller à x=-95;y=0
  8. Repeat 191
  9.   e^(A+E)→F
  10.   Si Alors F<C
  11.   F→C
  12. Fin
  13. Si Alors F>D
  14. F→D
  15. Fin
  16. A+E→A
  17. Aller à x=x+1;y=0


  18. Aller à x=-95;y=-C*45/(D-C)-23
  19. Stylo écrit
  20. Aller à x=96;y=y
  21. Stylo relevé
  22. Aller à x=95-B*191/(B-M);y=-23
  23. Stylo écrit
  24. Aller à x=x;y=23
  25. Stylo relevé

  26. Aller à x=-95;y=(e^(M)-C)*45/(D-C)-23
  27. Stylo écrit
  28. Style Croix
  29. Repeat 191
  30.   Aller à x=x+1;y=(e^(M+(x+95)*E)-C)*45/(D-C)-23

  31. Afficher result C
  32. Afficher result D
复制代码



实际效果


绘制x范围为[-90,270]的sin(x),横线为x轴,竖线为y轴,结果区显示的是最小值-1:


绘制x范围为[-1.5,1]的e^(x),x轴在绘图区外不显示,竖线为y轴,结果区显示的是最大值:



程序还可以进一步优化,比如画出x轴和y轴的箭头,坐标轴画上刻度等。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-4-27 03:52 , Processed in 0.042005 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表