TH方程学习(3)

一、编程实现

根据论文给出的案例,使用TH方程进行数值仿真

1.初始化条件

%% 参考文献<New State Transition Matrix for Relative Motion on an Aribitrary Elliptical Orbit>
%% 作者 Yamanaka Koji
clc;clear
global miu Re
miu = 3.986e5;
Re  = 6378.137;
% step1:初始化条件
ecc =     0.1;
Perigee = 500;
inc =     30;
TA =      45 ;
% 计算半长轴
sma =    (Re+Perigee)/(1-ecc);
% 计算半通径
p  =     sma*(1-ecc^2);
% 计算角动量
h  =     sqrt(p*miu);
% 计算该近地点时刻的位置大小
r  =     p/(1+ecc*cosd(TA));
% 计算该时刻的速度
v  =     sqrt(miu*(2/r-1/sma));
% 计算该时刻的角速度
omega =  h/r^2;
rho     = 1+ecc*cosd(TA);
k       = sqrt(h/p^2);

2.求真近地点角

假设迭代时间为13200秒,时间步长取为60s,一共221个数据,首先计算每个时刻的真近地点角,根据给定的初始真近地点角,求出平近地点角,偏近地点角。

t=[0:1:220]*60;
tanf=tand(TA/2);
ee=sqrt((1+ecc)/(1-ecc));
tanE=tanf/ee;
% 求偏近地点角
E = atand(tanE)*2;
% 求平近地点角
M = rad2deg(deg2rad(E)-ecc*sind(E));

求出平均角速度

% 求平均角速度
n = sqrt(miu/sma^3);

根据初始平近地点角和平均角速度求出,每个时刻对应的平近地点角

% 求出每个时刻的平均角速度
M_all=M+rad2deg(n*t);
for i=1:length(M_all)
    if M_all(i)>360
        int=floor(M_all(i)/360);
        M_all(i)=M_all(i)-int*360;
    else
        continue
    end
end

根据开普勒方程,求出偏近地点角,这里采用函数Kepler_function,求出每个时刻对应的偏近地点角和真近地点角

for i=1:length(M_all)
    MM=deg2rad(M_all(i));
    E_rad=Kepler_function(ecc,MM);
    tanf2=sqrt((1+ecc)/(1-ecc))*tan(E_rad/2);
    if E_rad<pi && E_rad>=0
        f=rad2deg(atan(tanf2)*2);
        f_all(i)=f;
    elseif E_rad>=pi
        f=rad2deg(atan(tanf2)*2)+360;
        f_all(i)=f;
    end

    E_all(i)=rad2deg(E_rad);
end
function E=Kepler_function(e,M)
% ~~~~~~~~~~~~~~~~~~~~~~~~~~
% 这个函数使用牛顿迭代的方法求解开普勒方程
% 给定偏心率和平近点角
% E-篇近点角(弧度)
% e-偏心率
% M-平近点角(弧度)
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
error=1.0e-8;
if M<pi
    E=M+e/2;
else
    E=M-e/2;
end
% 迭代要求在所要求的范围内:
ratio=1;
while abs(ratio)>error
    ratio=(E-e*sin(E)-M)/(1-e*cos(E));
    E=E-ratio;
end
end

求出的每个时刻的三种角与STK计算出来的对比结果

3.代入TH方程

首先求出K值,在目标星的VVLH坐标系,追踪星的位置速度为[0.1km,0.01km,0.01km,0.0001km/s,0.0001km/s,0.0001/s],首先求出XZ轴平面的初始值

r_target = [0;0;-r];
omega_vec= [0;-omega;0];
v_x      = miu/h*(1+ecc*cosd(TA)); % 沿着周向的速度
v_z      = miu/h*ecc*sind(TA);     % 沿着径向的速度
v_target = [v_x;0;v_z];            % 目标星的速度矢量
% 旋转系追踪星相对目标星的位置
delta_r=[0.1;0.01;0.01];
delta_v=[0.0001;0.0001;0.0001];
% 惯性系追踪星的位置
r_chaser=r_target+delta_r;
% 惯性系追踪星的速度
v_chaser=v_target+delta_v+cross(omega_vec,delta_r);

% 计算归一化的相对位置速度
rho     = 1+ecc*cosd(TA);
delta_r = [0.1;0.01;0.01];
r_norm  = rho*delta_r;                                   %式子87
k       = sqrt(h/p^2);
v_norm  = -ecc*sind(TA)*delta_r+(1/(k^2*rho))*delta_v;   %式子87 

