矩阵的除法是对方阵使用的,但matlab里面可以对非方阵也能左除,右除,查资料说是matlab对非方阵按列进行了householder变换,但是没查到python里面怎么实现这个功能。求助一下各位大佬,这个怎么实现?
1条回答 默认 最新
- 技术专家团-Joel 2021-10-30 21:38关注
你可以看看matlab官方说明:
(1)backslash \
说明 示例 x = A\B 对线性方程组 A*x = B 求解。矩阵 A 和 B 必须具有相同的行数。如果 A 未正确缩放或接近奇异值,MATLAB® 将会显示警告信息,但还是会执行计算。 如果 A 是标量,那么 A\B 等于 A.\B。 如果 A 是 n×n 方阵,B 是 n 行矩阵,那么 x = A\B 是方程 A*x = B 的解(如果存在解的话)。 如果 A 是矩形 m×n 矩阵,且 m ~= n,B 是 m 行矩阵,那么 A\B 返回方程组 A*x= B 的最小二乘解。
你要用python实现backslash,其实很简单
import numpy as np def backslash(a,b): m,n=a.shape p,q=b.shape if(m!=p): print('dimensions do not match!') return -1 if(m==n): return np.linalg.solve(a,b) else: a1 = a.T.dot(a) b1 = a.T.dot(b) return np.linalg.solve(a1,b1)
(2)slash /
官方说明x = B/A 对线性方程组 x*A = B 求解 x。矩阵 A 和 B 必须具有相同的列数。如果 A 未正确缩放或接近奇异值,MATLAB® 将会显示警告信息,但还是会执行计算。 如果 A 是标量,那么 B/A 等于 B./A。 如果 A 是 n×n 方阵,B 是 n 列矩阵,那么 x = B/A 是方程 x*A = B 的解(如果存在解的话)。 如果 A 是矩形 m×n 矩阵,且 m ~= n,B 是 n 列矩阵,那么 x=B/A 返回方程组 x*A = B 的最小二乘解。
这个就更简单了,只需要:
import numpy as np def slash(a,b): a=a.T b=b.T x = backslash(a,b) return x.T
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 C++ 头文件/宏冲突问题解决
- ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
- ¥50 安卓adb backup备份子用户应用数据失败
- ¥20 有人能用聚类分析帮我分析一下文本内容嘛
- ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
- ¥30 python代码,帮调试
- ¥15 #MATLAB仿真#车辆换道路径规划
- ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
- ¥15 数据可视化Python
- ¥15 要给毕业设计添加扫码登录的功能!!有偿