Python 求解线性方程组,其中每个矩阵元素本身是矩阵(2D),每个变量是1D向量

Python 求解线性方程组,其中每个矩阵元素本身是矩阵(2D),每个变量是1D向量,python,numpy,scipy,linear-equation,Python,Numpy,Scipy,Linear Equation,这个问题的简单例子是: 就我而言: 高度赞赏任何想法/建议。只要尺寸符合要求,A实际上“只是”一个矩阵,即使它是由较小的矩阵构成的。下面是一个相对通用的示例,显示了尺寸必须如何变化: import numpy import numpy.linalg l, m, n, k = 2, 3, 4, 5 # if these are known, obviously just define them here. A11 = numpy.random.random((l, m)) A12 = nu

这个问题的简单例子是:

就我而言:


高度赞赏任何想法/建议。

只要尺寸符合要求,A实际上“只是”一个矩阵,即使它是由较小的矩阵构成的。下面是一个相对通用的示例,显示了尺寸必须如何变化:

import numpy
import numpy.linalg

l, m, n, k = 2, 3, 4, 5

# if these are known, obviously just define them here.
A11 = numpy.random.random((l, m))
A12 = numpy.random.random((l, n))
A21 = numpy.random.random((k, m))
A22 = numpy.random.random((k, n))
x1 = numpy.random.random((m,))
x2 = numpy.random.random((n,))

A = numpy.bmat([[A11, A12], 
                [A21, A22]])
x = numpy.concatenate([x1, x2])

b = numpy.linalg.solve(A, x)

只要维度一致,A实际上“只是”一个矩阵,即使它是由更小的矩阵构成的。下面是一个相对通用的示例,显示了尺寸必须如何变化:

import numpy
import numpy.linalg

l, m, n, k = 2, 3, 4, 5

# if these are known, obviously just define them here.
A11 = numpy.random.random((l, m))
A12 = numpy.random.random((l, n))
A21 = numpy.random.random((k, m))
A22 = numpy.random.random((k, n))
x1 = numpy.random.random((m,))
x2 = numpy.random.random((n,))

A = numpy.bmat([[A11, A12], 
                [A21, A22]])
x = numpy.concatenate([x1, x2])

b = numpy.linalg.solve(A, x)

所有2d的形状都一样吗?它们能形成3d阵列吗?是的,所有的矩阵元素都是正方形,形状相同。我正在考虑用这些2D矩阵元素制作一个大的正方形矩阵,然后将这些b元素呈现给单个数组。然后使用linalg.solve获得单个X向量,然后将其分离为每个X_i。请让我知道,如果这个方法是正确的。或者还有其他更有效的方法。最简单的方法是将所有矩阵叠加到一个矩阵中-与右边的
b
向量相同,并以这种方式进行求解。所有2d都是相同的形状吗?它们能形成3d阵列吗?是的,所有的矩阵元素都是正方形,形状相同。我正在考虑用这些2D矩阵元素制作一个大的正方形矩阵,然后将这些b元素呈现给单个数组。然后使用linalg.solve获得单个X向量,然后将其分离为每个X_i。请让我知道,如果这个方法是正确的。或者还有其他更有效的方法,最简单的方法是将所有矩阵叠加到一个矩阵中——与右边的
b
向量相同,并以这种方式进行求解。