数学建模系列(3/4):典型建模方法

目录

引言

1. 回归分析

1.1 线性回归

基本概念

Matlab实现

1.2 多元回归

基本概念

Matlab实现

1.3 非线性回归

基本概念

Matlab实现

2. 时间序列分析

2.1 时间序列的基本概念

2.2 移动平均

基本概念

Matlab实现

2.3 指数平滑

基本概念

Matlab实现

2.4 ARIMA模型

基本概念

Matlab实现

3. 优化模型

3.1 线性规划

基本概念

Matlab实现

3.2 非线性规划

基本概念

Matlab实现

4. 微分方程模型

4.1 常微分方程模型

基本概念

Matlab实现

4.2 偏微分方程模型

基本概念

Matlab实现

4.3 微分方程模型的应用案例

案例:传染病模型

结语


引言

在前两篇文章中,我们已经介绍了数学建模的基础知识和入门方法。本篇文章将深入讲解几种典型的数学建模方法,包括回归分析、时间序列分析、优化模型和微分方程模型。这些方法在实际问题中应用广泛,对于理解和解决复杂系统中的问题至关重要。通过详细的案例分析和Matlab代码示例,帮助读者掌握具体的建模技术。

1. 回归分析

1.1 线性回归

基本概念

线性回归用于建立因变量与一个或多个自变量之间的线性关系模型。模型形式为:

Matlab实现

% 样本数据
X = [1; 2; 3; 4; 5];
Y = [2; 3; 5; 6; 8];

% 线性回归模型
X_ = [ones(size(X)), X]; % 增加常数项
beta = (X_' * X_) \ (X_' * Y);

% 预测
Y_pred = X_ * beta;

% 绘图
scatter(X, Y, 'bo');
hold on;
plot(X, Y_pred, 'r-');
xlabel('X');
ylabel('Y');
title('线性回归示例');
legend('数据点', '回归线');

1.2 多元回归

基本概念

多元回归用于研究因变量与多个自变量之间的关系。模型形式为:

Matlab实现

% 样本数据
X1 = [1; 2; 3; 4; 5];
X2 = [2; 3; 4; 5; 6];
Y = [2; 3; 5; 6; 8];

% 多元线性回归模型
X_ = [ones(size(X1)), X1, X2];
beta = (X_' * X_) \ (X_' * Y);

% 预测
Y_pred = X_ * beta;

