質問の算額の問題をPythonで解いてみました。(^_^;
求める小円の直径をdとして、小円、中円、大円の半径をそれぞれ、x、Z(=11/2)、yとすると、
まず、d=2x …(1)
一番目の参考URLの公式から、(R,r1,r2)←(x,y,Z)
…(2)
△OO'Hは直角二等辺三角形なので辺の比から
…(3)
これをPythonで計算すると次の通りです。
● Sangaku1.py
# coding: UTF-8 # Sangaku1.py from math import sqrt import numpy as np from scipy.optimize import newton Z = 11.0/2.0 def g(y): return ( y-Z )-( (y+Z)/sqrt(2.0) ) Y = newton(g,1.0) def f(x): return ( 1.0/sqrt(x) )-( 1.0/sqrt(Y)+1.0/sqrt(Z) ) def main(): print(2.0*newton(f,1.0)) if __name__ == '__main__': main()
●実行結果
5.5
ちなみに、自力で計算する場合、(3)からyを求めてxを求めると、2重根号が出てきたりして計算が大変なので、(3)の代わりに次の(3)'を使って、√x=α,√y=β,√Z=γとして計算するといいです。(^_^;
∴
…(3)'
※参考URL
●2つの円の共通外接線と共通内接線の長さ
●算額の問題ですが、、 T_NAKAの阿房ブログ/ウェブリブログ
●フォードの円
●非線形方程式を解く − 読書ノート v1.4.0dev - プレハブ小屋
●つまみぐいプログラミング Python で方程式を数値的に解く