学习潘海东博士的《潮汐调和分析原理和应用》

news2024/9/23 5:31:42

        潘海东博士在B站(用户名:ocean_tide)分享了他的电子书《潮汐调和分析原理和应用》,以及他开发的潮汐调和分析工具包S_Tide,非常厉害。

       在学习《潮汐调和分析原理和应用》之前,我们需要安装matlab软件。

       1 、潮汐调和分析的本质:最小二乘拟合

       潮汐调和分析求解分潮振幅和迟角的过程本质就是最小二乘拟合。

       测绘专业的学生一般会学习自由网平差,解算误差方程就是用到最小二乘法,误差的平方和最小,求取观测值的最优估值。具体解算的过程是先输入观测值的初始值,求得误差值,计算误差的平方和,然后在用新的观测值(初始值+误差值)重新计算,求得新的误差值,然后计算误差的平方和,二次平方和相减,如果差值不满足要求,继续迭代,直至满足要求。

       测绘专业的学生要求用C语言实现这个过程。有了matlab,我们只需要会用就行。

       1-1展示了五个散点,通过最小二乘拟合,我们能基于这五个散点找到最优的直线(误差最小),即确定y=ax+b中的ab

绘制图1-1所用的MATLAB程序如下:

X=[1;2;3;4;5];

Y=[1.1;2.6;5.8;7.2;9];

K=[1,1;2,1;3,1;4,1;5,1];

