线性规划交互式求解:可行域与最优点

线性规划交互式求解:可行域与最优点
几何画板及绘图内容加载中,请稍等……
2020-09-09 05:24
该范例通过交互式界面展示线性规划题的可行域如何由不等式确定,并直观呈现目标函数在可行域上获得最优(最大或最小)的位置与数值。核心数学概念包括线性规划、线性不等式形成的多边形可行域、目标函数的最值优化,以及与几何构型相关的法向量/正交向量刻画直线族。作图要点来自构造摘要中用到的 GeoGebra 命令与对象:使用 Vertex 与 OrthogonalVector 来构造关键顶点与方向(如由约束生成的边界与法向关系);用 If 与 RemoveUndefined 处理交互参数下的分支情况与未定义对象清理;用 Textfield 提供参数输入(约束系数或方向/目标设置);并用 Max(以及配套的目标表达式对象如 g_1、g_2、g_3、g_4 及相关点 A~Z 等)确定在可行区域内的最优值与对应点。适合中学高阶数学拓展、竞赛训练与大学预科/课程中的“优化与应用数学”教学演示,适用于需要把代数优化问题转化为几何直观的学习场景。

GeoGebra 命令及参数

  1. Vertex(g_7) → N_1
  2. Vertex(g) → A, B, C, D, E, F, G, H, I, J
  3. Vertex(g_1) → K, L, M, N, O, P
  4. Vertex(g_2) → Q, R, S, T, U, V
  5. Vertex(g_4) → E_1, F_1, G_1
  6. Vertex(g_3) → W, Z, A_1, B_1, C_1, D_1
  7. Vertex(g_5) → H_1, I_1, J_1
  8. Vertex(g_6) → K_1, L_1, M_1
  9. If(Ineq1 ≟ true ∧ Ineq2 ≟ true ∧ Ineq3 ≟ true, {If[IsInRegion[A, g], A], If[IsInRegion[B, g] ∧ B ≠ A, B], If[IsInRegion[C, g] ∧ C ≠ A ∧ C ≠ B, C], If[IsInRegion[D, g] ∧ D ≠ A ∧ D ≠ B ∧ D ≠ C, D], If[IsInRegion[E, g] ∧ E ≠ A ∧ E ≠ B ∧ E ≠ C ∧ E ≠ D, E], If[IsInRegion[F, g] ∧ F ≠ A ∧ F ≠ B ∧ F ≠ C ∧ F ≠ D ∧ F ≠ E, F], If[IsInRegion[G, g] ∧ G ≠ A ∧ G ≠ B ∧ G ≠ C ∧ G ≠ D ∧ G ≠ E ∧ G ≠ F, G], If[IsInRegion[H, g] ∧ H ≠ A ∧ H ≠ B ∧ H ≠ C ∧ H ≠ D ∧ H ≠ E ∧ H ≠ (F * H) ≠ G, H], If[IsInRegion[I, g] ∧ I ≠ A ∧ I ≠ B ∧ I ≠ C ∧ I ≠ D ∧ I ≠ E ∧ I ≠ F ∧ I ≠ G ∧ I ≠ H, I], If[IsInRegion[J, g] ∧ J ≠ A ∧ J ≠ B ∧ J ≠ C ∧ J ≠ D ∧ J ≠ E ∧ J ≠ F ∧ J ≠ G ∧ J ≠ H ∧ J ≠ I, J]}, If[Ineq1 ≟ true ∧ Ineq2 ≟ true ∧ Ineq3 ≟ false, {If[IsInRegion[K, g_1], K], If[IsInRegion[L, g_1] ∧ L ≠ K, L], If[IsInRegion[M, g_1] ∧ M ≠ K ∧ M ≠ L, M], If[IsInRegion[N, g_1] ∧ N ≠ K ∧ N ≠ L ∧ N ≠ M, N], If[IsInRegion[O, g_1] ∧ O ≠ K ∧ O ≠ L ∧ O ≠ M ∧ O ≠ N, O], If[IsInRegion[P, g_1] ∧ P ≠ K ∧ P ≠ L ∧ P ≠ M ∧ P ≠ N ∧ P ≠ O, P]}, If[Ineq1 ≟ true ∧ Ineq2 ≟ false ∧ Ineq3 ≟ true, {If[IsInRegion[Q, g_2], Q], If[IsInRegion[R, g_2] ∧ R ≠ Q, R], If[IsInRegion[S, g_2] ∧ S ≠ Q ∧ S ≠ R, S], If[IsInRegion[T, g_2] ∧ T ≠ Q ∧ T ≠ R ∧ T ≠ S, T], If[IsInRegion[U, g_2] ∧ U ≠ Q ∧ U ≠ R ∧ U ≠ S ∧ U ≠ T, U], If[IsInRegion[V, g_2] ∧ V ≠ Q ∧ V ≠ R ∧ V ≠ S ∧ V ≠ T ∧ V ≠ U, V]}, If[Ineq1 ≟ false ∧ Ineq2 ≟ true ∧ Ineq3 ≟ true, {If[IsInRegion[W, g_3], W], If[IsInRegion[Z, g_3] ∧ Z ≠ W, Z], If[IsInRegion[A_1, g_3] ∧ A_1 ≠ W ∧ A_1 ≠ Z, A_1], If[IsInRegion[B_1, g_3] ∧ B_1 ≠ W ∧ B_1 ≠ Z ∧ B_1 ≠ A_1, B_1], If[IsInRegion[C_1, g_3] ∧ C_1 ≠ W ∧ C_1 ≠ Z ∧ C_1 ≠ A_1 ∧ C_1 ≠ B_1, C_1], If[IsInRegion[D_1, g_3] ∧ D_1 ≠ W ∧ D_1 ≠ Z ∧ D_1 ≠ A_1 ∧ D_1 ≠ B_1 ∧ D_1 ≠ C_1, D_1]}, If[Ineq1 ≟ true ∧ Ineq2 ≟ false ∧ Ineq3 ≟ false, {If[IsInRegion[E_1, g_4], E_1], If[IsInRegion[F_1, g_4] ∧ F_1 ≠ E_1, F_1], If[IsInRegion[G_1, g_4] ∧ G_1 ≠ E_1 ∧ G_1 ≠ F_1, G_1]}, If[Ineq1 ≟ false ∧ Ineq2 ≟ true ∧ Ineq3 ≟ false, {If[IsInRegion[H_1, g_5], H_1], If[IsInRegion[I_1, g_5] ∧ I_1 ≠ H_1, I_1], If[IsInRegion[J_1, g_5] ∧ J_1 ≠ H_1 ∧ J_1 ≠ I_1, J_1]}, If[Ineq1 ≟ false ∧ Ineq2 ≟ false ∧ Ineq3 ≟ true, {If[IsInRegion[K_1, g_6], K_1], If[IsInRegion[L_1, g_6] ∧ L_1 ≠ K_1, L_1], If[IsInRegion[M_1, g_6] ∧ M_1 ≠ K_1 ∧ M_1 ≠ L_1, M_1]}, If[Ineq1 ≟ false ∧ Ineq2 ≟ false ∧ Ineq3 ≟ false, {If[IsInRegion[N_1, g_7], N_1]}]]]]]]]) → l1
  10. RemoveUndefined(l1) → l2
  11. Textfield(a) → InputBox5
  12. Textfield(b) → InputBox6
  13. Textfield(c) → InputBox7
  14. Textfield(d) → InputBox10
  15. Textfield(e) → InputBox11
  16. Textfield(f) → InputBox12
  17. OrthogonalVector(l) → u
  18. If(A4(1) > A4(2) ∧ A4(1) > A4(3) ∧ A4(1) > A4(4) ∧ A4(1) > A4(5), A4(1), If[A4(2) > A4(1) ∧ A4(2) > A4(3) ∧ A4(2) > A4(4) ∧ A4(2) > A4(5), A4(2), If[A4(3) > A4(1) ∧ A4(3) > A4(2) ∧ A4(3) > A4(4) ∧ A4(3) > A4(5), A4(3), If[A4(4) > A4(1) ∧ A4(4) > A4(2) ∧ A4(4) > A4(3) ∧ A4(4) > A4(5), A4(4), If[A4(5) > A4(1) ∧ A4(5) > A4(2) ∧ A4(5) > A4(3) ∧ A4(5) > A4(4), A4(5), If[A4(1) > A4(2) ∧ A4(1) > A4(3) ∧ A4(1) > A4(4), A4(1), If[A4(2) > A4(1) ∧ A4(2) > A4(3) ∧ A4(2) > A4(4), A4(2), If[A4(3) > A4(1) ∧ A4(3) > A4(2) ∧ A4(3) > A4(4), A4(3), If[A4(4) > A4(1) ∧ A4(4) > A4(2) ∧ A4(4) > A4(3), A4(4), If[A4(1) > A4(2) ∧ A4(1) > A4(3), A4(1), If[A4(2) > A4(1) ∧ A4(2) > A4(3), A4(2), If[A4(3) > A4(1) ∧ A4(3) > A4(2), A4(3), If[A4(1) > A4(2), A4(1), If[A4(2) > A4(1), A4(2), A4(1)]]]]]]]]]]]]]) → Max
  19. Max(A4) → h
  20. If(A4(1) < A4(2) ∧ A4(1) < A4(3) ∧ A4(1) < A4(4) ∧ A4(1) < A4(5), A4(1), If[A4(2) < A4(1) ∧ A4(2) < A4(3) ∧ A4(2) < A4(4) ∧ A4(2) < A4(5), A4(2), If[A4(3) < A4(1) ∧ A4(3) < A4(2) ∧ A4(3) < A4(4) ∧ A4(3) < A4(5), A4(3), If[A4(4) < A4(1) ∧ A4(4) < A4(2) ∧ A4(4) < A4(3) ∧ A4(4) < A4(5), A4(4), If[A4(5) < A4(1) ∧ A4(5) < A4(2) ∧ A4(5) < A4(3) ∧ A4(5) < A4(4), A4(5), If[A4(1) < A4(2) ∧ A4(1) < A4(3) ∧ A4(1) < A4(4), A4(1), If[A4(2) < A4(1) ∧ A4(2) < A4(3) ∧ A4(2) < A4(4), A4(2), If[A4(3) < A4(1) ∧ A4(3) < A4(2) ∧ A4(3) < A4(4), A4(3), If[A4(4) < A4(1) ∧ A4(4) < A4(2) ∧ A4(4) < A4(3), A4(4), If[A4(1) < A4(2) ∧ A4(1) < A4(3), A4(1), If[A4(2) < A4(1) ∧ A4(2) < A4(3), A4(2), If[A4(3) < A4(1) ∧ A4(3) < A4(2), A4(3), If[A4(1) < A4(2), A4(1), If[A4(2) < A4(1), A4(2), A4(1)]]]]]]]]]]]]]) → Min
  21. If(Opt ≟ 1 ∧ Max ≟ A4(1) ≟ A4(2), "Segment " + ((((A2(1) * " - ") * A2(2)) * ": ")) + Max, If[Opt ≟ 1 ∧ Max ≟ A4(1) ≟ A4(3), "Segment " + ((((A2(1) * " - ") * A2(3)) * ": ")) + Max, If[Opt ≟ 1 ∧ Max ≟ A4(1) ≟ A4(4), "Segment " + ((((A2(1) * " - ") * A2(4)) * ": ")) + Max, If[Opt ≟ 1 ∧ Max ≟ A4(1) ≟ A4(5), "Segment " + ((((A2(1) * " - ") * A2(5)) * ": ")) + Max, If[Opt ≟ 1 ∧ Max ≟ A4(2) ≟ A4(3), "Segment " + ((((A2(2) * " - ") * A2(3)) * ": ")) + Max, If[Opt ≟ 1 ∧ Max ≟ A4(2) ≟ A4(4), "Segment " + ((((A2(2) * " - ") * A2(4)) * ": ")) + Max, If[Opt ≟ 1 ∧ Max ≟ A4(2) ≟ A4(5), "Segment " + ((((A2(2) * " - ") * A2(5)) * ": ")) + Max, If[Opt ≟ 1 ∧ Max ≟ A4(3) ≟ A4(4), "Segment " + ((((A2(3) * " - ") * A2(4)) * ": ")) + Max, If[Opt ≟ 1 ∧ Max ≟ A4(3) ≟ A4(5), "Segment " + ((((A2(3) * " - ") * A2(5)) * ": ")) + Max, If[Opt ≟ 1 ∧ Max ≟ A4(4) ≟ A4(5), "Segment " + ((((A2(4) * " - ") * A2(5)) * ": ")) + Max, If[Opt ≟ 0 ∧ Min ≟ A4(1) ≟ A4(2), "Segment " + ((((A2(1) * " - ") * A2(2)) * ": ")) + Min, If[Opt ≟ 0 ∧ Min ≟ A4(1) ≟ A4(3), "Segment " + ((((A2(1) * " - ") * A2(3)) * ": ")) + Min, If[Opt ≟ 0 ∧ Min ≟ A4(1) ≟ A4(4), "Segment " + ((((A2(1) * " - ") * A2(4)) * ": ")) + Min, If[Opt ≟ 0 ∧ Max ≟ A4(1) ≟ A4(5), "Segment " + ((((A2(1) * " - ") * A2(5)) * ": ")) + Min, If[Opt ≟ 0 ∧ Min ≟ A4(2) ≟ A4(3), "Segment " + ((((A2(2) * " - ") * A2(3)) * ": ")) + Min, If[Opt ≟ 0 ∧ Min ≟ A4(2) ≟ A4(4), "Segment " + ((((A2(2) * " - ") * A2(4)) * ": ")) + Min, If[Opt ≟ 0 ∧ Min ≟ A4(2) ≟ A4(5), "Segment " + ((((A2(2) * " - ") * A2(5)) * ": ")) + Min, If[Opt ≟ 0 ∧ Min ≟ A4(3) ≟ A4(4), "Segment " + ((((A2(3) * " - ") * A2(4)) * ": ")) + Min, If[Opt ≟ 0 ∧ Min ≟ A4(3) ≟ A4(5), "Segment " + ((((A2(3) * " - ") * A2(5)) * ": ")) + Min, If[Opt ≟ 0 ∧ Min ≟ A4(4) ≟ A4(5), "Segment " + ((((A2(4) * " - ") * A2(5)) * ": ")) + Min, If[Opt ≟ 1 ∧ Max ≟ A4(1), (A2(1) * ": ") + Max, If[Opt ≟ 1 ∧ Max ≟ A4(2), (A2(2) * ": ") + Max, If[Opt ≟ 1 ∧ Max ≟ A4(3), (A2(3) * ": ") + Max, If[Opt ≟ 1 ∧ Max ≟ A4(4), (A2(4) * ": ") + Max, If[Opt ≟ 1 ∧ Max ≟ A4(5), (A2(5) * ": ") + Max, If[Opt ≟ 0 ∧ Min ≟ A4(1), (A2(1) * ": ") + Min, If[Opt ≟ 0 ∧ Min ≟ A4(2), (A2(2) * ": ") + Min, If[Opt ≟ 0 ∧ Min ≟ A4(3), (A2(3) * ": ") + Min, If[Opt ≟ 0 ∧ Min ≟ A4(4), (A2(4) * ": ") + Min, If[Opt ≟ 0 ∧ Min ≟ A4(5), (A2(5) * ": ") + Min]]]]]]]]]]]]]]]]]]]]]]]]]]]]]) → A6

AI 绘图提示语参考

画一个线性规划问题的可行区域和最优解。首先画出由三个线性不等式定义的约束半平面,形成一个多边形的可行区域。然后找到这个多边形的顶点,标记为A到J。接着,根据用户输入的线性目标函数系数,计算最优解的位置,并在可行区域内找到最优解点。最后,显示目标函数在可行区域内的变化趋势。
以上提示语为根据原始绘图命令整理而来,仅供参考。