1 Star 2 Fork 2

Eplankton / Biomatrix

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Biomatrix

提供命令式、交互式、解释型的矩阵运算计算

# 如何安装

1.下载 .zip 并解压(或使用 git clone)

2.在任意 Linux 环境下进入文件夹目录

3.确保 GCC 编译环境

4.在 Linux 终端 输入 ./install.sh 一键安装

5.安装完成,自动进入交互式环境

6.卸载 ./uninstall.sh

输入图片说明

# 如何使用

1.进入 workplace 文件夹

2.建立新文本文件 格式如 a.bmx 或 a.bx

3.撰写语句并保存

4.执行 ./biox < a.bmx >a.out  //输入重定向到a.bmx  输出到a.out

5.得到输出a.out 用 cat a.out 查看

# 基本语法

exit()

clear()

mat.in(A,2,2)

mat.out(A)

mat.add(A,B,C)

mat.minus(A,B,C)

mat.multi(A,B,C)

mat.tran(A,A^T)

mat.scale(A,3.14,new_A)

mat.det(A)

mat.inv(A,A^-1)

mat.del(A)

mat.approx(A,r%A)

mat.rank(A)

mat.eche(A,eA)

vct.dot(va,vb,ans)

vct.cross(va,vb,vc)

vct.mag(va)

vct.angle(va,vb,theta(a:b))

vct.i0(va,va0)

vct.n0(va,vb,vc0)

val.del(value_name)

file.del(file_name)

代码示例 ->test.bmx

mat.in(A,3,3):
1.2 2.3 3.4 
4.5 1.32 2.2
3.12 2.65 9.5

mat.in((A|E),3,6)
1.2 2.3 3.4 1 0 0
4.5 1.32 2.2 0 1 0
3.12 2.65 9.5 0 0 1
mat.eche((A|E),(E|A^-1))

mat.in(B,3,3): 
2.2 3.3 5.3
5.5 1 3
3 0.5 9

vct.in(v.a,3,1): 3.1415 2.71842 4.33
vct.in(v.b,3,1): 3.1415 2.718142  1.22

mat.add(A,B,A+B)
mat.multi(A,A+B,A*(A+B))
mat.inv(A*(A+B),[A*(A+B)]^-1)
mat.det(A*(A+B))
mat.det([A*(A+B)]^-1)
mat.multi(A*(A+B),v.a,A*(A+B)->v.a)
mat.multi([A*(A+B)]^-1,A*(A+B)->v.a,v.GOOD)

vct.mag(A*(A+B)->v.a) val.del(Mag(A*(A+B)->v.a)) 
vct.mag(v.b) val.del(Mag(v.b))

vct.angle(A*(A+B)->v.a,v.b,theta(T->v.a|v.b))
vct.n0(A*(A+B)->v.a,v.b,v.n0Cross_(v.a|v.b))
vct.cross(A*(A+B)->v.a,v.b,v.Cross_(v.a|v.b))
vct.minus(v.GOOD,v.a,v.delta(v.GOOD-v.a))
vct.approx(v.delta(v.GOOD-v.a),r%v.delta(v.GOOD-v.a))

file.del(matrix) file.del(matrixstream) file.del(value)

mat.in(A,5,5):
1 2 2 1 2
5 6 7 8 3
9 3 0 5 3
7 2 1 4 6
3 0 8 2 4

mat.inv(A,A^-1)

mat.in(B,5,5):
1.37 2.7 2 1 2
5 6.7 7.7 8.7 3
9.7 3.7 0 5 3
7 2 1.7 4 6.7
3.7 0.7 8 2 4.7

mat.tran(B,B^T)

mat.multi(A^-1,B^T,C)
mat.multi(A^-1,A,I[5])
mat.approx(I[5],r%I[5])

mat.det(A) mat.det(A^-1)
mat.det(B) mat.det(B^T)

mat.det(I[5]) 
mat.det(r%I[5])

file.del(value) file.del(matrix) file.del(matrixstream)

quit()

执行结果

Biomatrix 1.0.8
Mon Jan 03 19:48:03 2022 
Type 'help()' for Manual.

>> mat.in(A,3,3):

[Matrix]: A < 3, 3 > 

