隐函数曲线的交点:扫描法改进版

隐函数曲线的交点:扫描法改进版
几何画板及绘图内容加载中,请稍等……
2016-12-04 22:06
本示例展示了如何使用改进的扫描方法求解两个隐函数曲线的交点。通过设置 x 和 y 的范围滑块,系统地扫描整个平面网格,计算每对点在两个隐函数下的值,当符号发生变化时,利用根查找技术识别潜在的交点,并最终得到精确的交点坐标。核心数学概念包括隐函数、坐标几何、符号变化检测以及数值根求解方法。GeoGebra 构造中使用了 ImplicitCurve 对象 生成曲线,If 和 RemoveUndefined 用于条件判断,Zip、TableText、Join 等命令实现数据处理,Unique 和 Element 确保结果的唯一性和提取,Polygon、Tool2b、Length 等工具辅助几何可视化。该示例适合高中或大学一、二年级的学生使用,尤其适用于解析几何、数值方法或计算数学课程中关于曲线交点问题的教学与探究。

GeoGebra 命令及参数

  1. If((tt < -1.2) ∨ (tt > -0.7), tt, -0.75) → t
  2. Textfield(Nn) → InputBox4
  3. Textfield(e) → InputBox5
  4. Textfield(x_{min}) → InputBox6
  5. Textfield(x_{max}) → InputBox7
  6. Textfield(y_{min}) → InputBox8
  7. Textfield(y_{max}) → InputBox9
  8. RemoveUndefined(Join[Sequence[Zip[a + (0, y_{min} + (dy2 * (s0 - 1))), a, {Roots[f01(x, y_{min} + (dy2 * (s0 - 1))), x_{min}, x_{max}]}], s0, 1, Nn + 1]]) → Rootsxy
  9. RemoveUndefined(Join[Sequence[Zip[a + (0, x_{min} + (dx2 * (s0 - 1))), a, {Roots[f01(x_{min} + (dx2 * (s0 - 1)), x), y_{min}, y_{max}]}], s0, 1, Nn + 1]]) → Rootsyx
  10. RemoveUndefined(KeepIf[abs(f2(x(A), y(A))) ≤ e, A, Rootsxy]) → listxy_0
  11. RemoveUndefined(KeepIf[abs(f2(y(A), x(A))) ≤ e, A, Rootsyx]) → listyx_0
  12. Zip((x(a), y(a)), a, listxy_0) → listxya_0
  13. Zip((y(a), x(a)), a, listyx_0) → listyxa_0
  14. TableText({Join[{{"Roots_{yx}"}, listyxa_0}]}, "vr") → text34
  15. TableText({Join[{{"Roots_{xy}"}, listxya_0}]}, "vr") → text23
  16. Textfield(α) → InputBox2
  17. ImplicitCurve(f1(x, y)) → a
  18. ImplicitCurve(f2(x, y)) → b
  19. ImplicitCurve(f01(x, y)) → c
  20. Polygon((x_{min}, y_{min}), (x_{max}, y_{min}), (x_{max}, y_{max}), (x_{min}, y_{max})) → poly1, f_1, g, h, i
  21. Textfield(f1) → InputBox1
  22. Textfield(f2) → InputBox3
  23. RemoveUndefined(Zip[(x(a), y(a)), a, Join[{listxya_0, listyxa_0}]]) → listxyres0
  24. Tool2b(listxyres0, r) → listxyres1
  25. Length(listxyres0) → lä0
  26. Length(listxyres1) → lä1
  27. Join(Sequence[First[Sort[Element[listxyres1, i], Zip[Length[(f1(x(a), y(a)), f2(x(a), y(a)))], a, Element[listxyres1, i]]]], i, 1, Length[listxyres1]]) → listxyres2
  28. Length(listxyres2) → lä2
  29. Unique(listxyres2) → listxyres2a
  30. Length(listxyres2a) → lä2a
  31. Textfield(tt) → InputBox10
  32. Textfield(r) → InputBox11
  33. TableText({Join[{{"N"}, Sequence[i, i, 1, lä2a]}], Join[{{"N"}, Sequence["→", i, 1, f]}], Join[{{" x:"}, x(listxyres2a)}], Join[{{" y:"}, y(listxyres2a)}], Join[{{"f1*10^-6"}, lf1_{Pr}2}], Join[{{"f2* 10^-6"}, lf2_{Pr}2}]}, "vr") → text10
  34. Element(listxyres2a, f) → A