昨天的 不懂算法 的CrackME参赛作品,太虚伪了找到算法是一个20元的线性方程组。但用前辈提供的免费工具Matrix1.0却没有导入导出数据功能,使用起来很辛苦,搜索一下虽然没有发现更好的计算工具,却发现Excel本身有相应的工具。记之备忘。也许会对新手有些用。。。。。
http://blog.programfan.com/article.asp?id=3980
用Excel解线性方程组
这里我想提的只是一个Excel里不被人注意的函数:计算行列式MDETERM()
例题:
设有未知数x1、x2、x3、x4,满足以下条件:
x1 + 3*x2 -2*x3 + x4 = 1
2*x1 + 5*x2 -3*x3 + 2*x4 = 3
-3*x1+ 4*x2 + 8*x3 -2*x4 = 4
6*x1 -x2 - 6*x3 + 4*x4 =2
用克拉默法则求出x1、x2、x3、x4的值。
解题方法:
我们在(A1:E4)单元格分别输入系数和等号右边的数值
1 3 -2 1 1
2 5 -3 2 3
-3 4 8 -2 4
6 -1 -6 4 2
在单元格A5输入公式:
=MDETERM(A1:D4)
即计算系数行列式,得到 17 ,于是得 D = 17;
选中(E1:E4)这一列单元格,复制:按Ctrl + c,
然后点中A1单元,粘贴:按Ctrl + v,
A5单元格变成了 -34 ,于是得 D1 = -34
取消:按Ctrl + z,A5单元格仍变回17。点中B1单元格,粘贴:按Ctrl + v,
A5单元格变成了 0 ,于是得 D2 = 0
取消:按Ctrl + z,A5单元格仍变回17。点中C1单元格,粘贴:按Ctrl + v,
A5单元格变成了 17,于是得 D3 = 17
取消:按Ctrl + z,A5单元格仍变回17。点中D1单元格,粘贴:按Ctrl + v,
A5单元格变成了 85,于是得 D4 = 85
根据克拉默法则:
x1 = D1 / D = -34 / 17 = -2
x2 = D2 / D = 0 / 17 = 0
x3 = D3 / D = 17 / 17 = 1
x4 = D4 / D = 85 / 17 = 5
可以看到,当未知数的个数较多时,用Excel解线性方程组还是很方便的。
(如果系数矩阵A是非奇异方阵,也可以先用=MINVERSE(A)求出A的逆阵NA,再用X=NA*B求出方程组的解)
====================================================
另外:
线性方程组求解在Excel和Matlab中的实现(Cool海豚整理)
http://agri520.bokee.com/5293663.html
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)