常用対数の近似値の算出

対数は「底$x$の値を何乗したら$z$になるか?」の指数を求めるもの、指定するものと捉える。
$z=x^y$での$y$を知りたい場合に$y=\log_{x}z$と書く。

常用対数は、対数の底が10のもの。
(※自然対数は対数の底がeのもの。${\rm e}^x$は微分しても${\rm e}^x$のままなので便利)

$\log_{10} 1 = 0, (10^0=1)$
$\log_{10} 2 \fallingdotseq 0.3$

$\log_{10} 2^{10}=\log_{10} 1024\fallingdotseq \log_{10} 1000=\log_{10}10^3=3\log_{10}10=3\cdot 1=3$

$\Rightarrow 10\log_{10}2\fallingdotseq3 \Rightarrow \log_{10}2\fallingdotseq \displaystyle\frac{3}{10}=0.3$

$\log_{10}3\fallingdotseq 0.475, (10^{0.5}=\sqrt{10}\fallingdotseq \sqrt{9}=3)$

$\log_{10}3^4=\log_{10}(9\cdot 9)=\log_{10}{81}\fallingdotseq \log_{10}80=\log_{10}(2^3\cdot 10) \Rightarrow 3\log_{10}2 + \log_{10}10 \fallingdotseq 3\cdot 0.3 + 1 = 1.9$
$\Rightarrow 4\log_{10}3\fallingdotseq 1.9 \Rightarrow \log_{10}3\fallingdotseq\displaystyle\frac{1.9}{4}=0.475$

$\log_{10}4\fallingdotseq 0.6$

$\log_{10}4=\log_{10}2^2=2\log_{10}2\fallingdotseq 2\cdot0.3=0.6$

$\log_{10}5\fallingdotseq 0.7$

$\log_{10}5=\log_{10}\displaystyle\frac{10}{2}=\log_{10}10-\log_{10}2\fallingdotseq 1-0.3 = 0.7$

$\log_{10}6\fallingdotseq 0.775$

$\log_{10}6=\log_{10}(2\cdot 3)=\log_{10}2 + \log_{10}3\fallingdotseq 0.3 + 0.475 = 0.775$

$\log_{10}7=0.85$

$\log_{10}7^2=\log_{10}49\fallingdotseq \log_{10}50 = \log_{10}(5\cdot10) = \log_{10}5+\log_{10}10\fallingdotseq 0.7+1$
$\Rightarrow 2\log_{10}7\fallingdotseq 1.7 \Rightarrow \log_{10}7\fallingdotseq \displaystyle\frac{1.7}{2}=0.85$
高精度版)
$\log_{10}7^4=\log_{10}2401\fallingdotseq \log_{10}2400 = \log_{10}(24\cdot100) = \log_{10}8+\log_{10}3+\log_{10}100$
$=\log_{10}2^3+\log_{10}3+\log_{10}10^2=3\log_{10}2+\log_{10}3+2\log_{10}10\fallingdotseq 3\cdot 0.3 + 0.475 + 2\cdot 1.0=3.375$
$\Rightarrow4\log_{10}7=3.375\Rightarrow\log_{10}7\fallingdotseq 3.375/4=0.84375\fallingdotseq 0.844$

$\log_{10}8\fallingdotseq 0.9$

$\log_{10}8=\log_{10}2^3=3\log_{10}2\fallingdotseq 3\cdot 0.3 = 0.9$

$\log_{10}9\fallingdotseq 0.95$

$\log_{10}9=\log_{10}3^2=2\log_{10}3\fallingdotseq 2\cdot 0.475=0.95$
高精度版)
$\log_{10}9^7=\log_{10}4782969\fallingdotseq \log_{10} 4800000 = \log_{10} (6\cdot 8\cdot 10^5) = \log_{10} 6 + \log_{10} 8 + \log_{10} 10^5$
$= 0.775 + 0.9 + 5.0=6.675$
$\Rightarrow 7\log_{10}9=6.675 \Rightarrow \log_{10}9 \fallingdotseq 6.675/7=0.9537\cdots\fallingdotseq 0.954$

$\log_{10}10=1, (10^1=10)$

おまけ:$\log_{10}11\fallingdotseq 1.04$

