05插值和拟合

黄河小浪底调水调沙问题

data3.txt

1800    1900    2100    2200    2300    2400    2500    2600    2650    2700    2720    2650
32 60 75 85 90 98 100 102 108 112 115 116
2600 2500 2300 2200 2000 1850 1820 1800 1750 1500 1000 900
118 120 118 105 80 60 50 30 26 20 8 5

插值

% 问题一
% v:水流量S:含沙量;V:排沙量?
% 假设水流量和含沙量都是连续的,某一时刻的排沙量V=v(t)S(t)
% 先已知某些时刻的 水流量 和 含沙量 ,给出估计任意时刻的 排沙量 及 总排沙量
% 总排沙量 是对 排沙量 做 积分
% 时间8:00-20:00 t1=28800,t24=1022400=t2
format compact;
clc,clear;
load data3.txt
liu = data3([1,3],:); liu=liu';liu=liu(:); % 提出水流量并按照顺序变成列向量
sha = data3([2,4],:); sha=sha';sha=sha(:); % 提出含沙量并按照顺序变成列向量
y=sha.*liu;y=y'; % 计算排沙量,变成行向量
i=1:24;
t=(12*i-4)*3600;
t1=t(1);t2=t(end);
% 插值
pp=csape(t,y); % 进行三次样条插值
xsh=pp.coefs % 求得插值多项式的系数矩阵,每一行是一个区间上多项式的系数
TL = quadl(@(tt)fnval(pp,tt),t1,t2) % 求 总排沙量 的积分运算
% 可视化展示插值多项式和原来的值
t0=t1:0.1:t2;
y0=fnval(pp,t0);
plot(t,y,'+',t0,y0)
xsh =
1.0e+05 *
-0.0000 -0.0000 0.0000 0.5760
-0.0000 -0.0000 0.0000 1.1400
-0.0000 -0.0000 0.0000 1.5750
0.0000 -0.0000 0.0000 1.8700
-0.0000 0.0000 0.0000 2.0700
0.0000 -0.0000 0.0000 2.3520
0.0000 0.0000 0.0000 2.5000
-0.0000 0.0000 0.0000 2.6520
0.0000 -0.0000 0.0000 2.8620
-0.0000 0.0000 0.0000 3.0240
0.0000 -0.0000 0.0000 3.1280
-0.0000 0.0000 -0.0000 3.0740
-0.0000 -0.0000 0.0000 3.0680
0.0000 -0.0000 -0.0000 3.0000
-0.0000 0.0000 -0.0000 2.7140
0.0000 -0.0000 -0.0000 2.3100
0.0000 0.0000 -0.0000 1.6000
-0.0000 0.0000 -0.0000 1.1100
0.0000 -0.0000 -0.0000 0.9100
-0.0000 0.0000 -0.0000 0.5400
0.0000 -0.0000 -0.0000 0.4550
0.0000 -0.0000 -0.0000 0.3000
0.0000 0.0000 -0.0000 0.0800
TL =
1.8440e+11

拟合

% 问题二:确定排沙量和水流量的关系
format compact; % 画出排沙量和水流量的散点图
clc,clear;
load data3.txt
liu = data3([1,3],:); liu=liu';liu=liu(:); % 提出水流量并按照顺序变成列向量
sha = data3([2,4],:); sha=sha';sha=sha(:); % 提出含沙量并按照顺序变成列向量
y=sha.*liu; % 计算排沙量,这里是列向量
subplot(1,2,1),plot(liu(1:11),y(1:11),'*')
subplot(1,2,2),plot(liu(12:24),y(12:24),'*') % 第一阶段基本上是线性关系
% 第一阶段和第二阶段都准备用一次和二次曲线拟合
% 哪个模型的剩余标准差小就选取哪个模型
format long e % 以下是第一阶段的拟合
for j=1:2
nihe1{j}=polyfit(liu(1:11),y(1:11),j); % 拟合多项式,系数排列从高次幂到低次幂
yhat1{j}=polyval(nihe1{j},liu(1:11)); % 求预测值
cha1(j)=sum((y(1:11)-yhat1{j}).^2); % 求误差平方和
rmse1(j)=sqrt(cha1(j)/(10-j)); % 求剩余标准差
end
celldisp(nihe1) % 显示细胞数组的所有元素
rmse1 % 以下是第二阶段的拟合
for j=1:2
nihe2{j}=polyfit(liu(12:24),y(12:24),(j)); % 使用细胞数组
yhat2{j}=polyval(nihe2{j},liu(12:24)); % 求预测值
cha2(j)=sum((y(12:24)-yhat2{j}).^2); % 求误差平方和
rmse2(j)=sqrt(cha2(j)/(11-j)); % 求剩余标准差
end
celldisp(nihe2) % 显示细胞数组的所有元素
rmse2
format % 恢复默认短小数的显示格式 % 最终结果
% 一: y=250.5655v-373384.4661
% 二: y=0.167v*2-180.4668v+72421.0982