1.2 2.3 3.4 
4.5 1.32 2.2
3.12 2.65 9.5

[Matrix]: A < 3, 3 > has been saved.

[ 1.2  2.3  3.4 ]
[ 4.5  1.32  2.2 ]
[ 3.12  2.65  9.5 ]

>> mat.in((A|E),3,6)

[Matrix]: (A|E) < 3, 6 > 

1.2 2.3 3.4 1 0 0
4.5 1.32 2.2 0 1 0
3.12 2.65 9.5 0 0 1

[Matrix]: (A|E) < 3, 6 > has been saved.

[ 1.2  2.3  3.4  1  0  0 ]
[ 4.5  1.32  2.2  0  1  0 ]
[ 3.12  2.65  9.5  0  0  1 ]

>> mat.eche((A|E),(E|A^-1))

[Matrix]: (A|E) < 3, 6 >   
[ 1.2  2.3  3.4  1  0  0 ] 
[ 4.5  1.32  2.2  0  1  0 ]
[ 3.12  2.65  9.5  0  0  1 ]

[Matrix]: (E|A^-1) < 3, 6 > has been saved.
[ 1  0  0  -0.139957  0.267816  -0.0119307 ]
[ 0  1  0  0.748508  -0.0165195  -0.264062 ]
[ 0  0  1  -0.16283  -0.0833484  0.182841 ]

>> mat.in(B,3,3):

[Matrix]: B < 3, 3 >

2.2 3.3 5.3
5.5 1 3
3 0.5 9

[Matrix]: B < 3, 3 > has been saved.

[ 2.2  3.3  5.3 ]
[ 5.5  1  3 ]
[ 3  0.5  9 ]

>> vct.in(v.a,3,1): 3.1415 2.71842 4.33

[Matrix]: v.a < 3, 1 >


[Matrix]: v.a < 3, 1 > has been saved.

[ 3.1415 ]
[ 2.71842 ]
[ 4.33 ]

>> vct.in(v.b,3,1): 3.1415 2.718142  1.22

[Matrix]: v.b < 3, 1 >


[Matrix]: v.b < 3, 1 > has been saved.

[ 3.1415 ]
[ 2.71814 ]
[ 1.22 ]

>> mat.add(A,B,A+B)

[Matrix]: A < 3, 3 >
[ 1.2  2.3  3.4 ]
[ 4.5  1.32  2.2 ]
[ 3.12  2.65  9.5 ]

[Matrix]: B < 3, 3 >
[ 2.2  3.3  5.3 ]
[ 5.5  1  3 ]
[ 3  0.5  9 ]

[Matrix]: A+B < 3, 3 > has been saved.
[ 3.4  5.6  8.7 ]
[ 10  2.32  5.2 ]
[ 6.12  3.15  18.5 ]

>> mat.multi(A,A+B,A*(A+B))

[Matrix]: A < 3, 3 >
[ 1.2  2.3  3.4 ]
[ 4.5  1.32  2.2 ]
[ 3.12  2.65  9.5 ]

[Matrix]: A+B < 3, 3 >
[ 3.4  5.6  8.7 ]
[ 10  2.32  5.2 ]
[ 6.12  3.15  18.5 ]

[Matrix]: A*(A+B) < 3, 3 > has been saved.
[ 47.888  22.766  85.3 ]
[ 41.964  35.1924  86.714 ]
[ 95.248  53.545  216.674 ]

>> mat.inv(A*(A+B),[A*(A+B)]^-1)

[Matrix]: A*(A+B) < 3, 3 >
[ 47.888  22.766  85.3 ]
[ 41.964  35.1924  86.714 ]
[ 95.248  53.545  216.674 ]


[Matrix]: [A*(A+B)]^-1 < 3, 3 > has been saved.
[ 0.10081  -0.0123524  -0.0347431 ]
[ -0.0281646  0.0761074  -0.0193707 ]
[ -0.0373549  -0.0133778  0.0246749 ]

>> mat.det(A*(A+B))

[Matrix]: A*(A+B) < 3, 3 >
[ 47.888  22.766  85.3 ]
[ 41.964  35.1924  86.714 ]
[ 95.248  53.545  216.674 ]

Det(A*(A+B)) = 29582.3

