数学建模 —— 插值与拟合(1)

news2024/11/16 17:23:57

一、matlab画图

1.1 plot(二维图形)

plot(x) —— 缺省自变量绘图格式

plot(x,y) —— 基本格式,以y(x)的函数关系作出直角坐标图,如果y为n×m的矩阵,则以x为自变量,作出m条曲线

plot(x1,y1,x2,y2,…,xn,yn) —— 多条曲线绘图格式

plot(x1,y1,选项1,x2,y2, 选项2,…,xn,yn,选项n)——含选项的绘图格式

颜色参数

颜色

线型参数

线型

标记符号

标记

b

-

实线

.

圆点

g

绿

:

点线

o

圆圈

r

-.

点划线

+

加号

c

--

虚线

*

星号

m

品红

x

叉号

y

'square ' 或 s

方块

k

'diamond' 或 d

菱形

w

^

朝上三角符号

v

朝下三角符号

<

朝左三角符号

>

朝右三角符号

p

五角星

h

六角星

图形标注函数的调用格式:    

title(图形名称)    

xlabel(x轴说明)    

ylabel(y轴说明)    

text(x,y,图形说明)    在x,y坐标处添加文字说明    

legend(图例1,图例2,…)

图形窗口的分割:

subplot(m,n,p)     将一个绘图窗口分割成 m*n 个子区域,并按行从左至右 ,由上至下 依次编号 。     p 表示第 p 个绘图子区域。

函数

二维图的形状

备注

bar(x,y)

条形图

x是横坐标,y是纵坐标

fplot(y,[a b])

精确绘图

y代表某个函数,[a b]表示需要精确绘图的范围

polar(θ,r)

极坐标图

θ是角度,代表以θ为变量的函数

stairs(x,y)

阶梯图

x是横坐标,y是纵坐标

stem(x,y)

针状图

x是横坐标,y是纵坐标

fill(x,y,’b’)

填充图

x是横坐标,y是纵坐标, ‘b’代表颜色

scatter(x,y,s,c)

散点图

s是圆圈标记点的面积,c是标记点颜色

pie(x)

饼图

x为向量

1.2 三维曲线