% 输出回归系数
disp(['回归系数:', num2str(beta')]);

1.3 非线性回归

基本概念

非线性回归用于拟合非线性关系的模型。常用的非线性模型包括指数模型、对数模型、幂模型等。

Matlab实现

% 样本数据
X = [1; 2; 3; 4; 5];
Y = [2; 4.1; 8.3; 16.2; 32.4];

% 非线性模型(幂模型):Y = a * X^b
model_func = @(beta, X) beta(1) * X.^beta(2);
beta0 = [1, 1]; % 初始猜测

% 非线性回归
beta = nlinfit(X, Y, model_func, beta0);

% 预测
Y_pred = model_func(beta, X);

% 绘图
scatter(X, Y, 'bo');
hold on;
plot(X, Y_pred, 'r-');
xlabel('X');
ylabel('Y');
title('非线性回归示例');
legend('数据点', '拟合曲线');

2. 时间序列分析

2.1 时间序列的基本概念

时间序列是按照时间顺序排列的一组数据点,用于描述变量随时间的变化趋势。常见的时间序列分析方法包括移动平均、指数平滑和ARIMA模型。

2.2 移动平均

基本概念

移动平均用于平滑时间序列中的短期波动,识别长期趋势。

Matlab实现

% 样本时间序列数据
data = [22, 24, 25, 23, 26, 28, 27, 29, 30, 31];
window_size = 3; % 移动平均窗口大小

% 移动平均
moving_avg = movmean(data, window_size);

% 绘图
plot(data, 'b*-');
hold on;
plot(moving_avg, 'r-');
xlabel('时间');
ylabel('值');
title('移动平均示例');
legend('原始数据', '移动平均');

2.3 指数平滑

基本概念

指数平滑用于加强对时间序列中较新的数据点的关注,常见的包括单指数平滑、双指数平滑和三指数平滑。

Matlab实现

% 样本时间序列数据
data = [22, 24, 25, 23, 26, 28, 27, 29, 30, 31];
alpha = 0.2; % 平滑系数

% 单指数平滑
exp_smooth = zeros(size(data));
exp_smooth(1) = data(1); % 初始值
for t = 2:length(data)
    exp_smooth(t) = alpha * data(t) + (1 - alpha) * exp_smooth(t-1);
end

% 绘图
plot(data, 'b*-');
hold on;
plot(exp_smooth, 'r-');
xlabel('时间');
ylabel('值');
title('单指数平滑示例');
legend('原始数据', '单指数平滑');

2.4 ARIMA模型

基本概念

ARIMA模型用于捕捉时间序列中的自相关结构,是时间序列分析中最常用的方法之一。

Matlab实现

% 样本时间序列数据
data = [22, 24, 25, 23, 26, 28, 27, 29, 30, 31];

% 拟合ARIMA模型
model = arima('Constant', 0, 'D', 1, 'Seasonality', 0, 'MALags', 1, 'SMALags', 12);
fit = estimate(model, data');

% 预测
forecast_steps = 5;
[Y, YMSE] = forecast(fit, forecast_steps, 'Y0', data');

% 绘图
plot([data, Y']);
hold on;
plot(length(data)+1:length(data)+forecast_steps, Y, 'r*-');
xlabel('时间');
ylabel('值');
title('ARIMA模型示例');
legend('原始数据', '预测值');

3. 优化模型

3.1 线性规划

基本概念

线性规划用于求解目标函数在一组线性约束条件下的最大化或最小化问题。

Matlab实现

% 目标函数系数
f = [-1; -1];

% 约束矩阵和向量
A = [1, 2; 3, 1];
b = [6; 9];

% 下界和上界
lb = [0; 0];
ub = [inf; inf];

% 求解线性规划
[x, fval] = linprog(f, A, b, [], [], lb, ub);

% 输出结果
disp(['最优解:', num2str(x')]);
disp(['最优值:', num2str(-fval)]);

3.2 非线性规划

基本概念

非线性规划用于求解目标函数和/或约束条件为非线性的优化问题。

Matlab实现

% 目标函数
obj_fun = @(x) x(1)^2 + x(2)^2;

% 约束条件
nonlin_con = @(x) deal([], [x(1) + x(2) - 2]);

% 初始猜测
x0 = [0.5, 0.5];

% 求解非线性规划
options = optimoptions('fmincon', 'Display', 'iter');
[x, fval] = fmincon(obj_fun, x0, [], [], [], [], [], [], nonlin_con, options);

% 输出结果
disp(['最优解:', num2str(x)]);
disp(['最优值:', num2str(fval)]);

4. 微分方程模型

4.1 常微分方程模型

基本概念

常微分方程(ODE)用于描述变量随时间变化的动态过程,广泛应用于物理、化学、生物和经济等领域。常用的一阶和二阶微分方程可以分别表示为:

Matlab实现

% 设定初始条件和时间范围
y0 = 1; % 初始值
tspan = [0, 2]; % 时间区间

% 定义一阶微分方程
odefun = @(t, y) t * y;

% 求解微分方程
[t, y] = ode45(odefun, tspan, y0);

% 绘图
plot(t, y, 'b-');
xlabel('时间');
ylabel('y');
title('常微分方程示例');
legend('y(t)');

4.2 偏微分方程模型

基本概念

偏微分方程(PDE)用于描述具有多个独立变量的系统的动态行为,应用于热传导、流体力学、弹性力学等领域。典型的一维热传导方程表示为:

Matlab实现

% 定义空间和时间范围
x = linspace(0, 1, 20);
t = linspace(0, 1, 50);

% 定义初始条件
u0 = sin(pi * x);

% 设置PDE系数
m = 0;
alpha = 1;
pdefun = @(x,t,u,DuDx) alpha * DuDx;
icfun = @(x) sin(pi * x);
bcfun = @(xl,ul,xr,ur,t) [ul; ur];

% 求解PDE
sol = pdepe(m, pdefun, icfun, bcfun, x, t);

% 绘图
surf(x, t, sol);
xlabel('位置 x');
ylabel('时间 t');
zlabel('温度 u');
title('一维热传导方程的数值解');

4.3 微分方程模型的应用案例

案例:传染病模型

问题描述:研究一种传染病在一个封闭社区中的传播情况。

构建SIR模型
SIR模型是一个常用的传染病模型,包含三个变量:易感者(Susceptible),感染者(Infected)和康复者(Recovered)。模型的微分方程为:

Matlab实现

% 参数设置
beta = 0.3; % 感染率
gamma = 0.1; % 康复率
N = 1000; % 总人口
I0 = 1; % 初始感染者
R0 = 0; % 初始康复者
S0 = N - I0 - R0; % 初始易感者
y0 = [S0, I0, R0]; % 初始条件

% 定义SIR模型的微分方程
sir_ode = @(t, y) [-beta * y(1) * y(2) / N;
                   beta * y(1) * y(2) / N - gamma * y(2);
                   gamma * y(2)];

% 时间范围
tspan = [0, 160];

% 求解微分方程
[t, y] = ode45(sir_ode, tspan, y0);

% 绘图
plot(t, y(:, 1), 'b-', t, y(:, 2), 'r-', t, y(:, 3), 'g-');
xlabel('时间 (天)');
ylabel('人数');
title('SIR模型传染病传播模拟');
legend('易感者', '感染者', '康复者');

通过该案例,我们展示了SIR模型的构建和求解方法,读者可以根据实际情况调整参数,进一步探讨传染病传播的动态行为。

结语

在本篇文章中,我们详细介绍了几种典型的数学建模方法,包括回归分析、时间序列分析、优化模型和微分方程模型。通过具体的例子和Matlab代码示例,读者可以更好地理解这些方法的实际应用和实现过程。希望通过这些基础知识,读者能够在实际问题中灵活运用这些建模方法,解决复杂的系统问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/731759.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android修行手册-ImageView的adjustViewBounds和设置透明度

点击跳转>GameFramework文档系列(二)- 场景相关 点击跳转>GameFramework文档系列(三)- 日志管理和UI 点击跳转>GameFramework文档系列(四)- 事件订阅 点击跳转>保姆式Cocos合成大西瓜案例 …

HarmonyOS Next 系列之可移动悬浮按钮实现(六)

系列文章目录 HarmonyOS Next 系列之省市区弹窗选择器实现(一) HarmonyOS Next 系列之验证码输入组件实现(二) HarmonyOS Next 系列之底部标签栏TabBar实现(三) HarmonyOS Next 系列之HTTP请求封装和Token…

基于强化学习的目标跟踪论文合集

文章目录 2020UAV Maneuvering Target Tracking in Uncertain Environments Based on Deep Reinforcement Learning and Meta-LearningUAV Target Tracking in Urban Environments Using Deep Reinforcement Learning 2021Research on Vehicle Dispatch Problem Based on Kuhn-…

BGP路由反射器实验

实验内容: 通过本实验验证bgp路由反射器的规则 1. 从client收到的路由更新,反射到non-client和client,同时发送给EBGP邻居 2. 从non-client收到的路由更新,只反射到client,同时发送给EBGP邻居 3. 从EBGP邻居收到的路…

PXE自动平台 搭建 银河麒麟 UEFI x86_64 ARM64

1. PXE自动化 原理 要实现PXE自动安装需要以下组件: DHCP服务:服务器通过网络启动时自动分配IP地址。TFTP服务:提供服务器启动下载启动引导EFI。HTTP服务:操作系统镜像下载。 各组件工作原理如下[1]: 开PXE后&…

最新版ChatGPT对话系统源码 Chat Nio系统源码

最新版ChatGPT对话系统源码 Chat Nio系统源码 支持 Vision 模型, 同时支持 直接上传图片 和 输入图片直链或 Base64 图片 功能 (如 GPT-4 Vision Preview, Gemini Pro Vision 等模型) 支持 DALL-E 模型绘图 支持 Midjourney / Niji 模型的 Imagine / Upscale / Variant / Re…

Redis-数据类型-Geospatial(地理空间索引)

文章目录 1、查看redis是否启动2、通过客户端连接redis3、切换到db5数据库4、将地理位置信息(经度和纬度)添加到 Redis 的键(key)中4.1、添加大江商厦4.2、添加西部硅谷 5、升序返回有序集key,让分数一起和值返回的结果…

Doris连接超时问题排查记录

文章目录 一、现象描述二、问题排查1、分析驱动包2、分析Mysql客户端(问题解决) 一、现象描述 先上官网部署地址,按照官网上一步步进行部署 https://doris.apache.org/zh-CN/docs/get-starting/quick-start 基本到最后都挺顺利的&#xff0c…

2022年大作业参考报告-使用C++语言开发小学生成绩管理系统、中学生成绩管理系统、大学生成绩管理系统【240621更新】

背景: 目录 第一章 需求分析 2 1.1 问题描述 2 6.1 功能需求 2 6.2 开发环境 2 6.3 开发过程 2 第二章 概要设计 3 2.1 总体设计 3 2.2 类的定义 3 2.3 接口设计 5 2.4 运行界面设计 6 第三章 详细设计 …

【滚动哈希 二分查找】1044. 最长重复子串

本文涉及知识点 滚动哈希 二分查找算法合集 LeetCode 1044. 最长重复子串 给你一个字符串 s ,考虑其所有 重复子串 :即 s 的(连续)子串,在 s 中出现 2 次或更多次。这些出现之间可能存在重叠。 返回 任意一个 可能具…

vs2022 studio控制台出现中文乱码解决

vs2022 studio控制台出现中文乱码解决 问题解决 问题 这里cout中间的中文,但控制台出现的是乱码对此需要进行修改 解决 打开运行的主文件,也就是整个程序的入口,对他另存为 之后点击编码保存 接着将编码保存的格式变为图片对应的这种 记…

ArcGIS定义1.5度带坐标系与投影转换

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 对于ArcGIS如何定义高斯克吕格3度带、6度带,我相信大部分人都是比较清楚的&#xff0…

ArcGIS批量投影转换的妙用(地理坐标系转换为平面坐标系)

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 这次文章我们来介绍一下,如何巧妙用要素数据集来实现要素的批量投影。不需要ArcGIS的模型构建器与解决。 例如,有多个要素要将CGCS_2000地理坐标系投…

gitlab升级16.11.3-ee

背景 这是事后一段时间补充记录的博客。 升级目的:修补漏洞CVE-2024-4835 未经认证的威胁攻击者能够利用该漏洞在跨站脚本 (XSS) 攻击中,轻松接管受害者账户。 gitlab版本为14.6.2-ee升级至16.11.3-ee 思路 翻阅文档找升级方法及升级版本路径。使用…

Python酷库之旅-第三方库openpyxl(02)

目录 一、 openpyxl库的由来 1、背景 2、起源 3、发展 4、特点 4-1、支持.xlsx格式 4-2、读写Excel文件 4-3、操作单元格 4-4、创建和修改工作表 4-5、样式设置 4-6、图表和公式 4-7、支持数字和日期格式 二、openpyxl库的优缺点 1、优点 1-1、支持现代Excel格式…

Leetcode 第 401 场周赛题解

Leetcode 第 401 场周赛题解 Leetcode 第 401 场周赛题解题目1:3178. 找出 K 秒后拿着球的孩子思路代码复杂度分析 题目2:3179. K 秒后第 N 个元素的值思路代码复杂度分析 题目3:3180. 执行操作可获得的最大总奖励 I思路代码复杂度分析 题目4…

leetcode 二分查找·系统掌握 寻找旋转排序数组中的最小值II

题目: 题解: 本题比普通的寻找旋转排序数组中的最小值多了一个数组中的元素可以重复这一点。 这会时原来的思路出现一个漏洞(大家感兴趣可以看看我做普通版寻找旋转排序数组最小值的思路),就是旋转后的数组中的第二个…

AI在线免费视频工具2:视频配声音;图片说话hedra

1、视频配声音 https://deepmind.google/discover/blog/generating-audio-for-video/ https://www.videotosoundeffects.com/ (免费在线使用) 2、图片说话在线图片生成播报hedra hedra 上传音频与图片即可合成 https://www.hedra.com/ https://www.…

论文浅读之Mamba: Linear-Time Sequence Modeling with Selective State Spaces

介绍 这篇论文提出了一种新型的"选择性状态空间模型"(Selective State Space Model, S6)来解决之前结构化状态空间模型(SSM)在离散且信息密集的数据(如文本)上效果较差的问题。 Mamba 在语言处理、基因组学和音频分析等领域的应用中表现出色。…

读AI新生:破解人机共存密码笔记08超级智能

1. 发现动作 1.1. 时间跨度长的智能行为,需要具备在多个抽象层次上分层规划和管理活动的能力,从攻读博士学位(可能涉及1万亿个动作),到给一根手指发送一个运动控制指令,从而键入求职信的字符,无…