找回密码
 欢迎注册
查看: 334|回复: 17

[原创] 求 r1 和 r2

[复制链接]
发表于 2026-4-24 11:20:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
求 r1 和 r2
求半径.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2026-4-24 11:55:51 | 显示全部楼层
感觉如果不限定 内圈 和外圈 圆的起始位置,答案是不确定的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2026-4-25 15:31:58 | 显示全部楼层
2026-04-25_152527.png
6个内切圆组的半径方程:
$$
12\,a^4r^6-16\,a^3\left( 6\,a^2-11\,b^2 \right) r^5+4\,a^2\left( 54\,a^4+7\,a^2b^2-50\,b^4 \right) r^4-24\,a\left( 4\,a^6+11\,a^4b^2-a^2b^4-2\,b^6 \right) r^3+\left( 12\,a^8+92\,a^6b^2+100\,a^4b^4-4\,a^2b^6-4\,b^8 \right) r^2-8\,a^3b^2\left( a^2+2\,b^2 \right) \left( a^2+b^2 \right) r+\left( a^2+b^2 \right) ^2a^2b^4=0
$$
将a=4、b=3代入得到:
$$
256\,r^6+256\,r^5+57504\,r^4-311792\,r^3+514885\,r^2-326400\,r+67500=0
$$
解之得:
$$
r=1.17149769630016955295984296125760680363803729966241632862259163419462094349008735742349615886433064002...
$$
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2026-4-25 19:29:08 | 显示全部楼层
本帖最后由 iseemu2009 于 2026-4-25 19:38 编辑

你这个方程是怎么得到的呢

点评

外切圆组得半径R表达式难推,超繁。  发表于 2026-4-27 12:26
如7#所说,硬推再化简。  发表于 2026-4-27 12:23
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2026-4-26 20:39:39 | 显示全部楼层
本帖最后由 Jack315 于 2026-4-26 21:00 编辑

【与椭圆相切圆的圆心坐标】

椭圆方程:\(x=a\cos{t}, y=b\sin{t}\),其中:\(0\le t\le 2\pi\)
椭圆上切线的斜率:\(dx=-a\sin{t}\cdot dt, dy=b\cos{t}\cdot dt, k=dy/dx=-(b\cos{t})/(a\sin{t})\)

设与椭圆相切于 \(P(a\cos{\theta}, b\sin{\theta})\) 点的圆的方程为 \((x-m)^2+(y-n)^2=r^2 \)。
则有 \((n-b\sin{\theta})/(m-a\cos{\theta})=-(1/k)=(a\sin{\theta})/(b\cos{\theta})\)
和 \((m-a\cos{\theta})^2+(n-b\sin{\theta})^2=r^2 \) 。
求解此方程组得:
\(m=(a\pm b\cdot r/\sqrt{b^2\cos^2{\theta}+a^2\sin^2{\theta}})\cdot\cos{\theta}\)
\(n=(b\pm a\cdot r/\sqrt{b^2\cos^2{\theta}+a^2\sin^2{\theta}})\cdot\sin{\theta}\)

外切圆的圆心坐标方程:
\(x=(a+b\cdot r/\sqrt{b^2\cos^2{\theta}+a^2\sin^2{\theta}})\cdot\cos{\theta}\)
\(y=(b+a\cdot r/\sqrt{b^2\cos^2{\theta}+a^2\sin^2{\theta}})\cdot\sin{\theta}\)

内切圆的圆心坐标方程:
\(x=(a-b\cdot r/\sqrt{b^2\cos^2{\theta}+a^2\sin^2{\theta}})\cdot\cos{\theta}\)
\(y=(b-a\cdot r/\sqrt{b^2\cos^2{\theta}+a^2\sin^2{\theta}})\cdot\sin{\theta}\)

求解外切圆的圆心坐标代码:
  1. outerXY[\[Theta]_, r_, a_, b_] := Module[
  2.   {st, ct, den},
  3.   (*求三角函数值*)
  4.   st = Sin[\[Theta]]; ct = Cos[\[Theta]];
  5.   (*分母表达式*)
  6.   den = Sqrt[Total[{b ct, a st}^2]];
  7.   (*输出圆心坐标*)
  8.   {(a + (b r)/den) ct, (b + (a r)/den) st}
  9.   ]
