我是一名研究生,当我们可以自己“轻松”编写函数时,我的一位教授不喜欢他的学生使用“黑匣子”函数。

因此,我需要能够在Matlab中编写一个函数,该函数通常可以采用输入矩阵的逆函数(大小可能为100x100至500x500)。 我唯一拥有的其他指导是:“您应该使用迭代方法,而函数输入应该是您要求逆的矩阵和指定数量的可容忍误差。您可以使用任何想要的误差估计器。”

环顾四周,我发现了许多估计技术,这些技术使我们可以直接求解Ax = b,而不是求解A ^ -1(认为是高斯-塞德尔方法)。 我仅有的另一个提示是,将输入矩阵解构为上三角,对角和下三角元素,然后以某种方式分别将它们全部反转可能会很有用。

显然,我不希望有人给我代码。 我要问的是,如果有人拥有一个很好的资源,可以为我提供某种基本的数值矩阵求逆技术,我可以将其转化为Matlab代码。

===============>>#1 票数:1 已采纳

高斯-乔丹消除法(请参阅http://mathworld.wolfram.com/Gauss-JordanElimination.html )可以解决问题。 这不是一个简单的实现,但是我敢肯定,您可以通过一些努力使它正常工作。 请注意,以下是该算法的非常 非正式的草图:

  • 从[AI]开始

    [a11 a12 a13:1 0 0]

    [a21 a22 a23:0 1 0]

    [a31 a32 a33:0 0 1]

  • 将a21 / a11 *第1行添加到第2行

[a11 a12 a13:1 0 0]

[0 XXX YYY:第一个]

[a31 a32 a33:0 0 1]

  • 对第三行执行相同的操作(即,将a31 / a11 * row1添加到row3)

完成上述步骤后,第一列中的零将使您领先a11。

  • 现在,将a22 / a32 * row2添加到row3。 这会将a32更改为零。 在所有以下行上重复。

  • 在所有更大的列上重复上一步。

您必须将这种方法推广到大于3x3的矩阵上,但是模式应该很简单。 完成第1-5步的操作后,将剩下一个上部三角矩阵。 现在,您开始倒退。 您将第3行的一部分添加到第1行和第2行,以将其第三列更改为零,然后将第2行的一部分添加到第1行,以将第1行的列更改为零(再次,将其概括化以对X by X矩阵进行处理。

完成后,您将在左侧留下对角矩阵。 将每行乘以一个因子,将其更改为单位矩阵。

右边的结果是您的倒矩阵! 您将必须找到将可接受的错误纳入其中的方法。

  ask by user2785214 translate from so

未解决问题?本站智能推荐:

2回复

对于循环逆矩阵

我正在尝试在Matlab中逆矩阵,但是我正在努力。 它本质上是3x3矩阵,但是矩阵的每个位置都有801个点。 我假设我需要以某种方式使用for循环来得出一个反向的3x3矩阵,每个矩阵包含801个点。 inv(A11(1)A12(1)A13(1); A21(1)A22(1)A23
2回复

涉及逆运算的矩阵乘法:无穷大

在我之前的问题中,这里问过: Matlab:如何计算矩阵的逆 我想知道如何执行逆运算 输出为Tinv = 与第二张图片相同。 第一张图片是矩阵A 但是,对于更大的矩阵,说5 x 5,如果我不使用恒等式, I将执行元素明智的乘法,那么我将得到无穷大值。
1回复

我使用最小二乘法,但是matlab完全返回错误的答案

我必须解决一个过度约束的问题(方程式多于未知数)。 所以我必须使用最小二乘法。 首先,我创建系数矩阵。它是一个225 * 375的矩阵。 为了进行反演,我使用pinv()函数,然后将其乘以负载矩阵。 我的问题是在边缘均匀受力的情况下板弯曲。 我希望至少在我的边界内有正确的答案(挠度必须
1回复

使用Cramer法则求矩阵的逆

我创建了一个函数行列式,用于输出3x3矩阵的行列式。 我还需要创建一个函数来反转该矩阵,但是代码似乎无法正常工作,我也不知道为什么。 OUTPUT: 通过逆(M): 通过内置的numpy反函数: 如您所见,有些数字匹配,但我不确定为什么答案不正确,因为我正确使用了
1回复

Python numpy:矩阵求逆在相乘时给出不精确的结果

好了,所以我有3个numpy矩阵: m1,m2和m3是非常大的正方形矩阵(示例为128x128,但它们可以达到2048x2048)。 也m1 * m2 = m3。 我的目标是仅使用m1和m3获得m2。 有人告诉我这是可能的,因为m1 * m2 = m3表示(m1 **-1)*
1回复

Matlab:如何计算矩阵的逆

我想找到图片中给定的T逆。 第一张图片是矩阵T,另一张图片是T逆。 使用Horzcat CAT参数尺寸时出错,不一致。 然后,我尝试使用I = eye(2)并得到相同的错误。 正确的方法是什么?
1回复

乘逆矩阵?

如果我有一个由“世界视图投影”组合而成的矩阵,并且将其乘以投影的倒数,会得出“世界视图矩阵”还是其他东西? 如果不是,那么如何从“世界视图投影”矩阵中提取“世界视图”矩阵? 谢谢你的帮助 :)
1回复

图像矩阵的逆

我正在使用两个图像。 我使用C ++在opencv中阅读并投入了矩阵。 现在,我想对一个图像矩阵求逆。 我用invM1 = M1.inv(CV_LU);(where invM1 and M1 both are matrix) 。 我有 Opencv错误:断言失败。 您能
1回复

CUDA矩阵逆高斯约旦

我没有发现任何类似的问题。 我正在尝试编写高斯-约旦逆矩阵算法。 该算法的思想很简单:) 我只想对下三角矩阵求逆。 我得到了几乎正确的答案。 我在哪里做错了? 有人可以帮助我吗? 我会很感激的。 d _ 下三角矩阵(n×n个) dI身份矩阵(nxn)
2回复

高斯消除法的矩阵逆

如何找到矩阵的逆? 我正在尝试使用高斯消除方法。 我知道如何手动解决,但无法理解如何编码。