06 数学软件与建模---拟合

news2024/11/15 20:49:39

一、知识储备

1.曲线拟合问题的提法

已知一组(二维)数据,即平面上 n个点(xi,yi)  i=1,…,n, 寻求一个函数(曲线)y=f(x), 使 f(x) 在某种准则下与所有数据点最为接近,即曲线拟合得最好.

2.拟合与插值的关系

1)问题:

给定一批数据点,需确定满足特定要求的曲线或曲面

2)解决方案:

若要求所求曲线(面)通过所给所有数据点,就是插值问题

若不要求曲线(面)通过所有数据点,而是要求它反映对象整体的变化趋势,这就是数据拟合,又称曲线拟合或曲面拟合.

函数插值与曲线拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者在数学方法上是完全不同的.

3)实例:

 实例:下面数据是某次实验所得,希望得到X和 f之间的关系?

 

3.曲线拟合的常用方法

3.1 线性最小二乘法

1)线性最小二乘法的基本思路

 2)线性最小二乘法的求解:预备知识

 3)线性最小二乘拟合 f(x)=a1r1(x)+ …+amrm(x)中函数{r1(x),…,rm(x)}的选取  

 二、用MATLAB解拟合问题

1.线性最小二乘拟合 

EG1: 

解法1.用解超定方程的方法

 

1)输入以下命令:

x=0:0.1:1;
y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
R=[(x.^2)' x' ones(11,1)];%生成11行1列的矩阵
A=R\y'

 

 拟合结果:

 解法2.用多项式拟合的命令

 x=0:0.1:1;
 y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66   9.56 9.48 9.30 11.2];
 A=polyfit(x,y,2)%输出拟合的多项式系数
 z=polyval(A,x);%拟合下的曲线
 plot(x,y,'k+',x,z,'r') %作出数据点和拟合曲线的图形

2.作非线性最小二乘拟合

 EG2:

 

1)编写M文件 curvefun1.m

function f=curvefun1(x,tdata)
f=x(1)+x(2)*exp(-0.02*x(3)*tdata)   
%其中 x(1)=a;   x(2)=b;x(3)=k;
%关于x和tdata的函数

2)输入命令 

tdata=100:100:1000;
cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59];
x0=[0.2,0.05,0.05];%初值
x=lsqcurvefit ('curvefun1',x0,tdata,cdata)
f= curvefun1(x,tdata) 
t=[0:1:1000];
plot(tdata,cdata,'r+',t,curvefun1(x,t),'b')

运行结果:

 结论:a=0.0063, b=-0.0034, k=0.2542 

 

function f=curvefun2(x)
    tdata=100:100:1000;
    cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59];
    f=x(1)+x(2)*exp(-0.02*x(3)*tdata)- cdata
x0=[0.2,0.05,0.05];
x=lsqnonlin('curvefun2',x0)
f= curvefun2(x)

 三、练习

1.

clc,clear
x=1:1:10;
y=x.^3-6*x.^2+5*x-3;
xi=rand;%产生0-1的随机数
Y=y+xi;
%一次
f1=polyfit(x,Y,1)%输出多项式次数
y1=polyval(f1,x);%计算各点的拟合值
subplot(2,2,1)
plot(x,y,'x',x,y1)
title("一次拟合曲线")
grid on
%二次
f2=polyfit(x,Y,2)%输出多项式次数
y2=polyval(f2,x);%计算各点的拟合值
subplot(2,2,2)
plot(x,y,'o',x,y2)
title("二次拟合曲线")
grid on
%三次
f3=polyfit(x,Y,3)%输出多项式次数
y3=polyval(f3,x);%计算各点的拟合值
subplot(2,2,3)
plot(x,y,'o',x,y3)
title("三次拟合曲线")
grid on
%四次
f4=polyfit(x,Y,4)%输出多项式次数
y4=polyval(f4,x);%计算各点的拟合值
subplot(2,2,4)
plot(x,y,'o',x,y4)
title("四次拟合曲线")
grid on

 2.

function f=curvefun4(x,tdata)
V=10;
f=V-(V-x(1))*exp(-tdata./x(2))
%x(1)=v0;x(2)=T
tdata=[0.5 1 2 3 4 5 7 9];
vdata=[6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63];
%x0=[0.2,0.05];
x0=[0.1 1];
x=lsqcurvefit('curvefun4',x0,tdata,vdata)
f=curvefun4(x,tdata)
p=linspace(tdata(1),tdata(end));
plot(tdata,vdata,"ro",p,curvefun4(x,p),'b-')

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前后端分离项目-Springboot 【后端框架搭建,SSM】

1.创建新项目 点击File->New->Project 选择Spring Initializr 填写信息 修改Group修改Artifact修改管理类型Maven(带有文件目录)修改Java version 选择依赖 这里只需要选择Web->Spring Web即可 创建的文件目录如下 2.创建文件目录 controlle…

【深入浅出Spring原理及实战】「原理分析专题」从零开始教你SpringEL表达式使用和功能分析讲解指南(上篇)

Spring EL表达式语言,这种语言jsp中学到的el,但是在整个spring之中其表达式语言要更加的复杂,而且支持度更加的广泛,最重要的是他可以进行方法的调用,对象的实例化,集合操作等等,但是唯一的难点就是:代码太复杂了,表达式太复杂了。深刻领会,spring中针对于字符串的改进,程序员使…

基于jsp+mysql+ssm医院出车管理与绩效分配系统-计算机毕业设计

