IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【线代&NumPy】第五章 - Vector课后练习 | 伴随矩阵求逆 | Cramer公式求联立方程 | 简述并提供代码 -> 正文阅读

[人工智能]【线代&NumPy】第五章 - Vector课后练习 | 伴随矩阵求逆 | Cramer公式求联立方程 | 简述并提供代码

💬 例1:

import numpy as np

def getMinorMatrix(A,i,j): # 删除矩阵A的i行和j列,并创建矩阵
    n = len(A) 
    M = np.zeros((n-1, n-1))
    for a in range(0,n-1):
        k = a if (a < i) else a+1
        for b in range(0, n-1):
            l = b if (b < j) else b+1
            M[a, b] = A[k, l]
    return M

def determinant(M): # 计算
    if len(M) == 2: # 2x2
        return M[0,0]*M[1,1]-M[0,1]*M[1,0]

    detVal = 0
    for c in range(len(M)):
        detVal += ((-1)**c)*M[0,c]*determinant(getMinorMatrix(M,0,c))
    return detVal

A = np.array([[-4, 0, 2, -1, 0], [1, 3, -3, -1, 4], [2, 0, 1, 3, 0],
              [-2, 1, -3, -1, 5], [1, -5, 1, 0, 5]])
print("A = ", A)
print("det(A) = ", determinant(A))

🚩 运行结果:

A = ?[[-4 ?0 ?2 -1 ?0]
?[ 1 ?3 -3 -1 ?4]
?[ 2 ?0 ?1 ?3 ?0]
?[-2 ?1 -3 -1 ?5]
?[ 1 -5 ?1 ?0 ?5]]
det(A) = ?-997.0

💬 例2:

import numpy as np

def cofactor(A, i, j): # 辅助因子
    (n,m) = A.shape
    M = np.zeros((n-1, m-1))
    for a in range(0, n-1):
        k = a if (a < i) else a+1
        for b in range(0, m-1):
            l = b if (b < j) else b+1
            M[a,b] = A[k, l]

    return (-1)**(i+j)*np.linalg.det(M)

def inverseByAdjointMatrix(A): # 利用伴随矩阵计算A的逆矩阵
    detA = np.linalg.det(A) # A的矩阵式计算
    (n,m) = A.shape
    adjA = np.zeros((n, m))

    for i in range(0,n): # 生成伴随矩阵
        for j in range(0, m):
            adjA[j,i] = cofactor(A, i, j)
    if detA != 0.0:
        return (1./detA) * adjA
    else:
        return 0
    
A = np.array([[-4, 0, 2, -1, 0], [1, 3, -3, -1, 4], [2, 0, 1, 3, 0],
              [-2, 1, -3, -1, 5], [1, -5, 1, 0, 5]])
print("A = ", A)

Ainv = inverseByAdjointMatrix(A)
print("A inverse = ", Ainv)

🚩 运行结果:

A = ?[[-4 ?0 ?2 -1 ?0]
?[ 1 ?3 -3 -1 ?4]
?[ 2 ?0 ?1 ?3 ?0]
?[-2 ?1 -3 -1 ?5]
?[ 1 -5 ?1 ?0 ?5]]
A inverse = ?[[-0.07321966 ?0.2106319 ?-0.03610832 -0.24573721 ?0.0772317 ] ? ? ??
?[ 0.16950853 ?0.26579739 ?0.09729188 -0.14343029 -0.06920762]
?[ 0.32397192 ?0.30090271 ?0.09127382 -0.35105316 ?0.11033099]
?[-0.05917753 -0.24072217 ?0.32698094 ?0.28084253 -0.08826479]
?[ 0.11935807 ?0.16349047 ?0.08625878 -0.02407222 ?0.09327984]]

import numpy as np

def solveByCramer(A, B): # # 利用Cramer公式求联立线性方程AX=B的解
    X = np.zeros(len(B))
    C = np.copy(A)
    for i in range(0, len(B)):
        for j in range(0, len(B)):
            C[j,i] = B[j]
            if i>0:
                C[j,i-1] = A[j,i-1]
        X[i] = np.linalg.det(C)/np.linalg.det(A)
    return X

# AX = B? ?
A = np.array([[2,-1,5,1], [3,2,2,-6], [1,3,3,-1], [5,-2,-3,3]])
B = np.array([[-3], [-32], [-47], [49]])
X = solveByCramer(A, B)
print("A = ", A)
print("B = ", B)
print("X = ", X)

🚩 运行结果:

A = ?[[ 2 -1 ?5 ?1]
?[ 3 ?2 ?2 -6]
?[ 1 ?3 ?3 -1]
?[ 5 -2 -3 ?3]]
B = ?[[ -3]
?[-32]
?[-47]
?[ 49]]
X = ?[ ?2. -12. ?-4. ? 1.]


参考文献

Introduction to Linear Algebra, International 4 th Edition by Gilbert Strang, Wellesley Cambridge Press.

百度百科[EB/OL]. []. https://baike.baidu.com/.

本篇完。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-20 18:23:44  更:2021-11-20 18:23:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 4:26:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码