(绝望的呼喊)如何求10阶以上矩阵的逆??(100分)

J

jet

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾,多日不见,想死偶也!!
只怪偶这里的破网,不知发了什么神经病,从十一月起就连不上大富翁了,
害的偶每日开机第一件事便是:开浏览器,从收藏夹中调“大富翁”...
我连,我连,我连连连...就是连不上。
呜呼,莫非...大富翁真的...关了??偶不由悲从心起,作“悼大富翁赋”一篇:
....(此处略去1xM字节)
就在昨日,偶打开foxmail,忽然收到大富翁来信一封,偶“啪”一拍大腿(边上
同事大腿顿时肿起),仰天长笑1x分钟,爽,爽,爽!!!!!!!!
偶有救了!!
呵呵,进入正题。偶有一项目,其中大量用到矩阵运算,加减乘都不成问题,但是
这个,这个求逆,可就不好办了,当年线代书上可是只讲到低阶矩阵的求逆。
但偶用的,那可都是十几,二十阶的大矩阵啊!
偶只得下载MathCAD,用ole automation,通过MathCAD来求逆,唉,同志们,总
不能要求客户“使用本软件,还需正版MathCAD一套,$495”。
各位大虾可有高招,请赐教delphi“高阶矩阵”宝典。
先送100分,事成之后,嘿嘿...(偶还是有点积蓄的)
谢谢谢谢...(长达N兆字节)
 
把大矩阵分成几个小矩阵,然后再组合起来。
线性代数书上有讲,
好像是比如:
矩阵A: 10*10
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
将他分成4个小矩阵 M1,M2,M3,M4: 5*5 的
|M1 M2| |K1 K2|
| |=A 设A的逆为A~ A~= | |
|M3 M4| |K3 K4|

有M1*K1+M2*K3=E
M1*K2+M2*K4=E
M3*K1+M4*K3=E
M3*K2+M4*K4=E
然后分别求出K1,K2,K3,K4 就行了。。。

 
sorry ,写错了,应该是:

M1*M2+M2*K4=0
M3*K1+M4*K3=0
 
呵呵,偶就是不知道如何编程求出k1,k2。。。
不过,谢谢!!
 
用我列的算示,把四个算示展开,就有一个线性方程组了吧。
然后解线性方程组,求出每个Ki中的元素呗。
 
Muuuuuuuuuu...
我再去试试。
 
正好看了关于矩阵求逆的一篇文章,
向你介绍介绍, 看对你有帮助没有。
这是斯特拉森(Strassen)发现的公式。
假定矩阵
| a11 a12 | | c11 c12 |
| a21 a22 | | c21 c22 |
互为逆矩阵。
则c可由a按下列操作得到:
R1 =Inverse(a11)
R2 =a21*R1
R3 =R1 *a12
R4 =a21*R3
R5 =R4 -a22
R6 =Inverse(R5)
c12=R3 *R6
c21=R6 *R2
R7 =R3 *c21
c11=R1 -R7
c22=-R6
在以上公式中,Inverse运算有两次。该运算被解释为:
若a和c为数值, 则求其倒数;
若a和c本身为子矩阵,则求其逆矩阵。
这样可以通过递归的方法来较容易也较快速地解决求逆问题。

 
delphi 求矩阵好像选错对象了。为什莫不用 fortan powstation
 
amo: thanks,let me try.
amen :呵呵,谁让这里是delphi论坛呢?delphi作界面好看嘛,编的好没用,
人家就看个界面.(当初应该学美术的)
 
建议看看那本《C语言数值算法大全》,里面对矩阵计算讲得很多,各种
算法都有,还有精度与时空复杂度分析,是数值计算的经典作品。那里面
的程序很任意移植过来,而且建议不要再想优化了,因为几乎不可能!那是
无数大师千锤百炼的精品
好象是电子工业出版社出的,1995年印刷,标价88,
ISBN号:7-5053-2931-6/tp.993
 
最简单的方法调用Excel,Office97可求出56*56的矩阵的逆
 
>>Liu JZX
是不是用ole + visual basic script???
 
Vba
另外我有算法,但速度余调用Excel比起来差距太大
 
>>Liu JZX
呵呵,给一个看看把!
 
要算法还是vba代码
 
>>Liu JZX
老大,不要吊偶的胃口拉!
偶。。。偶全要。
方便的话发给偶 :<a href="mailto:hjt@chinaren.com">偶要!</a>


 
下面是VBA示例代码,可能对你有用,由于很久没有使用,算法还没有找到
Private Sub CommandButton1_Click()
Range("A1:C3").Select
ActiveWorkbook.Names.Add Name:="Source", RefersToR1C1:="=Sheet1!R1C1:R3C3"
Range("A6:C8").Select
ActiveWorkbook.Names.Add Name:="Result", RefersToR1C1:="=Sheet1!R6C1:R8C3"
Range("Result").Select
Selection.ClearContents
Selection.FormulaArray = "=minverse(Source)"
End Sub
 
可以使用MatrixVB,一个dll,含有所有的矩阵运算,如果有兴趣,mail me
 
thanks Liu JZX!
>>probo <a href="mailto:hjt@chinaren.com">mail</a>
 
把矩阵再加上一个单位矩阵,然后把前面的矩阵作行列变换,直到变为单位矩阵
时,后面的矩阵就是逆了..
 

Similar threads

I
回复
0
查看
736
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
892
DelphiTeacher的专栏
D
I
回复
0
查看
706
import
I
顶部