plot3(x1,y1,z1,‘选项1’, x2,y2,z2,‘选项2', …)    

x,y,z是长度相同的向量:一条曲线    

x,y,z是维数相同的矩阵:多条曲线

三维曲面z=f(x,y) 绘制的一般步骤:  

步骤一:确定向量x,y  

步骤二:使用meshgrid生成网格矩阵  

步骤三:计算函数z=f(x,y) 在各网格点上的值  

步骤四:使用mesh等命令生成三维网格曲面图、使用surf等命令生成三维表面着色曲面图。

meshgrid    

[X,Y]= meshgrid(x,y)    x, y 为给定的向量,X, Y 是网格划分后得到的网格矩阵

mesh(X,Y,Z,C)     X,Y:网格坐标矩阵,     Z :网格点上的高度矩阵。    矩阵 C :确定不同高度下的颜色范围,    省略时 C=Z,即颜色的设定正比于图形的高度

mesh(Z)     x, y 省略时,Z矩阵的列下标当做x轴坐标, Z矩阵的行下标当做y轴坐标  

meshc     调用方式与 mesh 相同,在 mesh 基础上增加等高线

meshz     调用方式与 mesh 相同,在 mesh 基础上增加底座

1.3 三维着色曲面图

surf, surfc, surfl  

surf(X,Y,Z,C)      绘制由矩阵 X,Y,Z 所确定的着色的三维表面图,参数含义同 mesh。  

surfc    调用方式与 surf 相同,在 surf 基础上增加等高线  

surfl    调用方式与 surf 相同,在 surf 基础上增加光照效果

二、插值

        可在给定基准数据的情况下,估计出肌醇数据之间的其他点的函数值

(1)一维插值:拉格朗日、临近点、线性、三次样条、分段三次插值

(2)二维插值

2.1 一维插值

2.1.1 拉格朗日插值

P_n (x)=∑_(i=0)^n (L_i (x)⋅y_i )

L_i (x)=((x-x_0)(x-x_1)⋯(x-x_(i-1))(x-x_(i+1))⋯(x-x_n))   /  ((x_i-x_0)(x_i-x_1)⋯(x_i-x_(i-1))(x_i-x_(i+1))⋯(x_i-x_n))

称为拉格朗日插值基函数

function y=lagrange(x0,y0,x) 
n=length(x0);m=length(x); 
for i=1:m 
z=x(i); 
s=0.0; 
for k=1:n 
      p=1.0; 
      for j=1:n 
           if j~=k 
              p=p*(z-x0(j))/(x0(k)-x0(j)); 
           end 
      end 
      s=p*y0(k)+s; 
end 
y(i)=s; 
end

2.1.2 临近点插值

        用插值点最近的已知函数值代替该点

2.1.3 分段线性插值

        用已知的函数点连接成直线段,作为插值函数

2.1.4 三次样条插值

        将已知的每两个函数点之间用一个三次函数来插值,要求整个函数有2阶光滑性,即一阶导数以及二阶导数连续。

2.1.5 三次多项式插值

        将已知的每两个函数点之间用一个三次函数来插值,要求整个函数有一阶光滑性,且对极小点保持逼近。

 2.1.5 matlab代码实现

        yi = interp1(x, y, xi, 'method')

x, y :插值节点,xi:被插值点,method:插值方法;(要求x单调,xi不超过x)

method:'nearest':最邻近插值

                'linear':线性插值

                'spline':三次样条插值

                'pchip':立方插值

                缺省时:分段线性插值

2.2 二维插值

2.2.1 二维网格插值

   z = interp2 (x0, y0, z0, x, y, 'method')

x0, y0 ,z0:插值节点;x, y:被插值点;method:插值方法要求x0,y0单调;xy可取为矩阵,或x取行向量,y取为列向量,x,y的值分别不能超出x0,y0的范围。

method:'nearest':最邻近插值

                'linear':双线性插值(默认)

                'cubic':双三次插值

                'spline':三次样条插值

2.2.2 二维离散点插值

 z = griddata(x0, y0, z0, x, y, 'method')

x0, y0 ,z0:插值节点;x, y:被插值点;method:插值方法要求x0,y0单调;xy可取为矩阵,或x取行向量,y取为列向量,x,y的值分别不能超出x0,y0的范围。

method:'nearest':最邻近插值

                '(bi)linear':(双)线性插值(默认)

                '(bi)cubic':(双)三次插值

三、拟合

        在给定的基准数据下,寻求近似的函数(或者待定的参数)能较好的反映数据变化的规律

        (注:不要求通过已经的数据点)

3.1 多项式拟合

        利用最小二乘法确定n次多项式的系数

matlab实现:

1.f(x)=a1xm+ …+amx+am+1

        a=polyfit(x,y,m)

a=[a1, ... , am+1](数组):输出拟合多项式系数的集合

x, y:输入同长度的数组x,y

m:拟合多项式次数

2.多项式在x处的值y可用以下命令计算:

            y=polyvalax

3.2 超定方程组

        方程个数大于未知量个数的方程组

        超定方程一般是不存在解的矛盾方程组

如果有向量a使得∑_(i=1)^n(r_i1 a_1+r_i2 a_2+⋯+r_im a_m-y_i )^2,则称a为超定方程的最小二乘解

3.3 matlab作非线性最小二乘拟合

    Matlab的提供了两个求非线性最小二乘拟合的函数:lsqcurvefitlsqnonlin。两个命令都要先建立M-文件fun.m,在其中定义函数f(x),但两者定义f(x)的方式是不同的,可参考例题.

3.3.1 lsqcurvefit

        F(x,xdata)=(Fxxdata1),Fxxdatan))T

使得∑_(i=1)^n  (F(x,xdata_i)-ydata_i)^2   最小

3.3.2 lsqnonlin

lsqnonlin用以求含参量x(向量)的向量值函数

     f(x)=(f1(x),f2(x),,fn(x))T   中的参量x,使得

 f^T (x)f(x)=f_1 (x)^2+f_2 (x)^2+⋯+f_n (x)^2

      最小。

      其中 fix=fxxdataiydatai

                          =F(x,xdatai)-ydatai

 

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

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