$\log_{10}11^5=\log_{10}161051\fallingdotseq \log_{10}160000=\log_{10}2^4\cdot10^4=4(\log_{10}2+\log_{10}10)\fallingdotseq 4(0.3+1.0)$
$\Rightarrow 5\log_{10}11=4\cdot1.3\Rightarrow \log_{10}11\fallingdotseq \displaystyle\frac{4}{5}1.3=0.8\cdot 1.3=1.04$

この近似をプロットすると下図のようになる。$\log_{10}7$と$\log_{10}9$は他に比べて誤差が大きいので、高精度版を赤色として示した。

1 2 3 4 5 6 7 8 9 10
近似値 0 0.3 0.475 0.6 0.7 0.775 0.85 0.9 0.95 1
真値 0.000 0.3010 0.4771 0.6021 0.6990 0.7782 0.8451 0.9031 0.9542 1.000
誤差 0 0.0010 0.0021 0.0021 0.0010 0.0032 0.0049 0.0031 0.0042 0

観察

  • 1~10で、$\log_{10}$は0~1になる。
  • 3で$\log_{10}$は約0.45で、ざっくり半分に到達する。
  • 2は$\log_{10}$は約0.3で、$4=2^2$, $8=2^3$だと$\log_{10}$はそれぞれ2,3倍の約0.6,0.9となる。8の際に既にほぼ1に近いことに注意。
  • 5は10/2で、$\log_{10}$は$1-\log_{10}2$となるので約0.7。1と10の両端側からの距離でいうと2の場合と同じで約0.3。
  • 倍になると、対数では同じだけ増加する。
    例)
    $\log_{10}2=0.3\stackrel{\times 2}{\longrightarrow}\log_{10}4=0.6\stackrel{\times 2}{\longrightarrow}\log_{10}8=0.9$,
    $\log_{10}3=0.475\stackrel{\times 3}{\longrightarrow}\log_{10}9=0.95$,
    $\log_{10}5=0.7\stackrel{\times 2}{\longrightarrow}\log_{10}10=1.0$
    $\log aM=\log a + \log M$より、$a$倍されていれば、$\log a$分だけ増加する(割れば$\log a$だけ減少する)。$\rightarrow$掛け算・割り算が同じ距離の変化になる。

  • 2で割ると$\log_{10}$では0.3減少するので、これを用いると

    $\log_{10}3/2(=\log_{10}1.5)\fallingdotseq 0.475-0.3=0.175$
    $\log_{10}5/2(=\log_{10}2.5)\fallingdotseq 0.7-0.3=0.4$
    $\log_{10}7/2(=\log_{10}3.5)\fallingdotseq 0.85-0.3=0.55$
    $\log_{10}9/2(=\log_{10}4.5)\fallingdotseq 0.95-0.3=0.65$

    となる。1/2も求めてみると、

    $\log_{10}1/2(=\log_{10}0.5)\fallingdotseq 0-0.3=-0.3$

    となる。

    $\log_{10}0.5=\log_{10}\displaystyle\frac{5}{10}=\log_{10}5-\log_{10}10\fallingdotseq 0.7-1=-0.3$

    でも結果は同様。

参考リンク

Zoom:バーチャル背景用の単色系の背景画像を作った

新型コロナウィルスの対応で会議や講義にZoomを使うことになってきたが、そのままだと部屋が映り込みまくる。

バーチャル背景の機能も優秀でスクリーンなしでも背景を置き換えてくれるようだが、そのままだと元から用意されている背景画像が、宇宙やらビーチやら壮大、軽快過ぎてちょっと会議等の状況にそぐわない。

単なる単色も用意しておいてくれたらよかったが、それはないのでいくつか自前で作成することにした。

とはいえ、単なる単色だけだと味気ないので、ほんのりグラデーションを入れた。左側を少し明るめで右側を暗めにするほうがいいみたい。

グラデーション生成にはInkscapeを使った。

バーチャル背景の設定は、画面上部右端のプロフィールボタンから、設定⇒バーチャル背景と選び、任意の画像を指定する。

このとき、設定下部の「グリーンスクリーンがあります。」がオンとなっていると、合成用のスクリーンがある前提での動作になってしまうので、スクリーンを使わない場合はこれは外しておく。

