python - python-插值多项式,其中系数是矩阵
问题描述
我有一个形式的多项式:
p(y) = A + By + Cy^2 ... + Dy^n
这里,每个系数A,B,..,D
都是矩阵(因此p(y)
也是矩阵)。n+1
假设我在点处插入多项式。我现在应该能够解决这个系统了。我正在尝试在 Numpy 中执行此操作。我现在有以下代码:
a = np.vander([0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2]) #polynomial degree is 12, a -> (12x12)
b = np.random.rand(12,60,60) #p(x) is a 60x60 matrix that I have evaluated at 12 points
x = np.linalg.solve(a,b)
我收到以下错误:
ValueError: solve: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (m,m),(m,n)->(m,n) (size 60 is different from 12)
我怎样才能在 Numpy 中解决这个系统来获得x
?这有一个通用的数学技巧吗?
解决方案
本质上,您只是在进行 3600 次 12d 多项式回归并将系数组合成矩阵。例如,组件p(y)[0,0]
只是:
p(y)[0, 0] = A[0, 0] + B[0, 0] * y + C[0, 0] * y**2 ... + D[0, 0] * y**n
问题是np.linalg.solve
只能取一维系数。但是由于您的矩阵元素都是独立的(y
是标量的),因此您可以ravel
使用它们,并且可以使用表格进行计算(m,m),(m,n**2) -> (m,n**2)
并重新整形回矩阵。所以试试:
a = np.vander([0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2]) #polynomial degree is 12, a -> (12x12)
b = np.random.rand(12,60,60) #p(x) is a 60x60 matrix that I have evaluated at 12 points
s = b.shape
x = np.linalg.solve(a, b.reshape(s[0], -1))
x = x.reshape(s)
推荐阅读
- cplex - 为什么 CPLEX Refiner 未检测到损坏的变量界限?
- php - 如何在 WooCommerce 产品管理员中设置始终选中的复选框?
- laravel - Laravel:有没有办法将路由组织成分层树
- iphone - 如何在 swift 4 iOS 中将 Callkit 与 Agora VOiP 集成?
- python-2.7 - Python中的星星和字符串组合模式
- django - 如何使用 React 解决样式表问题?
- javascript - 显示从快递服务器发送到反应方的 pdf
- android - 当 WIFI 网络没有 Internet 连接时检查 .net 或 Xamarin Internet 可用性
- python - 如何将 a=1000000000 转换为十进制数 0 b=0100000000 转换为十进制数 1 等等 9 个数字
- kubernetes - Istio 目标规则子集不起作用