MATLAB4:数值计算

文章目录

  • 一、实验目的
  • 二、实验内容
  • 三、仿真结果
  • 四、实践中遇到的问题及解决方法


一、实验目的

  1. 熟悉根据已知数据进行回归法曲线拟合。
  2. 熟悉根据已知数据进行多项式曲线拟合。
  3. 熟悉根据已知数据利用指定方法进行数据插值(临近插值、线性插值、立方插值、三次样条插值)。
  4. 熟悉脚本文件和函数文件的概念、各自的特点以及二者的区别。
  5. 熟悉主函数和私有函数的特点。
  6. 了解MATLAB编程的特点。

二、实验内容

  1.多项式曲线拟合的介绍

已知变量x,y之间的函数关系为y=a1x(n)+a2x(n-1)+…+a(n)x+a(n+1)
现在希望通过实验获得一组关于(x,y)的测量数据,确定出系数(a1,a2,…a(n+1))。这类问题就称为多项式拟合。MATLAB求解该问题的命令是:
p=polyfit(x,y,n) %x,y数组所给数据的n阶拟合多项式系数向量p

  2.多项式曲线拟合的注意事项

A、为保证较好的拟合效果,多项式阶数要取得恰当。过低,可能残差较大;过高,拟合模型包含噪声影响。观察数据图形曲线,有助于适当阶数的确定。
B、拟合多项式只能在给定数据所限定的区间内使用,不要任意向外拓展。

  3.多项式曲线拟合的应用举例

>> x=0:0.1:1;
y=[-0.447,1.978,3.11,5.25,5.02,4.66,4.01,4.58,3.45,5.35,9.22];
p=polyfit(x,y,3)    %三次拟合
xx=0:0.001:1;
yy=polyval(p,xx);
plot(xx,yy)
p =56.6915  -87.1174   40.0070   -0.9043

在这里插入图片描述

  4. 回归法曲线拟合的说明

A、最小二乘解的求取方法不仅适用于多项式模型,还适用于其他更广泛的模型。
B、适用最小二乘解的条件是:只要应变量y与自变量x的数据阵X满足线性关系即可。

  5.回归法曲线拟合的应用举例

t=[0,0.3,0.8,1.1,1.6,2.3]';
y=[0.5,0.82,1.14,1.25,1.35,1.40]';
x=[ones(size(t)),t,t.^2];
a=x\y
T=(0:0.1:2.5)';
Y=[ones(size(T)),T,T.^2]*a;
plot(T,Y,'O')
a =0.53180.9191-0.2387

在这里插入图片描述

  6.插值介绍

插值就是在已知数之间寻找估计值。一般的,从各种试验得来的数据总是有一定的数量,而利用插值技术能够从有限的数据中获取系统整体的状态。因此,数据插值在各行各业,特别是信号处理领域内有着广泛的应用。MATLAB软件作为数据处理的优秀软件之一,自然提供了常用的各种数据插值计算的函数。

  7.一维插值的两种类型

A、多项式插值
格式:yi=interp1(x,y,xi,method)。xi用于插值的点;method指定插值的方法
B、基于傅里叶变换的一维插值
格式:y=interpfit(x,n)。x为含有周期函数值的矢量,并且为等间距点的个数,n为返回等间距点的个数。

  8. 一维插值中多项式插值的方法

一维插值中多项式插值的方法9.二维插值
格式:y=interp2(x,y,z,xi,yi,method)

  9.三种二维插值

插值说明
临近插值用分段连续的面来拟合已知数据,插入最邻近的点
双线性插值用分段的双线性来拟合已知数据
二重三次方插值通过已知数据拟合一个双立体面

  10.常用一维插值中多项式插值的指令

指令说明
y=interp1(x,y,x1,‘spline’)三次样条插值
y=interp1(x,y,x1,‘nearest’)临近插值
y=interp1(x,y,x1,‘linear’)线性插值
y=interp1(x,y,x1,‘cublic’)立方插值

三、仿真结果

