数学建模-插值算法(Matlab)

这篇具有很好参考价值的文章主要介绍了数学建模-插值算法(Matlab)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

注意:代码文件仅供参考,一定不要直接用于自己的数模论文中
国赛对于论文的查重要求非常严格,代码雷同也算作抄袭
如何修改代码避免查重的方法:https://www.bilibili.com/video/av59423231   //清风数学建模

一、基础知识

简单来说是根据已知点进行线性数据预测,但数据太少需要通过数学方法生成一些数据,如根据十年人口数据预测未来五年人口增减情况。

1.两个常用的插值法

一般多用分段三次埃尔米特插值三次样条插值

其内置函数分别为

p=pchip(x,y,new_x)

x,y为已知样本点横纵坐标,new_x为要插入对应点的横坐标(纵坐标会计算生成,即为p)

三次样条插值函数参数也同理:

 p=spline(x,y,new_x)

2.生成和打印图片

脚本文件中生成图片(在同一个脚本文件里面,要想画多个图,需要给每个图编号,否则只会显示最后一个图)

figure(1) 

plot函数,显示图像,至少要两种点的横纵坐标,多种会生成更多线

线方式:-实线   :点线    -.虚点线   --波折线

点方式: .圆点   +加号   *型号   o小圆

颜色: y黄  r红  g绿  b蓝  k黑

标注使用legend函数,跟在figure、plot之后,一组x,y(即一种点)对应一个名称,最后选择注释所在图中的位置(如东南是右下角)

x = -pi:pi; y = sin(x); 
new_x = -pi:0.1:pi;
p = pchip(x,y,new_x);
figure(1); % 在同一个脚本文件里面,要想画多个图,需要给每个图编号,否则只会显示最后一个图哦~
plot(x, y, 'o', new_x, p, 'r-')
legend('样本点','三次埃尔米特插值','Location','SouthEast') 

数学建模-插值算法(Matlab)

 3.n维数据的插值

p=interpn(x1,x2,...,xn,y,new_x1,new_x2,...,new_xn,method)

 参数还是已知样本点的横纵坐标,new_x为要插入点的横坐标。最后method是调用方法,如下

'linear':线性插值(默认) 'cubic':三次插值

'spline':三次样条插值(多用) 'nearest':最邻近插值

 例:人口预测,给09-18年的人口,预测19-21年的

population=[133126,133770,134413,135069,135738,136427,137122,137866,138639, 139538];
year = 2009:2018;  %类似于等差数列,是09-18每个数值取整组成的矩阵
%可以加上 p1 = pchip(year, population, 2019:2021) 这样最后就是两条线了 
p2 = interpn(year, population, 2019:2021,'spline') %等价于p2 = spline(year, population, 2019:2021)
figure(4);
plot(year, population,'o',2019:2021,p2,'bx-')
legend('样本点','interpn三次样条插值预测','Location','SouthEast')

数学建模-插值算法(Matlab)

 二、实战演练

例题来源:第六届MathorCup大学生数学建模挑战A题 淡水养殖池塘水华发生及池水净化处理

数学建模-插值算法(Matlab)

 上图是附件二每个池子一些物质含量的变化,可以主要上沿,每个池子只有奇数周的数据,本演练是把1号池子的每周数据补充完整(即补上偶数周)

根据一号池的数据,把数据保存为Z(忽略叶绿体和汉字),如下图(可以另存为本地)

数学建模-插值算法(Matlab)

 多组数据图片的演示,可以for循环处理,同时要用到subplot(m,n,p)

m表示是图排成m行,n表示图排成n列.p表示图所在的位置,如p=1表示从左到右从上到下的第一个位置。

ylabel(ylab{i}) %给y轴标题,这里是直接引用元胞数组(先定义好的)中的字符串哦。

参考优秀代码(Mr.sandman同学提供):

x=Z(1,:); %Z的第一行是星期Z: 1     3     5     7     9    11    13    15
[n,m]=size(Z);%n为Z的行数,m为Z的列数
% 注意Matlab的数组中不能保存字符串,如果要生成字符串数组,就需要使用元胞数组,其用大括号{}定义和引用
ylab={'周数','轮虫','溶氧','COD','水温','PH值','盐度','透明度','总碱度','氯离子','透明度','生物量'};  % 等会要画的图形的标签
disp(['共有' num2str(n-1) '个指标要进行插值。'])
disp('正在对一号池三次埃尔米特插值,请等待')%一号池共有十一组要插值的数据,算上星期所在的第一行,共十二行
P=zeros(11,15);%对要储存数据的矩阵P赋予初值
for i=2:n%从第二行开始都是要进行插值的指标
    y=Z(i,:);%将每一行依次赋值给y
    new_x=1:15;%要进行插值的x
    p1=pchip(x,y,new_x);%调用三次埃尔米特插值函数
    subplot(4,3,i-1);%将所有图依次变现在4*3的一幅大图上
    plot(x,y,'ro',new_x,p1,'-');%画出每次循环处理后的图像
    axis([0 15,-inf,inf])  %设置坐标轴的范围,这里设置横坐标轴0-15,纵坐标不变化
    %  xlabel('星期')%x轴标题
    ylabel(ylab{i})%y轴标题  这里是直接引用元胞数组中的字符串哦
    P(i-1,:)=p1;%将每次插值之后的结果保存在P矩阵中       