matlab学习——05插值和拟合(黄河小浪底调水调沙问题)的更多相关文章

  1. matlab学习——05插值和拟合(一维二维插值,拟合)

    05插值和拟合 1.一维插值 (1) 机床加工零件,试用分段线性和三次样条两种插值方法计算.并求x=0处的曲线斜率和13<=x<=15范围内y的最小值. x0=[0 3 5 7 9 11 ...

  2. Matlab随笔之插值与拟合(上)

    原文:Matlab随笔之插值与拟合(上) 1.拉格朗日插值 新建如下函数: function y=lagrange(x0,y0,x) %拉格朗日插值函数 %n 个节点数据以数组 x0, y0 输入(注 ...

  3. Matlab随笔之插值与拟合(下)

    原文:Matlab随笔之插值与拟合(下) 1.二维插值之插值节点为网格节点 已知m x n个节点:(xi,yj,zij)(i=1…m,j=1…n),且xi,yi递增.求(x,y)处的插值z. Matl ...

  4. matlab——插值与拟合

    @ 目录 前言 一.拟合 1.定义 2.三种判别准则 3.最小二乘法 (1)一般形式 (2)常用函数 (3)matlab实现 二.插值 1.定义 2.方法 (1)分段线性插值 (2)拉格朗日插值多项式 ...

  5. Matlab曲面拟合和插值

    插值和拟合都是数据优化的一种方法,当实验数据不够多时常常须要用到这样的方法来绘图. 在matlab中都有特定的函数来完毕这些功能. 这两种方法的确别在于: 当測量值是准确的,没有误差时,一般用插值: ...

  6. Python SciPy库——插值与拟合

    插值与拟合 原文链接:https://zhuanlan.zhihu.com/p/28149195 1.最小二乘拟合 实例1 # -*- coding: utf-8 -*- import numpy a ...

  7. JavaScript学习05 定时器

    JavaScript学习05 定时器 定时器1 用以指定在一段特定的时间后执行某段程序. setTimeout(): 格式:[定时器对象名=] setTimeout(“<表达式>”,毫秒) ...

  8. Java虚拟机JVM学习05 类加载器的父委托机制

    Java虚拟机JVM学习05 类加载器的父委托机制 类加载器 类加载器用来把类加载到Java虚拟机中. 类加载器的类型 有两种类型的类加载器: 1.JVM自带的加载器: 根类加载器(Bootstrap ...

  9. Matlab学习笔记 figure函数

    Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...

随机推荐

  1. C# 中自定义配置

    微软在ConfigurationManager类里面为我们提供了AppSetting和ConnectionStrings 两个常用配置, 但是有时候我们需要自定的配置,例如 <image lef ...

  2. MySQL进阶14--标识列(自增序列/auto_increment)--设置/展示步长--设置/删除标示列

    /*进阶14 标识列 又称为自增序列; 含义 : 可以不用手动的插入值, 系统提供默认的序列值(1-->n) 特点 : 1.标识列必须和主键搭配? 不一定,但要求是一个key 2.一个表可以有几 ...

  3. Android adb的一些用法

    adb查看包名/Activity名 adb shell "logcat | grep START" adb shell dumpsys activity | find “mFocu ...

  4. 03 Spring对Bean的管理

    Spring创建bean的三种方式 1.第一种方式:使用默认构造函数创建 bean.xml <?xml version="1.0" encoding="UTF-8& ...

  5. [CSS] Change the Alignment of a Single Flexed Item with 'align-self'

    Inside of a flexed container, a single item can control its own flex with align-self. The possible v ...

  6. dubbo-本地直连

    一.背景 目前项目是基于dubbo做为rpc,zk为注册中心实现多个微服务之间的远程服务调用.但需要本地联调dubbo接口时,需要绕过注册中心,达到不干扰线上服务,即只订阅不注册服务的目的. 二.实现 ...

  7. 重启crond服务

    键入“cd /etc/init.d”,进入该目录键入“./crond restart”,重启crond服务

  8. Laravel 中使用 Repository 模式

    在本文中,我会向你展示如何在 Laravel 中从头开始实现 repository 设计模式.我将使用 Laravel 5.8.3 版,但 Laravel 版本不是最重要的.在开始写代码之前,你需要了 ...

  9. GridView用数据源控件和用DataTable作为数据源的不同

    1.使用数据源控件可以自动做排序分页,不需要多余代码,可是由于自动绑定太多操作,反而觉得很不灵活 前台: <asp:GridViewID="gv_test"DataSourc ...

  10. 递归函数返回值 undefined

    getItem(obj, arr, index) { if (arr.length - 1 !== index) { const tempObj = obj[arr[index]]; this.get ...