あらきけいすけのメモ帳

あらきけいすけの雑記帳2

Excel VBA の Sub/Function 内で(変更するかもしれない)コード内の主要なパラメーターを省略可能な名前付き引数としてリストアップするとコードが見易いかもしれない

Excel VBA の Sub/Function 内で(変更するかもしれない)コード内の主要なパラメーターを省略可能な名前付き引数としてリストアップするとコードが見易いかもしれない

Function setDicRawKeyVal授業データ( _
      wsIn As Worksheet _
    , wsOut As Worksheet _
    , Optional row項目名 = 2 _
    , Optional col項目名Begin = "A" _
    , Optional col項目名End = "CC" _
    , Optional rowデータBegin = 3 _
    , Optional rowデータEnd = 3 _
) As Object
    Dim dic as Object, ...
    ...
    [What to do]
    ...
    Set setDicRawKeyVal授業データ = dic
End Function

*1
*2

*1:Optional は Variant 型しか使えないことに注意。

*2:たいていの局所スコープの変数は Variant 型にして As Variant は書かない習慣にしている。

2022.7.8 雨

昨日(7.8)の未明くらいから、中四国を縦に横切る降水帯が形成されてほぼ動かなかった。wxmaps.org の850hPa高度の天気図を見ると、関東の東海上に低気圧があって、低気圧の北側の流れが偏西風とぶつかっているようだ、500hPa高度の天気図を見ても、南北に前線(赤い帯)がはっきりと形成されている。

レーダー図 2022.7.8 20:45
<>
850hPa(≒高度1500m) 風 温位 湿度 2022.7.8 9:00 JST
<>
500hPa(≒5500m) 渦度 500hPa高度 2022.7.8 9:00

極限を用いた自然対数の定義

\newcommand{\SD}{\small\displaystyle}授業のための覚書:自然対数の定義を指数関数の導関数の定義から誘導する - あらきけいすけのメモ帳がベルヌーイのeの定義\SD\lim_{N\to\infty}\left(1+\frac1N\right)^N=eから導けたのでメモ。途中計算の対数の底は任意。最終的に底の変換公式で自然対数になる。
\SD\lim_{h\to0}\frac{a^h-1}{h}において
(a>1ならば)右極限:\SD a^h-1=\frac1Nと置くと
\SD a^h=1+\frac1N\Longrightarrow\SD h=\frac{\log\left(1+\frac1N\right)}{\log a}
\therefore\SD\frac{a^h-1}{h}=\frac1N\frac{\log a}{\log\left(1+\frac1N\right)}\SD=\frac{\log a}{\log\left(1+\frac1N\right)^N}\SD\mathop{\longrightarrow}^{N\to\infty}\SD\frac{\log a}{\log e}=\log_e a
(a>1ならば)左極限:\SD a^h-1=-\frac1Nと置くと
\SD a^h=1-\frac1N\Longrightarrow\SD h=\frac{\log\left(1-\frac1N\right)}{\log a}
\therefore\SD\frac{a^h-1}{h}=-\frac1N\frac{\log a}{\log\left(1-\frac1N\right)}\SD=\frac{\log a}{\log\left(1-\frac1N\right)^{-N}}\SD\mathop{=}^{M=N-1}\SD\frac{\log a}{\log\left[\left(1+\frac1M\right)^{M}\left(1+\frac1M\right)\right]}\SD\mathop{\longrightarrow}^{M\to\infty}\SD\frac{\log a}{\log( e\cdot1)}=\log_e a

ExcelワークシートのあるCellが特定のRangeに含まれているかopenpyxlで判定する

苦労したのでメモ*1;例題)A1セルがA1:B2の範囲に入っているか判定する。

import openpyxl
a = openpyxl.worksheet.cell_range.CellRange('A1')
b = openpyxl.worksheet.cell_range.CellRange('A1:B2')
c = a.issubset(b)
print(a,b,c)

出力:

A1 A1:B2 True

issubset: openpyxl.worksheet.cell_range module — openpyxl 3.0.10 documentation

*1:文字列'A1', 'A1:B2'をRangeを扱うオブジェクトに切り替えるのに苦労した。

Python コードをファイルに生成して、生成したファイルを import する Python コード

一つのPython コードの中に「Python コードをファイルに書き出す」「その書き出した Python コードを import して、実行する」ことを書くことができた:

pyvar = 'a = (1,2,3)'
pydef = '''
def prt (x) :
  print('hello' + x)
  print(a)
  return x
'''
pydef0 = '''
class CPrint () :
  d = (1,2,3)
  def prnt (self, x) :
    print('HELLO' + x + str(self.d[1]))
    print(prt(x))
    print(a)
    return x
'''

pysrc = '[path of this file]/bb.py'
with open(pysrc,'w') as f :
  print(pyvar,file=f)
  print(pydef,file=f)
  print(pydef0,file=f)

import os
if os.path.exists(pysrc) :
  import bb
  print(bb.a)
  print(bb.prt('WORLD'))
  cc = bb.CPrint()
  print(cc.prnt('world'))

自然対数の定義を指数関数の導関数の定義から誘導する

授業のための覚書。\newcommand{\SD}{\small\displaystyle}
指数関数の導関数を定義に従って計算すると:\SD(a^x)^\prime=\lim_{h\to0}\frac{a^{x+h}-a^x}{h}=a^x\lim_{h\to0}\frac{a^{h}-1}{h}.
ここで\SD f(a)=\lim_{h\to0}\frac{a^{h}-1}{h}とおくと、\SD f(a)+f(b)\SD=\lim_{h\to0}\frac{a^{h}-1}{h}+\lim_{h\to0}\frac{b^{h}-1}{h}\SD=\lim_{h\to0}\frac{a^{h}-1}{h}\lim_{h\to0}b^h+\lim_{h\to0}\frac{b^{h}-1}{h}\SD=\lim_{h\to0}\frac{(ab)^h-b^h+b^{h}-1}{h}\SD=\lim_{h\to0}\frac{(ab)^h-1}{h}\SD=f(ab)より、\SD fは対数法則を満たす。
この指数関数の導関数の計算から自然に誘導される対数関数を自然対数と呼ぶ:\SD\ln a:=\lim_{h\to0}\frac{a^{h}-1}{h}
おそらくEulerはここから自然対数の底eの定義に\SD\ln e=\lim_{h\to0}\frac{e^{h}-1}{h}=1を採用したのではないか。
…と定義/解説した教科書を寡聞にして見たことが無い。

補足:f(a)=\log_eaであることの証明を書いた:
極限を用いた自然対数の定義 - あらきけいすけのメモ帳