求出\boldsymbol{\Phi}_{\theta_{0}}^{-1}

% 计算X-Z矩阵
s0   = rho*sind(TA); c0= rho*cosd(TA);
Phi0_inv     =zeros(4,4);
Phi0_inv(1,1)=1-ecc^2;
Phi0_inv(1,2)=3*ecc*(s0/rho)*(1+1/rho);
Phi0_inv(1,3)=-ecc*s0*(1+1/rho);
Phi0_inv(1,4)=-ecc*c0+2;
Phi0_inv(2,2)=-3*(s0/rho)*(1+ecc^2/rho);
Phi0_inv(2,3)=s0*(1+1/rho);
Phi0_inv(2,4)=c0-2*ecc;
Phi0_inv(3,2)=-3*(c0/rho+ecc);
Phi0_inv(3,3)=c0*(1+1/rho)+ecc;
Phi0_inv(3,4)=-s0;
Phi0_inv(4,2)=3*rho+ecc^2-1;
Phi0_inv(4,3)=-rho^2;
Phi0_inv(4,4)=ecc*s0;
Phi0_inv1=Phi0_inv.*(1/(1-ecc^2));

求出初始K值

% 根据f_all 计算每个时刻对应的转移矩阵 X-Z
xz0=[r_norm(1);r_norm(3);v_norm(1);v_norm(3)];
% 计算转移初始值
hatxz0=Phi0_inv1*xz0;

4.求出每个时刻的状态转移矩阵,以及在相对位置坐标系的位置

hatxz=zeros(length(t),4);
xz   =zeros(length(t),4);
% 转移矩阵
for j=1:length(f_all)
    % 已知真近地点角
    theta=f_all(j);
    % 计算矩阵的参数
    rho1=1+ecc*cosd(theta);
    s1=rho1*sind(theta);
    c1=rho1*cosd(theta);
    ds1=cosd(theta)+ecc*cosd(2*theta);
    dc1=-(sind(theta)+ecc*sind(2*theta));
    J1=k^2*t(j);
    %  转移矩阵的参数
    Phi_theta=zeros(4);
    Phi_theta(1,1)=1;
    Phi_theta(1,2)=-c1*(1+1/rho1);
    Phi_theta(1,3)=s1*(1+1/rho1);
    Phi_theta(1,4)=3*rho1^2*J1;
    Phi_theta(2,2)=s1;
    Phi_theta(2,3)=c1;
    Phi_theta(2,4)=2-3*ecc*s1*J1;
    Phi_theta(3,2)=2*s1;
    Phi_theta(3,3)=2*c1-ecc;
    Phi_theta(3,4)=3*(1-2*ecc*s1*J1);
    Phi_theta(4,2)=ds1;
    Phi_theta(4,3)=dc1;
    Phi_theta(4,4)=-3*ecc*(ds1*J1+s1/rho1^2);
    %  利用转移矩阵求出该时刻的位置和速度
    hatxz(j,:)=Phi_theta*hatxz0;
    xt=hatxz(j,1)/rho1;
    zt=hatxz(j,2)/rho1;
    vxt=k^2*(hatxz(j,1)*ecc*sind(theta)+hatxz(j,3)*rho1);
    vzt=k^2*(hatxz(j,2)*ecc*sind(theta)+hatxz(j,4)*rho1);
    xz(j,:)=[xt,zt,vxt,vzt];
end

接下来求Y轴的变化

y0=[r_norm(2);v_norm(2)];
haty =zeros(length(t),2);
yy   =zeros(length(t),2);
for j=1:length(f_all)
    % 已知真近地点角
    theta=f_all(j);
    % 计算矩阵的参数
    rho1=1+ecc*cosd(theta);
    s1=rho1*sind(theta);
    c1=rho1*cosd(theta);
    ds1=cosd(theta)+ecc*cosd(2*theta);
    dc1=-(sind(theta)+ecc*sind(2*theta));
    J1=k^2*t(j);
    %  Y转移矩阵的参数 
    Phi_thetay=zeros(2);
    Phi_thetay(1,1)=cosd(theta-TA);
    Phi_thetay(1,2)=sind(theta-TA);
    Phi_thetay(2,1)=-sind(theta-TA);
    Phi_thetay(2,2)=cosd(theta-TA);
    haty(j,:)=Phi_thetay*y0;
    yt=haty(j,1)/rho1;
    vyt=k^2*(haty(j,1)*ecc*sind(theta)+haty(j,2)*rho1);
    yy(j,:)=[yt,vyt];
