MATLAB笔记--下

第6章 数值微积分与方程求解

6.1 数值微分与数值积分

1.数值微分

(1)数值差分与差商

(2)数值差分的实现

dx=diff(x)计算向量的一阶向前差分

dx=diff(x,n)计算向量的n阶向前差分

dx=diff(A,n,dim)计算矩阵A的n阶向前差分,dim=1时(默认状态),按列进行差分;dim=2,按行计算差分

2.数值积分

(1)数值积分基本定理

(2)数值积分的实现

[l,n]=quad(filename,a,b,tol,trace)基于自适应辛普森方法

[l,n]=quadl(filename,a,b,tol,trace)基于自适应Gauss-Lobatto方法

l=integral(filename,a,b)基于全局自适应积分方法

[l,err]=quadgk(filename,a,b)基于自适应高斯-克朗罗德方法

l=trapz(x,y)基于梯形积分法

(3)多重定积分的数值求解

  • 求二重积分的数值解

    I=integral2(filename,a,b,c,d)

    I=quad2d(filename,a,b,c,d)

    I=dblquad(filename,a,b,c,d,tol)

  • 求三重积分的数值解

    I=integral3(filename,a,b,c,d,e,f)

    I=triplequad(filename,a,b,c,d,e,f,tol)

6.2 线性方程组求解

1.线性方程组的直接解法

(1)利用左除运算符的直接解法

x=A\b

(2)利用矩阵分解求解线性方程组

  • LU分解

    下三角*上三角

    [L,U]=lu(A)产生一个上三角矩阵U和一个变换形式的下三角矩阵L,满足A=LU,A是方阵

    [L,U,P]=lu(A)产生一个上三角阵U和一个下三角阵L以及一个置换矩阵P,使满足PA=LU,A是方阵

2.线性方程组的迭代解法

(1)雅克比迭代法

(2)高斯-赛德尔迭代法

6.3 线性方程组应用举例

1.平面桁架结构受力分析问题

2.小行星运行轨道计算问题

6.4 非线性方程求解与函数极值计算

1.非线性方程数值求解

(1)单变量非线性方程求解

x=fzero(filename,x0)

(2)非线性方程组的求解

x=fsolve(filename,x0,option)

2.函数极值的计算

(1)无约束最优化问题

  • 求最小值的函数

    [xmin,fmin]=fminbnd(filename,x1,x2,option)

    [xmin,fmin]=fminsearch(filename,x0,option)

    [xmin,fmin]=fminunc(filename,x0,option)

(2)有约束最优化问题

[xmin,fmin]=fminbnd(filename,x0,A,b,Aeq,beq,Lbnd,Ubnd,NonF,option)

(3)最小值问题实例

6.5 常微分方程数值求解

1.常微分方程数值求解的一般概念

  • 单步法,龙格-库塔法

  • 多步法,亚当斯法

函数调用格式:

[t,y]=solver(filename,tspan,y0,option)

2.刚性问题(各个分量相差悬殊)

  • 火焰传播模型例子
6.6 常微分方程应用举例

1.Lotka-Volterra模型(兔子狐狸模型)

第①问:

rabbitFox=@(t,x) [x(1)*(2-0.01*x(2));x(2)*(-1+0.01*x(1))];
[t,x]=ode45(rabbitFox,[0,30],[300,150])
subplot(1,2,1);plot(t,x(:,1),'-',t,x(:,2),'-*');
legend('x1(t)','x2(t)');
xlabel('时间');ylabel('物种数量');
grid on
subplot(1,2,2);plot(x(:,1),x(:,2))
grid on

第④问:
取λ=0.01, 所以稳定平衡点(1/λ,2/λ)即是(100,200),以此点作为初值时,画出其图像。

rabbitFox=@(t,x) [x(1)*(2-0.01*x(2));...
         x(2)*(-1+0.01*x(1))];
[t,x]=ode45(rabbitFox,[0,30],[100,200]);
plot(t,x(:,1),'-o',t,x(:,2),'-*');
legend('x1(t)-兔子','x2(t)-狐狸');
xlabel('时间');
ylabel('物种数量');

当将初始值变为(98,195)时,即向下十分接近平衡点,画出其图像。

rabbitFox=@(t,x) [x(1)*(2-0.01*x(2));...
         x(2)*(-1+0.01*x(1))];
[t,x]=ode45(rabbitFox,[0,30],[98,195]);
plot(t,x(:,1),'-o',t,x(:,2),'-*');
legend('x1(t)-兔子','x2(t)-狐狸');
xlabel('时间');
ylabel('物种数量');

当将初始值变为(70,150)时(向下偏离平衡点比较远时),画出其图像。

rabbitFox=@(t,x) [x(1)*(2-0.01*x(2));...
         x(2)*(-1+0.01*x(1))];
[t,x]=ode45(rabbitFox,[0,30],[70,150]);
plot(t,x(:,1),'-o',t,x(:,2),'-*');
legend('x1(t)-兔子','x2(t)-狐狸');
xlabel('时间');
ylabel('物种数量');

当将初始值变为(900,1600)时(向上偏离平衡点十分远时),画出其图像。

