乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 9|回复: 9

[编程交流] 矩阵运算

[复制链接]

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 22:28:06 | 显示全部楼层 |阅读模式
大家好,
是否可以在Alisp/Vlisp(例如50x50)中执行矩阵运算?。如果没有,是否可以从excel中将此类内容作为表格导入,然后访问表格中的单个值(元素)?。
这是一些涉及有限元分析的工程计算(作为爱好)。
提前谢谢。
回复

使用道具 举报

29

主题

519

帖子

477

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-5 22:40:54 | 显示全部楼层
看看这些链接
 
http://stackoverflow.com/questions/11449657/writing-a-simple-matrix-class-in-common-lisp-for-practice
http://phase.hpcc.jp/mirrors/stat/sapaclisp/matrix.lisp
http://rosettacode.org/wiki/Matrix_multiplication
http://common-lisp.net/project/lisplab/
 
它们适用于通用LISP,我不确定它们是否适用于LISP或VLISP。
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 22:47:53 | 显示全部楼层
谢谢你,小家伙。我喜欢在Alisp中完成它,因为它更容易进行结构设计,并用宏绘制。因此,通用lisp不适用。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 22:53:09 | 显示全部楼层
不确定列表上的限制是什么,但您可以尝试创建一个50x50“矩阵”作为列表,然后您可以通过在双循环中使用第n个来获得任何行/列。在我的旧R12 lisp书中,有一个关于矩阵的特定部分,所以也可以查看帮助。您还可以使用表以及类似的行/列方法来检索数据
 
  1. ;row 25 col 32
  2. (setq val (nth 32 (nth 25 mylist)))
  3. ;a 3x3
  4. (setq mylist (((1 2 3)(4 5 6)(7 8 9))((1 2 3)(4 5 6)(7 8 9))((1 2 3)(4 5 6)(7 8 9))))
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 22:55:00 | 显示全部楼层
谢谢Bigal,我相信这是一种表示三个矩阵的方法,每个矩阵都是3x3。有没有一种简单的方法可以访问每个项目,比如矩阵的第二行(i)和第三列(j),我们可以将其分配给变量K23(或Kij)并在其他地方使用?。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:04:11 | 显示全部楼层
重新阅读我的帖子,我举了一个例子(setq k23(nth 2(nth 3 mylist)))
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 23:10:34 | 显示全部楼层
我用的是2013,它用引号(')表示你的列表。但是(setq k23(nth 2(nth 3 mylist)))给出了一个错误。
我的版本有一个“vlax safearray put元素”和“-获取元素的功能,该功能可以构造元素,然后从矩阵中一次提取一个元素。我相信它比excel更有用,excel目前仅限于52x52?。我现在不是在尝试包含数百个元素的板和梁的东西(比如昂贵的商业软件);80x80矩阵就可以了。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:19:34 | 显示全部楼层
mylist就是一个例子,你需要列出一个列表来纠正错误
 
  1. (setq mylist (list (list (list 1 2 3)(list 4 5 6)(list 7 8 9))(list (list 1 2 3)(list 4 5 6)(list 7 8 9))(list (list 1 2 3)(list 4 5 6)(list 7 8 9))))
  2. ;oops forgot nth starts at 0
  3. (setq k23 (nth 1 (nth 2 mylist))) ; returns ( 4 5 6)
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 23:22:28 | 显示全部楼层
是的,它对Bigal有效。谢谢我也会试试safearrays,稍后再回来。我上传了一些显示样本的文件。不幸的是,我无法上传最后两个,其中显示了将所有元素添加到一个称为全局矩阵的矩阵中。我已经给了一个视频的链接,从一个商业软件在这方面。
IMG_0001。pdf
IMG_0002。pdf
IMG_0003。pdf
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 23:32:17 | 显示全部楼层
比加尔,
这是一个迟到的答复。
我已经意识到,有大量的软件是用Fortran编写的,如果要利用它们来设计一些东西(例如多箱涵)和绘制截面等,可以通过AutoCAD中的ObjectARX运行。我已经有数百个软件(f95和f03),它们可以进行矩阵乘法(高达百万乘百万的矩阵)处理数据并形成刚度矩阵等结构计算。我在上面给了一些样品。因此,我认为最好的选择是使用ObjectARX工具。
谢谢你的回复。
芦荟
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 06:36 , Processed in 0.489072 second(s), 83 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表