项目介绍 本毕业设计主要实现集人性化、高效率、便捷等优点于一身的出车管理系统与绩效分配系统,完成系统用户管理、车辆信息管理、调度员信息管理、驾驶员信息管理、救护员信息管理、科室人员管理、院领导信息管理、调度信息管理、出车统计等功能模块。系统通过浏…

Spring Cloud微服务之loadbalancer负载平衡

Spring Cloud微服务之loadbalancer负载平衡 小学时候,曾经做过这样的数学题。 说有一个水池子,上面有一个排水管,下面有一个进水管,开一个进水管,6个小时灌满水池,开一个排水管,10个小时放光整…

给博客网站添加loading加载中动画代码

只需添加几行代码,就可以加强浏览者的体验,不在等待页面加载时感到枯燥,从而关闭网页,很多网站都会制作一个“网页正在加载中”的提示效果或显示加载进程,加载完成后提示消失,大部分都应用在网站的首页。当然网上很多教…

02时间复杂度与空间复杂度

开始系统学习算法啦!为后面力扣和蓝桥杯的刷题做准备!这个专栏将记录自己学习算法是的笔记,包括概念,算法运行过程,以及代码实现,希望能给大家带来帮助,感兴趣的小伙伴欢迎评论区留言或者私信博…

如何将多个视频剪辑到一起?如何把两段视频合成一段

如何将多个视频剪辑到一起?那么如何拼接视频?接下来小编就带大家一起了解下有关视频拼接的几款工具推荐。 工具一:TS视频拼合工具 TS视频合并工具是一款轻便简单的视频合并工具,主要是用于合并TS视频文件的工具,当用…

【分享】本地js文件替换源网页js文件的方法

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!本地js文件替换源网页js文件的方法 环境 win10Fiddlerchrome方法一:Fiddler抓包替换js文件 自动回复器–…

HashMap源码分析以及面试题

目录 5、HashMap源码分析 5.1、初始化容量 5.2、负载因子是多少? 5.3、负载因子可以大于或小于0.75吗? 5.4、扩容长度为多少? 5.5、下标是怎么计算的? 5.6、hash冲突,是怎么解决的? 5.7、什么时候…

[附源码]JAVA毕业设计英语课程学习网站(系统+LW)

[附源码]JAVA毕业设计英语课程学习网站(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术…

安装 NVSwitch GPU 服务器的 cuda 驱动版本、nvidia-docker 指南

一,安装 Cuda 驱动 可参考笔者之前写过的文章: 升级 GPU 服务器 cuda 驱动版本指南 如果出现如下报错,则需安装 gcc、kernel-devel,请参考下面第二步安装 gcc、kernel-devel。 二,安装 gcc、kernel-devel 1&#…

基于狮群算法优化的lssvm回归预测-附代码

基于狮群算法优化的lssvm回归预测 - 附代码 文章目录基于狮群算法优化的lssvm回归预测 - 附代码1.数据集2.lssvm模型3.基于狮群算法优化的LSSVM4.测试结果5.Matlab代码摘要:为了提高最小二乘支持向量机(lssvm)的回归预测准确率,对…

[附源码]计算机毕业设计高校车辆管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

地表最强:免费文字转语音工具

0、前言 我们在刷短视频的时候,经常会听到一些AI合成声音,它们有各种音色、语调,甚至不同的情绪,听起来与人声无异,其实这些大都是利用微软Azure的文字转语音技术来实现的。 虽然国内也有很多配音工具,但…

【优化算法】粒子群优化算法

粒子群优化算法粒子群优化算法简介粒子群优化算法原理粒子群优化算法的数学描述粒子群优化算法框架PySwarms:Python中粒子群优化的研究工具包PySwarms快速使用示例:编写自己的优化循环相关资料粒子群优化算法简介 粒子群优化算法(Particle Swarm Optimi…

如何安然度过行业大萧条,听听10年测试老鸟的分析

国内的互联网行业发展较快,所以造成了技术研发类员工工作强度比较大,同时技术的快速更新又需要员工不断的学习新的技术。因此淘汰率也比较高,超过35岁的基层研发类员工,往往因为家庭原因、身体原因,比较难以跟得上工作…

Huawei Compute Architecture for Neural Networks - CANN

Huawei Compute Architecture for Neural Networks - CANN1. Technical support (技术支持) https://support.huawei.com/enterprise/en/index.html https://support.huawei.com/enterprise/zh/index.html Server - Intelligent Computing -> Ascend Computing (昇腾计算)…

ChatGPT简介与Q群机器人部署教程

最近OpenAi推出的ChatGPT火出NLP圈子,看到不少人说强人工智能已经出现,于是赶紧来体验感受一下。 ChatGPT简介 ChatGPT是一个基于GPT-3(通用语言模型)的聊天机器人。它的目的是能够通过自然语言交流与用户进行对话。它能够理解用…

Seq2Seq基本原理

Seq2Seq基本原理 encoder & decoder Seq2Seq结构用于多个输入和多个输出的模型,但是输入和输出的大小可能并不一致,其本质上也是RNN网络的一个扩展,常见的应用场景包括:机器翻译、语音识别、文本摘要等。 常见的seq2seq的输…

Linux源码下载

方法一、Git下载源码 1.1、进入Linux官网 通过任意浏览器访问:https://www.kernel.org/,界面如下 1.2、选择版本 点击某一个版本对应的browse,Linux版本分为:mainline(主线版本)、stable(稳定版…