mikan-alpha.hatenablog.com
Open in
urlscan Pro
54.199.90.60
Public Scan
Submitted URL: http://mikan-alpha.hatenablog.com/
Effective URL: https://mikan-alpha.hatenablog.com/
Submission: On May 31 via api from US — Scanned from JP
Effective URL: https://mikan-alpha.hatenablog.com/
Submission: On May 31 via api from US — Scanned from JP
Form analysis
1 forms found in the DOMGET https://mikan-alpha.hatenablog.com/search
<form class="search-form" role="search" action="https://mikan-alpha.hatenablog.com/search" method="get">
<input type="text" name="q" class="search-module-input" value="" placeholder="記事を検索" required="">
<input type="submit" value="検索" class="search-module-button">
</form>
Text Content
Holograph1c Attract0r 読者になる HOLOGRAPH1C ATTRACT0R 日々の数学やプログラミングに関係する話。 この広告は、90日以上更新していないブログに表示しています。 2021-10-02 SIN(X)/Xの極限を矛盾なく証明してみる 数学 極限 三角関数 お久しぶりです。書き残しておきたいネタができたので、書くことにしました。 さて、以下のような定理があります。 limx→0sin(x)x=1(1)(1)limx→0sin(x)x=1 数学において、最も有名な極限問題と言ってもいいと思います。読者のみなさんも、よく知っていることと思います。 なぜこんなにも知られているかと言えば、まず高校数学において登場するからでしょう。理系の方ならば、必ず通る道です。三角関数を微分するのにこの定理が必要になるので、その前に習うことになっていると思います。 教科書の極限の演習問題は、そのほとんどがあまり深い意味の無い演習用のものですが、この定理に関してはそういった出題背景なり、意義があるわけですね。 どのように証明をするか ところで今回注目したいのは、この定理の証明手法です。 みなさんは、どのように習いましたでしょうか。 一番よくあるタイプが、幾何的に面積を用いて(1)の左辺を上下から評価する証明です。 manabitimes.jp 高校数学の美しい物語さんの、こちらの記事にそのまま証明が記されています。 (以下、こちらの図を見ながら話をします) しかしながら、一見正しいように思われるこの証明手法、時折「循環論法である」と言われたりします。さて、どこが怪しいのでしょうか。 何が矛盾しているのか 上記の証明において得られた、sinxsinx < xx < tanxtanxという関係式は正しく成立しているものです。 問題となるのは、それを得る過程の方ですね。 この証明では、不等式を得るために三角形と扇形の面積の比較を行いました。では、面積の比較が間違っていたか?というと、そうではないですね。これら3つの図形の大小関係自体は、図より明らかなものとして良いでしょう。 この証明で怪しいポイントは、「それぞれの図形の面積ってどうやって計算されているの?」というところです。 三角形の面積は流石に認めてもよいと思いますが(四角形を半分にしただけですから)、扇形の面積はそれと比べて少し複雑です。 扇形の面積をどのように計算するかを思い出してみましょう。 まず、扇形は円の一部ですから、円の面積が必要ですね。 では、円の面積はどのように計算されているでしょうか。曲線に囲まれた部分の面積ですから、一般には積分で求めることになります。 実際に計算してみましょう。2次元の座標平面上の円x2+y2=r2x2+y2=r2を考えます。 円の面積をSSとすると、 S=4∫r0r2−x2−−−−−−√dxS=4∫0rr2−x2dx と書くことができます。x=rsinθ(0≤θ≤π2)x=rsinθ(0≤θ≤π2)と置換すると、dx=rcosθdθdx=rcosθdθとなるので、 4∫r0r2−x2−−−−−−√dx=4r2∫π20cos2θdθ4∫0rr2−x2dx=4r2∫0π2cos2θdθ が得られます。ここで半角の公式を用いれば、 4r2∫π20cos2θdθ=2r2∫π20(1+cos2θ)dθ=2r2[θ+12sin2θ]π20=πr24r2∫0π2cos2θdθ=2r2∫0π2(1+cos2θ)dθ=2r2[θ+12sin2θ]0π2=πr2 となり、S=πr2S=πr2が示せました。 さて、以上のように円の面積を計算しましたが、主に2つの道具を用いました。三角関数の微分と加法定理です。 ……ん?微分? そういうわけで、三角関数の微分には(1)の定理が必要なのに、その証明に三角関数の微分を用いているため循環論法である、と言われることがあります*1。 しかしながら、この指摘はどうやら誤りのようです。この記事を書くのにいくつか参考文献を読んでみましたが、円の面積は三角関数の微分という過程を踏むこと無く計算できる(らしい)*2ので、先程の証明は矛盾していないというのが一般論とされているみたいです。 とはいえ、この証明に文句が付くことがあるのも事実なので、今回の記事ではこれを回避して(1)の定理に別の証明を与えたいと思います。 面積を使うのをやめよう 先程の証明で何が怪しいかと言えば円の面積を使ったことなので、これを何かで代替できないか考えてみます。 (回避方法として、三角関数をMaclaurin級数により定義したり、微分方程式により定義したりすることもできますが、話が面白くなくなるのでここではこれは禁止としましょう) 面積じゃなくて、弧の長さを使ってみたらどうでしょうか。弧長の比較ならば、証明のアウトラインもそんなに大きく変わらずに済みそうです。 この証明方法も割とよくある手法で、以下のようなものです。 図1 OA=OB=1OA=OB=1であるとします。 図において、線分AH < 弦AB < 弧AB < 線分CBという不等式が成立します。 線分AHはsinxsinx、弧ABは弧度法の定義よりxx、線分CBはtanxtanxですので、すなわち sinx<x<tanxsinx<x<tanx が得られます。 これ以降は、面積を用いた証明と同様にして、(1)を示すことができます。 それは本当に自明ですか? さて、矛盾を回避して証明ができました。と言いたいところですが。 上の証明は、実はかなり怪しいです。注意深い人や、数学に慣れている人ならば、「ん?」と思った箇所があるかもしれません。 しかも、インターネット上で循環論法を回避した証明として掲載されているのが、大抵この証明だったりするので、証明を書くのに参考にしようとしている人は注意しておいたほうが良いでしょう。 では、何が危ないのか。まあ一箇所しか無いんですが……。 上の証明において、「線分AH < 弦AB < 弧AB < 線分CB」という不等式を利用しました。この式をもう少し落ち着いて観察してみます。 下から評価を与える「線分AH < 弦AB < 弧AB」の方。これは確かに図から明らかとしても良さそうです。 しかし、一方で上から評価をしている部分である「弧AB < 線分CB」。これは本当に自明でしょうか?本当に弧ABより線分CBの方が長いと言えるでしょうか? まあ、ネタバレしてしまうと「弧AB < 線分CB」という不等式自体は厳密に成立しているものなのですが、この不等式を証明で使いたいのならばもう少し長い話が必要になるでしょう(意外とこの不等式、示そうとすると面倒です)。 じゃあどう解決するかと言うと、上からの評価に線分CBを使うのをやめ、線分HA+線分HBを使うことにします。 曲線の長さの定義 本編の証明に入る前に、曲線の長さを扱うことになるのでこの話を先にしておきます。 ja.wikipedia.org 基本はこちらのWikipediaの定義の項を読んでいただければよいです。 説明を読んだだけだと分かりづらいと思いますので、弧ABの長さを例にとってみます。 まず、先程の証明の図に座標を入れておきます。2次元座標系の単位円だとすると、ベクトルを用いて、O=(0,0),B=(1,0),A=(cosx,sinx)O=(0,0),B=(1,0),A=(cosx,sinx)と書けます。 次に、BからAまでの円周上の分点をΔ={P0,P1,…,Pn}(P0=B,Pn=A)Δ={P0,P1,…,Pn}(P0=B,Pn=A)とし、各点の座標をPi=(xi,yi)Pi=(xi,yi)と書くことにします。 このとき弧ABの長さLLは、 L=limmax0≤i≤n−1∥Pi+1−Pi∥→0∑i=0n−1∥Pi+1−Pi∥(2)(2)L=limmax0≤i≤n−1‖Pi+1−Pi‖→0∑i=0n−1‖Pi+1−Pi‖ で与えられます。 ここで、極限を単純にn→∞n→∞としていない理由は、区間の分割の方法は何通りでもあるからです(別に等分割とは一言も言っていないことに注意)。 このため、Wikipediaの定義ではsupsupを使っており*3、私は最も長い分割の長さが0になるように、としています。 厳密に理解できていなくても、折れ線で曲線を近似することで長さを求めているんだな、と思っていただければ十分です。 定理の証明 (記号の混同を避けるため、扇形の中心角をθθに書き換えています) 上でも言ったとおりsinθsinθ < θθは認めても良いと思いますので、弧ABの長さを上から評価する部分から書いていきます。 前の節と同様に集合ΔΔを定義しておきます。 このとき、以下のようにllを定義すると、三角不等式より l:=∑i=0n−1∥Pi+1−Pi∥≤∑i=0n−1(|xi+1−xi|+|yi+1−yi|)l:=∑i=0n−1‖Pi+1−Pi‖≤∑i=0n−1(|xi+1−xi|+|yi+1−yi|) が得られます。ユークリッド距離とマンハッタン距離の比較と見てもいいかもしれません。 ここで、θ∈(0,π/2)θ∈(0,π/2)と仮定すると、この範囲では必ずxi+1xi+1 < xixiかつyi+1yi+1 > yiyiが成り立つので絶対値を外すことができ、 ∑i=0n−1(|xi+1−xi|+|yi+1−yi|)=x0−xn+yn−y0∑i=0n−1(|xi+1−xi|+|yi+1−yi|)=x0−xn+yn−y0 が従います。ΔΔの定義よりP0=B,Pn=AP0=B,Pn=Aだったので、x0−xnx0−xnは線分HBの長さ、yn−y0yn−y0は線分HAの長さとなり、すなわち x0−xn+yn−y0=1−cosθ+sinθx0−xn+yn−y0=1−cosθ+sinθ が分かりました。ここまでの結果を合わせると、 l≤1−cosθ+sinθl≤1−cosθ+sinθ という不等式を得ます。ここからもう少し変形します。 l≤1−cosθ+sinθ≤1−cos2θ+sinθ=sin2θ+sinθ=sinθ(sinθ+1)l≤1−cosθ+sinθ≤1−cos2θ+sinθ=sin2θ+sinθ=sinθ(sinθ+1) ここで、曲線の長さの定義からmax0≤i≤n−1∥Pi+1−Pi∥→0max0≤i≤n−1‖Pi+1−Pi‖→0とすればllは弧ABの長さに等しくなるので、 θ≤sinθ(sinθ+1)θ≤sinθ(sinθ+1) が成り立つことが分かりました。 既に得られていた結果と合わせると、 sinθ<θ≤sinθ(sinθ+1)sinθ<θ≤sinθ(sinθ+1) となるので、θ≠0θ≠0より全体をsinθ≠0sinθ≠0で割れば、 1<θsinθ≤sinθ+11<θsinθ≤sinθ+1 が得られます。 従って、θ→+0θ→+0とすればはさみうちの原理より limθ→+0sinθθ=1limθ→+0sinθθ=1 が示されました。(θθが負の場合は省略) 参考文献 takeno.iee.niit.ac.jp *1:似た意味での誤った証明として、L'Hôpitalの定理を使ってしまうものも挙げられます。 *2:ここの詳しい内容も勉強したら別の記事にしたいと思っています。 *3:三角不等式より、分割を増やしていくことで求めたい曲線の長さに下から漸近していくことになります。 #数学 文月まぐ (id:mikan_alpha) 2年前 読者になる 広告を非表示にする コメントを書く * もっと読む 2021-02-27 調和級数が、収束する? 数学 調和級数は、収束しないよ。(釣りタイトルじゃん) なんてこった……。 じゃあ、こういう級数を考えてみましょう。 とりあえず、調和級数*1と同じ級数を用意します。 1+12+13+14+15+16+17+18+19+110+⋯1+12+13+14+15+16+17+18+19+110+⋯ ここから、分母の整数を10進法で表記したときに、いずれかの桁に"9"を含むものを除きます。 つまり、19,119,129,…,190,191,…19,119,129,…,190,191,… などを除いて和をとります。 この無限和はどういった値になるでしょうか? そもそも、収束性は? 自分で考えたいという方は、ここで少し立ち止まってみてください。 実はこの級数、収束します。 具体的な値は、おおよそ23程度になります。 直感的には、大きい桁数の整数ほどその中に"9"を含んでいる可能性が高いですから、その分和が小さくなっているというわけです。 また、これは"9"ではない他の数字(あるいは任意の桁数の整数)を除いても、同様に収束します! この級数には、Kempner級数という名前がついています。Kempnerというのは、この級数について初めて研究をした数学者の名前です。 下に"9"を除く場合の数学的な証明を載せておきます。(Wikipediaより) 証明 分母の桁数ごとに和を分割する。 nn 桁の正整数であって、"9"を含まないものは、8×9n−18×9n−1 個存在する。 (先頭の桁のみ"0"を選ぶことができない) 任意の nn 桁の正整数 mm に対して、m≥10n−1m≥10n−1 が明らかに成り立つ。よって、両辺の逆数をとることで 1m≤110n−11m≤110n−1 を得る。 ここで、全ての mm についての和をとれば、分母が nn 桁の正整数であって"9"を含まないものについての和は、8×9n−1×110n−1=8×(910)n−18×9n−1×110n−1=8×(910)n−1 で上から抑えられる。 したがって、Kempner級数の和は高々 8∑∞n=1(910)n−1=808∑n=1∞(910)n−1=80 である。 *1:すべての正整数の逆数和 #数学 文月まぐ (id:mikan_alpha) 3年前 読者になる 広告を非表示にする コメントを書く * もっと読む 2021-02-23 お酒と消毒用アルコールの違いって何?調べてみた! 化学 ※一部正確性に書ける部分等がある可能性があります。また、記事の内容は安全性を保証するものではありません。 ある日、友人とこのような話をしました。 「酒と消毒液の違いって何?」 いや、そりゃあ違うもんだろ……と直感的に思うのですが、じゃあ具体的に何の差異があるのかと考えると、詰まってしまいました。結局アルコールの濃度が違うんだろうな……みたいな感じで放置していたので、せっかくなので調べました。 * そもそもお酒とは? * 消毒用アルコールの成分は? * 無水エタノール(99.5 vol%以上程度) * 消毒用エタノール(75 - 80 vol%程度) * 結局、お酒と消毒用エタノールの違いとは? そもそもお酒とは? 差異を語る前にそもそもの定義をしておかないといけませんから、これからやっていきましょう。 酔いのメカニズム|人とお酒のイイ関係|アサヒビール こちらのサイトによりますと、日本国内ではアルコールを1%*1以上含む飲料のことをお酒としているようです。 さて、ここで注目するべきはアルコールというというところです。すこし化学を勉強している人ならば、「アルコールにも色々あるだろ」と思われるかと思います。 お酒に利用されているのは、アルコールの中でもエタノール \ceC2H5OH\ceC2H5OH という物質です。そしてこれが、お酒がお酒たる所以というわけです。 エタノールには麻酔作用があり、これがいわゆる「酔い」の原因となります。 また、同じアルコールにメタノール \ceCH3OH\ceCH3OH という物質があります。 こちらは同じアルコールという部類でありながら、人体に有害であり飲料に用いることはできません。これは代謝の過程でメタノールの酸化によって生じるホルムアルデヒド \ceCH2O\ceCH2O やギ酸 \ceHCOOH\ceHCOOH の影響とされています。 消毒用アルコールの成分は? 同様に、消毒用アルコールについても見ておきましょう。 こちらもさっきからずっとアルコールと言っていますが、主成分はエタノールです。 エタノールですが、実は市販されているものはだいたい次の2つに分かれています。ついでなので、ここで触れておきます。 無水エタノール(99.5 VOL%以上程度) 無水エタノールは、水分をほとんど含まない純度の高いエタノールです。 「純度が高いならばこれを消毒に使えばいいのではないか?」と思うかもしれませんが、実はこの無水エタノール、純度が高すぎるがゆえにすぐ揮発してしまい、その場に残留しないので、一般に想像されるような消毒作業には逆に向いていません。 この性質から、水拭きできない電気製品の洗浄などに使われるそうです。 ところで、エタノールと名前は付きますが、実は無水エタノールは飲んではいけません。なぜでしょうか? 濃度に注目してみましょう。99.5%です。これを達成するためには、どういった作業が必要でしょう。 当然、何度も蒸留をして無水エタノールは生成されています。 しかしながら、エタノールと水の混合物を単に蒸留しても、実は95%以上の濃縮ができません。これは化学的な理由からだそうですが、私自身詳しくないので、みなさん自身に調べてもらいたいと思います。 ともかく、このままでは99.5%を達成できませんから、どうするかというと、混合物にベンゼンを加えて蒸留します。こうすることで、無水エタノールを精製することができます。 このベンゼンというやつは、発がん性があったりする危険な物質です。飲むのは当然よくないですし、吸引もあまり好ましくないでしょう。 こういった物質が無水エタノールには残留している可能性があるので、希釈したとしても飲むことはできません。 消毒用エタノール(75 - 80 VOL%程度) こちらが今回取り扱うエタノールです。 無水エタノールよりも濃度が下げられており、名前の通り消毒に適しています。私達が普段一番見る機会が多いのは、この消毒用エタノールでしょう。 これを果たして飲むことは可能なのか?この疑問は次の節で扱うことにします。 先に述べておくべき注意として、この消毒用エタノールにはそもそも飲むことができない亜種があったりします。そのうちの1つが、2-プロパノール \ceCH3CH(OH)CH3\ceCH3CH(OH)CH3 が添加されている消毒液です。 2-プロパノールもアルコールの一種ですが、少し毒性が強く内服等はしていけない物質です。 なぜこれを消毒液に添加するのか。 理由は、酒税を回避するためです。 「えっ、酒税?」 はい、実は飲むためのものとして売られていない消毒用エタノールにも、酒税の分価格が上乗せされています。それは飲めるということでは? これを回避して価格を下げるために、メーカーによってはこういった対処をして「お酒」のグループに属さないようにしていたりします。 結局、お酒と消毒用エタノールの違いとは? 結論から言うと、本当に濃度くらいしか差がなさそう。 いや、まあ当然お酒には穀物みたいなのが含まれていたりしますし、アルコールだけとか味ねえじゃんみたいな話はありますが、主成分のエタノールについてだけ見れば、濃度が違うだけの水溶液だと思えばいいでしょう(適当)。 もしアルコール中毒でどうしてもアルコールを摂取したい場合には、消毒用エタノールを精製水で割って飲めば、いいんじゃないかな。当然責任は一切負いませんが。 消毒液はさっき言ったように添加物で界面活性剤等が入っていたりするのもありますから、それだけ注意しましょう。 *1:おそらくvol%(体積パーセント濃度)だと思われます。 #化学 #エタノール 文月まぐ (id:mikan_alpha) 3年前 読者になる 広告を非表示にする コメントを書く * もっと読む 2020-12-18 導出: RIEMANNゼータ関数の特殊値のBERNOULLI数による表現 数学 ゼータ関数 書いておきたい数学の話があったので、書きます。 タイトルの通りです。 SIN Xの因数分解 今回の話は、以下の式から始まります。 sin(πx)=πx∏n=1∞(1−x2n2)sin(πx)=πx∏n=1∞(1−x2n2) xx は任意の実数とします。(この等式自体は、複素数に拡張しても成立します) 形式的には、正弦関数を因数分解した式となっています。 高校数学では多項式関数に対して因数定理というものがありましたが、これは少し条件を加えることで一般の複素数値整関数にも同様の議論が適応できて、しかも零点が無限個でも許容されます。(Weierstrassの因数分解定理) ここで、両辺の自然対数(主値)を取ります。 logsin(πx)=logπx+∑n=1∞log(1−x2n2)logsin(πx)=logπx+∑n=1∞log(1−x2n2) さらにこれを両辺 xx で微分します。 すると、両辺はそれぞれ次のようになると思います。 πcos(πx)sin(πx)=1x−2∑n=1∞xn21−x2n2πcos(πx)sin(πx)=1x−2∑n=1∞xn21−x2n2 両辺に xx をかけて整理します。 πxcos(πx)sin(πx)=1−2∑n=1∞x2n21−x2n2(1)(1)πxcos(πx)sin(πx)=1−2∑n=1∞x2n21−x2n2 さて、ここで左辺と右辺についてそれぞれ考えていきましょう。 左辺を級数に変形する πxcos(πx)sin(πx)πxcos(πx)sin(πx) 左辺は上のような形になりましたが、これは複素指数関数(Eulerの公式)を用いて書き直すことができるでしょう。 πxcos(πx)sin(πx)=iπx⋅eiπx+e−iπxeiπx−e−iπx=iπx⋅eiπx−e−iπx+2e−iπxeiπx−e−iπx=iπx(1+2e−iπxeiπx−e−iπx)=iπx(1+2e2iπx−1)=iπx+2iπxe2iπx−1(2)πxcos(πx)sin(πx)=iπx⋅eiπx+e−iπxeiπx−e−iπx=iπx⋅eiπx−e−iπx+2e−iπxeiπx−e−iπx=iπx(1+2e−iπxeiπx−e−iπx)=iπx(1+2e2iπx−1)(2)=iπx+2iπxe2iπx−1 (1)と(2)を合わせることで、以下を得ます。 iπx+2iπxe2iπx−1=1−2∑n=1∞x2n21−x2n2(3)(3)iπx+2iπxe2iπx−1=1−2∑n=1∞x2n21−x2n2 ここで、左辺の第二項の関数を級数に展開したいと思います。 関数 T / (E^T - 1) そのまま扱うのは面倒そうなので、t=2iπxt=2iπx として単純化しておきます。 そうすれば、以下の関数を考えればよいでしょう。 tet−1tet−1 これは以下のような関数と等価ですので、複素数平面全体で正則です。 (cothtcotht は原点において1位の極を持ちますが、1次関数によって打ち消されています) tet−1=t2(cotht2−1)tet−1=t2(cotht2−1) さて、この関数をそのまま微分していってTaylor級数の係数を決定していくのはかなり大変そうです。 ここで、正則という条件を使って以下のように表現できると仮定します。 tet−1=∑n=0∞Bnn!tntet−1=∑n=0∞Bnn!tn BnBn が決定できれば、Taylor展開ができたということになります。 さらに、左辺の分母も級数表現に直します。 t∑∞n=01n!tn−1t∑∞n=11n!tn=∑n=0∞Bnn!tn=∑n=0∞Bnn!tnt∑n=0∞1n!tn−1=∑n=0∞Bnn!tnt∑n=1∞1n!tn=∑n=0∞Bnn!tn 最後に分母をはらえば、以下のようになります。 t=(∑n=0∞Bnn!tn)(∑n=1∞1n!tn)=(B0+B1t+B22!t2+⋯)(t+12!t2+⋯)=B0t+(B02!+B1)t2+⋯t=(∑n=0∞Bnn!tn)(∑n=1∞1n!tn)=(B0+B1t+B22!t2+⋯)(t+12!t2+⋯)=B0t+(B02!+B1)t2+⋯ あとは、両辺で係数比較すれば係数 BnBn が決定できます。 低次の項から計算していくことで、上手く全ての係数が計算できるようになっています。 B0B1B2B3=1=−12=16=⋯B0=1B1=−12B2=16B3=⋯ 実はこの数列には名前が付いていて、Bernoulli数と一般に呼ばれています。 Bernoulli number - Wikipedia これを用いて、(3)は次のように書き換えられます。 iπx+∑n=0∞Bnn!(2iπx)n=1−2∑n=1∞x2n21−x2n2(4)(4)iπx+∑n=0∞Bnn!(2iπx)n=1−2∑n=1∞x2n21−x2n2 ゴールに近づいてきました。 次は右辺について考えていきましょう。 右辺の分解 1−2∑n=1∞x2n21−x2n21−2∑n=1∞x2n21−x2n2 ここで被加数に注目してみると、等比級数の和の形になっていることに気が付きます。 1−2∑n=1∞x2n21−x2n2=1−2∑n=1∞∑m=1∞(xn)2m1−2∑n=1∞x2n21−x2n2=1−2∑n=1∞∑m=1∞(xn)2m ここで和の順序を交換します。 1−2∑n=1∞∑m=1∞(xn)2m=1−2∑m=1∞(∑n=1∞1n2m)x2m=1−2∑m=1∞ζ(2m)x2m(5)1−2∑n=1∞∑m=1∞(xn)2m=1−2∑m=1∞(∑n=1∞1n2m)x2m(5)=1−2∑m=1∞ζ(2m)x2m ゼータ関数が係数に現れました。 (5)の結果を(4)に代入すれば、以下を得ます。 iπx+∑n=0∞Bnn!(2iπx)n=1−2∑m=1∞ζ(2m)x2m(6)(6)iπx+∑n=0∞Bnn!(2iπx)n=1−2∑m=1∞ζ(2m)x2m 係数比較 iπx+∑n=0∞Bnn!(2iπx)n=1−2∑m=1∞ζ(2m)x2m(6)(6)iπx+∑n=0∞Bnn!(2iπx)n=1−2∑m=1∞ζ(2m)x2m さて、ここまでの計算で上記の結果が得られました。 注意してみると、右辺には偶数次の項しか存在しないので、このことから任意の奇数 k≥3k≥3 に対して Bk=0Bk=0 となることが導かれます。 これは奇数に対するゼータ関数の特殊値の簡易な表示が得られていないことの一因ともなっています。 一方(6)から、ある偶数 2m2m に対して ζ(2m)ζ(2m) は以下のように表現できることが従います。(ゼータ関数の一種の母関数が得られたとも言えます) ζ(2m)=−B2m2⋅(2m)!(2iπ)2m(7)(7)ζ(2m)=−B2m2⋅(2m)!(2iπ)2m 奇数に対する表示は未だ複雑なものしか発見されていません。 もし新しい式を発見された方がいらしましたら、ご一報ください。 #ゼータ関数 文月まぐ (id:mikan_alpha) 3年前 読者になる 広告を非表示にする コメントを書く * もっと読む 2020-12-12 RTX3070(搭載PC)を買ったので色々紹介とか 普通のブログ Apex Legends たまには普通のブログっぽいことも書こうかな~と思ったので、まず新PCについての話を書こうかなと。 TL;DR; ・RTX 3070とRyzen 7 3700XでBTO組んだよ ・自分のやるゲームだと性能持て余し気味 RTX 3000シリーズが来た! 2020年の9月2日、NVIDIAが新世代のRTX 3000(Ampere)シリーズを発表しました。最上位モデルのRTX 3090をはじめ、3080・3070も「FASTER THAN 2080 Ti」ということらしい……(3070は2070 SUPERの後継のはずでは…)。1080 Tiすげえと言っていた時代がもはや懐かしい。値段的にも、RTX 3070はRTX 2080 Tiの半額以下でこのスペック。 www.nvidia.com このときは全くパソコン買い換える予定もなかったので、本当に「すげえな~~」という気持ちでしか見ていなかったのですが、10月中頃になって諸事情により予算があるやんということになり、このタイミングでパソコンを買い換えようということになりました。ナイスタイミング。 ちなみに旧PCのスペックは、CPUがIntelのCore i7-6700HQ、グラフィックカードがGeForce GTX 960M、RAMが16GBという感じでした。パーツからも分かる通りゲーミングノートPC(G-Tuneさんのところで買いました)で、3年ほど前に買ったものです。 予算もかなり絞った上での初めてのゲーミングPCだったので、まあこんな感じです。 最初はMinecraftくらいしかやる予定が無かったので、このスペックで特に困ってもいなかったのですが、最近になってFPS等々3Dゲームをやることが増えてきて、実際にApexをプレイしてても支障があるくらいの性能だったので、長らく買い替えたいな~と思っていました。 そして新PCへ… 3090と3080は9月中にすでに販売開始されていたものの、流石にお高いなあという気持ちがあったので、10月末の3070の発売を待ってから色々BTOメーカーを見比べて買うことにしました。前が960Mなのでこの時点でベンチのスコア10倍くらいあるんですよね……。 その後、発売日の10月29日に有名どころのBTOメーカーさんのサイトを見に行くとパソコン工房さんとドスパラさんが早速3070搭載のものを出していて、G-Tuneさんは3090と3080のものしかまだ出てないという状況だったので、簡単に比較して今回はパソコン工房さんで買うことにしました。 自分がそこまでPCパーツもメーカーさんも詳しいわけじゃなかったので雰囲気で決めたのですが、BTOだとFRONTIERさんがコスパとても良いらしいですね。これから買いたい人には結構おすすめです。FRONTIERさんも歴史の長いメーカーさんなので、安心。 www.frontier-direct.jp 今回買ったパソコンが、こちら。 www.pc-koubou.jp カスタマイズですが、ほとんど弄ってません。 個人的にOS用のSSDとゲーム用のSSDを別にしたかったので、これだけ分けました。 メインSSDをなんとなくM.2に 物置用のHDDは元々2TBだったのでそのまま。 全部合わせて、パソコン本体は税別181,940円という感じです。税込みでぴったり20万くらいですね。 ほとんどの人が満足できるスペックだと思うので、これが20万というのは凄いなあと思います。 パソコン工房さんでBTOパソコンを買うときの注意(?) パソコン工房さんでパソコンを購入すると、他の通販サイトと同様に翌日くらいに注文確認のメールが届きます。この中に発送予定日という項目があります。 確認しておきましょう ここでは「1~2週間」となっていますが、パソコン工房の公式サイトのQ&Aのところにもある通り、通常最大日数で出荷されるようです。 (私の場合もメールが届いてから14日目に発送の通知がありました) なかなか発送されなくても仕様です これは去年のQ&Aですが、今でも同様になっているようです。 ついでに色々買った パソコンを買い替えたのはいいものの、今まではずっとWindows XP時代から10年近くノートPCだったのでまずキーボードとディスプレイを初めて買いました。 最近ずっとApexをやってるのもあって、ディスプレイは144Hzとかリフレッシュレート高めのやつに憧れがあったので、これを買ってみました。 1 6 5 H z これはAmazonで25800円で購入。ゲーミングモニターってもっと高そうだと思っていたので結構助かりました。ASUSありがとう。 あとはキーボード等々。 Logicool信者 正確な値段は忘れてしまいましたが、3つ合わせて20000円もしないくらいです。(秋葉原のヨドバシ価格) ゲーミングデバイス買うのも初めてでこだわりも特に無かったので、スタンダードなものを一式買ってみました。G203とかはエントリーモデルという感じですね。 デスクトップPC初心者の失敗 ディスプレイとパソコンを繋げようとしたときに一生マザーボードのDisplayPortの穴にケーブルを刺していて「ディスプレイに出力されないんだが?」状態になってました。 ちゃんとグラフィックボードの端子に刺しましょう。 ベンチとかその他 ベンチマークとかやりたいので、これはまた別の記事にでもしようかなと思っています。 パソコンを買い替えてみた総評ですが、とりあえず前々からあったRyzen使ってみたいなという夢とかRTX買ってみたいという夢が叶ったので個人的には大満足です。 全部合わせて24万くらいなので決して安い買い物ではなかったですが、値段以上のリターンを得られていると感じます。まあ、3070を活かしきれているかというとまだ微妙なのですが……。 3DCGとかも触りたいのでこれから頑張ってくれるでしょう。 ゲーミング環境を変えて一週間後のAPEX 初3000ハンマー(レイス使い始めて1週間目) 結論:環境は整えたほうが良い。 #RTX 3070 #Ryzen 7 3700X 文月まぐ (id:mikan_alpha) 3年前 読者になる 広告を非表示にする コメントを書く * もっと読む 2020-11-14 MINECRAFTで学ぶJAVAプログラミング入門 #2: アイテムの追加 Minecraft プログラミング MinecraftのMod開発講座、第2回です。 mikan-alpha.hatenablog.com 前回は、開発を始まるまでの下準備を行いました。 今回から実際にゲームに触れてみましょう。 * 1. プロジェクトのインポート * 2. Javaの基礎の話 * プログラムの書き方 * 変数(メンバ変数、ローカル変数) * 3. Modをゲームに認識させる * 4. 無機能アイテムを追加する * アイテム本体 * アイテム登録用クラス * ゲーム初期化時にアイテムを登録する * 5. アイテム名などを設定する * アイテム名を設定する * テクスチャを設定する * 6. 次回予告 1. プロジェクトのインポート Eclipseを起動します。 ロードの途中で、ワークスペースを選択するウィンドウが出ますので、適当なディレクトリをワークスペースにしておきます。 私はMod開発用に新規でディレクトリを作成してそれを選択しました。 ロードが完了したら、エディターが開きます。 初期状態 ここで、前回用意したプロジェクトを開きます。 メニューのファイルから、インポートを選択します。 ここで、「既存のGradleプロジェクト」を選びます。 検索すると、はやい! 次の画面で、前回用意したForgeのディレクトリを指定します。 あとは、完了を押して待ちます。 インポートが完了したあと、こんな感じで色々ずらっと増えていたらOKです。 読み込み後 試しに、src/main/javaの中の、com.example.examplemodパッケージに入っているEampleMod.javaを開いてみます。 Javaの世界へようこそ こんな風に中身が問題なく表示できれば良いです。 ここから、開発を始めていきましょう。 2. JAVAの基礎の話 一応Javaに触れたことない人にも読んでもらうことを目指しているので、今回出てくる要素の解説をざっくりと。 プログラムの書き方 Javaにおいては、セミコロン(;)で処理のまとまりを区切ってプログラムを書いていきます。基本的には、行の先頭からその行のセミコロンまでを処理のひとまとまり(最小単位)だと思っておけば問題ないでしょう。 このセミコロンの前に記述してある内容が、コンピューターへの命令となるわけです。 この処理がいくつか集まって、{}で囲まれたブロックのことを、Javaではメソッド(関数)と呼びます。細胞の集合が組織みたいなものです。 関数と書いたとおり、数学の経験がある人は数学の関数と同じと思ってもらって構いません。 何か入力を受け取って、中でなんらかの処理をして、そして値を返します*1。 上で見たソースコードには、たくさん関数が記述されています。 先頭に修飾子、返り値の型(void)、メソッド名、引数の情報があり、{}で囲まれている範囲がこのメソッドの処理内容です。修飾子については詳しくは触れませんが、どこからこのメソッドにアクセスができるか、などのような情報を表すタグのようなものです。 さらにこのメソッドがいくつか集まってできるのが、クラスです。 Javaでプログラミングをしていく際の基本単位です。 先程のソースコードでは一番外側にこのように書かれています。 メソッドと同様に、修飾子が付いていてその後にclass、そしてクラス名となっていて、{}で囲んだブロックがこのクラスになります。 変数(メンバ変数、ローカル変数) プログラミングに欠かせない要素の1つが、変数です。 これも、数学の変数と同じものと思ってもらっていいでしょう。 ただ一つ違う点があるとすれば、変数の中身が「数字」とは限らない、という点です。 例えば、「hello」という文字列を変数に代入することもできるし、何かオリジナルのオブジェクトを代入することもできます。このあたりは、この後すぐ出会うことになります。 こんな風に変数に色んなものを入れておけるので、中に何が入ってるのかコンピューターに教えるために、変数には「型」という概念があります。 変数を宣言したいときには、「型名 変数名;」というように記述します。 例えば、「int x;」と書くと(32bit)整数型の変数が一つ確保されます。 上の例で出した文字列の変数を宣言したければ、「String str;」というように。 変数名は、1文字でなくても良いです。というより、むしろプログラミングにおいては分かりやすい名前にしておくべきでしょう*2。 上で見たソースコードにおいては、例えばこれが変数です。 変数の例 先頭の紫文字は今は無視して、型名と変数名を見ましょう。 この変数の型は「Logger」で、変数名は「LOGGER」ということになります。 またこの例のように、宣言と同時に変数に何か代入しておくこともできます。 Javaにおいては、「=」は(右辺を左辺に)代入の意味になりますので、プログラミングを始めたばかりの人は注意すべきポイントです。 また、変数には2種類あって、メンバ変数とローカル変数というものがあります。 この先で出てくる内容を含みますが、一応説明をしておくと、メンバ変数はクラス内かつメソッド外で宣言される変数、ローカル変数はメソッド内で宣言される変数という定義です。メンバ変数は、クラス内のメソッドだけでなくクラス外からも参照できたりしますが、ローカル変数は宣言されたそのメソッド内からのみ参照できる変数となります。(変数のスコープ) 3. MODをゲームに認識させる 先程開いたExampleMod.javaをそのまま書き換えていっても良いのですが、一応パッケージだけ作り直しておきます。 Javaの一般的な命名規則に従いました ここで、これから作るModのIDを決めます。ユニークな文字列である必要があります。他のModと被らないものにしましょう。 決めたら、IDと同じ名前のパッケージを作ってそこにExampleMod.javaをコピーしておきます。 IDは「tutmod」にしました リネームもしておきました。元々あったパッケージは削除して構いません。 さて、このプログラムをゲームに認識させるために、少しだけやることがあります。 まずこのクラスに付いているアノテーションの値を、先程自分で決めたIDに書き換えます。 次に、mods.tomlを開きます。 開いたら、modId=のところの値も自分のIDに書き換えます。 必要に応じて、他のところも書き換えておきましょう。 ここではdisplayName(表示名)だけ変えておきました。 他にもModのロゴ画像を表示できたり、公式サイトを載せたりできるので、確認してみてください。 最後に、メニューの「プロジェクト」からプロパティを開きます。 実行/デバッグ設定を開くと、以下のように予め3種類の起動構成が用意されているはずです。 ここで、「runClient」と「runServer」とそれぞれ編集します。 「環境」タブを開いて、MOD_CLASSESの「examplemod」と書いてある部分を自分のIDに置換してください。 終わったら、適用を押して閉じます。 準備が終わったので、この状態でデバッグをしてみましょう! 今編集した「runClient」を実行してみます。 こんな感じにMinecraftが起動できれば問題なしです。 Modsを開いて、今開発しているModが読み込まれていることを確認します。 lorem ipsumが読めます。 4. 無機能アイテムを追加する Modを開発する準備も完璧に整いました。 ここから実際にアイテムを作ってみましょう。 アイテム本体 まずはアイテム本体のクラスを準備します。 管理のためにitemというパッケージを新しく作成して、そこにアイテムのクラスを入れていくことにします。 クラス名はMinecraft本体の命名規則に従っています クラスを新規作成すると、最低限の記述のみのソースが自動で生成されます。 ここで、Minecraft本体のItem(net.minecraft.item.Item)クラスを継承します。 Eclipseの機能でコンストラクタも簡単に生成してくれます こうするだけで、Minecraftのアイテムの最小限の機能だけを持ったアイテムが作れます! 右クリックしたときの処理を追加するとか、そういった独自の機能を持たせたい場合にはこのクラスでItemクラスのメソッドをオーバーライドしていきます。 アイテムの基本の設定だけしましょう。 コンストラクタにあるProperties(Item.Properties)の設定をします。これは名前の通りで、アイテムが最大で何個スタックできるか、耐久値はいくつか、どのクリエイティブタブに属するか、のような情報を持つクラスです。 今は飛ばしてしまうので、インスタンスだけスーパークラスに投げておきます。 次の行で、このアイテムのシステム内名称を設定しています。これは必ず設定しなければなりません。setRegistryNameの第1引数はMODのId、第2引数にアイテムの名前を渡します。 メインクラスでMODのIdを管理するようにしました これで、アイテム自体は完成です。 アイテム登録用クラス 次にこのアイテムをゲームに登録します。 ModItemsというクラスを作って、そこでアイテムのインスタンス管理をすることにします。 こんな感じにアイテムを入れる変数とメソッドを定義してあげて、ゲームの初期化時にこのinit()を呼んであげればよいです。 publicにするのを忘れずに 外からアクセスするものなので、publicにします。 ゲーム初期化時にアイテムを登録する Modのメインクラスに戻ります。下の方にいくと、RegistryEventsというクラスがあると思います。 ここにブロック登録用のメソッドが予め書かれているので、これを真似してアイテム用のメソッドを作ります。 ここでアイテムやブロックを登録します onItemsRegistryの中で、ModItems.init()を呼び出して、そしてアイテムを登録します。 初期化を忘れるとぬるぽになる これでゲームにアイテムが追加できたので、Minecraftを起動してみます。 giveコマンドでアイテムを召喚するとこんな風になると思います。 視界の1/4が謎の物体で埋まります。 ここから、テクスチャやアイテム名のローカライズの設定をしましょう。 5. アイテム名などを設定する アイテム名などの設定は、あまりプログラムを使わずにできます。 src/main/javaではなくて、src/main/resourcesの方を開いて、以下のようにパッケージを作ります。 リソースパックなどに触れたことがある人は馴染みがあると思いますが、assetsの後ろがminecraftではなくてModのIdになるので気をつけましょう。 リソースパックと同じ アイテム名を設定する アイテム名のローカライズは、JSONを利用します。 以下のように、例として英語用の言語ファイルを作ってみます。 日本語ならja_jp.json 記法はJSONそのままです。左側にローカライズ前の文字列、右側にローカライズ後の文字列を書けばあとは勝手にゲーム側で書き換えてくれます。 アイテム名以外のローカライズにも使います。書き方は全部同じです。 このようにちゃんとローカライズされていたらOKです。 テクスチャを設定する テクスチャの設定もJSONです。models.itemの中にアイテムのRegistryNameと同じ名前のファイルを置いておくだけで勝手に読み込んでくれます。 コピペ ファイルの中身はバニラのリンゴからコピペしました。 自作のテクスチャにしたい場合には、layer0の値を書き換えます。 できた 6. 次回予告 今回はアイテムをやったので、次回はブロックの追加をします。 実は、結構似ているので次回は楽かもしれません。その後はレシピかな? それではまた次回。 *1:ただし入力を受け取らない関数や値を返さない関数もあります *2:変数名の長さは重要度に比例し、使用頻度に反比例すると良いです。 #Minecraft #プログラミング #Java 文月まぐ (id:mikan_alpha) 3年前 読者になる 広告を非表示にする コメントを書く * もっと読む 2020-11-08 MINECRAFTで学ぶJAVAプログラミング入門 #1: 開発環境の準備 Minecraft プログラミング ※この講座は、以下のバージョンを想定しています。 Minecraft JavaEdition (1.13.x-)1.16.x Minecraft Forge 34.1.0 (for 1.16.3) 1. はじめに お久しぶりです。元々はYouTube上で動画にでもしようかと思っていたのですが、個人的に撮影する時間があんまり取れなさそうだったので、とりあえず文字ベースでやってみようかと思います。よろしくお願いします。 想定している読者は、(PCの)Minecraftをプレイしたことがあって(これが大事)、プログラミングはやったことないけど興味がある*1とか、ゲーム開発楽しそうだけど敷居が高くてあんまりできてないとか、そういう人たちです。 1からゲームを作るのとはまた違いますが、なんとなくゲームプログラミングの楽しさが伝わるといいなと思います。書いてる人がそもそもプログラミング素人なので、そんな高度なことはしません。というより、できません。気軽に読んでもらってOKです!あとはパソコンの基本的な操作とかができれば可。 この講座の目的は、MinecraftのModを自分の手で作りながら、Javaの基礎に触れることです。プログラミングをしなくてもModが作れるツールみたいなのもあった気がしますが、やっぱり自由度は格段に違いますし、何よりコードを書いてると頭がよくなった気分になれて楽しい!!!!ので、ここでは自分でコーディングします。 以下、目次です。 * 1. はじめに * 2. Java(JDK)をインストールする * 2. 統合開発環境(IDE)を用意する * 3. Minecraft Forgeのセットアップ * 4. 次回予告 2. JAVA(JDK)をインストールする さて、早速始めていきましょう。 Minecraftというゲームは、上でも少し話した通り、Javaという言語で書かれています。なので、基本そのModもJavaを用いて作ることになります*2。 Minecraftというゲームは便利にできていて、ただプレイするだけならランチャーが勝手にJavaの実行環境(JRE)を用意してくれます。つまり、パソコンにわざわざJavaをインストールする、ということをせずに遊べてしまうわけです。 ただこの実行環境というのはランチャー内で使うだけの専用のものになっていて、「Javaでプログラミングしたい!」となったときは別途準備する必要があります。 (既にJDKを使ったことがある人はこの項は飛ばして構いません) ここで登場するのが、JDK改めJava Development Kitです。 これは、Javaでプログラミングをするために必要な道具が一式そろった開発キットです。Mod開発をしていくにはこれがないと始まりせんので、準備しましょう。 本講座ではAmazonさんのAmazon Corretto 8を使うことにします。 aws.amazon.com 上のページからAmazon Corretto 8をダウンロードして、インストールしてください。 ボタンを押すとダウンロードURLがずらっと出てくるので、お使いのプラットフォームに合わせたものをダウンロードしましょう。 Windowsの場合は、インストーラー形式(.msi)のものが一番簡単だと思います。 2. 統合開発環境(IDE)を用意する さて、プログラミングに欠かせないものと言えば、便利なエディタです。ここでは、Minecraft Forgeも標準でサポートしている、Eclipseというエディタを使います。 Google等で「Eclipse」と検索すると以下のサイトがトップに出てくると思います。 mergedoc.osdn.jp サイトトップのページから「Eclipse 2020」を選択します。 移ったページで、Javaの欄のFull Editionから同様にお使いのプラットフォームのEclipseをダウンロードします。 サイズが大きいので、気長に待ちましょう。 (あれ、JDK自分で用意する必要なかったな……?) ダウンロードが終わったら、インストールする必要はないソフトなので解凍して分かりやすい場所に置いておいてください。 3. MINECRAFT FORGEのセットアップ ここからは、MinecraftのMod開発特有の準備です。 今回はMinecraft Forgeを使ってModを作るので、この下準備をします。 Google等で「Minecraft Forge」で検索すると公式サイトがヒットします。 files.minecraftforge.net 現在(2020/11/08)はトップにMinecraft 1.16.3用のものが表示されていますが、そうでなければ左のメニューから1.16.3を選択してください。また、異なるバージョンのModが作りたい場合には同様に左メニューからModを作りたいバージョンを選びます。 (この講座で扱うバージョンでない場合、Modの書き方が大きく異る場合があるのでそれぞれのバージョンの講座を参照してください) バージョンを選択したら、Recommended(推奨版、安定版)の方のMdkをダウンロードします。 Sourcesではないので注意(昔はMdkがsrcでした) 別にLatest(最新版)でもいいのですが、Recommendedがある場合はこちらを選んでおいた方が無難です。Forgeに滅多にバグは見ないのですが*3、念の為。 これもダウンロードが済んだら解凍して分かりやすい場所に置いてください。 解凍する場所ですが、パスに2バイト文字が含まれない場所が望ましいです。 次に、これをこれから使うためのセットアップをします。 「gradlew」等があるトップの階層に、バッチファイルを作成します(Windowsの場合)。 setup.batという名前で作成しました そしてこのバッチファイルの中身に、「gradlew genEclipseRuns」と書いて起動します。 ※表示される内容は若干異なっていて大丈夫です これも時間がかかりますので、お茶でも飲みながら気長に待ちます。 特にエラー等吐いてなければ問題ないです。 最後に緑文字が出てプロンプトが閉じたら準備完了です!お疲れさまでした。 ディレクトリ内に色々ファイルが増えていると思います。 4. 次回予告 今回でMod開発を始めるための準備が整いました! 次回は実際に、無機能なアイテムをゲームに追加してみたいと思います。 今回はまだコーディングする場面がありませんでしたが、次回からは逆にほぼずっとコーディングです、お楽しみに。 *1:でも、入門とは書いたけど本当にやったことないとちょっと難しいかも……。C++みたいな似た言語を触ったことがあれば、とても役に立つと思います。 *2:Kotlinでもできたりしますが、ここでは触れないことにします。 *3:自分も過去一度しかForge自体が原因のバグに遭遇したことがないです。 #Minecraft #Java #プログラミング 文月まぐ (id:mikan_alpha) 3年前 読者になる 広告を非表示にする コメントを書く * もっと読む 次のページ プロフィール 文月まぐ (id:mikan_alpha) 主に趣味の数学の話。たまにプログラミングとかゲームとかも。 読者です 読者をやめる 読者になる 読者になる 45 @luigi_0829_2をフォロー このブログについて 検索 リンク * はてなブログ * ブログをはじめる * 週刊はてなブログ * はてなブログPro 最新記事 * sin(x)/xの極限を矛盾なく証明してみる * 調和級数が、収束する? * お酒と消毒用アルコールの違いって何?調べてみた! * 導出: Riemannゼータ関数の特殊値のBernoulli数による表現 * RTX3070(搭載PC)を買ったので色々紹介とか 月別アーカイブ * ▼ ▶ 2021 (3) * 2021 / 10 (1) * 2021 / 2 (2) * ▼ ▶ 2020 (16) * 2020 / 12 (2) * 2020 / 11 (2) * 2020 / 9 (1) * 2020 / 8 (1) * 2020 / 7 (2) * 2020 / 6 (1) * 2020 / 5 (1) * 2020 / 4 (1) * 2020 / 2 (3) * 2020 / 1 (2) * ▼ ▶ 2019 (40) * 2019 / 12 (4) * 2019 / 11 (2) * 2019 / 10 (2) * 2019 / 9 (3) * 2019 / 8 (1) * 2019 / 7 (1) * 2019 / 6 (1) * 2019 / 4 (5) * 2019 / 3 (8) * 2019 / 2 (7) * 2019 / 1 (6) * ▼ ▶ 2018 (7) * 2018 / 12 (7) カテゴリー * 数学 (53) * 微積分 (6) * Ramanujan summation (2) * 円周率 (12) * 競プロ (7) * AtCoder (6) * Chudnovsky formula (5) * 自然対数の底 (4) * Minecraft (4) * ゼータ関数 (3) * 極限 (3) * 三角関数 (3) * モジュラー形式 (3) * プログラミング (3) * 0.7390... (3) * 音ゲー (1) * 普通のブログ (1) * 線形代数 (1) * 化学 (1) * 力学 (1) * ジョーク記事 (1) * SOUND VOLTEX (1) * j-不変量 (1) * Apex Legends (1) Holograph1c Attract0r Powered by Hatena Blog | ブログを報告する 引用をストックしました ストック一覧を見る 閉じる 引用するにはまずログインしてください ログイン 閉じる 引用をストックできませんでした。再度お試しください 閉じる 限定公開記事のため引用できません。 読者です 読者をやめる 読者になる 読者になる 45