end
legend('原始数据','三次埃尔米特插值数据','Location','SouthEast')%加上标注,注意要手动在图中拖动标注到图片右下角哦
P = [1:15; P]  %把P的第一行加上周数

数学建模-插值算法(Matlab)

 矩阵P的数值即为要求的,可以粘贴回excel数学建模-插值算法(Matlab)文章来源地址https://www.toymoban.com/news/detail-425783.html

到了这里,关于数学建模-插值算法(Matlab)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数学建模——插值算法

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

    2024年02月16日
    浏览(38)
  • 【数学建模】《实战数学建模:例题与讲解》第十四讲-模拟退火、遗传算法(含Matlab代码)

    本系列侧重于例题实战与讲解,希望能够在例题中理解相应技巧。文章开头相关基础知识只是进行简单回顾,读者可以搭配课本或其他博客了解相应章节,然后进入本文正文例题实战,效果更佳。 如果这篇文章对你有帮助,欢迎点赞与收藏~ 现代优化算法,自20世纪80年代初开

    2024年02月04日
    浏览(54)
  • 数学建模算法汇总(全网最全,含matlab案例代码)

      全国大学生数学建模竞赛中,常见的算法模型有以下30种: 最小二乘法 数值分析方法 图论算法 线性规划 整数规划 动态规划 贪心算法 分支定界法 蒙特卡洛方法 随机游走算法 遗传算法 粒子群算法 神经网络算法 人工智能算法 模糊数学 时间序列分析 马尔可夫链 决策树 支

    2024年02月08日
    浏览(48)
  • 数学建模之回归分析算法(含matlab源代码)

    目录 一、一元线性回归 1、步骤  2、matlab命令(多元线性回归) 3、举例  二、一元非线性回归  三、多项式回归 1、一元多项式回归  应用  2、多元二项式 应用  四、非线性回归  应用 五、 逐步回归  应用    r²和F越大越好 p越小越好      从残差图可以看出,除第二个

    2024年02月09日
    浏览(68)
  • 【数学建模】清风数模正课3 插值算法

    在数模比赛中,很多类型的题目都需要根据已知的函数点进行数据分析和模型处理; 当此时题目所给的数据较少时,我们就无法进行准确科学的分析,所以需要更多的数据,也就是函数点; 这就需要使用数学方法, 模拟生成一些新的、较靠谱的值来满足需求,这就是插值的

    2024年02月11日
    浏览(42)
  • 【数学建模笔记】【第三讲】拉格朗日插值法,牛顿插值法,分段三次埃尔米特插值法及其MATLAB实践

    温馨提示:本文共有3748字,阅读并理解全文大概需要15-20分钟 数模比赛中,常常需要根据已知的函数点进行数据、模型的处理和分析,而有时候现有的数据是极少的,不足以支撑分析的进行,这时就 需要使用一些数学的方法,“模拟产生”一些新的但又比较靠谱的值来满足

    2024年02月05日
    浏览(47)
  • Matlab数学建模算法详解之混合整数线性规划 (MILP) 算法(附完整实现代码)

    🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥  推荐专栏:《算法研究》 ####  防伪水印—— 左手の明天 #### 💗 大家好🤗🤗🤗,我是 左手の明天 !好久不见💗 💗今天分享matlab数学建模算法—— 混合整数线性规划 (MILP) 算法 💗

    2024年02月04日
    浏览(51)
  • 【数学建模美赛 | 国赛必学模型算法精讲】层次分析法——模型原理及Matlab+Python双语言代码演示

    层次分析法 是 评价决策类 中一个比较常用的方法,很多留意美赛赛题的小伙伴们就会发现,在美赛EF类题目的历年O奖论文中,层次分析法出现的概率是非常高的。层次分析法呢一般是针对评价决策类的题目,让我们评价或选择一个可能更好、更优的政策及方案,那这样呢,

    2024年01月25日
    浏览(47)
  • 【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码)

    如果这篇文章对你有帮助,欢迎点赞与收藏~ 微分方程建模是数学建模中一种极其重要的方法,它在解决众多实际问题时发挥着关键作用。这些实际问题的数学表述通常会导致求解特定的微分方程。将各种实际问题转换为微分方程的定解问题主要包括以下几个步骤: 确定研究

    2024年03月18日
    浏览(76)
  • 【数学建模】 MATLAB 蚁群算法

    MATLAB–基于蚁群算法的机器人最短路径规划 * https://blog.csdn.net/woai210shiyanshi/article/details/104712540?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168853912916800215023827%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257Drequest_id=168853912916800215023827biz_id=0utm_medium=distribute.pc_search_result.

    2024年02月15日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包