- 下方总结了一些
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) %求积分