1.给出两组数据x=[0 0.3 0.8 1.1 1.6 2.3]’ y=[0.82 0.72 0.63 0.60 0.55 0.50]’,我们可以简单的认为这组数据在一条衰减的指数函数曲线上,y=C1+C2exp(-x)通过曲线拟合求出这条衰减曲线的表达式,并且在图形窗口画出这条曲线,已知的点用*表示。
答:

>> x=[0 0.3 0.8 1.1 1.6 2.3]';
y=[0.82 0.72 0.63 0.60 0.55 0.50]';
x1=[ones(size(x)),exp(-x)];
c=x1\y
T=(0:0.1:10)';
y1=[ones(size(T)),exp(-T)]*c;
plot(T,y1, x,y,'*')
c =0.4760
0.3413

由程序结果可知衰减曲线的表达式:y1=0.4760+0.3413*exp(-t)

在这里插入图片描述
2.通过测量得到一组数据:

t12345678910
y4.8424.3623.7543.3683.1693.0833.0343.0163.0123.005

分别采用y1(t)= C1+C2exp(-t)和y2(t)= d1+d2t*exp(-t)进行拟合,并画出拟合曲线进行对比。
答:

>> t=[1:10]';
y=[4.842 4.362 3.754 3.368 3.169 3.083 3.034 3.016 3.012 3.005]';
x1=[ones(size(t)),exp(-t)];
c=x1\y
x2=[ones(size(t)),t.*exp(-t)];
d=x2\y
T=(0:0.1:10)';
y1=[ones(size(T)),exp(-T)]*c;
y2=[ones(size(T)),T.*exp(-T)]*d;
plot(T,y1,T,y2,t,y,'*'),
legend('y1(t)= C1+C2*exp(-t)','y2(t)= d1+d2*t*exp(-t)')
c =3.16215.1961
d =3.0039
5.0046

由程序结果可知衰减曲线的表达式:y1=3.1621+5.1961exp(-t);y2=3.0039+5.0046t*exp(-t);
分析:从图中可以看出,曲线y2更加准确,与各点的误差较小
在这里插入图片描述
3.从某一个过程中通过测量得到:

t00.20.40.60.81.02.05.0
y1.01.511.882.132.292.402.60-4.00

分别采用多项式和指数函数进行曲线拟合。
答:采用三次多项式拟合以及指数函数y1=c1+c2*exp(-t)拟合,具体程序如下:

