はてなキーワード: 複素数とは
高校で習う有機化学は人生で使ったことねえし、生物に至っては選択すらしなかったんで、化学も生物も廃止して理科にしようぜ。あれも暗記ゲーだし。
地理も世界旅行だの決まった国しか行かないし知ってる理由殆どないな。
RPGの戦闘のおやくそくをうまく説明するための公理系を考えてみました。
分かりやすい例として、随所でファイナルファンタジーをサンプルに挙げてます。
などが挙げられる。
生身の人間がコックピットでロボットを操縦しているような場合は、操縦者とロボットを一括りにして一つの生命体として取り扱う事もできる。
それぞれの生命体が持っている、戦闘行動を遂行するために必要なエネルギーのこと。
生命力は実数で表される。後述の「アンデッド」のように、負の生命力を持つ生命体の存在もありうる。以降の説明で「生命力」という言葉が出てきたら、数直線上のとある一点を表しているものと想像して欲しい。
通常の生物は代謝や呼吸によって生命力を維持するが、戦闘ロボットなどは電力・燃料などが生命力の源であると考えることが出来る。
生命力は、正(アンデッド以外)および負(アンデッド)の値を取りうるが、HPはその絶対値として表されるため、常に正の値となる。
運動エネルギー(物理攻撃)・熱エネルギー・電気エネルギー・化学反応(毒などのステータス異常攻撃)等の影響で生命力が削られて、HP(生命力の絶対値)が減少すること。
生命体に対して斬撃など何らかの攻撃を当てた場合、それが通常の生物であってもアンデッドでもダメージを与えることに変わりはないが、それは絶対値に対して影響を及ぼしているため。
生命体が、自身の生命力を失って戦闘行動を遂行できなくなった状態。
ダメージを受けて生命力が推移した結果、生命力が数直線上の原点(0)に一致するか、または原点を通過した(プラスからマイナス、あるいはマイナスからプラスに移動した) 際に成立する。
アンデッドは負の生命力を持つため、これらの効果はダメージとなる。
(タクティクスオウガの「マーシーレイン」のように、アンデッド・人間両方のHPを回復できる魔法も存在するが、これは「負→正の遷移」ではなく「生命力の絶対値を上昇させる」現象とみなすことができる)
上記とは逆に、生命力を正から負の方向に推移させる効果を持つ。そのため通常の生命体にとってはダメージだがアンデッドにとっては回復手段となる。
対象の生命力を、「その生命体の最大HP」の量だけ、正から負の方向に推移させる効果を持つ。
そのため通常の生命体にとっては「即死」という効果として現れるが、アンデッドにとってはHP全快という結果になる。
正の生命力を持つ生命体に対して、生命力を「マイナス1」だけ掛け算する効果を持つ。
これは数直線上を移動するのではなく、原点を軸として180度回転するという演算になる。
原点を通過するわけではないので戦闘不能扱いにはならず、自身のHP(=生命力の絶対値)もそのままとなる。
対象の生命力を正から負の方向に推移させ、その結果生じたダメージの量だけ自身のHPを増加させる行為。
アンデッドに対して行使した場合、生命力が正から負に推移することで発生するダメージ量は負の値となるので、自身のHP増加量も負の値となる。(つまり自分がダメージを受けて相手が回復する)
もしも複素数の生命力を持つ生命体が存在するとしたら、どんな現象が発生しうるか?
すげーわw
ぜひともまともに会ってはなししてみたいわw
後、一体いくつだろうね。医者って言うからには最低限20代後半なんだろうけどさ。
なんで?で、なんでそれと
3乗のωもナチュラルに覚えられた。
が同列なの?ってか、これ、覚えてる人いるの?
で、九九は半分ですって、奥さん。聞きました?奥さん?
Higgsとかどうやって導出するか教えてよ!
http://anond.hatelabo.jp/20140506144603
これだけのものを「ちゃんと」読めば、そりゃあなんとかなるでしょう。
しかし、何万円になるんだ。
このかけ算の順序問題を論じる場合に多くの人が見落としている重要な点は、これが小学校2年生の授業であるということだ。小学校2年生の算数では足し算の拡張としてかけ算が導入される。この時点ではかけ算は足し算と切っても切り離せない関係にある。
どういうことかというと、
□+□+□+□+…+□
のような同じ足し算を☆回くりかえした計算を「□×☆」と表記する、と習うのだ。つまり、この時期においては「3×5」は「3+3+3+3+3」の省略形であり「5×3」は「5+5+5」の省略形でしかない。
こう考えると、「一個10円のリンゴを3個買いました」の式が「3×10」ではいけない理由がよく分かる。この問題に対する式は「10+10+10」でなければならず、「3+3+3+3+3+3+3+3+3+3」では間違いなのだ。
このような、足し算と任意に書き換えが可能である限定された演算であるかけ算と、小学校3年生以上で習う一般化された抽象的なかけ算を混同してはいけない。後者のかけ算では、かけ算の定義域は0や小数、分数にひろがっていて足し算との関連は失われている。さらに抽象化された中学以降の数学では、定義域は負の数、未知数、数式、複素数、環と拡大の一途をたどる。この時点でかけ算の順序を問うことには意味は無い。しかし定義域が自然数に限定され、足し算との相互変換が可能な2年生のかけ算では、可換則は自明ではなく順序が本質的な意味をたもっているのだ。
確かに黒寄りのグレーだけどさ、それがわかってる人なんて(教師でそれを強調して教えられる人も)ごくごく一部だと思うよ。
リンク:教師「虚数をiと表します。」俺「ほう」教師「i^2は-1になります」俺「…」 - 発声練習 http://d.hatena.ne.jp/next49/20130809/p1
そもそもこの人も過去そうであったように、「数学は人間のおいた仮定(公理という)から人間のつくりだした論理的集積物(定理のあつまり)であって、数学が真理を体現しているかはわからない」ということがわかってないのよ。多くの人は。
発声練習の人も確か工学の大学教員でしょ?そんな人ですら「私は高校~大学にかけて「定義」、「公理」、「定理」の区別がついていなかった。」というくらいだから、この問題は相当根深いのよね。
複素数を理解するのに何が難しいかって「虚数って本当に存在するの?」っていう疑問を(数学教師も含めて)真剣に考えたことのない人が大半だからで、むしろ今の日本の学校教育はそういった素朴で根本的で(世界がひっくり返ってしまう可能性を持つという意味で)ラディカルな質問を封じ込めているんだよね。そういった疑問を抱かずにお上の言うことに盲従する人間が再生産され、そういった人間が教師になるという不幸な再生産システムがあるのよね。だから教育は難しいんだけど。
あと、この疑問を徹底的に考えると「じゃあ、数学なんて現実世界となんの関係もない、記号遊びにをやっているだけだな。だから、僕には必要ないな」というように、シニシズムに陥いりがちでそういった方向に思考させないことも必要だし、それに陥った人をうまく掬い上げなきゃいけない。
この増田のエントリーも含めて、「虚数って本当に存在するの?」っていう疑問から目をそむけずに考え続ける人が増えてほしいと切に思う。
http://anond.hatelabo.jp/20130808203552
ところで上の話は別に間違えたことを言っているわけではない。
だが「虚数単位とは二乗して-1になる数のことです」というのは黒寄りのグレーだ。
そういう元が複素数全体の集合に二つあることを見逃している。
虚数の概念を手に入れるまで人類がどれだけ苦労してたかも知るべき。
虚数に関しては「こういう定義の数を考えてみよう」って考え方を出来ない人が案外多いんだろなって思う。
高校で数学の授業に虚数が登場したとき、真面目に学ぼうとしなかったんだよね。なんか机上の空論から生まれた概念みたいに思えて。
結局テストで点を取れる程度のことだけ覚えて大学を受験し法学部に進んで普通に就職した。その頃には虚数という言葉は覚えていても、それが何を意味するのかすっかり忘れてしまっていた。
時が流れて30代半ば、最近になって再び電子工作を趣味とするようになった。最近は設計やシミュレーションにPCの支援を受けられるようになったので、まともな教育を受けてこなかった素人文系の俺でも趣味の範囲ならいろいろと設計できる。ややこしい半導体でもミネソタの通販業者あたりに頼めるし、中国の基板屋にプリント基板を製造させても懐に優しい。本当にいい時代だと思う。
でも今になって困ってるんだよね。交流を扱う箇所では計算に複素数を使うから。高校時代に「虚数なんて実世界に関係ない存在だ」と勝手に思い込んでた俺は後悔しまくり。
(あとついでにベクトルも)
http://anond.hatelabo.jp/20120418003806
塾でもよく訊かれるので解説を。
無限(+∞)というのは、「私達が理解できないくらい大きい数」ということを表す記号です。
そういうテキトウなことを塾で教えるなよ。
「∞」についての四則演算を考えてる文脈なら「∞」は通常のどの実数よりも大きいと「定義された」元にすぎない。「∞ + ∞ = ∞」と定義してる文脈なら普通「2 * ∞ = ∞」でもあるから
∞ + ∞ = 2 * ∞
は成立する。あるいは複素数(リーマン球面)で考えてるなら「∞ + ∞」も定義されないから、
が成り立たない。それから、
ちなみに、∞ - ∞ 、∞/∞ 、(n^∞)^(1/∞)は同様の理由で、その結果を私達が知ることはできません。この形式を、不定形の極限と言います。神ならぬ私達では、その結果は知りえないのです。
は極限の話で、「∞」を含んだ四則演算とは別の話。
7+8が14かもしれないということは、16かもしれないし、任意の自然数nかもしれない。下手すると一般の複素数zかもしれないよなあ。
7+8が15になる確率が1でない世界を考えて、無矛盾な系を構成できるんだろうか…。
ま、リンゴとか例えを出した段階で数学じゃなくて物理学の領域になるから、死ぬほど実験してどうも間違ってないっぽいと言うしかできない気がする。
量子効果とか非可測的な何かによって数が変わったりすることはあるかもしれないけど、まぁ一生数え続けるくらいの試行回数じゃそういうことは見られないという感じ。
純粋に数学だと思うと、無矛盾性をもって「15だと思って良い」くらいしか言えないと思うけど、ゲーデルの不完全性定理があるから無矛盾性は証明できないだろう。
というわけで、飽きるまで数えさせ続けるくらいしか無いんじゃなかろうか。
元増田です。
例に挙がってる数学のケースで言えば、おおざっぱに以下のレベルがあって、
- 公式を覚える(単なる丸暗記)
- 公式を理解する
- 公式を定型的に応用する
- 公式の応用方法を考え出す
それは何か順序がおかしくないですか。「理解」していれば定型的にであろうが非定型的にであろうが応用できるはずだし、そもそも公式を忘れてしまっていても復元することさえできるはずで、逆にそれができない人は「理解」していると言えません。
たとえば、対数の底の変換の公式logbx =logba logaxなんてのは、定義に戻ってx=alogax=blogbx, a=blogbaということを思い出せばその場で導き出せるものだし、実際俺はこの公式を覚えていないので今この場で導出しました。要は「対数」とは何かが「一連の記号の操作の手続き」としてでなく、感覚として体に染みついていればだいたいどうやって公式を導き出すかはすぐにわかります。
そういうわけで、俺は定義みたいなものや導出が極端に煩雑な物を除いて「公式」というのを基本的に覚えていません。覚えるよりもそのたびに導いた方が簡単だからです。
そこまで行かなければ「公式を理解する」という段階に達したとは言えません。
教科書の証明を読んで覚えているというのは「理解」したことになりませんよ。それを一旦忘却してしまったあとで、自分で最初から作り出せる、そのレベルになってはじめて「理解」したといえます。分数の割り算は逆数を掛ける、という証明なんて一々覚えていないでしょうけれど、「当たり前」にしか思えないでしょうし、証明しろといわれればすぐできるでしょう?(もっとも、世の中にはできない人も多いんですけどね。また、実数とはなにか、というところまで突っ込んでいくと数学科の学生でもなければまともに答えられないと思いますが、そこまでの厳密性は求めないことにしましょう。それを言い出せば上の対数の問題だって同じですし)
で、そのレベルにまで理解を深めるためには普通はある程度具体例を知ることが必要ですし、その過程でその分野の基本的な定石(例えば未知数があればとりあえずxなどと置いて式を立ててみるなど)・手筋(たとえば、複素数zが実数であることを証明するにはzの共役がzと等しいことを証明するなど)のような物も身につけていくことになるはずです。逆に言えばこうした概念を「当たり前」だと思えるようになるためには、そうした定石・手筋を知ることが感覚を磨いていくための絶好の手段で、教科書併用の問題集あたりを「きちんと」こなせばそれぐらいのことはできるようになるはずです。そして、その種の定石・手筋が身に付いていれば、「教科書の公式を証明せよ」という問題も簡単に料理できるはずなのです。
別に受験に限らず、新しい概念を身につけるためにはこういう過程は必要なはずなんですが、大抵の人はこういう過程を「きちんと」こなせていないんですね。大抵は問題集や参考書を見て、書いてあることを半ばうろ覚えに丸覚えしてそれで事足れりとしてしまっている。それじゃダメです。概念というのは形式的な定義を覚えてそれで終わりではない。何のためにそんなものを定義したのか、それを使うとどんないいことがあるのか、既知の他の概念とどういう関係があるのか。そういう疑問をきちんと一つ一つ考えて自力で解決していかなければ「理解した」とは言えないでしょう。大概の人はその辺をほったらかしにしてるから、詰め込み勉強というものを何の工夫の余地もない退屈な丸暗記だと思ってしまってるんですよ。
まあ、こういうと難しく聞こえるかもしれませんが、「死亡フラグ」だの「ツンデレ」だの凝ったネットスラングの概念を理解する際には大抵みんな同じことやったはずですよ。早い話、
というような過程は誰しもやっているはずで、この辺のことをやれば、何かの話が挙がっているときに「それは死亡フラグだな」とかツッコミを入れるという「応用問題」も難なく解けるようになっているはずです。もちろん数学なんかはそれよりは幾分複雑ですが、基本的には同じようなことをもうちょっと念入りにやればいいんですよ。
実際、「死亡フラグ」って概念を使うこと自体、ある種のストーリーの「様式」を分析しているわけで、文学研究の初歩みたいなことやってるわけですよ。そう思えば別に恐るるに足りないでしょ?
スローガン風に言えば、「詰め込むならきちんと余分な空気を抜いて圧縮し、入れる場所を考えてから詰め込め」ということですね。
C++において多倍長整数,多倍長浮動小数点を扱うライブラリとしてGMPが有名だ.
Visual C++を使っているのなら,GMPと互換のあるMPIRが導入しやすくて良い.
以下,VC10 (Visual Studio 2010)環境での話.
このMPIRはどうもC++の複素数クラスstd::complexと相性が悪いようだ.
#include <complex> #include <iostream> #include <iomanip> #include <mpirxx.h> int main() { std::complex<mpf_class> a(1.0, 2.0); std::complex<mpf_class> b(0.0, 1.0); std::complex<mpf_class> c1 = a + b; std::complex<mpf_class> c2 = a - b; std::complex<mpf_class> c3 = a * b; // std::complex<mpf_class> c4 = a / b; // error std::cout << "a =" << a << std::endl << "b =" << b << std::endl << "c1 =" << c1 << std::endl << "c2 =" << c2 << std::endl << "c3 =" << c3 << std::endl; // std::cout << "c4 =" << c4 << std::endl; return 0; }
「operator/=」から呼び出される「_Div」内部でエラーが出る.
そこでテンプレートの特殊化をする.
#pragma once #include <mpirxx.h> #if defined(_MSC_VER) &amp;&amp; (_MSC_VER == 1500) /* VC9 (Visual Studio 2008) */ #pragma comment(lib, "C:\\lib\\MPIR\\vc9\\mpirxx.lib") #pragma comment(lib, "C:\\lib\\MPIR\\vc9\\mpir.lib") #else if defined(_MSC_VER) &amp;&amp; (_MSC_VER == 1600) /* VC10 (Visual Studio 2010) */ #pragma comment(lib, "C:\\lib\\MPIR\\vc10\\mpirxx.lib") #pragma comment(lib, "C:\\lib\\MPIR\\vc10\\mpir.lib") #endif #include<complex> namespace std { template<> complex<mpf_class>&amp; complex<mpf_class>::operator/=(const complex<mpf_class>&amp; _Right) { // divide by other complex //this->_Div(_Right); mpf_class _Rightreal = (mpf_class)_Right.real(); mpf_class _Rightimag = (mpf_class)_Right.imag(); mpf_class bunbo = _Rightreal * _Rightreal + _Rightimag * _Rightimag; mpf_class re = ( this->real() * _Rightreal + this->imag() * _Rightimag ) / bunbo; mpf_class im = ( this->imag() * _Rightreal - this->real() * _Rightimag ) / bunbo; this->real(re); this->imag(im); return (*this); } }
これでとりあえずは割り算もできるようになった.
計算精度については何も考えていない.
#突っ込みお待ちしてます.
縦軸に強度、横軸に2πνtをとって2つの波を考える
E_1=A_1 sin(2πνt-φ_1)
E_2=A_2 sin(2πνt-φ_2)
E_3=E_1+E_2、これは
波の複素数表示
E_1=ae^(iφ_1) E_2=be^(iφ_2) と複素数平面でベクトルとして書くと、合成波を表すE3ベクトルはただのベクトル和でよい
構造因子Fを出す
|F|=単位胞の全ての原子によって散乱されるX線の振幅/1個の電子によって散乱されるX線の強度
反射線の強度I∝|F|^2だったことを踏まえつつ
F_hkl=sum f_n e^(iφ) from 1 to N=sum f_n e^(i2π(hu+kv+lw)) from 1 to N
f_n:原子散乱因子:1個の原子によって散乱されるX線の振幅/1個の電子によって散乱されるX線の振幅
どの1個の原子について計算するか(結晶を特徴付けるものを選ぶ)→結晶座標0,0,0の原子を考える
F=f_n e^(2πi(h0+k0+l0))=f_n ←意味:hklに関係なく、ブラッグの条件さえ満たせば回折波が出てくる
|F^2|=fn^2
どの2個の原子について計算するか→結晶座標0,0,0と、0.5,0.5,0.5の原子について考える
F=f_n e^(0) + f_n e^(2πi(0.5h+0.5k+0.5l))
=f_n (1+e^(πi(h+k+l)))
F=0|h+k+lが奇数
F=2f_n|h+k+lが偶数
どの4個の原子について計算するか→結晶座標0,0,0と、そこから一番近い3つの原子0.5,0,0と0,0.5,0と0,0,0.5について考える
(中略)
F=f_n(1+e^(πi(h+k))+e^(πi(h+l))+e^(πi(k+l)))
面心立方晶のFは、どのようなh,k,lでどのような値を取るか、パターンを考える