静かなる名辞

pythonとプログラミングのこと


掛け算および割り算するとそれぞれある値になる数字の組を求める

 プログラミングにはあまり関係のないテーマだし、中学校レベルの数学がわかればできるネタだが……ちょっと欲しくなったので。

問題

  a, bの2つの数(とりあえず正の実数)を考える。 a, bは次の条件を満たす。

  •  a\cdot b = C_1
  •  \frac{a}{b} = C_2

  C_1, C_2が与えられたとき、 a, bを適当に定めたい。

 つまり、ディスプレイの画素数と縦横比が決まっているとき、x画素*y画素のxyがそれぞれどうなるかを求めたい、という形の問題。こんなことに数分悩んでしまった。

解く

 両方の式を掛けあわせる。
 a^2 = C_1\cdot C_2
 a = \sqrt{C_1\cdot C_2}
 b = \frac{C_1}{a} = \frac{a}{C_2}
 簡単に解けた。

試してみる

 pythonで書いてみる。 C_1=100, C_2=\frac{3}{4}とする。

>>> from math import sqrt
>>> def f(c1, c2):
...     a = sqrt(c1*c2)
...     b = a/c2
...     return a,b
... 
>>> f(100, 3/4)
(8.660254037844387, 11.547005383792516)
>>> a, b = f(100, 3/4)
>>> a*b
100.00000000000001

 上手く行っている。

まとめ

 ただの簡単な連立方程式なので解けば良いだけだった。