aloy 发表于 2022-7-5 22:28:06

矩阵运算

大家好,
是否可以在Alisp/Vlisp(例如50x50)中执行矩阵运算?。如果没有,是否可以从excel中将此类内容作为表格导入,然后访问表格中的单个值(元素)?。
这是一些涉及有限元分析的工程计算(作为爱好)。
提前谢谢。

Tyke 发表于 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。

aloy 发表于 2022-7-5 22:47:53

谢谢你,小家伙。我喜欢在Alisp中完成它,因为它更容易进行结构设计,并用宏绘制。因此,通用lisp不适用。

BIGAL 发表于 2022-7-5 22:53:09

不确定列表上的限制是什么,但您可以尝试创建一个50x50“矩阵”作为列表,然后您可以通过在双循环中使用第n个来获得任何行/列。在我的旧R12 lisp书中,有一个关于矩阵的特定部分,所以也可以查看帮助。您还可以使用表以及类似的行/列方法来检索数据
 

;row 25 col 32
(setq val (nth 32 (nth 25 mylist)))

;a 3x3
(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))))

aloy 发表于 2022-7-5 22:55:00

谢谢Bigal,我相信这是一种表示三个矩阵的方法,每个矩阵都是3x3。有没有一种简单的方法可以访问每个项目,比如矩阵的第二行(i)和第三列(j),我们可以将其分配给变量K23(或Kij)并在其他地方使用?。

BIGAL 发表于 2022-7-5 23:04:11

重新阅读我的帖子,我举了一个例子(setq k23(nth 2(nth 3 mylist)))

aloy 发表于 2022-7-5 23:10:34

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

BIGAL 发表于 2022-7-5 23:19:34

mylist就是一个例子,你需要列出一个列表来纠正错误
 

(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))))
;oops forgot nth starts at 0
(setq k23 (nth 1 (nth 2 mylist))) ; returns ( 4 5 6)

aloy 发表于 2022-7-5 23:22:28

是的,它对Bigal有效。谢谢我也会试试safearrays,稍后再回来。我上传了一些显示样本的文件。不幸的是,我无法上传最后两个,其中显示了将所有元素添加到一个称为全局矩阵的矩阵中。我已经给了一个视频的链接,从一个商业软件在这方面。
IMG_0001。pdf
IMG_0002。pdf
IMG_0003。pdf

aloy 发表于 2022-7-5 23:32:17

比加尔,
这是一个迟到的答复。
我已经意识到,有大量的软件是用Fortran编写的,如果要利用它们来设计一些东西(例如多箱涵)和绘制截面等,可以通过AutoCAD中的ObjectARX运行。我已经有数百个软件(f95和f03),它们可以进行矩阵乘法(高达百万乘百万的矩阵)处理数据并形成刚度矩阵等结构计算。我在上面给了一些样品。因此,我认为最好的选择是使用ObjectARX工具。
谢谢你的回复。
芦荟
页: [1]
查看完整版本: 矩阵运算