如何用Mathematica绘制单纯形表

 时间:2024-10-15 15:54:10

1、我们在Mathematica中编写如下函数,用来产生一个按照单纯形表层次呈现的列表。绘制效果如封面。接下来分析这个表格的绘制方法。

如何用Mathematica绘制单纯形表

2、为了逻辑清晰,我们使用关系列表(键值对)来表示单纯形表,为图中DCX。Amns就是系数矩阵,Bms是方程等号右边是m个b,Cns是n个价值系数;Xns是变元名称(仅仅用于显示),XBIDms是当前选择的正交基对应变元序号列表。

如何用Mathematica绘制单纯形表

3、编写一个模块ShowDCXTable。函数参数后面要加_,模块使用Module声明,第一个大括号内是局部变量声明。期中Row0是第一行,Row1是第二行,Rowms是接下来m行(有矩阵的部分),RowLast表示最后一行。

如何用Mathematica绘制单纯形表

4、dcx是传入的关系列表,使用 dcx[键] 获取键对应的值。使用Length计算系数矩阵Amns的宽高。

如何用Mathematica绘制单纯形表

5、对于σ和θ,如果有计算结果,从传入参数提取计算结果;否则,使用Table[Null,个数]产生空列表。

如何用Mathematica绘制单纯形表

6、使用如图代码产生各列。用了一些技巧。比如使用大括号把将要合并的元素增加到列表的同一深度,接着通过Flatten减少深度,实现列表拼接的效果。Amns右边要拼接θms,先转置,然后拼接{θms},然后Flatten[..,1]减少一层,再转置,就变成了{{...., a1n, θ1},{..., a2n, θ2}...}的列表。

如何用Mathematica绘制单纯形表

7、最后合并各个行,使用大括号{}和Fatten来调整到同样的层级。这一句不加分号,作为这个模块的输出。

如何用Mathematica绘制单纯形表

8、现在有一个如图所示按照之前的规则定义的单纯形表DCX,调用ShowDCXTable,(没有计算结果所以第二个参数留空{}),得到如图列表。

如何用Mathematica绘制单纯形表
如何用Mathematica绘制单纯形表

9、然后使用Grid格子显示,设置边框线和对齐,并按照TraditionalForm显示,单纯形表就绘制好了。

如何用Mathematica绘制单纯形表
  • matlab能求表达式的模吗
  • Mathematica通过一系列点拟合B样条函数的方法
  • 在matlab中如何进行特征值的分解?
  • Mathematica基础——处理连分数问题
  • MATLAB R2015b怎么设置百分率为100%
  • 热门搜索
    2035年的祖国手抄报 开学手抄报 交通安全知识手抄报 我的中国梦手抄报内容 讲文明手抄报 新年手抄报图片 六一儿童节手抄报图 六一儿童节手抄报简单又好看 普通话手抄报简单字少 劳动节手抄报的文字