>> x=[0,0.2,0.4,0.6,0.8,1.0,2.0,5.0];
y=[1.0,1.51,1.88,2.13,2.29,2.40,2.60,-4.00];
p=polyfit(x,y,3)     %三次多项式拟合
xx=0:0.1:8;
yy=polyval(p,xx);
x1=[ones(size(x')),exp(-x')];   %指数函数拟合
c=x1\y'
T=(0:0.1:10)';
y1=[ones(size(T)),exp(-T)]*c;
plot(xx,yy,T,y1,x,y,'*')
legend('三次多项式拟合','指数函数y1=c1+c2*exp(-t)拟合')
p =0.0190   -0.7217    2.1198    1.0712
c =-0.0565
2.5674 

分析:从图中可以看出,三次多项式拟合更加准确,与各点的误差较小,而指数函数拟合误差很大,不适合该题
在这里插入图片描述

4.对应时间矢量t,测得一组矢量y

t00.30.81.11.62.3
y0.50.821.141.251.351.40

采用一个带有线性参数的指数函数进行拟合,y=a0+a1exp(-t)+a2t*exp(-t),利用回归方法求出拟合函数,并画出拟合曲线,已知点用圆点表示。
答:

>> x=[0,0.3,0.8,1.1,1.6,2.3]';
y=[0.5,0.82,1.14,1.25,1.35,1.40]';
x1=[ones(size(x)),exp(-x),x.*exp(-x)];
c=x1\y
T=(0:0.1:5)';
y1=[ones(size(T)),exp(-T),T.*exp(-T)]*c;
plot(T,y1,x,y,'o')
c =1.3974-0.89880.4097

由程序结果可知曲线的表达式:y=1.3974-0.8988exp(-t)+ 0.4097t*exp(-t)
在这里插入图片描述
5.某钢材厂从1990年到2010年的产量如下表所示,请利用三次样条插值的方法计算1999年该钢材厂的产量,并画出曲线,已知数据用星号表示。要求写出达到题目要求的MATLAB操作过程,不要去计算结果。

年份19901992199419961998200020022004200620082010
产量(万吨)75.9991.97105.71123.20131.66150.69179.32203.21226.50249.63256.34

答:

>> x=1990:2:2010;
y=[75.95,91.97,105.71,123.20,131.66,150.69,179.32,203.21,226.21,249.63,256.34];
x1=1990:0.01:2020;
y1=interp1(x,y,x1,'spline');
plot(x1,y1,x,y,'*')
y1=interp1(x,y,1999,'spline')
y1 =139.2732

在这里插入图片描述

四、实践中遇到的问题及解决方法

  1.问题:以上面第三题为例,多项式和指数函数进行曲线拟合时数组x和y分不清什么时候转置?
  解决办法:其中多项式拟合多为非转置,而指数函数拟合多为数组转置x’和y’。
  2.问题:回归法曲线拟合步骤的原理我开始一直不懂是为什么?
  解决办法:我询问了一下同学,明白了其实是利用解方程的原理来求解曲线式中未知的参数,其中ones(size(x))对应的是1。
  3.问题:有这麽一道题:数据具有y=x^2的变化趋势,用最小二乘法 求解y并画图。开始我以为只能用曲线拟合的方法做。
  解决办法:后来我明白了最小二乘解的求取方法同样适用于多项式模型,直接用多项式拟合求解即可。

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

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

相关文章

小程序视频如何下载到电脑上

小程序视频如何下载到电脑上,很简单 1.利用Fiddler和Charles这些专业的抓包工具 2.利用录屏 3.利用专门抓取资源的工具(集成了抓取下载,而且对资源下载很友好) 工具我已经打包好了 下载高手链接:https://pan.baidu.com/s/1qJ81sNBzzzU0w…

leetcode2924--找到冠军II

1. 题意 给定一个有向无环图,方向表示胜负关系;求最后胜出的人。 2. 题解 将所有人标记为胜者,统计出度去掉对应胜者标记; 最后统计胜者数目,是否大于1,若大于1,则没有胜者,否则…

千云物流 -influxdb了解和应用

简介 InfluxDB Cluster 是一个开源的 时间序列数据库,没有外部依赖。它对于记录指标、事件和执行分析很有用。 InfluxDB Cluster 启发于 InfluxDB Enterprise、InfluxDB v1.8.10 和 InfluxDB v0.11.1,旨在替代 InfluxDB Enterprise。 InfluxDB Cluster 易于维护,可以与上游…

Linux的学习之路:6、Linux编译器-gcc/g++使用

摘要 本文主要是说一些gcc的使用,g和gcc使用一样就没有特殊讲述。 目录 摘要 一、背景知识 二、gcc如何完成 1、预处理(进行宏替换) 2、编译(生成汇编) 3、汇编(生成机器可识别代码 4、链接(生成可执行文件或…

【我的代码生成器】生成React页面类

有了数据表的结构信息,就能生成React 的页面类,快捷方便。 生成界面如下: 生成的React FrmUser.js页面如下: 只需再写里面的操作逻辑代码。

银河麒麟之PaddleOCR模型部署

一、PaddleOCR简介 PaddleOCR是一个基于飞桨框架开发的开源OCR工具,提供了一系列强大的文本识别功能。PaddleOCR支持多种文本识别任务,包括文字检测、文字识别、文本方向检测等。它具有高效、准确的特点,适用于多种场景下的文本识别需求&…

Selenium - java - 屏幕截图

文档地址 Selenium 浏览器自动化项目 | Selenium 安装 <dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.19.1</version></dependency>使用 创建WebDriver实例 …

IDP之Backstage - 环境搭建

0. 目录 1. 前言2. 环境准备&#xff08;Windows10下&#xff09;2.1 安装nvm2.2 git和docker安装 3. 创建模板项目3.1 典型错误: fails on the yarn install step3.2 再次启动3.3 验证 4. 相关 1. 前言 本不想写这篇&#xff0c;因为看着官网文档写着挺简单的&#xff0c;但实…

禅道登录/创建版本/编辑版本接口 【禅道版本 20.0.beta2】

登录获取token import requestsurl = "http://192.168.1.234:6061/api.php/v1/tokens" payload = {"account": "jenkins","password": "jenkins123" } headers = {}response = requests.request

UI设计的未来发展

UI 设计的未来发展&#xff0c;实际上是互联网行业未来发展的折射。毕竟&#xff0c;UI 设计始终是互联网行业的一部分&#xff0c;因此在互联网行业未来发展的可能性来看&#xff0c;UI 设计同样会跟随着互联网的部分稳步前进。曾经&#xff0c;在最初的图形化界面出现的时候&…

线上剧本杀小程序发展趋势如何?

随着几年的快速发展&#xff0c;剧本杀行业进入到了大众的视野&#xff0c;不过从2022年开始&#xff0c;行业就开始处于下滑趋势&#xff0c;但是行业反而变得更加的规范化。 经历过下滑发展后&#xff0c;剧本杀行业已经趋向专业化、精品化发展&#xff0c;行业正在复苏&…

高基报表是什么?高校各部门如何快速填报高基表?

高基报表——全称是《高等教育事业基层统计报表》&#xff08;以下简称《高基报表》&#xff09;&#xff0c;作为高等院校基本情况报表的代表&#xff0c;承载着学校办学实力的真实写照。填报高基报表是一项细致入微的工作&#xff0c;不仅关系到学校的科学管理和决策研究&…

第一节:什么是操作系统

什么是操作系统 一、一台计算机的组成部分1、计算机能干啥2、谈谈计算机硬件 二、什么是操作系统三、学习操作系统的层次 一、一台计算机的组成部分 如下图所示&#xff1a; 这就是就是构成一台计算机的组成部分 1、计算机能干啥 ∙ \bullet ∙计算机是我们专业吃饭的家伙&a…

前端知识学习笔记-六(vue)

简介 Vue是前端优秀框架是一套用于构建用户界面的渐进式框架 Vue优点 Vue是目前前端最火的框架之一 Vue是目前企业技术栈中要求的知识点 vue可以提升开发体验 Vue学习难度较低 Vue开发前准备 一、nodejs环境 Nodejs简介 Nodejs诞生于2009年&#xff0c;主攻服务器方向&#x…

Spring Message

EnableJms注解 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(JmsBootstrapConfiguration.class) public @interface EnableJms { } @Import(JmsBootstrapConfiguration.class) @Configuration @Role(BeanDefinition.ROLE_INFRASTRUC…

数据结构OJ题——栈和队列

1. 用栈实现队列&#xff08;OJ链接&#xff09; 题目描述&#xff1a;请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09; void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回…

Gateway 基本配置指南:构建高效的网络接入网关

简介&#xff1a; Gateway 是一个常用的网络接入网关&#xff0c;它可以帮助组织实现安全、可靠和高性能的网络连接。本文将介绍 Gateway 的基本配置&#xff0c;帮助读者了解如何正确配置和部署一个高效的 Gateway 网关。 1.网络拓扑规划&#xff1a; 在配置 Gateway 前&#…

锂电池寿命预测 | Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池寿命预测 | Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测 程序设计 完整程序和数据获取方式&#xff1a;私信博主回复Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测。 参考资料 [1] h…

Java/Android 汉字转拼音

Java 汉字转拼音 1.TinyPinyin 功能&#xff1a; 适用于Java和Android的快速、低内存占用的汉字转拼音库。 特性&#xff1a; 生成的拼音不包含声调&#xff0c;均为大写&#xff1b;支持自定义词典&#xff0c;支持简体中文、繁体中文&#xff1b;执行效率很高(Pinyin4J的…

Nginx配置大全【六大使用场景、七大负载均衡策略、四大负载健康检查】

目录 基础配置信息应用场景一&#xff1a;配置web服务器应用场景二&#xff1a;反向代理服务器应用场景三&#xff1a;URL重定向应用场景四&#xff1a;防盗链应用场景五&#xff1a;根据设备类型重定向/代理/访问 不同域名/资源应用场景六&#xff1a;&#xff01;负载均衡服务…