Matlab学习笔记(03): 数理运算

  • Post author:
  • Post category:其他

1. 基本运算

运算顺序

% 建议使用括号,清晰不容易出错
a=3*2>=4    %先乘法然后比较大小
b=5*3:19    %先乘法
c=2*4^2     %先乘方,再乘法

加减乘除

4 + 8
7 - 4
2 * 1
6 / 2

大于,小于,等于,不等于

a=7>5
b1=rand(2,2)
b2=b1>=0.6
b3=b1<=0.7
c1=eq(b2,b3)
c1=b2==b3
c2=b2~=b3       %   ~=  不等于

与 或 非

A=rand(2,2)
B=A>0.8
C=A<0.2
d1=B&C
d2=B|C
d3=~B
d4=xor(B,C)     %  异或

(a>0)&&(6/a>3)  %逻辑与(快速),如果不满足第一个条件,则不看第二个条件
(a>0)&(6/a>4)   %逻辑与

按位与

a=12
b=56
c1=dec2bin(a)                     %  转换为二进制数
c2=dec2bin(b)
d1=bitand(a,b)                    %    按位与    
d2=dec2bin(bitand(a,b))    
d3=dec2bin(bitor(a,b))

2. 微积分

定积分

%%  quad函数求积分   单变量数值积分求解
syms x;  % 自变量
f=inline('1./(sin(x)+exp(-x.^2))')   %内联函数
y=quad(f,0,1.1)            %积分求解    
y1=quad(@myfun1,0,1.1)    %函数句柄
y2=quad(@myfun1,0,1.1,1.e-10)      %精度  

%%  quadl精度更高,速度更快
syms x;
f=inline('1./(sin(x)+exp(-x.^2))','x');
y=quadl(f,0,1.1)
y1=quadl(f,0,1.1,1.e-20)

二重定积分

syms x;
f=inline('x*cos(y)+y*sin(x)','x','y');
y=dblquad(f,pi,2*pi,0,pi)
y1=dblquad(@integrnd,pi,2*pi,0,pi)
y2=dblquad(@(x,y) x*cos(y)+y*sin(x),pi,2*pi,0,pi)

三重定积分

f=inline('z*cos(x)+y*sin(x)','x','y','z');
q=triplequad(f,0,pi,0,1,-1,1)
q1=triplequad(@(x,y,z) (y*sin(x)+z*cos(x)),0,pi,0,1,-1,1)
q2=triplequad(@(x,y,z) (y*sin(x)+z*cos(x)),0,pi,0,1,-1,1,1.e-10)
q3=triplequad(@(x,y,z) (y*sin(x)+z*cos(x)),0,pi,0,1,-1,1,1.e-10,@quad)

微分方程的通解

f1=dsolve('Dy-y=sin(x)')     %默认情况下以t为自变量求解   求出的C2为积分常数
f2=dsolve('Dy-y=sin(x)','x')       % 以x为自变量求解  

微分方程的特解

dsolve('Dy=a*y','y(0)=b')          %求微分方程的特解

微分方程组

z=dsolve('Dx=y','Dy=-x')            %  默认t为自变量
z.x
z.y

常微分方程组的数值解

options=odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);    %设置参数
[t,y]=ode45(@rigid,[0 12],[0 1 1],options); 
%  时间范围0到12,rigid是方程组,变量的初始值是 0 1 1 
figure;
plot(t,y(:,1),'-',t,y(:,2),'--',t,y(:,3),':');
xlabel('Time');
legend('y1','y2','y3');

在这里插入图片描述

一元函数的最小值

[x,fval]=fminbnd(@cos,1,5)    %函数句柄 

多元函数的最小值

f=@(x)2*(x(2)-x(1)^2)^2+(2-x(1))^2;
[x,fval]=fminsearch(f,[-6.7 8])     %指定一个起始点  在某点附近寻找

一元函数的零点

f=@(x)sin(x)*cos(x);
figure;
fplot(f,[-5,5]);
xlabel('x');
ylabel('f(x)');
grid on;
x1=fzero(f,[-4,-2])
x3=fzero(f,-2)
[x4,fval]=fzero(f,[-3,-1])

版权声明:本文为qq_40002420原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。