Zoomは脆弱性等が問題山積みになっているようだが、今のところ一択ツール。なんとか修正・改善されて無事に使えますように…。

どこまで使い物になるか不明だが、同種のオープンソースツールもある。

あと、Zoomの紹介動画をいくつか。


A6とハガキの用紙サイズの違い

前にハガキに印刷しようとしていて、普通紙を使ってまずはテストをしようと、A4用紙を折って切っていったらだいたいそれっぽいサイズになったのだが、微妙に違う。

A4用紙の折り方か、切り方を間違えたのかと思ったが、やっぱり違う。

調べるとA4を2回半分にしたA6用紙のサイズは105x148mmで、ハガキは100x148mmだった。この5mmの違いは何!?

と思ったのだが、ハガキのサイズは万国共通(万国郵便連合)で決まっているとのこと。

サイズを入れた比較図をパワポでのマウス操作で作ってもみたが、どうせならと手入力SVGで作成してみた。



ほぼ、単に四角を2つ並べるだけだから(初心者でも)簡単だろうと思ったらけっこう手こずったわ…。(かくして、この記事に続く…⇒MDN文書の翻訳

[おまけ]
あと、WordPressにSVGをアップロードしようとしたらセキュリティ関連で蹴られて、プラグインを入れて対応した。プラグインは探すといくつか出てきたのだが、とりあえずSVG Supportを入れてみた。

MDN文書の翻訳

SVGで簡単な図形を描こうとしていたら、思いのほか手こずってMDNの翻訳作業にまでたどり着いてしまった。

翻訳作業をしやすくするユーザスクリプトがあって、基本単語の自動翻訳(置換)などを自動化してくれるらしく、FirefoxでもTampermonkey1) を使えばインストールできて動作ししそうな記述があるのだが、インストールはできて英語版のリビジョン取得くらいはできるのだが、バージョンが古くなってしまったのか、Firefoxへの対応がうまくいっていないのか動作しないみたい。

1) これまで「Tempermonkey」かと思っていたが、「Tamper(改ざん)monkey」だった。

MDN文書には EmbedLiveSample のしくみがあって、スクリプトの動作例を埋め込めて、実際に多数の動作例が既に存在しているのだが、そのサンプルのBlockIDに相当する<h2>タグなどのidがサイト側への保存時に勝手に翻訳したタイトルに合わせて日本語になってしまうので、これに(アドホックに)対処するには現状ではname属性も併記することしかないらしい。(もちろん、日本語に書き換えられたhタグのidに合わせてライブサンプルのBlockIDも日本語にしても動作するが、統一性がなくなるのでよくないですな。)

上記した翻訳援助スクリプトだと、このnameタグ付けも自動化する機能があるようだが、残念ながら動作しなかった。

あと、MDNでのブラウザ上のエディタだと「自動保存しました」などと出てくるが、その保存データの復帰方法が分からない。うっかり別ページを表示させたりすると、それまで作業していたデータが消えてなくなってイチからの作業し直しになってしまう。かといって、毎回保存してしまうと、保存のたびにリビジョンが増えるしその状況で公開状態になってしまう。GitHubも関連している風なのだが、自前保存で作業しておき、ある段階でまとめて更新とかできんのか?

細かいリビジョンが多数発生した際に、ひとまとめにできないかとも問い合わせてみたが、そういう機能はないとのことだった。

Pitでのログイン情報の管理(Python/Anaconda版)

ログイン情報管理のPitをPythonで使おうとしたら、Anaconda環境用のパッケージはないようだったので、PyPIのwhl形式でインストール

下記を参考:

手順のとおりにskeletonを作成しようとしたら、patchがないとエラーが出たので、まずはcondaでm2-patchをインストール。

(base) .>conda install m2-patch
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##
  environment location: .\Anaconda3
  added / updated specs:
    - m2-patch

The following packages will be downloaded:
    package                    |            build
    ---------------------------|-----------------
    m2-msys2-runtime-2.5.0.17080.65c939c|                3         3.0 MB
    m2-patch-2.7.5             |                2          89 KB
    spyder-kernels-0.5.2       |           py37_0          71 KB
    ------------------------------------------------------------
                                           Total:         3.1 MB

