线性代数中涉及到的matlab命令-第二章:矩阵及其运算

news2024/11/26 3:27:17

目录

1,矩阵定义

2,矩阵的运算

3,方阵的行列式和伴随矩阵 

4,矩阵的逆 

5,克莱默法则 

6,矩阵分块 


1,矩阵定义

矩阵与行列式的区别:

(1)形式上行列式是数表加两个竖线,矩阵是数表加大括号或中括号;

(2)行列式可计算得到一个值,矩阵不能;

(3)两个行列式相加与两个矩阵相加不同;

(4)行列式乘以一个数k,可将k乘到行列式任一行或任一列,矩阵乘以k,k与矩阵的每个元素相乘;

(5)行列式是n*n的数表,矩阵可以是m*n的数表;

行数和列数都为n的矩阵称为n阶矩阵,或叫n阶方阵;

只有一行的矩阵称为行矩阵(也叫行向量)在Matlab中的表示方法:

只有一列的矩阵称为列矩阵(也叫列向量)在Matlab中的表示方法:

两个矩阵A、B的行数相同,并且列数也相同时,称它们是同型矩阵,如果他们的对应元素也相同,则A = B;

使用size命令获得矩阵的行数和列数:

clc;

A = [2 4 6;
     3 5 7];

size(A)

使用isequal判断两个矩阵是否相等:

clc;

A = [2 4 6;
     3 5 7];

B = [2 4 6;
     3 5 7];

isequal(A,B)

单位矩阵:是一个方阵,主队角元素都为1,其他元素是0,一般用E表示

矩阵A乘以单位矩阵E结果还是矩阵A,并且左乘或右乘单位矩阵E一样:

clc;

A = [1 2 3;
     4 5 6;
     7 8 9];

E = eye(3); 

EA = E*A

AE = A*E

对角矩阵:是一个方阵,主对角元素不为0,其他元素均为0;

clc;

v = [1,2,3,4];

A = diag(v)

2,矩阵的运算

 矩阵的加法:

clc;

A = [1 1 1 1;
     2 2 2 2;
     3 3 3 3];

B = [0 0 0 0;
     1 1 1 1;
     2 2 2 2];

C = A + B

 数与矩阵相乘:

clc;

A = [1 1 1 1;
     2 2 2 2;
     3 3 3 3];

k = 2;

C = k*A

矩阵相乘:一个矩阵的列与另一个矩阵的行相同时,两个矩阵才能相乘;

clc;

A = [1 1 1;
     2 2 2];

B = [1 1;
     2 2;
     3 3];

C = A*B

D = B*A

 

可见矩阵A*B 不等于B*A;

 矩阵的幂:

以下例子为四个城市之间开通的航线情况,0代表两个城市间没有航线,1代表开通有航线,建立城市间是否有航线的模型即一个4阶矩阵A,用表示从i城市到j城市的航线数量,对A求2次幂可以得到城市i有几条双向航线(A的2次幂矩阵的对角线元素),以及从城市i经过一次中转到城市j的单线航线数量。

对角矩阵的幂,对角线上元素按幂运算:

clc;

v = [1,2,3];

A = diag(v)

A^3

矩阵的转置:

clc;

A = [1 1 1;
     2 2 2];

B = A'

 一个方阵和它的转置矩阵相加可以产生一个对称矩阵,以下程序可以产生一个对称阵:

clc;

A = rand(3);

B = A';

C= A+B

 

3,方阵的行列式和伴随矩阵 

clc;

A = rand(3);

a = det(A);