[Value]: Det(A*(A+B)) has been saved.
[ 29582.3 ]

[System.Out]: Det(A*(A+B)) is an value.

>> mat.det([A*(A+B)]^-1)

[Matrix]: [A*(A+B)]^-1 < 3, 3 >
[ 0.10081  -0.0123524  -0.0347431 ]
[ -0.0281646  0.0761074  -0.0193707 ]
[ -0.0373549  -0.0133778  0.0246749 ]

Det([A*(A+B)]^-1) = 3.38047e-005

[Value]: Det([A*(A+B)]^-1) has been saved.
[ 3.38047e-005 ]

[System.Out]: Det([A*(A+B)]^-1) is an value.

>> mat.multi(A*(A+B),v.a,A*(A+B)->v.a)

[Matrix]: A*(A+B) < 3, 3 >
[ 47.888  22.766  85.3 ]
[ 41.964  35.1924  86.714 ]
[ 95.248  53.545  216.674 ]

[Matrix]: v.a < 3, 1 >
[ 3.1415 ]
[ 2.71842 ]
[ 4.33 ]

[Matrix]: A*(A+B)->v.a < 3, 1 > has been saved.
[ 581.677 ]
[ 602.969 ]
[ 1382.98 ]

>> mat.multi([A*(A+B)]^-1,A*(A+B)->v.a,v.GOOD)

[Matrix]: [A*(A+B)]^-1 < 3, 3 >
[ 0.10081  -0.0123524  -0.0347431 ]
[ -0.0281646  0.0761074  -0.0193707 ]
[ -0.0373549  -0.0133778  0.0246749 ]

[Matrix]: A*(A+B)->v.a < 3, 1 >
[ 581.677 ]
[ 602.969 ]
[ 1382.98 ]

[Matrix]: v.GOOD < 3, 1 > has been saved.
[ 3.14173 ]
[ 2.71841 ]
[ 4.33001 ]

>> vct.mag(A*(A+B)->v.a) val.del(Mag(A*(A+B)->v.a))

[Vector]: A*(A+B)->v.a < 3, 1 >
[ 581.677 ]
[ 602.969 ]
[ 1382.98 ]

[Value]: Mag(A*(A+B)->v.a) has been saved.
[ 1616.96 ]

[System.Out]: Mag(A*(A+B)->v.a) is an value.

>> 
[Value]: Mag(A*(A+B)->v.a) has been deleted.

>> vct.mag(v.b) val.del(Mag(v.b))

[Vector]: v.b < 3, 1 >
[ 3.1415 ]
[ 2.71814 ]
[ 1.22 ]

[Value]: Mag(v.b) has been saved.
[ 4.32963 ]

[System.Out]: Mag(v.b) is an value.

>> 
[Value]: Mag(v.b) has been deleted.

>> vct.angle(A*(A+B)->v.a,v.b,theta(T->v.a|v.b))

[Vector]: A*(A+B)->v.a < 3, 1 >
[ 581.677 ]
[ 602.969 ]
[ 1382.98 ]

[Vector]: v.b < 3, 1 >
[ 3.1415 ]
[ 2.71814 ]
[ 1.22 ]

[Value]: TEMP_VAL has been saved.
[ 5153.53 ]

[System.Out]: TEMP_VAL is an value.

[Vector]: A*(A+B)->v.a < 3, 1 >
[ 581.677 ]
[ 602.969 ]
[ 1382.98 ]

[Value]: Mag(A*(A+B)->v.a) has been saved.
[ 1616.96 ]

[System.Out]: Mag(A*(A+B)->v.a) is an value.

[Vector]: v.b < 3, 1 >
[ 3.1415 ]
[ 2.71814 ]
[ 1.22 ]

[Value]: Mag(v.b) has been saved.
[ 4.32963 ]

[System.Out]: Mag(v.b) is an value.

[Value]: theta(T->v.a|v.b) has been saved.
[ 0.743461 ]

[System.Out]: theta(T->v.a|v.b) is an value.

[Value]: Mag(A*(A+B)->v.a) has been deleted.

[Value]: Mag(v.b) has been deleted.

[Value]: TEMP_VAL has been deleted.

>> vct.n0(A*(A+B)->v.a,v.b,v.n0Cross_(v.a|v.b))

