首页 > 其他分享 >matlab数值计算

matlab数值计算

时间:2022-09-07 21:57:04浏览次数:70  
标签:函数 多项式 元素 矩阵 数值 matlab 计算 向量

matlab数值计算

  • 创建矩阵的方法规则:

    • 矩阵元素必须用[ ]扩起来 如a = [1,2,3]
    • 矩阵元素必须用逗号或空格分隔 如 b = [4,5,6]
    • 在括号[ ]内矩阵的行与行之间必须用逗号分隔如v = [1,2,3;4,5,6]
  • 矩阵元素

    • 矩阵元素可以是数,也可以是表达式例如a = [1,2,3;4,3,4] 、x = [2 pi/2 ;sqrt(3) 3+4]
  • 符号的作用

    1、逗号和分号的作用
    	* 逗号和分号可以作为指令间的分隔符,matlab允许多条语句在同一行出现
        *分号如果出现在指令后,屏幕上将不显示结果 
        *当一个指令太长时可以用...续行
    2、冒号的作用
    	*用于生成等间距的向量,默认间隔是1,你可以自定义向量的间隔例:a = [1:0.1:4] 结果是长度为40间隔为0.1的向量
        
        * 用于选出矩阵指定行、列及元素
            例如:a = [1 2 3;4 5 6;7 8 9]	
            a(1,:)表示取出第一行所有元素
            a(:,2)表示取出第二列所有元素
            a(:)表示取出所有的元素,并组织成一个列向量
        	a(2:3)表示将a所有元素排列成列向量取2、3两元素
        *用于表示一定的范围
        	a = [1 2 3;4 5 6;7 8 9] a(1:2,3)表示取出一到二行的第三个元素
        
        *生成等差数列
        	a = 1:2:9	%% 1 3 5 7 9
        
        *循环语句
        sum1 = 0
        for i = 1:0.1:5
        	sum1 += i
        	end
    

    用matlab函数创建矩阵

    * 空矩阵a = [	]
    * rand()---随机矩阵(元素0~1)
    	rand(n)生成一个nxn的随机矩阵
    * eye()---单位矩阵
    * zeros()---全部元素都为0的矩阵
    * ones()---全部元素都为1的矩阵
    

    matlab 严格区分大小写 matlab 函数名必须小写


    矩阵的修改

    1、通过指令修改
    	a = [1,2,3;4,5,6;7,8,9]
    	a(3,3) = 10 
    

    数据的保存与获取

    • save ——将工作空间的所有变量存到文件

    • save date——将工作空间中的所有变量存到文件中

    • save date a b ——将工作空间中的a 和 b 变量存到文件中

    • 再次需要使用时用load指令调用已经生成的mat文件、

      注意:save 和 load配合使用 有函数和命令方式调用 函数方式必须带括号和引号

image-20220901161704015

矩阵的运算

1、矩阵加减法的运算法则
	* 相加减的矩阵必须是相同大小的(允许其一时标量:数字) 且为对应位置元素大小相加减
	
2、矩阵的乘法运算
	* A 矩阵的列必须和B矩阵的行数相同
	* 标量(数字)可以与任何矩阵相乘
3、矩阵的其他运算
	inv()——矩阵求逆
	det()——行列式的值
	eig()——矩阵的特征值
	diag(x,n)——对角矩阵(取对角矩阵上某个对角上的数据)x是要去的矩阵对象,n是第几条对角线
	()’——矩阵转置
	sqrt()——矩阵开方 相当与每个元素开方
4、矩阵的特殊操作
	* 矩阵的变维 a = [1:12];b = reshape(a,3,4)	c =zeros(3,4);c(:)  = a(:)
	
	* 矩阵的变向	
    rot90:旋转(默认逆时针)	
    rot90(x,n),其中x表示一个矩阵,n为正整数,默认功能:将矩阵x逆时针旋转90*n度,形成新矩阵,x本身不变。
	fliplr:上翻	
	flipud:下翻
	
	
	
	*矩阵的抽取	diag:抽取主对角线;	tril:抽取主下三角;	triu:抽取主上三角
	
	* 矩阵的扩展
	
	

矩阵运算符

* 数组加减(.+	.- ) 
	对应元素相加减(与矩阵加减等效)

*数组乘除(.*  ./   .\) 
	.\  表示和面的除以前面的
	使用上述运算符必须保证两个数组的大小相当

* 矩阵除(\,/)运算

	\左除  /右除
	A\B 为方程AX = B的解
     B/A 为方程XA = B的解(小技巧,A在前面方程中就在前面、在后面方程中就在后面)
     A\B = inv(A)*B
     而B/A = B*inv(A)
     B/A = (A’\B’)’
	
	
