找回密码
 注册
Simdroid-非首页
查看: 220|回复: 8

[符号计算] 如何生成对称矩阵

[复制链接]
发表于 2010-5-10 14:41:05 | 显示全部楼层 |阅读模式 来自 上海
新手请教:
想生成一个9*9的对称代数矩阵,不想一个个的输入。请教各位高手是不是有比较好的命令或方法实现?
发表于 2010-5-10 21:37:04 | 显示全部楼层 来自 台湾
Simdroid开发平台
本帖最后由 chungyuandye 于 2010-5-10 21:43 编辑

[size=130%]

  1. myrule=a_[i_,j_]:>If[j>i,Subscript[a,ToString[i]<>ToString[j]],Subscript[a,ToString[j]<>ToString[i]]];
  2. am=Table[a[i,j],{i,9},{j,9}]/.myrule;
  3. MatrixForm@am
复制代码

回复 不支持

使用道具 举报

发表于 2010-5-10 21:37:11 | 显示全部楼层 来自 北京
除了对称还有什么要求呢,
回复 不支持

使用道具 举报

发表于 2010-5-10 22:00:56 | 显示全部楼层 来自 北京
  1. (*输入一个下三角方阵*)
  2. arr = {{1}, {2, 3}, {4, 5, 6}, {7, 8, 9, 0}}

  3. (*下面代码自动填充上三角方阵*)
  4. len = Length[arr[[-1]]]
  5. For[j = 1, j < len, j++,
  6. For[k = j + 1, k <= len, k++,
  7.   AppendTo[arr[[j]], arr[[k, j]]]
  8.   ]
  9. ]
  10. arr
  11. MatrixForm@%
复制代码
如果你想要类似楼上的结果,下面的写法就行了.
  1. arr = Table[a[Min[j, k], Max[j, k]], {j, 1, 9}, {k, 1, 9}]
复制代码
回复 不支持

使用道具 举报

 楼主| 发表于 2010-5-11 09:45:43 | 显示全部楼层 来自 上海
谢谢两位了。
回复 不支持

使用道具 举报

发表于 2010-9-1 13:14:38 | 显示全部楼层 来自 黑龙江哈尔滨
楼主可以参照这两个语句试试,改写成自己的对陈矩阵
a=[9 2 4 0 8 6 3 5 7]
b=a(hankel(1:9,0:8))
回复 不支持

使用道具 举报

发表于 2010-9-5 12:40:56 | 显示全部楼层 来自 山东淄博
  1. "单位矩阵"
  2. c = Table[0, {i, 0, 5}, {j, 0, 5}];
  3. For[i = 0; j = 0, i < 6; j < 6,
  4. If[i == j, c = ReplacePart[c, {i, j} -> 1], c = c], i++; j++]
  5. c // MatrixForm
复制代码
回复 不支持

使用道具 举报

发表于 2011-5-21 15:38:39 | 显示全部楼层 来自 广东广州
本帖最后由 kptnw 于 2011-5-21 15:40 编辑

4# ggggwhw

也可以SparseArray
  1. arr = {{1}, {2, 3}, {4, 5, 6}, {7, 8, 9, 0}};SparseArray[{{x_, y_} :> (arr[[Max@#, Min@#]] &[{x, y}])},4] // Normal
复制代码

{{1, 2, 4, 7}, {2, 3, 5, 8}, {4, 5, 6, 9}, {7, 8, 9, 0}}
回复 不支持

使用道具 举报

发表于 2011-9-30 20:14:18 | 显示全部楼层 来自 江苏南京
生成任意矩阵A,则A+A'必定是对称矩阵啊!

评分

1

查看全部评分

回复 不支持

使用道具 举报

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

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-25 12:11 , Processed in 0.044274 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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