为什么正好经过这个空隙?

前言
偶然看到的一个问题,如图1,为什么正好经过这个空隙?我们用空间解析几何来解一下吧。

图1 为什么会经过这个空隙?

解答

如图2,建立空间直角坐标系 x y z xyz xyz,原点记为 O O O P P P 点为水平杆与斜杆的交点, Q Q Q 点为垂直杆与水平杆的交点, 将斜杆标记为 L L L

图2 建立空间直角坐标系

O Q = q OQ=q OQ=q Q P = r QP=r QP=r Q Q Q 点坐标为 ( 0 , 0 , q ) (0, 0, q) (0,0,q)

设水平杆 Q P QP QP z z z 轴以 ω   r a d / s \omega\, rad/s ωrad/s 的角速度旋转,并设从开始旋转到现在的时长为 t t t 秒, 则 P P P 点坐标为 ( r cos ⁡ ω t , r sin ⁡ ω t , q ) (r\cos{\omega t}, r\sin{\omega t}, q) (rcosωt,rsinωt,q)

Q Q Q P P P 两点坐标得:

O Q → = ( 0 , 0 , q ) Q P → = ( r cos ⁡ ω t , r sin ⁡ ω t , 0 ) (1) \overrightarrow{OQ}=(0, 0, q) \qquad \overrightarrow{QP}=(r\cos{\omega t}, r\sin{\omega t}, 0) \tag{1} OQ =(0,0,q)QP =(rcosωt,rsinωt,0)(1)

L L L 的方向向量 S → = ( a , b , c ) \overrightarrow{S}=(a, b, c) S =(a,b,c),由 L L L 的方向向量 S → \overrightarrow{S} S P P P 点得,得斜杆 L L L 代表的直线方程:
x − r cos ⁡ ω t a = y − r sin ⁡ ω t b = z − q c (2) \frac{x-r\cos{\omega t}}{a}=\frac{y-r\sin{\omega t}}{b}=\frac{z-q}{c} \tag{2} axrcosωt=byrsinωt=czq(2)