* 数组乘方.^ 
	对应元素相乘方
a =
     1     1     1
     2     2     2
     3     3     3
b = a .^ a
     1     1     1
     4     4     4
    27    27    27
    
* 矩阵的次幂^
a =
     1     2     3
     4     5     6
     7     8     8
a^2 =
    30    36    39
    66    81    90
    95   118   133

矩阵标识和子矩阵

image-20220901191635887

B =
    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9
 B1 = B(1:2,[1 3 5])
    17     1    15
    23     7    16 
B2 = B([3 1],:)
    4     6    13    20    22
    17    24     1     8    15
B([1 3],[2 4]) = zeros(2)%替换B中指定位置的数值
    17     0     1     0    15
    23     5     7    14    16
     4     0    13     0    22
    10    12    19    21     3
    11    18    25     2     9

matlab多项式

matlab 把多项式表达成一个行向量 其中的元素是按照降幂的方式排列的

f(x) = anxn + an-1xn-1 + an-2xn-2 + ……. a1x1 + a0x0

可用行向量p = [an an-1 an-2 an-3…….. a1 a0] 表示

poly——产生特征多项式系数向量

  • 特征多项式一定是n+1维度的
  • 特征多项式第一个元素一定是1

image-20220901201814949

特殊的应用矩阵

  • 约当阵——将状态空间模型转换为约当标准型

    [V,J] = jordan(a) J为约当标准型,V为相似变换阵

    语法:jordan()

  • 伴随矩阵——将状态空间模型转换为可控标准型

    语法:compan()

常用的矩阵函数

* det(A)	方阵A的行列式
* eig(A)	方阵A的特征值和特征向量
* rank(A)	矩阵A的秩
* trace(A)	矩阵A的迹
* expm(A)	矩阵的指数e^A
* sqrtm(A)	矩阵的平方根
* funm(A,'fun') 求一般的方阵函数

image-20220901194456453

a =
    0.1000    0.2000    0.3000
    0.4000    0.5000    0.6000
    0.7000    0.8000    0.9000
funm(a,'sin')
    0.0315    0.1157    0.1999
    0.2446    0.3091    0.3735
    0.4577    0.5024    0.5471


  • conv 、convs多项式相乘

image-20220901204416137

  • deconv 多项式相除

image-20220901204500983

  • 有理多项式求导

image-20220901221943912

  • 多项式的展开与组合

    image-20220901222456114

矩阵的加减法

  • 只有大小相同的两个矩阵才能相加

    function[poly] = polyadd(poly1,poly2)
    if length(poly1) < length(poly2)
            short = poly1;
            long = poly2;
    else
            short = poly2;
            long = poly1;
    end
    mz = length(long) - length(short);
    if mz > 0
        poly = [zeros(1,mz),short] + long;%将前后两个矩阵大小变成一样
    else 
        poly = long + short;
    end
    

求多项式在某点的值polyval

image-20220902104014924

求区间均匀分布的函数 linspace(左区间,右区间,均匀分布的个数)

image-20220902104551587

多项式求根roots()函数

image-20220902105343143

将特征向量表示成多项式 “poly2str(特征多项式,‘自变量’)”

>> a = [1 2 3 4];
>> b = poly2str(a,'x')
b =
    '   x^3 + 2 x^2 + 3 x + 4'

将特征向量表示成多项式 “poly2sym(特征多项式)”

a = 1     2     3     4
>> c = poly2sym(a) %默认自变量为x
c =
x^3 + 2*x^2 + 3*x + 4

利用多项式的根构造多项式poly(填写根)

image-20220902112333762

函数总结

image-20220902120334277

多项式差值函数(interpl1)

yi = interp1(x,y,xi,method) 其中想x和y是原已知数据,xi是需要差值的位置点,yi是差值点的值。 

method是差值方法可以设置的差值方法有:
	 *nearest(寻找最近数据节点):执行速度最快,输送出结果为直角转折
	 * linear(线性差值):默认,在样本点上斜率变化很大
	 * spline(样条差值):最耗时,但输出结果最平滑
	 * cubic(三次方程式差值):也比较耗时,输出结果与spline接近

多项式拟合函数polyfit

调用方法有两种
	* p = polyfit(x,y,n)
	* [p s] = polyfit(x,y,n)
	其中x,y为已知的数据组,n为要拟合的多项式的阶次,向量p返回要拟合多项式的系数相量,向量s为调用函数polyfit或得的错误预估计值

最小二乘法拟合

image-20220902161333032

image-20220902161353493