U=inv(K'*K)*K'*Y; %对应公式1-5inv为求逆运算

%求得a2.04b-0.98

plot(X,Y,'r*');hold on;

x1=0:0.1:6;

plot(x1,U(1)*x1+U(2),'k')

set(gca,'Fontsize',12,'linewidth',1.1);

xlabel('X');ylabel('Y');

 曲线拟合,更加接近潮汐拟合。图1-2展示了一系列散点,这些散点由公式1-6构建,其中t=0:0.2:9, S=0.2, H1=1; H2=2。

                (1-6)

如何利用这些散点基于最小二乘法反推出平均水位S和振幅H1, H2

t=0:0.2:9;t=t';

x1=cos(t);x2=2*cos(2*t);Z=0.2+x1+x2;

for i=1:length(t)

  K(i,1)=1;

  K(i,2)=cos(t(i));  %对应公式1-10

  K(i,3)=cos(2*t(i));

end

U=inv(K'*K)*K'*Z; %求解振幅和平均水位

plot(t,Z,'r*');hold on;

set(gca,'Fontsize',12,'linewidth',1.1);

xlabel('X');ylabel('Y');

 

 在经典潮汐调和分析模型中(如公式1-11所示),水位被认为是一系列余弦函数线性叠加的结果,每一个余弦函数都代表了一个分潮:

 (详见下一节)。频率接近的分潮的集合称为潮族,主要潮族有半日潮族(即周期为0.5天左右),全日潮族(周期为1天左右)以及四分之一日潮族(周期为0.25天左右)。全日潮族代表性分潮为K1, 周期为23.93小时,半日潮族代表性分潮为M2,周期为12.42小时,四分之一日潮族代表性分潮为M4,周期为6.21小时。

使用矩阵运算编写潮汐调和分析程序不仅简单,而且还可以有效应对观测存在缺测或者采样不均匀等特殊情况。 如果观测水位里某个时刻存在缺测,只需要将公式1-151-16中该时刻对应的行删除即可。

mytide函数是笔者基于本节的矩阵算法编写的潮汐调和分析程序,短小精悍,不到30行即完成了调和分析。

 海水受到的引潮力是日地距离,日月距离,太阴赤纬,太阳赤纬等多个变量的非线性函数。

实际上,除了天文因素,河流径流、海冰、海洋层结等都会影响潮汐,而这些要素都存在显著的年循环,这导致M2分潮振幅存在显著的年循环,由积化和差可知会诞生两个新的分潮,标记为H1H2分潮,因为这两个分潮不是天文要素产生的,所以不是天文分潮,一般称为气象分潮。

为什么太阴日是24.8412小时(24小时50分钟)?地球自转一圈需要24小时(转速15°/小时),月亮绕地球转一圈需要27.32天。太阴日是以月球为参考点所度量地球自转周期。月球公转方向和地球自转方向相同,地球自转一圈后,月亮公转了360°/27.32=13.2°,地球需要再转13.2/15小时(大约50分钟)。这也解释了为什么过了一天后,高潮会延后50分钟。

本节的模型没有考虑升交点的黄经的18.61年变化(即交点因子和交点订正角),所以无法做潮汐预报。

2、matlab使用问题

精度问题,尽量多使用矩阵运算,向量化编程,最大数组的维数,超大矩阵处理策略

T-Tide串联的矩阵的维度不一致的问题

3、潮汐调和分析和预报

3-1展示了8个平衡潮振幅最大的分潮(M2, S2, N2, K2, K1, O1, P1,Q1)和3个主要浅水分潮(M4, M6, MS4)。八大主要分潮中又以M2, K1, S2O1这四个分潮平衡潮振幅最大,称为四大主要分潮。

M2S2分潮的非线性相互作用。构造潮位时使用了S_TIDE工具包里的s_construct函数。

 

 

 

在做潮汐调和分析时,已知水位观测的数据长度N,采样间隔t(单位一般是小时),可以分辨的分潮的频率差必须大于等于1/(Nt)。如果频率差小于1/(Nt),则按照平衡潮振幅的大小来决定,振幅大的分潮保留,振幅小的舍弃。

月球升交点的黄经N存在的18.61年循环(图3-3)会调制太阴分潮的振幅和迟角,通过积化和差产生一些小分潮,而将主要分潮和这些小分潮分开需要最少18.61年的数据,显然,很多验潮站的水位观测无法满足这个条件,故引入交点因子f和交点订正角u来消除18.61年的影响。

M2K1分潮的交点因子f和交点订正角u随着时间的变化

 

由于实际调和分析的潮位数据往往比较短(一年以内),而这么短的时间内交点因子和交点订正角的变化非常小,可以近似认为不变。故无须计算每时每刻的交点因子和交点订正角(这样很费时间),实际调和分析中往往只计算中间时刻的交点因子和订正角,然后作为分析时段的交点因子和订正角。T_TIDE工具包就采用了这个策略,因此其不适合分析长时间的潮位序列(显著大于1年)。下面的mytide2是在mytide函数基础上考虑中间时刻的交点因子、订正角和初相角修改而来的,其中stime代表待分析水位的起始时间,lat代表站点的纬度。该函数也添加到了S_TIDE工具包里。

考虑了交点因子和订正角后的回报结果(Kushiro)。红色点为实测,黑线为回报。

 通过潮汐调和分析得到了各个分潮的振幅和迟角后,再利用公式3-14,即可进行潮汐预报。如果预报的时间段在一年左右(或者更短),那么可以近似认为这段时间内交点因子和订正角都不变,进而加快计算,S_TIDE里的s_construct2函数即采用了这样的思路,显然这意味着该函数无法预报长期的潮位。S_TIDE里的s_consrtuct3函数弥补了这个不足,该函数计算每个时刻的交点因子和订正角,虽然准确,但是计算速度不快。

s_construct2的预报和Kushiro的观测对比

有了s_consturct2函数后,海洋工程和航海里常用的理论深度基准面的计算可以得到极大的简化。理论深度基准面即理论上可能最低潮面,目前通用算法是从八大主要分潮以及3个浅水分潮(M4, MS4和M6)的组合中找到最低水位。这个问题本质上就是求非线性函数极小值,这里的非线性函数指的是一系列正(余)弦函数的叠加,每个正(余)弦函数还存在18.61年循环。教材上对于理论深度基准面的求解过程非常复杂,编程实现也很麻烦。这里我们使用s_construct2函数基于11个主要分潮的调和常数重构长期的潮位,然后找到重构潮位的最小值,即理论深度基准面。S_TIDE工具包里的s_tdd函数就使用了这个方法,这个方法简单直接易懂,但是实现的前提是电脑计算能力的大幅度提高,在上个世纪60年代和70年代显然不具备这样的条件。s_estimate_max_tidalcurrent函数可以估算潮流的最大可能流速,原理与s_tdd函数类似。

 潮位和潮流的采样周期一般为1小时或者更高频。 但是卫星高度计观测的采样一般远远大于主要分潮周期。比如常用的T/P卫星,采样周期是9.9156天,这样会导致频率混淆,即半日和全日分潮的能量被混淆到了非常长的周期上。图3-9为频率混淆的示意图。读者可以使用S_TIDE里的s_alias函数计算指定分潮在指定采样频率下的混淆周期。M2分潮在9.9156天的采样周期下的混淆周期是62.11天,在35天的采样周期下的混淆周期是94.49天。依据公式3-3,在9.9156天采样周期下分辨八大主要分潮最少需要9.18年的数据。考虑到卫星高度计资料比较长,所以做调和分析时需要计算每个时刻的交点因子和订正角。

 

 s_equilibrium_tide函数计算的北纬36.05°,东经120.417°(小麦岛),自2023618日零时起的逐时水位

上面是UTC时间,下面是北京时间,北京时间的0时是UTC+8,但是看两个曲线好像相关性不咋地啊。

平衡潮是个啥?

平衡潮理论假定:整个地球表面被等深海水所包围;海水没有惯性,也没有粘滞性,在重力与引潮力作用下,海水时时处于平衡状态。对于月球引潮力来说,月球垂直引潮力的方向与重力加速度方向相反;反之对于在通过地心、并与地月中心连线垂直的平面上的那些点,垂直引潮力与重力加速度方向一致。
因此,前者海面将稍稍升高,而后者海面将稍稍降低。通过这样的调整,海面重新形成一个等势面。这个新的等势面形状为一个椭球面,称为太阴“潮汐椭球”,如图1所示。由于地球的自转,在地壳上的一个固定点的海面便将发生周期性的涨落,从而形成潮汐。这就是平衡潮理论的基本思想。

参考文献 

潮汐调和分析原理与应用——20220310南京大学_哔哩哔哩_bilibili

S_TIDE相比T_TIDE优势 - 哔哩哔哩

致所有的S_TIDE使用者:你们的贡献不会被忽视 - 哔哩哔哩

chttps://www.cnblogs.com/jmliao/p/5575202.html

64位系统vs2010平台下实现C++与matlab R2014混合编程方法示例_add exported functions_Jerry-1990的博客-CSDN博客

C++ MATLAB 混合编程——VS项目调用MATLAB函数_c++调用matlab引擎_大作家佚名的博客-CSDN博客

Rich Pawlowicz's Matlab Stuff

MAT 文件版本- MATLAB & Simulink- MathWorks 中国

VS2017 MFC调用MATLAB2018b实现C++的混合编程_vs2017 调用matlab2018b_山川大海的博客-CSDN博客

MATLAB_R2018b安装教程_matlab2018b安装教程及激活_乘栩缘:VisualS的博客-CSDN博客

matlab2020a编译环境 MCR 安装步骤(非常实用)_matlab mcr_一米九零小胖子的博客-CSDN博客

C++调用matlab函数(未安装 matlab 也可以使用)_一米九零小胖子的博客-CSDN博客

mwArray和Mat之间的转化_mwarray转mat_一米九零小胖子的博客-CSDN博客

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

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

相关文章

阿里云免费服务器申请流程、领取入口、主机配置及限制条件

阿里云服务器免费试用申请链接入口 aliyunfuwuqi.com/go/free 阿里云个人用户和企业用户均可申请免费试用,最高可以免费使用3个小时,阿里云服务器网分享阿里云服务器免费试用申请入口链接及云服务器配置: 目录 阿里云服务器免费试用 企业…

高通 Android 12 调试产测NFC功能

1、在dev/nxpnfc节点添加对应的文件权限 on property:sys.boot_completed1# nfc add by zmchmod 777 /dev/nxpnfc 2、在vendor/nxp/nfcdevice-nfc.mk文件中 修改NFC添加到编译路径如下所示,跟平时内置apk方式有点类似 PRODUCT_PACKAGES NFCTestApp-include \vendor\nxp\nfc\…

powerdesigner简单使用

批量修改表名schema vb里面好像没有!的功能&#xff1f;我之前疯狂报错&#xff0c;直到把"!“改成了”<>"; table中的字段名&#xff0c;似乎用下面的界面就可以调用&#xff1b; 推荐找一些vbs的语法记录看一下 批量加入前缀后&#xff0c;所有的表名竟然…

微服务开发系列 第十二篇:MongoDB

总概 A、技术栈 开发语言:Java 1.8数据库:MySQL、Redis、MongoDB、Elasticsearch微服务框架:Spring Cloud Alibaba微服务网关:Spring Cloud Gateway服务注册和配置中心:Nacos分布式事务:Seata链路追踪框架:Sleuth服务降级与熔断:SentinelORM框架:MyBatis-Plus分布式任…

英语时态的变化

思考&#xff1a;汉语和英语是靠什么来说明时态的 汉语和英语关于时态的区别 汉语英语1.人们采取行动。&#xff08;一般状态&#xff09;People take actions.&#xff08;动词&#xff0c;注意动词的变化&#xff09;2.人们正在采取行动。&#xff08;正在进行&#xff09;P…

window中断/连网操作的命令提示符

window中断/连网操作的命令提示符 通过 cmd 实现网络查看与断/联网 以管理员身份打开命令提示符查看计算机网络接口名称 netsh interface show interface断网操作 # netsh interface set interface "你想断开的接口名称" admindisable netsh interface set inter…

【MySQL数据库】事务和存储引擎

【MySQL数据库】事务和存储引擎 一&#xff0c;事务1事务的概念 二 、事务的ACID特点2.1原子性2.2一致性&#xff08;Consistency&#xff09;2.3隔离性2.4持久性 三、脏读、不可重复读、幻读、丢失更新3.1脏读3.2不可重复读3.3幻读3.4丢失更新 四、事务的隔离级别事务隔离级别…

动态规划dp —— 28.摆动序列

连续相同的数不算是摆动序列 单独一个或不相等的两个数算是摆动序列 1.状态表示 是什么&#xff1f;dp表中里的值所表示的含义就是状态表示 dp[i]表示&#xff1a;以i位置为结尾的所有子序列中&#xff0c;最长的摆动序列的长度 但是i位置的值可能是下降后的&#xff0c;…

微信小程序自定义模块

自定义wxs并引入 新建一个tools.wxs 创建一些function,并使用moule.exports {}导出 使用 <wxs>标签 并填写正确src 书写module名称 之后在其他标签内&#xff0c;使用 {{自定的module名称.自定义的一个function并传入对应参数}}就可以实现参数在自定义function中的导入…

深入剖析 Spring Boot 的 SPI 机制

Java SPI实现 示例说明 创建动态接口 实现类1 实现类2 相关测试 运行结果&#xff1a; 源码分析 Spring SPI Spring 示例 定义接口 相关实现 相关测试类 输出结果 源码分析 SPI(Service Provider Interface)是JDK内置的一种服务提供发现机制&#xff0c;可以用来启…

整体撸一遍PMSM的滑模观测器(SMO)公式+模型+代码

滑模的基本原理参照这一系列文章&#xff1a; 滑模系列文章链接&#xff1a; 永磁同步电机矢量控制到无速度传感器控制学习教程&#xff08;PMSM&#xff09;&#xff08;一&#xff09; 永磁同步电机矢量控制基础补充&#xff08;五&#xff09;——什么是低通滤波器&#x…

【MSP432电机驱动学习—上篇】TB6612带稳压电机驱动模块、MG310电机、13线霍尔编码器

所用控制板型号&#xff1a;MSP432P401r 今日终于得以继续我的电赛小车速通之路&#xff1a; 苏轼云 “ 素面常嫌粉涴 &#xff0c; 洗妆不褪朱红。 ” 这告诫我们不能只注重在表面粉饰虚伪的自己&#xff0c;要像梅花一样&#xff0c;不断磨砺自己的内在~ 后半句是 “…

记录一次磁盘修复的过程

系统无法远程ssh进入&#xff0c;连接显示器查看终端&#xff0c;发现如上错误。 开始按照网上的流程进入单用户模式&#xff0c;fsck命令始终没找到。看来切换的方式不对。经过一番查阅&#xff0c;最终找到了&#xff0c;原来进入单用户有好几种模式&#xff0c;大家普遍记住…

存储笔记11 商业连续性

Introduction to Business Continuity Ÿ Define Business Continuity and Information Availability Ÿ Detail impact of information unavailability Ÿ Define BC measurement and terminologies Ÿ Describe BC planning process Ÿ Detail BC technology solutions 何为…

C语言标准库(常用函数)详解(含示例)数学公式:math.h

目录 math.h的介绍 math.h的概述 库中定义的宏&#xff1a; HUGE_VAL 库函数&#xff08;只讲解常用函数&#xff09; 三角函数 示例代码 输出 双曲函数 示例代码 输出 指数和对数函数(只含常用函数) 示例代码 输出 常用函数pow&#xff0c;sprt&#xff0c;cbrt&…

监督学习和无监督学习

文章目录 监督学习和无监督学习监督学习算法包括无监督学习算法包括OpenCV十个子类举例&#xff1a; 监督学习和无监督学习 监督学习和无监督学习是机器学习领域中两种不同的学习范式&#xff0c;它们之间的区别在于数据的标签或标记的可用性以及学习任务的性质。 监督学习&am…

与chagpt对话记录

每日chagpt对话记录 关注我一下 vscode 浏览器版本 c 函数 无法跳转 C/C IntelliSense, debugging, and code browsing. C/C IntelliSense、调试和代码浏览是指在使用VS Code进行C/C开发时的一些核心功能。下面是对这些功能的简要说明&#xff1a; IntelliSense&#xff08;智能…

CSS基础学习--18 导航栏

一、导航栏链接列表 作为标准的 HTML 基础一个导航栏是必须的。 在我们的例子中我们将建立一个标准的 HTML 列表导航栏。 导航条基本上是一个链接列表&#xff0c;所以使用 <ul> 和 <li>元素非常有意义 <!DOCTYPE html> <html> <head> <…

山西电力市场日前价格预测【2023-06-19】

日前价格预测 预测明日&#xff08;2023-06-19&#xff09;山西电力市场全天平均日前电价为396.37元/MWh。其中&#xff0c;最高日前价格为468.17元/MWh&#xff0c;预计出现在21: 45。最低日前电价为345.23元/MWh&#xff0c;预计出现在13: 00。 以上预测仅供学习参考&#x…

端口进程内存查看操作(linux、windows)

一 windows操作命令 1、查看某个端口的信息 netstat -aon | findstr "端口" 2、查看PID对应的应用程序名 tasklist | findstr "PID" 3、taskkill /f /t /im 进程名称 然后结束该进程&#xff1a;taskkill /f /t /im 程序名.exe &#xff08;当然你也…