操作次序实验 · 仿射变换

同一个输入,走两条路径

把倍率和平移交给两个操作。两条路使用同一对函数,区别只在于谁先作用。

本课约定:右边先做。 AB = A ∘ B 的执行顺序是 B → A;BA 的顺序是 A → B。
A(x) = ax + b
B(x) = cx + d
同一个起点

倍率范围 −4 到 4,且不能为 0;平移范围 −6 到 6;输入范围 −5 到 5。允许小数。填好后应用,才会改变当前实验。

当前使用 A(x) = 2x、B(x) = x + 3、x = 1。

AB:先 B,后 A

    沿原路撤销

    BA:先 A,后 B

      沿原路撤销

      两种次序什么时候相同?

      合成公式直接比较函数本身。两条路的斜率都为 ac,差别只能出现在常数项。

      AB − BA = (ad + b) − (cb + d)
      = (a − 1)d − (c − 1)b

      当前输入的输出

      整个函数的比较

      一般交换条件:(a − 1)d = (c − 1)b。若相等,两种复合对所有实数输入都相同;若不相等,换一个输入也不能消除这个常数差。

      对一般函数,在一个输入上输出相同,不能推出函数相同。此处还用了“两条仿射函数斜率已经相同”这个额外事实。页面用有限精度数值计算;极小差值只报告“数值上无法区分”,不把近似相等当作恒等证明。