image-20220902161426037

数值积分

  • 计算两个相邻点的差值函数diff(对多项式求导)
    • diff(x)——返回x对预设独立变量的一次微分值
    • diff(x)——返回x对独立变量t 的一次微分值
    • diff(x,n)——返回x对预设变量的n次微分值
    • diff(x,’t‘,n)——返回x对独立变量t 的n 次微分值

subplot函数

使用方法:subplot(m,n,p)或者subplot(m n p)。

subplot是将多个图画到一个平面上的工具。其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果m=2就是表示2行图。p表示图所在的位置,p=1表示从左到右从上到下的第一个位置。

牛顿-科茨系列积分公式

  • cumsum()函数

    * cumsum是matlab中一个函数,通常用于计算一个数组各行的累加值,函数用法是B = cumsum(A,dim),或B = cumsum(A)。
    
    如果A是一个向量, cumsum(A) 返回一个向量,该向量中第m行的元素是A中第1行到第m行的所有元素累加和;
    
    如果A是一个矩阵, cumsum(A) 返回一个和A同行同列的矩阵,矩阵中第m行第n列元素是A中第1行到第m行的所有第n列元素的累加和;
    
    

    image-20220902204218529

    • trapz() 梯形积分

      image-20220902204236881

    • quad() 辛普森积分

      image-20220902204347850

      image-20220902210257657

    • quad8() 科茨积分——高精度积分 注意式中的.*、./

      image-20220902205929219

      image-20220902210524715

线性方程组的数值解

  • 自接法

image-20220902211252844

image-20220902211020880

  • 迭代法
    • jacobi雅可比迭代法
    • Gauss-seidel 迭代法
    • SOR(超松弛)迭代法

稀疏矩阵

  • sparse 创建稀疏矩阵

    image-20220902213705046

image-20220902213807632

image-20220902213816655

  • 以spdiags创建对角稀疏矩阵

常微分方程的数值解

  • 欧拉法

标签:函数,多项式,元素,矩阵,数值,matlab,计算,向量
From: https://www.cnblogs.com/lgb114/p/16667403.html

相关文章

  • 计算机发展历史
    计算机发展历史Author:ChanceZhangContact:[email protected]:0.0.1目录计算机发展历史前三代计算机(1946-1970)第四代计算机1970-19808位和16位计......
  • 第一章、计算机网络体系结构
    1计算机网络的概念、功能、组成和分类1.1网络的概念计算机网络:将分散的、具有独立功能的计算机系统,通过通信设备(交换机、路由器)和线路连接起来,由功能完善的软件实现......
  • 计算机科学速成课第四课:二进制
    1、二进制的原理,存储单元MB/GB/TB解释0计算机中的二进制表示:单个数字1或0,1位二进制数字命名为位(bit),也称1比特。 1字节(byte)的概念:1byte=8bit,即1byte代......
  • 从图灵机到计算机
    从图灵机到计算机图灵机给出了一个可实现的通用计算机模型,它能模拟现代计算机的所有计算行为,为了纪念这一伟大构想,美国计算机协会(ACM)设立计算机奖项图灵奖,旨在奖励对计算......
  • 计算机的理论模型——图灵机
    1.图灵机的由来图灵机由英国数学家阿兰·麦席森·图灵(AlanMathisonTuring)于1936年提出的一种抽象的计算模型,即一切可计算问题都可以由一个虚拟的机器代替人类进行计算......
  • matlab categorical
    categorical>>T=table({'chorong';'bomi';'hayong';'ty'},{'m';'m';'w';'m'},...)[32;30;28;27],[134;356;768;356],logical([1;0;0;1]),.........
  • A/B实验背后的秘密:样本量计算
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 一、前言背景:AB实验具有一定前瞻性,统计性,科学性的特性。用好了就实现了在......
  • 【快应用】如何通过计算属性控制组件样式
    ​当某个组件的样式需要根据传入的变量进行动态变化,如果给组件设置不同的class样式进行切换,会比较繁琐,此时建议采用计算属性的方式。通过计算属性进行样式的计算得到返回......
  • 计算机硬件系统
    只有硬件系统而没有软件系统的计算机被称为“裸机”。计算机一般由控制器、运算器、存储器、输入设备和输出设备五个基本部分组成。 1.控制器(CU)基本功能:从内存中读取......
  • GANs的优化函数与完整损失函数计算
    生成对抗网络(GANs)近年来在人工智能领域,尤其是计算机视觉领域非常受欢迎。随着论文“GenerativeAdversarialNets”[1]的引入,这种强大生成策略出现了,许多研究和研究项目......