线性代数之线性方程组

ops/2024/9/23 8:14:48/

目录

线性方程组

1. 解的个数

齐次线性方程组

齐次线性方程组

2. 齐次线性方程组的解

3. 非齐次线性方程组的解

4. 使用 Python 和 NumPy 求解线性方程组

示例代码

齐次线性方程组

齐次线性方程组

示例结果

齐次线性方程组

齐次线性方程组


线性方程组

1. 解的个数
  • 齐次线性方程组
    • 只有零解:当系数矩阵的秩等于未知量的个数 𝑛n 时,即 rank(𝐴)=𝑛rank(A)=n。
    • 有非零解:当系数矩阵的秩小于未知量的个数 𝑛n 时,即 rank(𝐴)<𝑛rank(A)<n。
  • 齐次线性方程组
    • 无解:当增广矩阵的秩不等于系数矩阵的秩,即 rank([𝐴∣𝑏])≠rank(𝐴)rank([A∣b])=rank(A)。
    • 有解:
      • 唯一解:当增广矩阵的秩等于系数矩阵的秩且等于未知量的个数 𝑛n,即 rank([𝐴∣𝑏])=rank(𝐴)=𝑛rank([A∣b])=rank(A)=n。
      • 无穷多解:当增广矩阵的秩等于系数矩阵的秩但小于未知量的个数 𝑛n,即 rank([𝐴∣𝑏])=rank(𝐴)<𝑛rank([A∣b])=rank(A)<n。
2. 齐次线性方程组的解
  • 基础解系齐次线性方程组的基础解系是指一组线性无关的解向量,使得所有解都能表示为这些向量的线性组合。
  • 求解步骤
    1. 化简系数矩阵:将系数矩阵 𝐴A 化简为行阶梯形或行最简形。
    2. 列出方程:根据化简后的矩阵列出相应的方程。
    3. 确定自由未知量:找出方程组中的自由未知量(即那些不是其他未知量表达式的未知量)。
    4. 令自由未知量为线性无关组:设自由未知量为任意实数,并保证它们之间线性无关。
    5. 得到基础解系:利用自由未知量表达出其他未知量的解,从而得到基础解系。
    6. 写出一般解:将基础解系的解向量按自由未知量的不同取值线性组合,得到方程组的一般解。
3. 非齐次线性方程组的解
  • 解的结构:非齐次线性方程组的解集可以表示为一个特解加上齐次方程组的所有解。
  • 求解步骤
    1. 求特解:通过数值方法或符号计算求出一个特解 𝑥𝑝xp​。
    2. 求齐次方程组的基础解系:求出对应的齐次方程组 𝐴𝑥=0Ax=0 的基础解系。
    3. 写出一般解:一般解可以表示为 𝑥=𝑥𝑝+𝑐1𝑣1+𝑐2𝑣2+…+𝑐𝑘𝑣𝑘x=xp​+c1​v1​+c2​v2​+…+ck​vk​,其中 𝑣𝑖vi​ 是齐次方程组的基础解系中的解向量。
4. 使用 Python 和 NumPy 求解线性方程组
  • 齐次线性方程组

    • 通常用于求解特征值问题,例如求解特征向量。
    • 使用 numpy.linalg.eig() 函数求解特征值和特征向量。
  • 齐次线性方程组

    • 用于确定未知量的值。
    • 使用 numpy.linalg.solve() 函数求解未知量。

下面分别给出齐次和非齐次线性方程组的例子,我们将使用 Python 和 NumPy 来求解这些例子。

示例代码

齐次线性方程组
import numpy as np# 定义系数矩阵 A
A = np.array([[3, 1], [1, 3]])# 使用 numpy.linalg.eig() 求解特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(A)print("Eigenvalues:", eigenvalues)
print("Eigenvectors:", eigenvectors)
齐次线性方程组
import numpy as np# 定义系数矩阵 A 和右侧向量 b
A = np.array([[2, -1, 0], [-1, 2, -1], [0, -1, 2]])
b = np.array([1, 0, -1])
6
# 使用 numpy.linalg.solve() 求解未知量
x = np.linalg.solve(A, b)print("Solution x:", x)

调用过程

