• 下方总结了一些Matlab数学运算的基本方法以应对不时之需。
  • 不按主次顺序,某些部分可能乱入,仅供参考。

变量和基本操作

%数值变量
a=200
b=0.033
c=-344

%矩阵变量
A=[1 2 3]
B=[1 2 3 4;2 3 4 5; 4 4 5 5;3 3 3 2]

%复数变量
C=2+3*i
D=10-sqrt(-1)

%字符串变量
E='Englishkkkkk'

a=3+4i  %复数的表示方法
b=complex(4,5)  %复数的表示方法

sqrt(-1) %根号
exp(4) %自然对数的底
pi %无理数pi

% 有;则不输出,反之显示结果
% 加减乘除开方+_*/^
% format 5位定点显示
% format short e 五位浮点显示
% 反三角函数在三角函数之前加a,如asin(0.5)
sqrt(20)
abs(-2)  %绝对值,取模
exp(2)  
log(3) %自然对数
log2(2) %以2为底的对数
log10(30)
round(2.555) %四舍五入到最近整数
fix(2.555) %直接舍弃小数到最近整数
rem(100,3) %求余
real(1+2i)  %复数的实部
image(1+2i)  %复数的虚部
conj(1+2i)   %共轭复数
rat(3.33) %实数化成分数

线性代数

A*B %矩阵相乘
A\B %矩阵左除
B/A %矩阵右除
det(A) %求行列式
inv(A)  (A)^(-1) %求矩阵的逆
A' %矩阵转置
rank(A)  %矩阵求秩

解方程

syms z
eq = abs(z-i)-abs(2.*z-1)
a=solve(eq,z)  %求解方程

解线性方程组:

A=[2,3;1,-1] %线性方程的系数
b=[4,1]  %线性方程的解
X=inv(A)*b'  %注意转置

求和 求积

a=1:5 %a的范围是1到5,间隔1
sum(a)  %将a求和
cumsum(a) 
prod(a) %将a相乘
cumprod(a)

级数

syms k   %定义k
f=k^3  %函数式
symsum(f,k,0,n-1) %函数式,未知数,范围

syms n k
f=(n^(1/n)-1)^2
vpa(symsum(f,n,1,10))  %将结果化为小数
syms n
syms f
a = 1;
f = k./(n.^2+k.^2);  %函数
lim_y=limit(symsum(f,a,n),n,0,'right')   %求级数的极限

展开泰勒级数:

syms x
f=1/x^2
taylor(f,4,x,2)
pretty(taylor(f,4,x,2))
%但是运行有误

求导

syms x   %定义变量
p=x^2+3*x-2;   %输入等式
diff(p,x)   %计算求导
syms x y
f=x^2 * sin(x+y)
f=diff(diff(f,x),y)  %求二阶偏导
subs(subs(f,x,pi/2),y,0)  %分别给xy赋值,得到结果

syms x y
f=x*y-exp(x)+exp(y)
dfx=diff(f,x)
dfy=diff(f,y)
dyx=-dfx/dfy %隐函数求导
pretty(dyx)

syms x y z
u=x^2+y^2+z^2
dux=diff(u,x)
duy=diff(u,y)
duz=diff(u,z)
dzx=-dux/duz  %隐函数求导
dzy=-duy/duz  %隐函数求导

syms x
f1=(1+4*x)^(1/x)
limit(f1,x,0)
limit(f1,x,inf)
limit(f1,x,-inf)
limit(f1,x,0,'right')
limit(f1,x,0,'left')
%f2=pretty(diff(f1))   %diff求导;pretty用书写的方式显示
f3=diff(f1,2)  %求2阶导

sn=subs(f3,x,200);  %函数求值
r=vpa(sn)

syms x y
z=x^3*y^2+sin(x*y);
dzx=diff(z,x)   %求偏导
dxyz=diff(dzx,y)
pretty(dxyz)
% 求解微分方程
dsolve('Dy = sqrt((1+y^2)/(1+x^2))','x')
syms k
simplify(asinh(0.5*(k-1/k)))   %将结果简化

梯度

