【机器学习中的矩阵】


python

一、矩阵连乘

内容
链接

1.核心代码

代码如下(示例):

import sys

def matrix_chain_order(p):
    n = len(p) - 1
    m = [[0 for _ in range(n)] for _ in range(n)]
    s = [[0 for _ in range(n)] for _ in range(n)]

    for l in range(2, n + 1):  # l is the chain length
        for i in range(n - l + 1):
            j = i + l - 1
            m[i][j] = sys.maxsize
            for k in range(i, j):
                q = m[i][k] + m[k+1][j] + p[i]*p[k+1]*p[j+1]
                if q < m[i][j]:
                    m[i][j] = q
                    s[i][j] = k

    return m, s

def print_optimal_parens(s, i, j):
    if i == j:
        print(f"A{i+1}", end="")
    else:
        print("(", end="")
        print_optimal_parens(s, i, s[i][j])
        print_optimal_parens(s, s[i][j] + 1, j)
        print(")", end="")

def main():
    # Example matrix dimensions: A1 is 30x35, A2 is 35x15, A3 is 15x5, A4 is 5x10, A5 is 10x20, A6 is 20x25
    p = [30, 35, 15, 5, 10, 20, 25]
    
    m, s = matrix_chain_order(p)
    
    print("Minimum number of multiplications is: ", m[0][len(p) - 2])
    
    print("Optimal Parenthesization is: ", end="")
    print_optimal_parens(s, 0, len(p) - 2)

if __name__ == "__main__":
    main()

提示:

二、矩阵求逆

1、待定系数法
2、高斯消元法(初等变化法):增广矩阵A|I通过高斯消元得到I|A^-1
3、伴随矩阵+代数余子式

总结

输入输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值