[Vector]: A*(A+B)->v.a < 3, 1 >
[ 581.677 ]
[ 602.969 ]
[ 1382.98 ]

[Vector]: v.b < 3, 1 >
[ 3.1415 ]
[ 2.71814 ]
[ 1.22 ]

[Vector]: TEMP_VCT < 3, 1 > has been saved.
[ -3023.51 ]
[ 3634.99 ]
[ -313.148 ]

[Vector]: TEMP_VCT < 3, 1 >
[ -3023.51 ]
[ 3634.99 ]
[ -313.148 ]

[Value]: Mag(TEMP_VCT) has been saved.
[ 4738.44 ]

[System.Out]: Mag(TEMP_VCT) is an value.

[Matrix]: TEMP_VCT < 3, 1 >
[ -3023.51 ]
[ 3634.99 ]
[ -313.148 ]

[Matrix]: v.n0Cross_(v.a|v.b) < 3, 1 > has been saved.
[ -0.638082 ]
[ 0.767128 ]
[ -0.0660868 ]

[Value]: Mag(TEMP_VCT) has been deleted.

[Matrix]: TEMP_VCT has been deleted.

>> vct.cross(A*(A+B)->v.a,v.b,v.Cross_(v.a|v.b))

[Vector]: A*(A+B)->v.a < 3, 1 >
[ 581.677 ]
[ 602.969 ]
[ 1382.98 ]

[Vector]: v.b < 3, 1 >
[ 3.1415 ]
[ 2.71814 ]
[ 1.22 ]

[Vector]: v.Cross_(v.a|v.b) < 3, 1 > has been saved.
[ -3023.51 ]
[ 3634.99 ]
[ -313.148 ]

>> vct.minus(v.GOOD,v.a,v.delta(v.GOOD-v.a))

[Matrix]: v.GOOD < 3, 1 >
[ 3.14173 ]
[ 2.71841 ]
[ 4.33001 ]

[Matrix]: v.a < 3, 1 >
[ 3.1415 ]
[ 2.71842 ]
[ 4.33 ]

[Matrix]: v.delta(v.GOOD-v.a) < 3, 1 > has been saved.
[ 0.00023 ]
[ -1e-005 ]
[ 1e-005 ]

>> vct.approx(v.delta(v.GOOD-v.a),r%v.delta(v.GOOD-v.a))

[Matrix]: v.delta(v.GOOD-v.a) < 3, 1 >
[ 0.00023 ]
[ -1e-005 ]
[ 1e-005 ]

[Matrix]: r%v.delta(v.GOOD-v.a) < 3, 1 > has been saved.
[ 0.00023 ]
[ 0 ]
[ 0 ]

>> file.del(matrix) file.del(matrixstream) file.del(value)

[FILE]: matrix has been deleted.

>> 
[FILE]: matrixstream has been deleted.

>> 
[FILE]: value has been deleted.

>> mat.in(A,5,5):

[Matrix]: A < 5, 5 >

1 2 2 1 2
5 6 7 8 3
9 3 0 5 3
7 2 1 4 6
3 0 8 2 4

[Matrix]: A < 5, 5 > has been saved.

[ 1  2  2  1  2 ]
[ 5  6  7  8  3 ]
[ 9  3  0  5  3 ]
[ 7  2  1  4  6 ]
[ 3  0  8  2  4 ]

>> mat.inv(A,A^-1)

[Matrix]: A < 5, 5 >
[ 1  2  2  1  2 ]
[ 5  6  7  8  3 ]
[ 9  3  0  5  3 ]
[ 7  2  1  4  6 ]
[ 3  0  8  2  4 ]


[Matrix]: A^-1 < 5, 5 > has been saved.
[ 0.131234  -0.119685  0.275066  -0.184777  0.0950131 ]
[ 0.616798  -0.0425197  0.132808  -0.188451  -0.0934383 ]
[ 0.0839895  -0.0125984  0.064042  -0.142257  0.132808 ]
[ -0.637795  0.245669  -0.248819  0.274016  -0.0897638 ]
[ 0.0524934  -0.00787402  -0.209974  0.286089  -0.0419948 ]

>> mat.in(B,5,5):