The following NEW packages will be INSTALLED:
  m2-msys2-runtime   pkgs/msys2/win-64::m2-msys2-runtime-2.5.0.17080.65c939c-3
  m2-patch           pkgs/msys2/win-64::m2-patch-2.7.5-2

The following packages will be UPDATED:
  openssl                                 1.1.1d-he774522_3 --> 1.1.1d-he774522_4

The following packages will be DOWNGRADED:
  spyder                                       4.0.1-py37_0 --> 3.3.6-py37_0
  spyder-kernels                               1.8.1-py37_0 --> 0.5.2-py37_0

Proceed ([y]/n)? y

Downloading and Extracting Packages
m2-msys2-runtime-2.5 | 3.0 MB    | ############################################################################ | 100%
spyder-kernels-0.5.2 | 71 KB     | ############################################################################ | 100%
m2-patch-2.7.5       | 89 KB     | ############################################################################ | 100%
Preparing transaction: done
Verifying transaction: done
 ...
done

見てたら、SpyderやらSpyder-kernelsやらがダウングレードされちゃってたが、しかたないか…。

引き続き、Pit用のskeleton作成。

(base) .>conda skeleton pypi pit
Warning, the following versions were found for pit
0.1
0.2
0.3
0.4
Using 0.4
Use --version to specify a different version.
Using url https://files.pythonhosted.org/packages/b6/66/c84ec75ff3a8ad561c404fd473a9f329fa7f56a802a9c3d2cea8399f8027/pit-0.4.tar.gz (2 KB) for pit.
Downloading pit
PyPI URL:  https://files.pythonhosted.org/packages/b6/66/c84ec75ff3a8ad561c404fd473a9f329fa7f56a802a9c3d2cea8399f8027/pit-0.4.tar.gz
Using cached download
Unpacking pit...
done
working in .\AppData\Local\Temp\tmp6pj22nm6conda_skeleton_pit-0.4.tar.gz
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done

## Package Plan ##
  environment location: .\Anaconda3\conda-bld\skeleton_1582266739069\_h_env

The following NEW packages will be INSTALLED:

    ca-certificates: 2020.1.1-0
    certifi:         2019.11.28-py37_0
    openssl:         1.1.1d-he774522_4
    pip:             20.0.2-py37_1
    python:          3.7.6-h60c2a47_2
    pyyaml:          5.3-py37he774522_0
    setuptools:      45.2.0-py37_0
    sqlite:          3.31.1-he774522_0
    vc:              14.1-h0510ff6_4
    vs2015_runtime:  14.16.27012-hf0eaf9b_1
    wheel:           0.34.2-py37_0
    wincertstore:    0.2-py37_0
    yaml:            0.1.7-hc54c509_2

Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
Applying patch: '.\\AppData\\Local\\Temp\\tmp6pj22nm6conda_skeleton_pit-0.4.tar.gz\\pypi-distutils.patch'
Trying to apply patch as-is
INFO:conda_build.source:Trying to apply patch as-is
INFO conda_build.source:apply_patch(596): Trying to apply patch as-is
(Stripping trailing CRs from patch; use --binary to disable.)
patching file core.py
Hunk #1 succeeded at 167 with fuzz 2 (offset 1 line).
Writing recipe for pit
--dirty flag and --keep-old-work not specified. Removing build/test folder after successful build/test.

INFO:conda_build.config:--dirty flag and --keep-old-work not specified. Removing build/test folder after successful build/test.
INFO conda_build.config:__exit__(799): --dirty flag and --keep-old-work not specified. Removing build/test folder after successful build/test.

次にbuild。

(base) .>conda build pit
No numpy version specified in conda_build_config.yaml.  Falling back to default numpy value of 1.11
WARNING:conda_build.metadata:No numpy version specified in conda_build_config.yaml.  Falling back to default numpy value of 1.11
Adding in variants from internal_defaults
INFO:conda_build.variants:Adding in variants from internal_defaults
Attempting to finalize metadata for pit
INFO:conda_build.metadata:Attempting to finalize metadata for pit
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
BUILD START: ['pit-0.4-py37_0.tar.bz2']
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done

## Package Plan ##

  environment location: .\Anaconda3\conda-bld\pit_1582266822048\_h_env