b = det(A');

abs(a-b) < eps
clc;

A = rand(3);

B = rand(3);

format short

a = det(A*B);
b = det(A)*det(B);

abs(a-b) < eps
clc;

A = [1 2 3;
     4 5 6;
     7 8 9];

k = 2;

B = k*A;

det(B) == (k^3)*det(A)

 

clc;


A = [1 4 7;
     3 5 8;
     2 6 8];

A_adj = adjoint(A)     %adjoint求A的伴随矩阵

C = A*A_adj;
D = A_adj*A;
E = eye(3);
EA = E*det(A);



A13 = A;

A21 = A;

A13(1,:) = [];

A13(:,3) = [];

A21(2,:) = [];

A21(:,1) = [];

D_A13 = (-1)^(1+3)*det(A13)   %A(1,3)的代数余子式

D_A21 = (-1)^(2+1)*det(A21)   %A(2,1)的代数余子式

 使用Matlab中的adjoint命令,A产生的伴随阵A_adj,A*A_adj = A_adj *A = E*det(A):

4,矩阵的逆 

只有方阵才有逆矩阵,矩阵可逆的充分必要条件是det(A)不等于0。

Matlab中可以使用inv(A)或A^(-1)计算A的逆矩阵,也可以使用上图中定理2计算逆矩阵:

clc;

A = rand(3);

B = inv(A)

C = A^(-1);

A_mul_B = A*B

B_mul_A = B*A;

A_adj = adjoint(A);

1/det(A)*A_adj           %根据定理2计算逆矩阵

 同样使用定理2可以反向计算矩阵A的伴随阵:

clc;

A = rand(3);

A_adj = adjoint(A)

det(A)*inv(A)          %定理2计算伴随阵

5,克莱默法则 

分别用逆矩阵、左除、克莱默法则计算下边例题,计算结果相同:

clc;

%以下程序用于求n元非齐次方程组的解, 方程组的形式为Ax = b,求x

A = [1,1,1,1;
     1,2,-1,4;
     2,-3,-1,-5;
     3,1,2,11];     %方程组系数矩阵

b = [5;-2;-2;0];     %方程组右端常数矩阵

A1 = A;
A1(:,1) = b;     

A2 = A;
A2(:,2) = b;

A3 = A;
A3(:,3) = b;

A4 = A;
A4(:,4) = b;

if det(A) ~= 0                    %判断方程组是否有解

%%三种求方程组解的形式

  x = inv(A)*b                    %1,用逆矩阵的方式求方程组的解

  x = A\b                         %2,用左除的方式求方程组的解

  x1 = det(A1)/det(A)             %3,用克莱默法则求方程组的解
  x2 = det(A2)/det(A)
  x3 = det(A3)/det(A)
  x4 = det(A4)/det(A)

else
    disp("det(A) = 0,方程组无解");
end

6,矩阵分块 

使用下边Matlab命令运算得到逆矩阵:

clc;

A = [3 0 0 ;
     0 2 4 ;
     0 3 1 ];

C = mat2cell(A,[1,2],[1,2]);      %mat2cell函数将原矩阵分块为四个cell,行数分别为1和2行,列数分别为1列和2列

C1 = C{1};                       %将cell转化为矩阵
C2 = C{2};
C3 = C{3};
C4 = C{4};

inv_A = inv(A)              %使用inv命令直接计算逆矩阵

inv_C1 = inv(C1);           %对分块后的非0矩阵求逆矩阵
inv_C4 = inv(C4);

inv_C = [inv_C1,C3;
         C2,inv_C4]        %对原矩阵分块后对非0矩阵分别求逆矩阵后再组合在一起

运行结果:

矩阵分块后转置:

clc;

A = randi([0,10],3,4)           %产生一个3行4列从0-10的随机数元素的矩阵

A_T = A'

C = mat2cell(A,[1,2],[2,2]);      %mat2cell函数将原矩阵分块为四个cell,行数分别为1和2行,列数分别为2列和2列

C1 = C{1,1};                       %将cell转化为矩阵
C2 = C{1,2};
C3 = C{2,1};
C4 = C{2,2};

C1 = C1';
C2 = C2';
C3 = C3';
C4 = C4';

C_T = [C1,C3;
       C2,C4]

 运行结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1089312.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

贴片电容材质的区别与电容的主要作用

一、贴片电容材质NPO、COG、X7R、X5R、Y5V、Z5U区别 主要是介质材料不同&#xff0c;不同介质种类由于它的主要极化类型不一样&#xff0c;其对电场变化的响应速度和极化率也不一样。在相同的体积下的容量就不同&#xff0c;随之带来的电容器介质的损耗、容量的稳定性也就不同…

Vue2知识总结

vue2复习回顾 vue基础 想让vue工作&#xff0c;就必须创建一个vue实例&#xff0c;并且传入一个配置对象 【el data 】 <!-- 准备好一个容器 --><div id"demo"><h1>Hello&#xff0c;{{name.toUpperCase()}}&#xff0c;{{address}}</h1>…

天猫商品品牌数据采集接口,天猫商品详情数据接口,天猫API接口

天猫商品品牌数据采集方法如下&#xff1a; 打开天猫&#xff0c;进入任意一个品牌的商品页面。点击浏览器右上角的“选项”按钮&#xff0c;选择“检查元素”或使用快捷键CtrlShiftI&#xff08;Windows&#xff09;或CmdOptionI&#xff08;Mac&#xff09;打开开发者工具。…

Spring是什么?为什么要使用Spring?

目录 前言 一、Spring是什么&#xff1f; 1.1 轻量级 1.2 JavaEE的解决方案 二、为什么要使用Spring 2.1 传统方式完成业务逻辑 2.2 使用Spring模式完成业务逻辑 三、为什么使用Spring&#xff1f; 前言 本文主要介绍Spring是什么&#xff0c;并且解释为何要去使用Spring&…

【Python 零基础入门】 Numpy

【Python 零基础入门】第六课 Numpy 概述什么是 Numpy?Numpy 与 Python 数组的区别并发 vs 并行单线程 vs 多线程GILNumpy 在数据科学中的重要性 Numpy 安装Anaconda导包 ndarraynp.array 创建数组属性np.zeros 创建np.ones 创建 数组的切片和索引基本索引切片操作数组运算 常…

TypeScript React(上)

目录 扩展学习资料 TypeScript设计原则 TypeScript基础 语法基础 变量声明 JavaScript声明变量 TypeScript声明变量 示例 接口 (标准类型-Interface) 类型别名-Type 接口 VS 类型别名 类型断言:欺骗TS&#xff0c;肯定数据符合结构 泛型、<大写字母> 扩展学习…

Vulnhub系列靶机---Raven2

文章目录 Raven2 渗透测试信息收集提权UDF脚本MySQL提权SUID提权 Raven2 渗透测试 信息收集 查看存活主机 arp-scan -l 找到目标主机。 扫描目标主机上的端口、状态、服务类型、版本信息 nmap -A 192.168.160.47目标开放了 22、80、111 端口 访问一下80端口&#xff0c;并…

VSCode 快速移动光标至行尾

最近在用vscode进行C编程&#xff0c;经常需要把光标跳到行尾去添加符号。 手动到行尾太麻烦了。 一种快捷方式是&#xff1a;用键盘上的“END”快捷键。 但是用这个键也不是很方便&#xff0c;因为“end”键离主键盘区太远。 另一种便捷的方式是&#xff1a;给vscode设置自定义…

分权分域有啥内容?

目前的系统有什么问题&#xff1f; 现在我们的系统越来越庞大&#xff0c;可是每一个人进来的查看到的内容完全一样&#xff0c;没有办法灵活的根据不同用户展示不同的数据 例如我们有一个系统&#xff0c;期望不同权限的用户可以看到不同类型的页面&#xff0c;同一个页面不…

计算机毕业设计选什么题目好?springboot 高校就业管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

供应链 | 零售商-供应商柔性承诺契约:一种鲁棒优化方法 (一)

论文解读&#xff1a;毕鑫宇 作者&#xff1a;Aharon Ben-Tal, Boaz Golany, Arkadi Nemirovski, Jean-Philippe Vial 引用&#xff1a;Ben-Tal, A., Golany, B. , Nemirovski, A., & Vial, J. P… (2005). Retailer-supplier flexible commitments contracts: a robust op…

内存空间的分配与回收之连续分配管理方式

1.连续分配管理方式 连续分配:指为用户进程分配的必须是一个连续的内存空间。 1.单一连续分配 在单一连续分配方式中&#xff0c;内存被分为系统区和用户区。系统区通常位于内存的低地址部分&#xff0c;用于存放操作系统相关数据;用户区用于存放用户进程相关数据。内存中只…

十六、 代码校验(3)

本章概要 测试驱动开发 测试驱动 vs 测试优先 日志 日志信息日志等级 测试驱动开发 之所以可以有测试驱动开发&#xff08;TDD&#xff09;这种开发方式&#xff0c;是因为如果你在设计和编写代码时考虑到了测试&#xff0c;那么你不仅可以写出可测试性更好的代码&#xff…

计算机导论实验——Linux基础入门

使用Xshell登录 Linux 主机 linux命令&#xff1a; cd&#xff1a;去哪里 pwd&#xff1a;在哪里 ls&#xff1a;查看当前有什么文件 mkdir&#xff1a;创建新目录 cp&#xff1a;复制 cat&#xff1a;连接或显示文件 rm&#xff1a;删除 mv&#xff1a;用于移动或重命名文件…

B站视频“多模态大模型,科大讯飞前NLP专家串讲”记录

文章目录 多模态&#xff1a;对齐 -- align迁移学习和zero-shotClipBlip 多模态&#xff1a; 图片、文字、视频、语音等不同的表征。 表示信息的方式有多种&#xff0c;但是不同的表示方式携带的信息不完全相同。 对齐 – align 如第一个图中&#xff0c;文字内容的描述和图…

关于一篇什么是JWT的原理与实际应用

目录 一.介绍 1.1.什么是JWT 二.结构 三.Jwt的工具类的使用 3.1. 依赖 3.2.工具类 3.3.过滤器 3.4.控制器 3.5.配置 3.6. 测试类 用于生成JWT 解析Jwt 复制jwt&#xff0c;并延时30分钟 测试JWT的有效时间 测试过期JWT的解析 四.应用 今天就到这了&#xff0c;希…

基于SpringBoot的网上订餐系统

基于SpringBoot的网上订餐系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色&#xff1a;用户、管理员管理员&#xff1a;登录、个人中心、会员管理、…

【Unity】【VR】详解Oculus Integration输入

【背景】 以下内容适用于Oculus Integration开发VR场景,也就是OVR打头的Scripts,不适用于OpenXR开发场景,也就是XR打头Scripts。 【详解】 OVR的Input相对比较容易获取。重点在于区分不同动作机制的细节效果。 OVR Input的按键存在Button和RawButton两个系列 RawButton…

MATLAB神经网络和优化算法

文章目录 1. matlab感知器神经网络初步学习2 使用建立好的神经网络进行分类程序3 线性神经网络预测程序4 BP神经网络信号拟合程序 1. matlab感知器神经网络初步学习 %% 学习目标&#xff1a;从学习第一个最简单的神经网络案例开启学习之路 %% 感知器神经网络 用于点的分类…

orgChart.js组织架构图

OrgChart.js是什么&#xff1f; 基于ES6的组织结构图插件。 特征 支持本地数据和远程数据&#xff08;JSON&#xff09;。 基于CSS3过渡的平滑扩展/折叠效果。 将图表对齐为4个方向。 允许用户通过拖放节点更改组织结构。 允许用户动态编辑组织图并将最终层次结构保存为…