[Matrix]: B < 5, 5 >

1.37 2.7 2 1 2
5 6.7 7.7 8.7 3
9.7 3.7 0 5 3
7 2 1.7 4 6.7
3.7 0.7 8 2 4.7

[Matrix]: B < 5, 5 > has been saved.

[ 1.37  2.7  2  1  2 ]
[ 5  6.7  7.7  8.7  3 ]
[ 9.7  3.7  0  5  3 ]
[ 7  2  1.7  4  6.7 ]
[ 3.7  0.7  8  2  4.7 ]

>> mat.tran(B,B^T)

[Matrix]: B < 5, 5 >
[ 1.37  2.7  2  1  2 ]
[ 5  6.7  7.7  8.7  3 ]
[ 9.7  3.7  0  5  3 ]
[ 7  2  1.7  4  6.7 ]
[ 3.7  0.7  8  2  4.7 ]

[Matrix]: B^T < 5, 5 > has been saved.
[ 1.37  5  9.7  7  3.7 ]
[ 2.7  6.7  3.7  2  0.7 ]
[ 2  7.7  0  1.7  8 ]
[ 1  8.7  5  4  2 ]
[ 2  3  3  6.7  4.7 ]

>> mat.multi(A^-1,B^T,C)

[Matrix]: A^-1 < 5, 5 >
[ 0.131234  -0.119685  0.275066  -0.184777  0.0950131 ]
[ 0.616798  -0.0425197  0.132808  -0.188451  -0.0934383 ]
[ 0.0839895  -0.0125984  0.064042  -0.142257  0.132808 ]
[ -0.637795  0.245669  -0.248819  0.274016  -0.0897638 ]
[ 0.0524934  -0.00787402  -0.209974  0.286089  -0.0419948 ]

[Matrix]: B^T < 5, 5 >
[ 1.37  5  9.7  7  3.7 ]
[ 2.7  6.7  3.7  2  0.7 ]
[ 2  7.7  0  1.7  8 ]
[ 1  8.7  5  4  2 ]
[ 2  3  3  6.7  4.7 ]

[Matrix]: C < 5, 5 > has been saved.
[ 0.412022  0.649768  0.19129  1.04436  2.67932 ]
[ 0.620498  1.90189  4.60305  3.07848  2.49879 ]
[ 0.332493  -0.0105503  0.455223  0.992387  1.15396 ]
[ -0.613622  -1.34425  -4.17685  -3.90157  -4.05228 ]
[ -0.167192  0.955901  1.78451  0.857741  -1.11628 ]

>> mat.multi(A^-1,A,I[5])

[Matrix]: A^-1 < 5, 5 >
[ 0.131234  -0.119685  0.275066  -0.184777  0.0950131 ]
[ 0.616798  -0.0425197  0.132808  -0.188451  -0.0934383 ]
[ 0.0839895  -0.0125984  0.064042  -0.142257  0.132808 ]
[ -0.637795  0.245669  -0.248819  0.274016  -0.0897638 ]
[ 0.0524934  -0.00787402  -0.209974  0.286089  -0.0419948 ]

[Matrix]: A < 5, 5 >
[ 1  2  2  1  2 ]
[ 5  6  7  8  3 ]
[ 9  3  0  5  3 ]
[ 7  2  1  4  6 ]
[ 3  0  8  2  4 ]

[Matrix]: I[5] < 5, 5 > has been saved.
[ 1  2e-006  8e-007  2.2e-006  1.4e-006 ]
[ -4e-007  1  7e-007  -2e-007  1.7e-006 ]
[ 5e-007  6e-007  0.999997  3e-007  -2e-007 ]
[ -4e-007  -1e-006  -1.4e-006  0.999998  8e-007 ]
[ -4.1e-006  -1.32e-006  -7.4e-007  -2.36e-006  0.999998 ]

>> mat.approx(I[5],r%I[5])

[Matrix]: I[5] < 5, 5 >
[ 1  2e-006  8e-007  2.2e-006  1.4e-006 ]
[ -4e-007  1  7e-007  -2e-007  1.7e-006 ]
[ 5e-007  6e-007  0.999997  3e-007  -2e-007 ]
[ -4e-007  -1e-006  -1.4e-006  0.999998  8e-007 ]
[ -4.1e-006  -1.32e-006  -7.4e-007  -2.36e-006  0.999998 ]