The following NEW packages will be INSTALLED:

    ca-certificates: 2020.1.1-0
    certifi:         2019.11.28-py37_0
    openssl:         1.1.1d-he774522_4
    pip:             20.0.2-py37_1
    python:          3.7.6-h60c2a47_2
    pyyaml:          5.3-py37he774522_0
    setuptools:      45.2.0-py37_0
    sqlite:          3.31.1-he774522_0
    vc:              14.1-h0510ff6_4
    vs2015_runtime:  14.16.27012-hf0eaf9b_1
    wheel:           0.34.2-py37_0
    wincertstore:    0.2-py37_0
    yaml:            0.1.7-hc54c509_2

Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
Successfully built pit
Installing collected packages: pit
  Created temporary directory: .\AppData\Local\Temp\pip-unpacked-wheel-wp9fw4u5
  ...
Successfully installed pit-0.4
Cleaning up...
  Removing source in .\AppData\Local\Temp\pip-req-build-saao9eu5
Removed build tracker: '.\\AppData\\Local\\Temp\\pip-req-tracker-itgpwm4s'

Resource usage statistics from building pit:
   Process count: 3
   CPU time: Sys=0:00:04.0, User=0:00:00.8
   Memory: 40.6M
   Disk usage: 0B
   Time elapsed: 0:00:18.5

Packaging pit
INFO:conda_build.build:Packaging pit
INFO conda_build.build:build(1570): Packaging pit
Packaging pit-0.4-py37_0
INFO:conda_build.build:Packaging pit-0.4-py37_0
INFO conda_build.build:bundle_conda(891): Packaging pit-0.4-py37_0
compiling .pyc files...
number of files: 7
Fixing permissions
Packaged license file/s.
WARNING: Detecting which files contain PREFIX is slow, installing ripgrep makes it faster. 'conda install ripgrep'
TEST START: .\Anaconda3\conda-bld\win-64\pit-0.4-py37_0.tar.bz2
Adding in variants from .\AppData\Local\Temp\tmp9rzftoi8\info\recipe\conda_build_config.yaml
INFO:conda_build.variants:Adding in variants from .\AppData\Local\Temp\tmp9rzftoi8\info\recipe\conda_build_config.yaml
INFO conda_build.variants:_combine_spec_dictionaries(188): Adding in variants from .\AppData\Local\Temp\tmp9rzftoi8\info\recipe\conda_build_config.yaml
Nothing to test for: .\Anaconda3\conda-bld\win-64\pit-0.4-py37_0.tar.bz2
Renaming work directory,  .\Anaconda3\conda-bld\pit_1582266822048\work  to  .\Anaconda3\conda-bld\pit_1582266822048\work_moved_pit-0.4-py37_0_win-64_main_build_loop
# Automatic uploading is disabled
# If you want to upload package(s) to anaconda.org later, type:

anaconda upload .\Anaconda3\conda-bld\win-64\pit-0.4-py37_0.tar.bz2

# To have conda build upload to anaconda.org automatically, use
# $ conda config --set anaconda_upload yes

anaconda_upload is not set.  Not uploading wheels: []
####################################################################################
Resource usage summary:

Total time: 0:01:36.8
CPU usage: sys=0:00:04.0, user=0:00:00.8
Maximum memory usage observed: 40.6M
Total disk usage observed (not including envs): 0B

####################################################################################
Source and build intermediates have been left in .\Anaconda3\conda-bld.
There are currently 3 accumulated.
To remove them, you can run the ```conda build purge``` command

で、インストール。

(base) .>conda install --use-local pit
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##
  environment location: .\Anaconda3
  added / updated specs:
    - pit

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    pit-0.4                    |           py37_0           8 KB  local
    ------------------------------------------------------------
                                           Total:           8 KB

The following NEW packages will be INSTALLED:
  pit                C:/Users/oshiro/Anaconda3/conda-bld/win-64::pit-0.4-py37_0

Proceed ([y]/n)? y

Downloading and Extracting Packages
pit-0.4              | 8 KB      | ############################################################################ | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

インストール完了。

#前にもこの手順でpitをインストールしていて、conda用のパッケージも作成して登録したような気がするんだが、メモとか形跡が何も見当たらない…??

追記)
conda-forgeに登録していた。

conda-forge内のパッケージはGoogle検索には引っかからない(引っかかりにくい)のか?