import numpy as np
# 齐次线性方程组示例
# 定义系数矩阵 A
A_homogeneous = np.array([[3, 1], [1, 3]])# 使用 numpy.linalg.eig() 求解特征值和特征向量
eigenvalues_homogeneous, eigenvectors_homogeneous = np.linalg.eig(A_homogeneous)# 非齐次线性方程组示例
# 定义系数矩阵 A 和右侧向量 b
A_inhomogeneous = np.array([[2, -1, 0], [-1, 2, -1], [0, -1, 2]])
b_inhomogeneous = np.array([1, 0, -1])
# 使用 numpy.linalg.solve() 求解未知量
x_inhomogeneous = np.linalg.solve(A_inhomogeneous, b_inhomogeneous)
eigenvalues_homogeneous, eigenvectors_homogeneous, x_inhomogeneous

调用结果

 
(array([4., 2.]),
array([[ 0.70710678, -0.70710678],[ 0.70710678,  0.70710678]]),
array([ 0.5,  0. , -0.5]))

示例结果

齐次线性方程组
  • 特征值:
     
    Eigenvalues: [4. 2.]
  • 特征向量:
     
    Eigenvectors: [[ 0.70710678 -0.70710678][ 0.70710678  0.70710678]]
齐次线性方程组
  • :
    Solution x: [ 0.5  0.  -0.5]

从上面的结果可以看出:

  • 对于齐次线性方程组,我们得到了两个特征值 4 和 2,以及对应的特征向量。特征向量代表了齐次方程组的解向量。
  • 对于非齐次线性方程组,我们得到了未知量 𝑥x 的解为 [0.5,0,−0.5][0.5,0,−0.5]。

http://www.ppmy.cn/ops/103966.html

相关文章

高职院校大数据分析与可视化微服务架构实训室解决方案

一、前言 随着信息技术的飞速发展&#xff0c;大数据已成为推动社会进步与产业升级的关键力量。为了培养适应未来市场需求的高素质技术技能型人才&#xff0c;高职院校纷纷加大对大数据分析与可视化技术的教学投入。唯众&#xff0c;作为国内领先的职业教育解决方案提供商&…

PyTorch 2.4 import 报错问题解决

最近在新环境中安装了PyTorch 2.4版本&#xff0c;简单测试了import,发现直接报错&#xff1a; import torchA module that was compiled using NumPy 1.x cannot be run in NumPy 2.1.0 as it may crash. To support both 1.x and 2.x versions of NumPy, modules must be co…

【王树森】BERT:预训练Transformer模型(个人向笔记)

前言 BERT&#xff1a;Bidirectional Encoder Representations from TransformerBERT是用来预训练Transformer模型的encoder的本节课只讲述主要思想BERT用两个主要思想来训练Transformer的encoder网络&#xff1a;①随机遮挡单词&#xff0c;让encoder根据上下文来预测被遮挡的…

<Rust>egui学习之小部件(八):如何在窗口中添加滑动条slider部件?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析&#xff0c;主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统&#xff1a;windows 平台&#xff1a;visual studio code 语言&#xff1a;rust 库&#xff1a;egui、eframe 概述 本文是本专栏的第八篇博…

libtorch---day03[自定义导数]

参考pytorch。 背景 希望使用勒让德多项式拟合一个周期内的正弦函数。 真值&#xff1a; y s i n ( x ) , x ∈ [ − π , π ] ysin(x),x\in\left[-\pi,\pi\right] ysin(x),x∈[−π,π] torch::Tensor x torch::linspace(-M_PI, M_PI, 2000, torch::kFloat); torch::Ten…

Leetcode面试经典150题-82.删除排序链表中的重复元素II前序-83.删除排序链表中的重复元素

解法都在代码里&#xff0c;不懂就留言或者私信&#xff0c;比第一题稍微难点 题目比较简单&#xff0c;真实面试中82和83都出现过&#xff0c;83偏多&#xff0c;先有个基础&#xff0c;马上分析82 /*** Definition for singly-linked list.* public class ListNode {* …

【王树森】Few-Shot Learning小样本学习 (1/3): 基本概念(个人向笔记)

前言 下面是犰狳和穿山甲的一些图片。现在要你判断右边给定的图片是犰狳和穿山甲。我相信应该不知道犰狳和穿山甲长啥样&#xff0c;但是在看了左边的 Support Set 之后&#xff0c;你就有能力从两者之间辨别出来。既然人可以通过这四张图片分辨出犰狳和穿山甲。那么计算机能不…

鸿蒙OS试题(6)

下面持续交付&持续部署描述哪个是正确的: A.持续交付(CD,Continuous Delivery):指的是&#xff0c;频繁的将软件的新版本&#xff0c;交付给质量团队或者用户&#xff0c;以供评审。如果评审通过&#xff0c;代码就进入生产阶段。它强调的是&#xff0c;不管怎么更新&…