相关文章

Lesson6--排序(初级数据结构完结篇)

【本节目标】 1. 排序的概念及其运用 2. 常见排序算法的实现 3. 排序算法复杂度及稳定性分析 1.排序的概念及其运用 1.1排序的概念 排序 &#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来…

GPT LoRA 大模型微调,生成猫耳娘

往期热门专栏回顾 专栏描述Java项目实战介绍Java组件安装、使用&#xff1b;手写框架等Aws服务器实战Aws Linux服务器上操作nginx、git、JDK、VueJava微服务实战Java 微服务实战&#xff0c;Spring Cloud Netflix套件、Spring Cloud Alibaba套件、Seata、gateway、shadingjdbc…

MACOS安装 vue 抱错解决方法npm ERR! code EACCESnpm ERR! syscall mkdirnpm ERR!

问题 在使用脚手架 vue-cli 创建 vue 工程的时候存在权限不足的情况下&#xff0c;报错&#xff1b; npm error code EACCES npm error syscall open npm error path /Users/ npm ERR! code EACCESnpm ERR! syscall mkdirnpm ERR! 解决方案&#xff1a; sudo npm cache cl…

什么是最好的手机数据恢复软件?6 款手机数据恢复软件 [2024 年更新]

什么是最好的手机数据恢复软件&#xff1f;在这篇文章中&#xff0c;您将了解 6 款最好的免费手机数据恢复软件&#xff0c;并学习如何恢复数据的完整指南。 最好的手机数据恢复软件是什么&#xff1f; 手机数据恢复软件是恢复智能手机中丢失或删除的文件、消息、照片和其他宝…

反射获取成员变量

目录 利用反射获取成员变量 ​编辑 代码实现 获取class对象 获取成员变量 获取单个成员变量 获取成员变量的名字 获取权限修饰符 获取成员变量的数据类型 获取成员变量记录的值 修改对象里面记录的值 利用反射获取成员变量 代码实现 Student类&#xff1a; 获取clas…

【 0 基础 Docker 极速入门】镜像、容器、常用命令总结

Docker Images&#xff08;镜像&#xff09;生命周期 Docker 是一个用于创建、部署和运行应用容器的平台。为了更好地理解 Docker 的生命周期&#xff0c;以下是相关概念的介绍&#xff0c;并说明它们如何相互关联&#xff1a; Docker&#xff1a; Docker 是一个开源平台&#…

生成ssh密钥,使用ssh连接linux系统

这里写目录标题 ssh密钥大概介绍1、密钥在哪里生成&#xff08;客户端/服务器&#xff09;&#xff1f;2、密钥生成是什么样子的&#xff1f; ssh &#xff08;生成密钥、密钥传输、配置连接、连接服务&#xff09;过程1、生成密钥提示一&#xff1a;输入保存密钥的文件&#x…

Nginx实战:nginx支持带下划线的header

nginx对header 的名字字符做了限制&#xff0c;默认 underscores_in_headers 为off&#xff0c;表示如果header name中包含下划线&#xff0c;则忽略掉&#xff0c;后端服务就获取不到该请求头。 为了支持header带下划线的参数&#xff0c;可以在http内或者server内设置如下参数…

ip地址告诉别人安全吗?ip地址告诉别人会有什么风险

IP地址告诉别人安全吗&#xff1f;在数字化时代&#xff0c;IP地址作为网络连接的关键标识符&#xff0c;承载着重要的安全意义。然而&#xff0c;很多人可能并不清楚&#xff0c;轻易地将自己的IP地址告诉他人可能带来一系列安全风险。那么&#xff0c;IP地址告诉别人会有什么…

7-11 验证宏(verify)---PTA实验C++

一、题目描述 无需惊慌&#xff0c;C缔造者Bjarne Stroustrup这句话说的CPP是C PreProcessor&#xff0c;即“C代码预处理器”。CPP根据#include #define #if #pragma等指令对文件进行处理。这种处理发生在编译之前&#xff0c;所以CPP叫“预处理器”。CPP完全是文本层面的处理…

