道长运维之正则表达式

背景描述

正则表达式是运维开发必经之路,我们应该深入了解这项技术,本文以IIS请求为例将完整URL进行拆解

Regular expression should be an old friend of developer. We should look deep into this technology

URL Rewrite

URL Rewrite是IIS正则表达式应用最广泛的模块,该模块预定义了一系列正则表达式参数,利用这些参数可以灵活设置重定向规则

Once a Rule or Condition matched a pattern, the system will ret

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是利用开普勒方程递推轨道的MATLAB程序: %% 利用开普勒方程递推轨道程序 clear all;clc; %% 输入参数 mu = 398600.4418; % 地球引力常数 a = 7000; % 初轨道长半轴 e = 0.0; % 初轨道离心率 i = 30*pi/180; % 初轨道倾角 RAAN = 0; % 升交点赤经 omega = 0; % 近地点幅角 M0 = 0; % 初平近点角 %% 计算轨道参数 n = sqrt(mu/a^3); % 平均角速度 T = 2*pi/n; % 周期 E0 = M0; % 初偏近点角 while 1 E = M0 + e*sin(E0); % 开普勒方程 if abs(E - E0) < 1e-8 % 判断E是否收敛 break; end E0 = E; % 更新E0 end theta = 2*atan(sqrt((1+e)/(1-e))*tan(E/2)); % 真近点角 h = sqrt(mu*a*(1-e^2)); % 轨道角动量 p = a*(1-e^2); % 焦距 r = p/(1+e*cos(theta)); % 距离 v = sqrt(2*(E+mu/r)); % 速度 r_dot = sqrt(mu*p)/r*v*sin(theta); % 距离变化率 r_theta_dot = h/r^2; % 弧速度 r_cross_v = [0,0,r*r_theta_dot]; % 距离矢量与速度矢量的叉积 v_cross_h = cross([0,0,h], [r*cos(theta),r*sin(theta),0]); % 速度矢量与角动量矢量的叉积 e_vec = 1/mu*((v^2-mu/r)*[r*cos(theta),r*sin(theta),0]-r_dot*[0,0,r]-r_cross_v); % 离心率矢量 i_vec = [cos(RAAN)*cos(omega)-sin(RAAN)*sin(omega)*cos(i), sin(RAAN)*cos(omega)+cos(RAAN)*sin(omega)*cos(i), sin(omega)*sin(i)]; % 轨道面法向量 n_vec = cross([0,0,1], i_vec); % 升交点赤道面法向量 h_vec = [r*sqrt(v^2-(r_dot/r)^2)*sin(theta),-r*sqrt(v^2-(r_dot/r)^2)*cos(theta),h]; % 角动量矢量 RAAN_dot = n/h_vec(3); % 升交点赤经变化率 omega_dot = dot(e_vec, n_vec)/(e*h); % 近地点幅角变化率 i_dot = dot(h_vec, cross(n_vec, e_vec))/h; % 倾角变化率 %% 递推计算 t = 0; % 初始时间 dt = 60; % 时间步长 M = M0 + n*t; % 平近点角 while M < 2*pi % 递推直到一圈结束 E0 = M; % 初偏近点角 while 1 E = M + e*sin(E0); % 开普勒方程 if abs(E - E0) < 1e-8 % 判断E是否收敛 break; end E0 = E; % 更新E0 end theta = 2*atan(sqrt((1+e)/(1-e))*tan(E/2)); % 真近点角 r = p/(1+e*cos(theta)); % 距离 v = sqrt(2*(E+mu/r)); % 速度 r_dot = sqrt(mu*p)/r*v*sin(theta); % 距离变化率 r_theta_dot = h/r^2; % 弧速度 r_cross_v = [0,0,r*r_theta_dot]; % 距离矢量与速度矢量的叉积 v_cross_h = cross([0,0,h], [r*cos(theta),r*sin(theta),0]); % 速度矢量与角动量矢量的叉积 e_vec = 1/mu*((v^2-mu/r)*[r*cos(theta),r*sin(theta),0]-r_dot*[0,0,r]-r_cross_v); % 离心率矢量 i_vec = [cos(RAAN)*cos(omega)-sin(RAAN)*sin(omega)*cos(i), sin(RAAN)*cos(omega)+cos(RAAN)*sin(omega)*cos(i), sin(omega)*sin(i)]; % 轨道面法向量 n_vec = cross([0,0,1], i_vec); % 升交点赤道面法向量 h_vec = [r*sqrt(v^2-(r_dot/r)^2)*sin(theta),-r*sqrt(v^2-(r_dot/r)^2)*cos(theta),h]; % 角动量矢量 RAAN = RAAN + RAAN_dot*dt; % 更新升交点赤经 omega = omega + omega_dot*dt; % 更新近地点幅角 i = i + i_dot*dt; % 更新倾角 t = t + dt; % 更新时间 M = M0 + n*t; % 平近点角 end %% 输出结果 fprintf('轨道长半轴a = %.2f km\n', a); fprintf('轨道离心率e = %.2f\n', e); fprintf('轨道倾角i = %.2f deg\n', i*180/pi); fprintf('升交点赤经RAAN = %.2f deg\n', RAAN*180/pi); fprintf('近地点幅角omega = %.2f deg\n', omega*180/pi); fprintf('初平近点角M0 = %.2f deg\n', M0*180/pi); fprintf('轨道周期T = %.2f min\n', T/60); fprintf('轨道面法向量 = [%.2f %.2f %.2f]\n', i_vec(1), i_vec(2), i_vec(3)); fprintf('升交点赤道面法向量 = [%.2f %.2f %.2f]\n', n_vec(1), n_vec(2), n_vec(3)); fprintf('角动量矢量 = [%.2f %.2f %.2f] km^2/s\n', h_vec(1), h_vec(2), h_vec(3)); fprintf('离心率矢量 = [%.2f %.2f %.2f]\n', e_vec(1), e_vec(2), e_vec(3));

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值