admin 管理员组

文章数量: 1184232


2024年4月22日发(作者:shell退出命令)

MATLAB

学习笔记

一.符号计算

1. MATLAB符号计算的基本用途及意义

定义:用一系列恒等式,数学定理,通过演绎和推理,力求获得精准的

解析结果。

通俗理解:1) matlab符号计算就是为了解决离散化数值计算

所产生的精度误差问题,用符号计算可以产生精准符号数字,或16位,32位

精度的近似符号数字。例如解决以下一类问题:

其中3^(1/2)/2是由数学推理等解析出的精确的符号数字,而0.866

则是由离散化数值计算得出近似的双精度浮点数。

2),利用符号计算可以进行对数学公式及某些代数方程的求解。

【例】用符号计算验证三角等式

sin

1

cos

2

cos

1

sin

2

sin(

1

2

)

syms fai1 fai2

y=simple(sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2))

y =

sin(fai1-fai2)

2. 符号计算基本命令

Sym(Num)

syms a b c

symvar(expresstion) 列出表达式所有的符号变量

symvar(expression ,n)

列出表达式中n个认定的自由变量

3. 对符号变量的限定性假设

assume(expr, set) set : ‘integer’整数集

‘rational’ 有理数集 ‘real’实数集

a=sym(‘a’,res)

syms a res res 可以为‘positive’’real’

clear x 清除内存中变量

syms x clear

撤销MuPAD内存中对变量x的任何假设

显示符号变量的限定性假设

重启MupPAD引擎,清空MuPAD内存中的所有内容

assumptions(x)

reset(symengine)

4. 符号矩阵的相关命令

clear all

A=sym('a%d%d',[3,3]) %创建带下标的符号矩阵

DA=det(A) %求行列式

IA=inv(A) %求逆矩阵

SIA=subexpr(IA,'w') %采用“子表达式置换”简化

expm(A)

diag(A)

rank(A)

%矩阵指数

%根据向量构成对角阵,或取对角元

%矩阵的秩

%矩阵的维度

%矩阵的下三角式

%矩阵的上三角式

ndims(A)

tril(A)

triu(A)

5. 极限,导数和积分的符号计算

limit(f ,x, a, ‘right’)

limit(f, x, a , ‘left’)

dfdxn=diff(f, x , n)

int(f , x , a, b )

%求右极限

%求左极限

%求n阶导数

%求定积分

6. 符号计算的可视化

ezplot 用于符号函数画二维图形的简洁命令

ezplot3 画三维图形的简洁命令

vpa(x,n)

【例】

根据符号表达式 x 显示n 位有效数字的数值型结果

二.数组运算及数组化编程

1.数组的创建

x=a: inc :b 线性等距行数组

x=linspace(a, b,n)

x=logspace(a,b,n) 对数等距行数组

magic 产生魔方数组(二维)

eye 产生单位数组(二维)

randn 产生正态分布随机数组

random 生成各种分布随机数组

ones 产生全1数组

zeros 产生全0数组

2.数组操作函数

rot90 数组逆时针旋转90度

repmat 按指定的行列铺放模块数组

reshape 元素总数不变改变行、列

fliplr 左右镜像交换

flipud 上下镜像交换

3.二维数组元素的寻访

(1)按址寻访

A(r , c) 行列坐标寻访

A(r , :) 按行寻访

A(: , c) 按列寻访

A(:) 单序号寻访

(2)按条件寻访

4.数组运算

加 + 减 -

数组乘 .* 数组右除 ./ 数组左除 .

数组幂 .^

5.数组化编程

(1)“标量循环+条件分支”法

(2) 数组混合运算

提示:利用数组创建分段函数,借助meshgrid 创建[X,Y]格点。

三.数值计算

在MATLAB数值计算中,没有专门的求极限和求导命令,但具有求差分的命令:

dx=diff(x) 求差分

FX=gradient(F) 求一元函数梯度

[FX,FY]=gradient(F)

运用数值计算求极限时,应确保经过理论验证,否则不能借助数值法求极限。

sx=sum(X)

沿列方向求和

沿列方向累计求和

采用梯形法沿列方向求y关于x的积分

采用梯形法沿列方向求y关于x的累计积分

求二元函数梯度

scs=cumsum(X)

St=trapz(x,y)

Sct=cumtrapz(x,y)

q=integral(fun,xmin,xmax)

求fun函数在此区间精确积分

四. 数据的和函数的可视化

(1)直角坐标系二维图形

(2)极坐标系二维图形

(3)直方图

(4)三维曲线

(5)三维着色曲面图

五. M文件和函数句柄

创建矩阵时进行空间预配可以提高运行速度。

采用数组化编程可以极大提高运行速度。

1.函数句柄的创建和观察

(1)创建句柄

hm=@magic %为magic函数创建函数句柄

(2)类型判别

class(hm)

isa(hm,’function handle’)

ans=

function_handle

ans=

1

(3)借助functions观察内涵

ff=functions(hm)

ff =

function: 'magic'

type: 'simple'

file: 'F:MATLABtoolboxmatlabelmatmagic.m'

(4)句柄调用方法之一

>> M1=hm(3)

M1 =

8 1 6

3 5 7

4 9 2

注意:创建函数句柄前,一定要确认原函数在当前视野内,否则创建的句柄是

无效的。

2.例题 .

求级数1+0.2^1+0.2^2+…+0.2^1000000的值

(1)方法一:for循环

(2)方法二:while循环

(3)方法三:数值计算


本文标签: 数组 符号 函数 创建 符号计算