end

5.结果呈现

通过对比,发现TH方程求出的相对运动方程与数值计算出来的相对运动方程曲线高度重合,因此TH方程能够解析的描述两个椭圆目标的相对运动方程

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用pkg打包了一个使用了sqlite3的nodejs项目,启动后闪退

从截图来看&#xff0c;问题出在 sqlite3 模块上。说明在打包过程中&#xff0c;sqlite3 模块的 .node 文件没有正确加载。 紧急解决方法&#xff1a; 其实就是exe文件还需要node_modules中的sqlite3 依赖&#xff0c;我们直接在系统顶级放一个node_modules&#xff0c;且其中只…

Vue3项目练习详细步骤(第五部分:用户模块的功能)

顶部导航栏个人信息显示 接口文档 接口请求与绑定 导航栏下拉菜单功能 路由实现 退出登录和路由跳转实现 基本资料修改 页面结构 接口文档 接口请求与绑定 修改头像 页面结构 头像回显 头像上传 接口文档 重置密码 页面结构 接口文档 接口请求与绑定 顶部导航…

docker部署owncloud进行管理

目录 一.拉取镜像 1.使用mysql和owncloud最新版镜像&#xff0c;构建个人网盘 2.查看是否已经正确监听端口 二.使用浏览器进行测试 1.使用IP:8080进行访问&#xff0c;用admin运行容器时设置的密码登录 2.查看到已经有的文件 3.文件上传对应的位置 4.在web页面进行简单…

基于RFID技术的烟草在线监测系统在烟草仓库温湿度监测中的应用。

在现代工业生产中&#xff0c;精准高效的在线监测系统对于产品质量控制至关重要。尤其是在高价值且对环境敏感的产品制造过程中&#xff0c;如烟草加工&#xff0c;实时准确的数据采集与分析直接关系到最终产品的品质及安全标准达标程度。 烟草行业在我国属于传统轻工业之一&am…

【kubernetes】探索k8s集群的存储卷、pvc和pv

目录 一、emptyDir存储卷 1.1 特点 1.2 用途 1.3部署 二、hostPath存储卷 2.1部署 2.1.1在 node01 节点上创建挂载目录 2.1.2在 node02 节点上创建挂载目录 2.1.3创建 Pod 资源 2.1.4访问测试 2.2 特点 2.3 用途 三、nfs共享存储卷 3.1特点 3.2用途 3.3部署 …

WiFi串口服务器与工业路由器:局域网应用的协同之力

在工业物联网&#xff08;IIoT&#xff09;迅猛发展的当下&#xff0c;局域网&#xff08;LAN&#xff09;作为连接工业设备与数据中心的桥梁&#xff0c;其重要性日益凸显。WiFi串口服务器与工业路由器作为局域网中的关键组件&#xff0c;以其独特的性能和功能&#xff0c;为传…

网络分层与各层网络协议介绍

一.OSI七层模型 1.OSI&#xff08;Open Systems Interconnection&#xff09;七层模型是由国际标准化组织&#xff08;ISO&#xff09;提出的一种网络通信协议的参考模型&#xff0c;用于标准化网络通信的过程。 OSI模型将网络通信分为七个层次&#xff0c;每个层次负责不同的…

python weakref的应用举例

问题: 有很多时候, 我们想拥有一个实例, 但是不增加引用计数. 怎么解决呢? 场景: 英雄击打怪物, 如果怪物在受到英雄打击前就死了, 我们可以在英雄的实例里面, 使用一个弱引用来引用怪物, 如果还存在就击打, 不存在就不击打.一般的ui系统都有事件系统, ui上触发一个事件, 然…

如何选择国产数据库?

ORACLE的强大是全方位的,作为甲方DBA,喝喝咖啡,看看报纸,开开会,临听一下ORACLE ACE吹水! 作为国企的DBA, CTO.基本上国企都算是传统行业,都是跑ERP系统,进销存系统.客户关系系统.基本上都是B2B业务. 直接面对普通老百姓的互联网业务非常少. 核心业务都是使用ORACLE,少量互联网…

洞察全球商机:精细化策略引领海外营销平台对接