复制代码

求解内切圆的圆心坐标代码:
  1. innerXY[\[Theta]_, r_, a_, b_] := Module[
  2.   {st, ct, den},
  3.   (*求三角函数值*)
  4.   st = Sin[\[Theta]]; ct = Cos[\[Theta]];
  5.   (*分母表达式*)
  6.   den = Sqrt[Total[{b ct, a st}^2]];
  7.   (*输出圆心坐标*)
  8.   {(a - (b r)/den) ct, (b - (a r)/den) st}
  9.   ]
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2026-4-26 21:15:10 | 显示全部楼层
本帖最后由 Jack315 于 2026-4-26 21:24 编辑

【外切圆半径】

给定七个外切圆对应的角度 \(\theta_i\),根据5#的公式计算圆心坐标,则对应的圆与椭圆相切。
调整各角度值 \(\theta_i\) 和外切圆半径 \(r\),使得相邻圆心间的距离为 \(2r\),从而求得外切圆半径 \(r\)。

定义相邻圆心间距误差函数:
  1. errOuter[r_, t0_] := Module[
  2.   {a = 4, b = 3, t = Join[{0}, t0], len, xy, dist, disterr},
  3.   (*角度列表长度*)
  4.   len = Length[t];
  5.   (*求解圆心坐标*)
  6.   xy = Table[outerXY[t[[i]], r, a, b], {i, len}];
  7.   (*求解相邻圆心间距离*)
  8.   dist = Table[Norm[xy[[i]] - xy[[i - 1]]], {i, 2, len}];
  9.   dist = Join[dist, {Norm[First[xy] - Last[xy]]}];
  10.   
  11.   (*输出相邻圆心间距离误差*)
  12.   disterr = Total[Abs[dist - 2 r]]
  13.   ](*end Module*)
复制代码

求解外切圆半径:
  1. NMinimize[{errInner[r, {t1, t2, t3, t4, t5, t6}],
  2.   0 < t1 < t2 < t3 < t4 < t5 < t6 < 2 \[Pi], 2 < r < 3},
  3.   {r, t1, t2, t3, t4, t5, t6}, WorkingPrecision -> 100]
复制代码

外切圆半径:\(2.690745715096107906897237734799938638856541687475692757508008120178003182642456435024743945723547883\)
相邻圆心间距误差:\(2.447323155204535027853157533463575822494287610518209952923657885205091369802798782454068218988312497*10^{-48}\)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2026-4-26 22:01:33 | 显示全部楼层
本帖最后由 Jack315 于 2026-4-26 22:10 编辑

【内切圆半径】

给定六个内切圆对应的角度 \(\theta_i\),根据5#的公式计算圆心坐标,则对应的圆与椭圆相切。
调整各角度值 \(\theta_i\) 和内切圆半径 \(r\),使得相邻圆心间的距离为 \(2r\),从而求得内切圆半径 \(r\)。

定义相邻圆心间距误差函数:
  1. errInner[r_, t0_] := Module[
  2.   {a = 4, b = 3, t = Join[{0}, t0], len, xy, dist, disterr},
  3.   (*角度列表长度*)
  4.   len = Length[t];
  5.   (*求解圆心坐标*)
  6.   xy = Table[innerXY[t[[i]], r, a, b], {i, len}];
  7.   (*求解相邻圆心间距离*)
  8.   dist = Table[Norm[xy[[i]] - xy[[i - 1]]], {i, 2, len}];
  9.   dist = Join[dist, {Norm[First[xy] - Last[xy]]}];
  10.   
  11.   (*输出相邻圆心间距离误差*)
  12.   disterr = Total[Abs[dist - 2 r]]
  13.   ](*end Module*)
复制代码

求解内切圆半径(第四个圆对应的角度 \(t_3\) 固定为 \(\pi\)):
  1. NMinimize[{errInner[r, {t1, t2, \[Pi], t4, t5}],
  2.   0 < t1 < t2 < \[Pi] < t4 < t5 < 2 \[Pi], 1 < r < 25/16},
  3.   {r, t1, t2, t4, t5}, WorkingPrecision -> 100]