我们知道 Q P → \overrightarrow{QP} QP 与斜杆 L L L 垂直,假设 O Q → \overrightarrow{OQ} OQ 与斜杆 L L L 成固定角 θ \theta θ ,得:
{ 0 = Q P → ⋅ S → cos ⁡ θ = O Q → ⋅ S → ∣ O Q → ∣ ∣ S → ∣ (3) \begin{cases} 0=\overrightarrow{QP} \cdot \overrightarrow{S} \\ \cos{\theta}=\frac{\overrightarrow{OQ} \cdot \overrightarrow{S}}{\left|\overrightarrow{OQ}\right| \left| \overrightarrow{S}\right|} \end{cases} \tag{3} 0=QP S cosθ=OQ S OQ S (3)

Q P → \overrightarrow{QP} QP S → \overrightarrow{S} S O Q → \overrightarrow{OQ} OQ 代入 式(3),得
{ a b = − sin ⁡ ω t cos ⁡ ω t c 2 ( tan ⁡ θ ) 2 = a 2 + b 2 (4) \begin{cases} \frac{a}{b}=\frac{-\sin{\omega t}}{\cos{\omega t}} \\ c^{2}(\tan{\theta})^{2}=a^{2}+b^{2} \end{cases} \tag{4} {ba=cosωtsinωtc2(tanθ)2=a2+b2(4)

式(4)中第2条等式两边除以 b 2 b^2 b2 ,再化简得:
c 2 b 2 = 1 ( tan ⁡ θ ) 2 ( cos ⁡ ω t ) 2 (5) \frac{c^{2}}{b^{2}}=\frac{1}{(\tan{\theta})^{2}(\cos{\omega t})^{2}} \tag{5} b2c2=(tanθ)2(cosωt)21(5)

求直线组 L L L x o z xoz xoz 平面相交的图形,即回答这个缝隙的形状为什么是图1 中这样的曲线。我们令 y = 0 y=0 y=0 ,代入直线公式(2) 得:
x − r cos ⁡ ω t a = − r sin ⁡ ω t b = z − q c (6) \frac{x-r\cos{\omega t}}{a}=\frac{-r\sin{\omega t}}{b} =\frac{z-q}{c} \tag{6} axrcosωt=brsinωt=czq(6)
由式(4)(5)(6)得到方程组(7)。
{ a b = − sin ⁡ ω t cos ⁡ ω t x − r cos ⁡ ω t a = − r sin ⁡ ω t b c 2 b 2 = 1 ( tan ⁡ θ ) 2 ( cos ⁡ ω t ) 2 − r sin ⁡ ω t b = z − q c (7) \begin{cases} \frac{a}{b}=\frac{-\sin{\omega t}}{\cos{\omega t}}\\ \frac{x-r\cos{\omega t}}{a}=\frac{-r\sin{\omega t}}{b} \\ \frac{c^2}{b^2}=\frac{1}{(\tan{\theta})^{2}(\cos{\omega t})^{2}}\\ \frac{-r\sin{\omega t}}{b} =\frac{z-q}{c} \end{cases} \tag{7} ba=cosωtsinωtaxrcosωt=brsinωtb2c2=(tanθ)2(cosωt)21brsinωt=czq(7)

由式(7)中上面两个等式,消去a,b得:
− sin ⁡ ω t cos ⁡ ω t = x − r cos ⁡ ω t − r sin ⁡ ω t = a b (8) \frac{-\sin{\omega t}}{\cos{\omega t}}=\frac{x-r\cos{\omega t}}{-r\sin{\omega t}}=\frac{a}{b} \tag{8} cosωtsinωt=rsinωtxrcosωt=ba(8)
x cos ⁡ ω t = r (9) x \cos{\omega t}=r \tag{9} xcosωt=r(9)

由式(7)中下面两个等式,消去b,c得:
1 ( tan ⁡ θ ) 2 ( cos ⁡ ω t ) 2 = ( z − q ) 2 ( − r sin ⁡ ω t ) 2 = c 2 b 2 (10) \frac{1}{(\tan{\theta})^2(\cos{\omega t})^2} = \frac{(z-q)^2}{(-r\sin{\omega t})^2} =\frac{c^2}{b^2} \tag{10} (tanθ)2(cosωt)21=(rsinωt)2(zq)2=b2c2(10)

( − r sin ⁡ ω t ) 2 ( tan ⁡ θ ) 2 ( cos ⁡ ω t ) 2 = ( z − q ) 2 (11) \frac{(-r\sin{\omega t})^2}{(\tan{\theta})^2(\cos{\omega t})^2} = {(z-q)}^2 \tag{11} (tanθ)2(cosωt)2(rsinωt)2=(zq)2(11)

由利用式(9),可消去式(11)中的 ( sin ⁡ ω t ) 2 (\sin{\omega t})^{2} (sinωt)2 ( cos ⁡ ω t ) 2 (\cos{\omega t})^{2} (cosωt)2 得:
x 2 − ( tan ⁡ θ ) 2 ( z − q ) 2 = r 2 (12) x^{2}-(\tan{\theta})^{2}(z-q)^{2}=r^{2} \tag{12} x2(tanθ)2(zq)2=r2(12)
易知,为双曲线方程,所以在 xoz 平面相交得图形为双曲线。


欢迎观众老爷们评论回复,一键三连。
更多有趣问题,欢迎关注投稿 知乎小成 - 数学漫游专栏
我们聚焦生活中的数与形的小小问题们。
转载请注明出处,谢谢!

这是一个非常好的问题!你问的是: > **“为什么是这样计算,原来是什么?”** 我们来深入解释一下: 你现在看到的代码中用了一个叫 **欧几里得算法(辗转相除法)** 来求两个数的**最大公约数(GCD)**。那么: --- ### ✅ 为什么可以用 `a, b = b, a % b` 不断取余的方式来求最大公约数? #### 📌 原理来源:**欧几里得定理** 数学上有一个重要结论: > 对任意两个正整数 $ a $ 和 $ b $,有: > > $$ > \gcd(a, b) = \gcd(b, a \mod b) > $$ 只要 $ b \neq 0 $。 这个定理是欧几里得在《几何原本》中提出的,因此这个方法被称为 **欧几里得算法**。 --- ### 🔍 直观理解:为什么成立? 假设我们要算 $ \gcd(48, 18) $ 按照公式一步步来: 1. $ \gcd(48, 18) = \gcd(18, 48 \mod 18) = \gcd(18, 12) $ 2. $ \gcd(18, 12) = \gcd(12, 18 \mod 12) = \gcd(12, 6) $ 3. $ \gcd(12, 6) = \gcd(6, 12 \mod 6) = \gcd(6, 0) $ 当第二个数变成 0 时,第一个数就是最大公约数 → 所以 GCD 是 **6** ✅ 这比暴力枚举所有因数快得多! --- ### 💡 类比生活例子(帮助理解) 想象你要用同样大小的正方形瓷砖去铺一个 $48 \times 18$ 的矩形区域,要求: - 正好铺满,不留空隙; - 瓷砖尽可能大。 那么最大的瓷砖边长是多少?—— 就是这两个数的**最大公约数**! 而欧几里得算法就像不断从大矩形里剪掉正方形,剩下的小矩形继续剪,直到不能再剪为止。 ``` 48×18 的矩形: ├── 剪掉一个 18×18 的正方形 → 剩下 30×18 ├── 再剪一个 18×18 → 剩下 12×18 └── 现在变成 18×12,交换方向... ├── 剪 12×12 → 剩下 6×12 └── 继续... 最后剩下的是 6×6,刚好能铺完。 → 所以最大边长是 6。 ``` 这和取模运算本质一致: $ 48 \div 18 = 2 $ 余 $ 12 $ → 相当于剪了两块还剩 $12$ --- ### ❓ 那“原来”是怎么算的?(没有这个算法之前的方法) 在计算机出现前或教学初期,人们通常使用以下方式求 GCD: #### 方法一:**质因数分解法** 比如: - $ 48 = 2^4 \times 3 $ - $ 18 = 2 \times 3^2 $ - 公共部分:$ 2^1 \times 3^1 = 6 $ 所以 $ \gcd(48,18)=6 $ ✅ 正确但慢,尤其对大数难以分解。 #### 方法二:**穷举法(暴力尝试)** 从较小的那个数开始往下试: ```python def gcd_brute_force(a, b): min_num = min(a, b) for i in range(min_num, 0, -1): if a % i == 0 and b % i == 0: return i ``` 对于小数字可以,但效率是 $ O(n) $,非常慢。 相比之下,**欧几里得算法的时间复杂度只有 $ O(\log \min(a,b)) $**,快得多! --- ### ✅ 最小公倍数(LCM)又是怎么来的? 有个经典公式: $$ \text{lcm}(a, b) = \frac{a \times b}{\gcd(a, b)} $$ 比如: $ a=48, b=18, \gcd=6 $ → $ \text{lcm} = (48×18)/6 = 864 / 6 = 144 $ 验证: - 48 的倍数:48, 96, 144, ... - 18 的倍数:18, 36, 54, 72, 90, 108, 126, 144, ... 最小公共倍数确实是 144。 ⚠️ 注意:必须先算 GCD,再用乘积除以 GCD 得 LCM。不能反过来。 --- ### ✅ 总结:你现在看到的算法“原来是”什么? | 项目 | 原始方法(朴素) | 现代高效方法(你现在用的) | |------|------------------|----------------------------| | 求 GCD | 质因数分解 或 穷举 | 欧几里得算法(取模迭代) | | 时间复杂度 | $ O(n) $ 或更差 | $ O(\log n) $,极快 | | 是否适合编程 | 可行但低效 | 推荐标准做法 | 你现在写的代码正是基于这个高效数学原理实现的。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值