syms x y z
f=x^2+y^2+z^2
s=jacobian(f)  %梯度
sx=subs(s,'x','1');
sy=subs(sx,'y','-1');
sz=subs(sy,'z','2');
g=vpa(sz)
syms x y z
f=x^2+y^2+z^2
s=jacobian(f)  %梯度
sx=subs(s,'x','1');
sy=subs(sx,'y','-1');
sz=subs(sy,'z','2');
g=vpa(sz)
a=pi/3;b=pi/4;c=pi/3;
L=g*[cos(a),cos(b),cos(c)]' %方向导数

因式分解

s=sym('x^2-2*x+1')
p=factor(s)  %因式分解

s=sym('(x^2-2*x+1)^4')
p=expand(s)   %展开

s1='x+3*y',s2='x^2+y^2-1'
[x,y]=solve(s1,s2,'x','y')

%超越方程的根
x=fzero('x-cos(x)^2',3)  %函数在3附近的根

[x,y]=fplot('x*sin(x)-1',[0,5])  %函数在0-5附近的根
plot(x,y)
grid on

画图象

y=[2 3 4 4 2 14 ]
plot(y)

x=-5:0.1:5
y=sin(x.^2)
plot(x,y),grid on

x=-5:0.1:5
y=[sin(x.^2);cos(x.^2)]
plot(x,y),grid on

t=0:pi/50:2*pi
x= 6*cos(t);
y= 8*sin(t);
plot(x,y),grid on
% 画三维图形
t=-8:.3:8
[x,y]=meshgrid(t)
r=sqrt(x.^2+y.^2)+eps
z=sin(r)./r
subplot(1,3,1),meshc(x,y,z)
title('meshc'),axis([-8 8  -8 8  -0.5 0.8])
subplot(1,3,2),meshz(x,y,z)
title('meshz'),axis([-8 8  -8 8  -0.5 0.8])
subplot(1,3,3),mesh(x,y,z)
title('mesh'),axis([-8 8  -8 8  -0.5 0.8])
syms n  %定义变量
n=[1:0.5:20]'  %指定自变量范围,精度0.5
p = (1./n).*exp(1./n)-log(1+1./n)  %注意加.
f = 3./(2.*n.^2)
[n p]  %列表table
plot(n,p,'g',n,f,'r')   %将两个函数用不同的颜色话在同一张图上

算阶乘

a=1
res=1
while a<=100
res=res*a
a=a+1
end

%算阶乘方法二
factorial(5)   %5的阶乘

矩阵操作

A=[3 -2;1 0]  %矩阵
I=[1 0;0 1]   %矩阵
n=5 
A^n   %矩阵相乘

a=[2 3 4 4 5;3 3 3 3 2]
ones(4)
zeros(4,5)
magic(4)
diag([1 3 4 5])
1:5
1:0.5:10
10:-0.7:2

%矩阵元素
A(4,5) %矩阵的第4行,第5列
A(:,3)  %第3列
A(3,:)  %第3行
A(:) A(5)  %生成列矩阵

初等变换法:

A=[3 4 5 ;3 4 5;3 5 43]
rref(A) %矩阵的初等变换

p=poly2str(poly(A),'x') %p是特征多项式
[V,D]=eig(A) %v是特征向量矩阵,d是特征值

求积分

syms x
y = (100.*x.^100)./(1+x)
k=int(y,x,0,1)  %求积分
ans =vpa(k)  %将结果转换为小数

syms a x 
y1=1/(a^2-x^2)
int(y1,x)  %有两个未知数
pretty(int(y1))  %将结果以自然书写的方式显示

syms x a
f =sqrt(x^2+a)
int(f,x,-2,2)
pretty(int(f,x,-2,2))

syms x a
f =sqrt(x^2+a)
int(f,x,-2,2) %求定积分
pretty(int(f,x,-2,2))

%计算广义积分
syms x
f=1/(x^4)
int(f,x,1,inf);

%计算二重积分
%%%%% m文件 单独保存
function z = ff(x,y)
z=x*y
%%%%% m文件 单独保存
ff=inline('x.^2+y','x','y')
dblquad(ff,0,4,0,1)

%计算二重积分的第二种方法,即积分两次
syms x
f =(x+y)^2
k=int(int(f,x,0,y),y,0,1)  %求积分

类似文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注