欢迎来到 Hexo!这是 SciWorm 的首秀。查看 documentation 获取更多关于 Hexo 的信息。如果在使用 Hexo 的过程中有任何问题,欢迎访问 troubleshooting,或者在 GitHub 提问。

快速开始 Hexo


新建一篇文章

1
2
$ hexo new "My New Post" # or
$ npx hexo new "My New Post"

更多信息参见: Writing

运行服务

1
2
$ hexo server # or
$ hexo s

更多信息参见: Server

生成静态文件

1
2
$ hexo generate # or
$ hexo g

更多信息参见: Generating

部署远程站点

1
2
$ hexo deploy # or
$ hexo d

更多信息参见: Deployment

公式显示效果测试


行内公式显示测试

这是行内公式:$f(x)=ax+b$,$\sqrt{\frac{a^2+b^2}{a^2-b^2} }$,Markdown 实现代码如下:

1
2
$f(x)=ax+b$
$\sqrt(\frac{a^2+b^2}{a^2-b^2})$

行间公式显示测试

这是行间公式:

$$
f(n) = \begin{cases}
\frac{n}{2},
& \text{当 } n\text{ 为奇数}
\\ 3n+1, & \text{当 } n\text{ 为偶数}
\end{cases}
$$

$$
f(x): \begin{cases} x, x>0 \\ -x,x<0 \end{cases}
$$

Markdown 实现代码如下:

1
2
3
4
5
6
7
8
9
10
11
$$
f(n) = \begin{cases}
\frac{n}{2},
& \text{当 } n\text{ 为奇数}
\ 3n+1, & \text{当 } n\text{ 为偶数}
\end{cases}
$$

$$
f(x): \begin{cases} x, x>0 \\\ -x,x<0 \end{cases}
$$

注意,用 \ 可正常换行,用 \\ 代替 \ 也可实现换行。

代码显示测试

C语言

1
2
3
4
5
6
7
#include <stdio.h>

int main(void){
printf("Hello, world!");

return 0;
}

Java语言

1
2
3
4
5
public class HelloWorld{
    public static void main(Sring[] args){
    System.out.println("Hello World");
    }
}

MATLAB

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
%% 环境设置
clear variables; close all; clc

%% 参数初始化
M0 = 2.; % 马赫数
h0 = 5000.; % 初始高度
a = 340.; % 音速
g0 = 9.81;
theta0 = -30*pi/180; % 初始轨迹倾角,注意度数的表示

%% 轨迹解算
v0 = M0*a;
y0 = [v0; theta0; 0; h0];
h = 0.01; % 积分步长
t0 = 0;
t1 = 200;
[finaltime, n, y, t] = RK4(@equations, y0, h, t0, t1);

%% 绘制结果
figure('Name', '弹道曲线')
plot(y(3,1:n), y(4,1:n))
xlabel('x/m'), ylabel('h/m')

figure('Name', '速度变化曲线')
plot(t(1:n), y(1,1:n))
xlabel('t/s'), ylabel('v/(m/s)')

%% 四阶龙格库塔算法
% Inputs:
% f: 微分方程组
% y0: [v; theta; x; h] 初值
% h: 积分步长
% t0-t1: 时间区间
% Outputs:
% finaltime: 过程单点时间
% n: 积分点计数
% y: 轨迹值
% t: 时间点容器
function [finaltime, n, y, t] = RK4(f, y0, h, t0, t1)
t = t0:h:t1;
y = zeros(length(y0),length(t));

y(:,1) = y0;
flag = 1;
n = 1;
while(flag) % 判断飞行器是否落地
if(y(4,n) > 0)
k1 = feval(f, t(n), y(:,n));
k2 = feval(f, t(n)+h/2, y(:,n)+h/2*k1);
k3 = feval(f, t(n)+h/2, y(:,n)+h/2*k2);
k4 = feval(f, t(n)+h, y(:,n)+h*k3);

y(:,n+1) = y(:,n)+(h/6)*(k1+2*k2+2*k3+k4);

n = n+1;
else
finaltime = t(n-1);
flag = 0;
end
end

end

%% 四个微分方程组
% Inputs:
% t: 时间点容器
% y: [v; theta; x; h]
% Outputs:
% f: 微分方程
function f = equations(t,y, g0)
m = 260.; % 质量
s = 0.24; % 参考面积
a = 340.; % 音速
alpha = 2.; % 攻角

M = y(1)/a;
G = m*g0;
rho = 1.225*exp(-0.00015*y(4));

Cx = [M^2, M, 1]*[ 0.0002, 0.0038, 0.1582;
-0.0022,-0.0132,-0.8520;
0.0115,-0.0044, 1.9712;]*
[alpha^2, alpha, 1]';

X = Cx*1/2*rho*(y(1)^2)*s;
Cy = [M^2,M,1]*[-0.026,0.0651,0.4913]'*alpha;
Y = Cy*1/2*rho*(y(1)^2)*s;

f(1) = -X/m-G*sin(y(2))/m;
f(2) = Y/(m*y(1))-G*cos(y(2))/(m*y(1));
f(3) = y(1)*cos(y(2));
f(4) = y(1)*sin(y(2));
f = f(:);
end