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. .NET Core 初体验

    .NET Core 作为微软的开源项目,neter 们对之的期待还是挺大的. 以前也看过,接触过,摸索建了几个示例项目,今天就罗列下自己的初体验. .NET Core 安装.帮助等 安装的话,直接官网 ...

  2. Jmeter+Jenkins持续集成(一、环境准备)

    1.安装JDK (1)下载JDK,jdk8u181-x64.dmg 并进行安装 (2)配置环境变量.打开配置文件 open -e .bash_profile.按照自己的安装路径进行配置. JAVA_H ...

  3. fsLayuiPlugin树+数据表格使用

    fsLayuiPlugin 是一个基于layui的快速开发插件,支持数据表格增删改查操作,提供通用的组件,通过配置html实现数据请求,减少前端js重复开发的工作. GitHub下载 码云下载 测试环 ...

  4. SQL 学习指南-数据库使用

    1.缺失子句 now() 是MySQL的内建函数,返回当前的日期和时间.在MySQL中可以直接使用下列语句查询: SELECT NOW(); 但是某些数据库规定查询语句必须包含 from 子句,并在其 ...

  5. fiddler修改请求和返回

    一.修改请求 1.先设置请求前断点 2.设置拦截,在左下角的QuickExec命令行中输入bpu www.baidu.com/XXXX 3.选中需要修改的请求,选中Inspectors面板,使用Raw ...

  6. ZooInspector使用

    一.工具 ZooInspector作用: 可以利用该工具图形化浏览ZK中的文件及文件夹 下载地址: https://issues.apache.org/jira/secure/attachment/1 ...

  7. luogu 2934

    同 bzoj3694 需要先求出最短路树 #include <iostream> #include <cstdio> #include <algorithm> #i ...

  8. 搭建自己的博客(七):使用bootstrap框架美化导航栏

    前面发现自己写css代码以及很多功能太麻烦,故希望在自己的博客中引入bootstrap框架,bootstrap是一个非常强大的前端框架,简单易学容易上手.附上官网地址:bootstrap官网 我使用的 ...

  9. TensorFlow(十四):谷歌图像识别网络inception-v3下载与查看结构

    上代码: import tensorflow as tf import os import tarfile import requests #inception模型下载地址 inception_pre ...

  10. angularJs driective指令小实例

    做一个下拉菜单,体会指令各参数的作用 html代码 <script type="text/ng-template" id="mydropdown.html" ...