数学建模之插值法及代码

2023-11-22 00:36
文章标签 代码 建模 数学 插值法

本文主要是介绍数学建模之插值法及代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

发现更多知识,欢迎访问Cr不是铬的个人网站

引言

数模比赛中,常常需要根据已知的函数点进行数据、模型的处理和分析,而有时候现有的数据是极少的,不足以支撑分析的进行,这时就需要使用一些数学的方法,“模拟产生”一些新的但又比较靠谱的值来满 足需求,这就是插值的作用。

插值法的定义

file


插值法的原理

file

file

拉格朗日插值法

说在前面,在数学建模比赛中,拉格朗日插值不好,有龙格现象。

不多做解释

file

分段插值

分段插值有分段线性插值,分段二次插值

分段插值在建模比赛中是比较常用到的。可以与后面的埃尔米特插值结合起来!

牛顿插值法

牛顿插值也有龙格现象!在数学建模还是用分段插值比较好

file

更苛刻的插值

Hermite插值

file

分段三次埃尔米特插值

分段三次埃尔米特插值很常用!

file

三次样条插值

file

关于这个具体详见代码部分,原理不作解释。

n维数据插值

file

代码部分

分段三次埃尔米插值法

%% 分段三次埃尔米插值法
x = -pi : pi;
y = sin(x);
%按间隔0.1来进行插值
new_x = -pi : 0.1 : pi;
%分段三次埃尔米插值
p = pchip(x,y,new_x);

绘图plot

%% 绘图plot
%plot的用法
%plot(x1,y1,x2,y2)
%线方式 -实线 :点线 -.虚点线 --虚线
%点方式 .圆点 +加号 *星号  x x型 o小圆
%颜色 y黄色 r红色 g绿色 b蓝色
%原始样本点
figure(1)
plot(x,y,'go')
%插值点
figure(2)
plot(new_x,p,'r-')

file

三次样条插值与分段三次埃尔米插值

%% 三次样条插值与分段三次埃尔米插值
x = -pi:pi;
y = sin(x);
new_x =-pi:0.1:pi;
p1 = pchip(x,y,new_x);
%三次样条插值
p2 = spline(x,y,new_x);%两种插值的对比
figure(3)
plot(x,y,'o',new_x,p1,'r-',new_x,p2,'b-')
legend('样本点','分段三次插值','三次样条插值','Location','southeast')
% 说明:
% LEGEND(string1,string2,string3, …)
% 分别将字符串1、字符串2、字符串3……标注到图中,每个字符串对应的图标为画图时的图标。
% ‘Location’用来指定标注显示的位置

file


关于人口预测的补充

插值法也可以用来预测,但是实际建模用得很少。

%%  人口预测(插值在实际建模中不用来预测)
population=[133126,133770,134413,135069,135738,136427,137122,137866,138639, 139538];
year = 2009:2018;
p1 = pchip(year,population,2019:2022);
p2 = spline(year,population,2019:2022);
plot(year,population,'ro',2019:2022,p1,'gx-',2019:2022,p2,'bx-')
legend('原始数据','分段三次埃尔米预测','三次样条预测',Location='southeast')

file

## 作业部分

file

对上述部分进行插值。

由于有很多种类别要进行插值,可以在循环中进行处理。

代码:

%% 读取数据
load Z.mat
%第一行的原始周期
x = Z(1,:);
%获取行与列
[n,m] = size(Z);
% 注意Matlab的数组中不能保存字符串,如果要生成字符串数组,就需要使用元胞数组,其用大括号{}定义和引用
ylab={'周数','轮虫','溶氧','COD','水温','PH值','盐度','透明度','总碱度','氯离子','透明度','生物量'};  % 等会要画的图形的标签
disp(['共有' num2str(n-1) '个指标要进行插值。'])
disp('正在对一号池三次埃尔米特插值,请等待')%一号池共有十一组要插值的数据,算上星期所在的第一行,共十二行
%初始化
P = zeros(11,15);
%% 循环插值for i = 2 : n%第二行之后都是要插值的%原始样本点y = Z(i,:);%要进行插值的xnew_x = 1:15;p1 = spline(x,y,new_x);subplot(4,3,i-1);%将所有图依次变现在4*3的一幅大图上plot(x,y,'o',new_x,p1,'r-');axis([0 15,-inf,inf])  %设置坐标轴的范围,这里设置横坐标轴0-15,纵坐标不变化xlabel('星期')%x轴标题ylabel(ylab{i})%y轴标题  这里是直接引用元胞数组中的字符串%保存结果P(i-1,:) = p1;end
legend('原始数据','三次样条插值结果','Location','southeast')
%加上第一行
P = [1:15;P];

本文由博客一文多发平台 OpenWrite 发布!

这篇关于数学建模之插值法及代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/406204

相关文章

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

IDEA与MyEclipse代码量统计方式

《IDEA与MyEclipse代码量统计方式》文章介绍在项目中不安装第三方工具统计代码行数的方法,分别说明MyEclipse通过正则搜索(排除空行和注释)及IDEA使用Statistic插件或调整搜索... 目录项目场景MyEclipse代码量统计IDEA代码量统计总结项目场景在项目中,有时候我们需要统计

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

MySQL实现多源复制的示例代码

《MySQL实现多源复制的示例代码》MySQL的多源复制允许一个从服务器从多个主服务器复制数据,这在需要将多个数据源汇聚到一个数据库实例时非常有用,下面就来详细的介绍一下,感兴趣的可以了解一下... 目录一、多源复制原理二、多源复制配置步骤2.1 主服务器配置Master1配置Master2配置2.2 从服

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据