rabbitFox=@(t,x) [x(1)*(2-0.01*x(2));...
         x(2)*(-1+0.01*x(1))];
[t,x]=ode45(rabbitFox,[0,500],[900,1600]);
plot(t,x(:,1),t,x(:,2));
legend('x1(t)-兔子','x2(t)-狐狸');
xlabel('时间');
ylabel('物种数量');

2.Lotka-Volterra改进模型(考虑兔子的环境容量)
第①问:在原模型下,绘制狐狸和兔子数量的时间函数曲线。

rabbitFox=@(t,x) [x(1)*(2-0.01*x(2));...
         x(2)*(-1+0.01*x(1))];
plot(t,x(:,1),t,x(:,2));
legend('x1(t)-兔子','x2(t)-狐狸');
xlabel('时间');
ylabel('物种数量');
title('原模型下,狐狸和兔子数量的函数曲线');

第②问:在改进模型下,狐狸和兔子数量的时间函数曲线。

rabbitFox=@(t,x) [2*x(1)*(1-x(1)/400-0.005*x(2));...
         x(2)*(-1+0.01*x(1))];
[t,x]=ode45(rabbitFox,[0,50],[300,150]);
plot(t,x(:,1),t,x(:,2));
legend('x1(t)-兔子','x2(t)-狐狸');
xlabel('时间');
ylabel('物种数量');
title('改进模型下,狐狸和兔子数量的函数曲线');

第③问:在原模型下,绘制狐狸数量相对于兔子数量的关系曲线。

rabbitFox=@(t,x) [x(1)*(2-0.01*x(2));...
         x(2)*(-1+0.01*x(1))];
[t,x]=ode45(rabbitFox,[0,50],[300,150]);
plot(x(:,1),x(:,2));
xlabel('兔子数量');
ylabel('狐狸数量');
title('原模型下,狐狸数量相对于兔子数量的关系曲线');

第④问:在改进模型下,狐狸数量相对于兔子数量的关系曲线。

rabbitFox=@(t,x) [2*x(1)*(1-x(1)/400-0.005*x(2));...
         x(2)*(-1+0.01*x(1))];
[t,x]=ode45(rabbitFox,[0,50],[300,150]);
plot(x(:,1),x(:,2));
xlabel('兔子数量');
ylabel('狐狸数量');
title('改进模型下,狐狸数量相对于兔子数量的关系曲线');

在这里插入图片描述

第8章 MATLAB图形用户界面设计

8.1 图形窗口与坐标轴

1.图形对象句柄

  • 对象句柄.属性名
  • gcf/gca/gco/findobj

2.图形对象属性

  • 图形对象属性Children/Parent/Type/Tag
  • 图形对象常用动态属性KeyPressFcn/CreateFcn/DeleteFcn/WindowButtonDownFcn or ButtonDownFcn

3.图形窗口操作

figure函数

  • 窗口属性MenuBar/Name/NumberTitle/Color/

Position/Units

4.坐标轴对象的操作

(1)建立坐标轴对象

axes函数

(2)属性

Position/Units/Box/GridLineStyle/Title/XLable/XLim/XScale/View/ColorOrder

%例1  绘制多个图形,并保存图形句柄。
t=0:pi/10:2*pi;
h1=plot3(t+pi,t-2*pi,sin(t),'r');  
hold  on;
[x,y]=meshgrid(t);
z=sin(x);
h2=mesh(t-2*pi,t+pi,z);
[x3,y3,z3]=cylinder(t);
h3=surf(x3,y3,z3);
8.2 曲线和曲面对象

1.曲线对象

(1)建立曲线对象

句柄变量=line(x,y,z,属性1,属性2,属性3……)

(2)曲线对象常用属性

Color/LineStyle/LineWidth/Marker/MarkerSize/XData/YData/ZData

2.曲面对象

(1)建立曲面对象

句柄变量=surface(x,y,z,c,属性1,属性值1,属性2,属性值2,……)

(2)与曲面形态有关的属性

FaceColor/EdgeColor

3.光照处理

(1)创建光源对象

对象句柄=light(属性1,属性值1,属性2,属性值2,……)

(2)光源对象的属性

Color/Style/Position

(3)设置光照模式

lighting选项

4.图形对象的反射特性

SpecularStrength/DiffuseStrength/AmbientStrength/SpecularExponenr/BackFaceLighting

第9章 Simulink系统仿真

9.1 Simulink仿真基础

1.Simulink的启动

2.系统仿真模型的创建

(1)Simulink Library Browser窗口

(2)Simulink模块的操作

(3)模型存盘

(4)模块参数的设置

3.仿真参数的设置

9.2 子系统的创建与封装

1.子系统的创建

  • 通过Subsystem模块建立子系统
  • 将已有的模块转换为子系统Ctrl+G

2.子系统的封装

Ctrl+M

3.子系统的条件执行

(1)使能子系统

(2)触发子系统

(3)使能加触发子系统

9.3 S函数的设计与应用

1.什么叫S函数

系统函数

>>edit sfuntmpl.m

2.用M文件编写S函数的方法

3.在仿真模型中使用S函数的方法

9.4 Simulink仿真应用举例

1.对蹦极跳系统的建模与仿真

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值