复制代码

内切圆半径:\(1.171497696300169552959842961257606803638037299662412476106787579338005651515803470051435925247817221\)
相邻圆心间距误差:\(3.046446031068511474288894869031897499773940840581073639410288025490566578374432660799928849705080002*10^{-49}\)

内切圆半径可以通过解方程得出:
第一个圆的圆心为 \((r-a, 0)\) ;第二个圆的圆心坐标为 \((r, y)\)。
联立两个圆的方程组,结果是一元二次方程(两个圆最多有两个交点),
利用判别式为零,可求得 \(y=\sqrt{4ar-a^2}\) 。
得到第二个圆的圆心坐标的两种表达方法(参考5#),联立方程组即可求出半径 \(r\) 。

外切圆半径用解方程的方法比较困难:
第一个圆的圆心为 \((r+a, 0)\) ;第二个圆的圆心坐标为 \((x, y)\), 有两个变量 \(x, y\) 需要确定。
因而需要求多个圆的圆心坐标才能解出半径 \(r\) 。
在求解后续圆的圆心时,方程解的表达式"爆炸",难度指数级上升……不知道是否有巧妙的方法来求解。

点评

对的,只有大概 50 位精度。这是这种数值方法的局限性。  发表于 2026-4-27 14:32
内半径r,你的数据在小数点后50位就不准确了:1.17149769630016955295984296125760680363803729966241..  发表于 2026-4-27 12:17
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2026-4-27 12:03:58 | 显示全部楼层
Jack315 发表于 2026-4-26 22:01
【内切圆半径】

给定六个内切圆对应的角度 \(\theta_i\),根据5#的公式计算圆心坐标,则对应的圆与椭圆相 ...

讨论一下:外层的7个圆可以沿椭圆表面光滑的转动吗?若能转动,半径会不会发生变化?若不能转动,说明为什么?

点评

7个等圆,因位置的不同,半径亦会不同,倒是可以研究其最大值与最小值。  发表于 2026-4-27 14:07
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2026-4-27 12:41:06 | 显示全部楼层
本帖最后由 Gongwen0519 于 2026-4-27 14:00 编辑
iseemu2009 发表于 2026-4-27 12:03
讨论一下:外层的7个圆可以沿椭圆表面光滑的转动吗?若能转动,半径会不会发生变化?若不能转动,说明为 ...


不能滚动,因为7个等径环切圆的圆心至少有两个(本题有四个)不在与已知椭圆同心且相似的椭圆上。(五点即可确定一条二次函数的图像)

不管奇数还是偶数个圆,一般情况下都不能满足滚动条件:
2026-04-27_135751.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2026-4-28 00:10:31 | 显示全部楼层
本帖最后由 Jack315 于 2026-4-28 07:32 编辑
iseemu2009 发表于 2026-4-27 12:03
讨论一下:外层的7个圆可以沿椭圆表面光滑的转动吗?若能转动,半径会不会发生变化?若不能转动,说明为 ...


【参数说明】
角度:指圆与椭圆的切点坐标所对应的椭圆参变量角度 \(\theta\)(参考5#)。

【圆半径变化】
当第一个外切圆位于横坐标上时,求得的各圆的角度依次为:
\(0\degree, 50.80\degree, 103.06\degree, 154.98\degree, 205.02\degree, 256.94\degree, 309.20\degree\) 。

第一个圆与相邻两个圆之角的角度相度差 \(50.80\degree\),
因此第一个圆转过 \(50.80\degree\) ,对应圆半径变化一个周期。

当第三个圆逆时针转到  \(180\degree\)、或第四个圆顺时针转到  \(180\degree\) 时,
与第一个圆角度为  \(0\degree\) 时的状态成镜像。
对应转过的角度为 \(180\degree-154.98\degree=25.02\degree\) 。
上述两个旋转角度应该成倍数关系。数据的误差或为计算精度不足所致。

外切圆半径变化曲线.png
外切圆半径变化范围大约为 \(1.04*10^{-8}\),图中曲线拟合正弦函数时的拟合优度为 99.95%。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2026-5-16 04:43 , Processed in 0.033006 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表