少样本学习与零样本学习:理解与应用

少样本学习与零样本学习&#xff1a;理解与应用 在现代机器学习领域中&#xff0c;少样本学习&#xff08;Few-Shot Learning&#xff09;和零样本学习&#xff08;Zero-Shot Learning&#xff09;正变得越来越重要。这些技术能够在数据稀缺的情况下有效地进行学习和推理&…

禁止Windows Defender任务计划程序

开始键->搜索“任务计划程序”->“任务计划程序库”->“Microsoft”->"Windows"->"Windows Defender"->右边四项

Prometheus + Grafana + Alertmanager 系统监控

PrometheusGrafana 系统监控 1. 简介1.1 Prometheus 普罗 米修斯1.2 Grafana 2. 快速试用2.1 Prometheus 普罗 米修斯2.2 Prometheus 配置文件2.3 Grafana 2. 使用 Docker-Compose脚本部署监控服务3. Grafana 配置3.1 配置数据源 Prometheus3.2 使用模板ID 配置监控模板3.3 使用…

【SpringBoot】怎么在一个大的SpringBoot项目中创建多个小的SpringBoot项目,从而形成子父依赖

父子项目工程创建 步骤 先创建父项目 具体操作步骤请看本文章&#xff1a;使用maven工程创建spring boot项目 创建子项目 file- project structure module–new module 剩下步骤请看创建父工程时的操作使用maven工程创建spring boot项目 应用 确认即可 之后创建启动类…

Kafka篇:Kafka搭建、使用、及Flink整合Kafka文档

一、Kafka搭建 1、上传并解压改名 tar -xvf kafka_2.11-1.0.0.tgz mv kafka_2.11-1.0.0 kafka-1.0.0 2、配置环境变量 vim /etc/profile export KAFKA_HOME/usr/local/soft/kafka-1.0.0 export PATH$PATH:$KAFKA_HOME/bin source /etc/profile &#xff08;使环境变量生效…

SPHINX的输出文档格式

SPHINX的输出文档格式 SPHINX的输出文档格式更多信息 SPHINX的输出文档格式 用rst编写&#xff0c;然后用sphinx-build进行编译&#xff0c;还是效果相当不错地&#xff0c;只要掌握了格式&#xff0c;可以一次编译&#xff0c;多种格式输出&#xff0c;主要是用的可能是html和…

Java对象的比较——equals方法,Comparable接口,Comparator接口

Java对象的比较——equals方法&#xff0c;Comparable接口&#xff0c;Comparator接口 1. equals方法2. Comparable接口3. Comparator接口 1. equals方法 在判断两个整数是否相同时&#xff0c;我们可以使用以下方式&#xff1a; System.out.println(1 2); System.out.printl…

多普云DPGo摄影测量航线规划软件

1.航线代规划。支持GSR航线&#xff08;大疆精灵4RTKSDK遥控器&#xff09;、DJI Pilot航线&#xff08;大疆精灵4RTK、M300&#xff09;、DJI Pilot2航线&#xff08;大疆精灵4RTK、M300、Mavic3E&#xff09;。 2.DPGO三维模型满足毫米级精度要求&#xff1a;已知被摄范围&am…

基于java的CRM客户关系管理系统(二)

目录 第二章 相关技术介绍 2.1 后台介绍 2.1.1 B/S平台模式 2.1.2 MVC 2.1.3 Spring 2.1.4 Hibernate 2.1.5 Struts 2.2 前端介绍 2.2.1 JSP网页技术 2.3 开发工具 2.4 本章小结 前面内容请移步 基于java的CRM客户关系管理系统&#xff08;二&#xff09; 资源…

vscode编辑器创建分支注意事项?!

最近在公司开发项目时&#xff0c;不小心将自己分支的东西提交到公司的master的分支&#xff0c;大家看看是什么情况&#xff1f; 先上图&#xff1a; 从图上看&#xff0c;我这边用了GITLENS这个插件&#xff0c;在创建分支时&#xff0c;有个create branch from&#xff0c;有…