随着全球市场的不断融合和互联网技术的飞速发展&#xff0c;企业越来越意识到海外营销与客服系统对接的重要性。 NetFarmer&#xff0c;作为一家专注于服务企业数字化出海的公司&#xff0c;对于海外市场的洞察和对接策略有着独特的见解。今天运营坛将深入探讨海外营销平台对接…

华为SSH实验

华为SSH实验 实验拓扑&#xff1a; 实验要求&#xff1a;从SSH客户端AR1采用stelnet方式登录到SSH 服务器端。 实验步骤&#xff1a; 1.完成基本配置&#xff08;略&#xff09; sys Enter system view, return user view with CtrlZ. [AR1]sys CLIENT [CLIENT]INT g0/0/0 [C…

计算机网络-BGP状态机制与对等体表项

前面我们讲了BGP交互后需要建立对等体&#xff0c;BGP存在两种对等体关系类型&#xff1a;EBGP及IBGP&#xff0c;那对等体建立过程的状态是怎样的呢&#xff1f;BGP报文我们也学习过了&#xff0c;现在通过结合起来了解下BGP的状态机以及对等体表。 一、BGP状态机 也就是两台路…

什么是网络流量监控系统?

目录 什么是网络流量监控系统&#xff1f; 网络流量监控系统的功能 实时监控 流量分析 故障排除 安全监控 IT运维中的网络流量监控系统应用案例 案例一&#xff1a;优化带宽使用 案例二&#xff1a;快速排除故障 案例三&#xff1a;提升网络安全 网络流量监控系统的…

实战经验分享之移动云快速部署Stable Diffusion SDXL 1.0

本文目录 前言产品优势部署环境准备模型安装测试运行 前言 移动云是中国移动面向政府、企业和公众的新型资源服务。 客户以购买服务的方式&#xff0c;通过网络快速获取虚 拟计算机、存储、网络等基础设施服务&#xff1b;软件开发工具、运行环境、数据库等平台服务&#xff1…

CATIA入门操作案例——压缩弹簧绘制,螺旋线的使用,法则曲线应用

目录 引出画压缩弹簧画等距部分画两端的压缩部分曲线缝合和扫掠封闭曲面得实体 总结异形弹簧新建几何体草图编辑&#xff0c;画一条样条线进行扫掠&#xff0c;圆心和半径画出曲面上的螺旋线再次选择扫掠&#xff0c;圆心和半径 其他自定义信号和槽1.自定义信号2.自定义槽3.建立…

【ETAS CP AUTOSAR基础软件】EcuM模块详解

文章包含了AUTOSAR基础软件&#xff08;BSW&#xff09;中EcuM模块相关的内容详解。本文从AUTOSAR规范解析&#xff0c;ISOLAR-AB配置以及模块相关代码分析三个维度来帮读者清晰的认识和了解EcuM。文中涉及的SOLAR-AB配置以及模块相关代码都是依托于ETAS提供的工具链来配置与生…

迷你主机Esxi 6.7挂载新硬盘

背景 硬件&#xff1a;零刻SER Pro 6 系统&#xff1a;vmware Exsi 6.7.0 Update 3 现有的硬盘槽位占满了&#xff0c;但空间不够用&#xff0c;想要通过USB外接移动硬盘来进行扩容。使用了一块250G的硬盘做测试。 步骤 TL;DR # 停止usbarbitrator服务 /etc/init.d/usbarbi…

django中,出现CSRF verification failed. Request aborted.错误

这是跨站点访问的防范机制&#xff0c;csrf是一个令牌&#xff0c;会验证登录&#xff0c;需要在setting中把 "django.middleware.csrViewMiddleware" 注释掉 并在html文件中的<body>内添加 {% csrf token %} 就可以了

③单细胞学习-pbmc的Seurat 流程

目录 1&#xff0c;数据读取 2&#xff0c;线粒体基因查看 3&#xff0c;数据标准化 4&#xff0c;识别高变基因 5&#xff0c;进行数据归一化 6&#xff0c;进行线性降维 7&#xff0c;确定细胞簇 8&#xff0c;UMAP/tSNE降维&#xff08;保存pbmc_tutorial.rds&#…

路由选路原则

5.2路由选路原则 路由就是报文从源端到目的端的路径。当报文从路由器到目的网段有多条路由可达时&#xff0c;路由器可以根据路由表中最佳路由进行转发。最佳路由的选取与发现此路由的路由协议的优先级、路由的度量有关。当多条路由的协议优先级与路由度量都相同时&#xff0c…