[Matrix]: r%I[5] < 5, 5 > has been saved.
[ 1  0  0  0  0 ]
[ 0  1  0  0  0 ]
[ 0  0  1  0  0 ]
[ 0  0  0  1  0 ]
[ 0  0  0  0  1 ]

>> mat.det(A) mat.det(A^-1)

[Matrix]: A < 5, 5 >
[ 1  2  2  1  2 ]
[ 5  6  7  8  3 ]
[ 9  3  0  5  3 ]
[ 7  2  1  4  6 ]
[ 3  0  8  2  4 ]

Det(A) = 1905

[Value]: Det(A) has been saved.
[ 1905 ]

[System.Out]: Det(A) is an value.

>> 
[Matrix]: A^-1 < 5, 5 >
[ 0.131234  -0.119685  0.275066  -0.184777  0.0950131 ]
[ 0.616798  -0.0425197  0.132808  -0.188451  -0.0934383 ]
[ 0.0839895  -0.0125984  0.064042  -0.142257  0.132808 ]
[ -0.637795  0.245669  -0.248819  0.274016  -0.0897638 ]
[ 0.0524934  -0.00787402  -0.209974  0.286089  -0.0419948 ]

Det(A^-1) = 0.000524932

[Value]: Det(A^-1) has been saved.
[ 0.000524932 ]

[System.Out]: Det(A^-1) is an value.

>> mat.det(B) mat.det(B^T)

[Matrix]: B < 5, 5 >
[ 1.37  2.7  2  1  2 ]
[ 5  6.7  7.7  8.7  3 ]
[ 9.7  3.7  0  5  3 ]
[ 7  2  1.7  4  6.7 ]
[ 3.7  0.7  8  2  4.7 ]

Det(B) = 4163.94

[Value]: Det(B) has been saved.
[ 4163.94 ]

[System.Out]: Det(B) is an value.

>> 
[Matrix]: B^T < 5, 5 >
[ 1.37  5  9.7  7  3.7 ]
[ 2.7  6.7  3.7  2  0.7 ]
[ 2  7.7  0  1.7  8 ]
[ 1  8.7  5  4  2 ]
[ 2  3  3  6.7  4.7 ]

Det(B^T) = 4163.94

[Value]: Det(B^T) has been saved.
[ 4163.94 ]

[System.Out]: Det(B^T) is an value.

>> mat.det(I[5])

[Matrix]: I[5] < 5, 5 >
[ 1  2e-006  8e-007  2.2e-006  1.4e-006 ]
[ -4e-007  1  7e-007  -2e-007  1.7e-006 ]
[ 5e-007  6e-007  0.999997  3e-007  -2e-007 ]
[ -4e-007  -1e-006  -1.4e-006  0.999998  8e-007 ]
[ -4.1e-006  -1.32e-006  -7.4e-007  -2.36e-006  0.999998 ]

Det(I[5]) = 0.999993

[Value]: Det(I[5]) has been saved.
[ 0.999993 ]

[System.Out]: Det(I[5]) is an value.

>> mat.det(r%I[5])

[Matrix]: r%I[5] < 5, 5 >
[ 1  0  0  0  0 ]
[ 0  1  0  0  0 ]
[ 0  0  1  0  0 ]
[ 0  0  0  1  0 ]
[ 0  0  0  0  1 ]

Det(r%I[5]) = 1

[Value]: Det(r%I[5]) has been saved.
[ 1 ]

[System.Out]: Det(r%I[5]) is an value.

>> file.del(value) file.del(matrix) file.del(matrixstream)

>> [FILE]: value has been deleted.

>> [FILE]: matrix has been deleted.

>> [FILE]: matrixstream has been deleted.

>> quit()

[EXIT]: 0

空文件

简介

Biomatrix is a interactive shell matrix calculation. 展开 收起
C 等 3 种语言
取消

发行版 (1)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
C
1
https://gitee.com/Eplankton/Biomatrix.git
git@gitee.com:Eplankton/Biomatrix.git
Eplankton
Biomatrix
Biomatrix
main

搜索帮助