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…

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

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

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

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

银河麒麟之PaddleOCR模型部署

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

IDP之Backstage - 环境搭建

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

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

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

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

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

第一节:什么是操作系统

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

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

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

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

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

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

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

Python数据分析案例42——基于Attention-BiGRU的时间序列数据预测

承接上一篇的学术缝合,排列组合模型,本次继续缝合模型演示。 Python数据分析案例41——基于CNN-BiLSTM的沪深300收盘价预测-CSDN博客 案例背景 虽然我自己基于各种循环神经网络做时间序列的预测已经做烂了.....但是还是会有很多刚读研究生或者是别的领…

最新版守约者二级域名分发系统

主要功能 二级域名管理: 我们的系统提供全面的二级域名管理服务,让您轻松管理和配置二级域名。 域名分发:利用我们先进的域名分发技术,您可以自动化地分配和管理域名,确保每个用户或客户都能及时获得所需的域名资源。…

SpringBoot基于RabbitMQ实现消息延迟队列方案

知识小科普 在此之前,简单说明下基于RabbitMQ实现延时队列的相关知识及说明下延时队列的使用场景。 延时队列使用场景 在很多的业务场景中,延时队列可以实现很多功能,此类业务中,一般上是非实时的,需要延迟处理的&a…

【深入探讨】JavaScript 中的 forEach 和 map 区别

🐱 个人主页:不叫猫先生,公众号:前端Clodplay 🙋‍♂️ 作者简介:前端领域优质作者、阿里云专家博主,共同学习共同进步,一起加油呀! ✨优质专栏:VS Code插件开…

房贷还款(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <math.h>int main() {//初始化变量值&#xff1b;double m, r 0.01;float d 300000;float p 6000;//运算还款所需月份&#xff1b;m log10…

元象4.2B参数 MoE大模型实战

01 简介 近期&#xff0c;元象公司推出了其首个Moe大模型XVERSE-MoE-A4.2B。该模型采用了混合专家模型架构&#xff08;Mixture of Experts&#xff09;&#xff0c;并拥有4.2B的激活参数&#xff0c;其性能可与13B模型相媲美。值得一提的是&#xff0c;这个模型是完全开源的&…

Python 实战人工智能数学基础:图像处理应用

1.背景介绍 在许多计算机视觉任务中&#xff0c;图像处理占据了很重要的角色&#xff0c;尤其是在目标检测、特征提取、分类、跟踪等计算机视觉任务中。图像处理是一个复杂的过程&#xff0c;涉及到图像的采集、分析、存储、显示等环节。本文将讨论基于Python实现的图像处理的…

spring快速搭建聊天AI

官网url: https://spring.io/projects/spring-ai 本文演示的是open AI 1创建java项目 2.拿到AI的key&#xff08;没有的话可以去淘宝花几块钱买一个&#xff09; //YOUR_API_KEY写你自己的open AI的key spring.ai.openai.api-keyYOUR_API_KEY spring.ai.openai.chat.options.…

在家如何查找下载外文文献

查找下载外文文献的数据库大部分都需要使用权限的&#xff0c;那么我们如何在家进入这些数据库查找下载文献资源呢&#xff1f;请看本文的经验分享&#xff1a; 举例1、 一位同学的文献求助&#xff1a;Performance of financial hedging and earnings management under dive…