Translate

이 블로그 검색

2010년 12월 16일 목요일

렌즈의 3 요소 - 1. 초점거리 f

렌즈의 3 요소는 초점 거리(f), 밝기(F값), 화각이다.

이 중 초점 거리 f는 다음과 같이 정의된다.

렌즈(볼록 렌즈) 앞쪽으로 광축을 따라 무한대의 거리에 점광원(피사체)이 있을 때, 그로부터 나온 빛들은 렌즈에 평행하게 입사한다. 이 빛들이 렌즈를 통과하면 굴절되어 렌즈 뒤쪽 한 점에 모이게 되는데, 이것을 초점이라 하고 초점에서 렌즈의 중심까지 광축상의 거리를 초점 거리라 한다.

초점 거리에 필름이나 CCD가 놓여지면 거기에 상이 맺히게 된다. 그런데 여기서 유의할 것은, 초점 거리에 상이 맺히는 경우는 정의에서 볼 수 있듯이 피사체가 무한대의 거리에 있을 경우다. 피사체가 무한대로부터 조금씩 렌즈에 가까워질수록 상은 초점 거리부터 조금씩 뒤에 맺힌다는 것이다. 다행히 피사체 거리와 상 거리간의 관계는 다음에 보듯이 역비례 관계에 있어 무한대에서 어느 정도 가까운 거리까지 피사체 거리가 변해도 상 거리는 초점 거리에서 그 뒤로 아주 조금밖에 변하지 않는다. 이 때문에 무한대 거리에 있는 물체부터 어느 정도 근거리에 잇는 물체까지를 다 같이 거의 초점이 맞는 상태로 사진을 찍을 수 있는 것이다.

일례로 초점 거리가 50mm인 렌즈(표준 렌즈)의 경우 무한대에서 렌즈 앞 550mm까지 피사체가 접근해도 상 거리는 50mm에서 55mm로 단지 5mm만이 변할 뿐이다. 그러나 그 이상 접근하면 상 거리는 급격히 멀어지게 되고 초점 거리인 50mm로 접근하면 상은 반대로 무한대의 거리에 맺히게 된다.

렌즈는 앞쪽(피사체에 가까운 쪽)에 초점 조절 링이 있고 뒤쪽(카메라 바디에 가까운 쪽)에 조리개 조절 링이 있는데 (없는 경우도 있음), 이 중 초점 조절 링을 조절하여 가까운 거리에 있는 피사체에 초점을 맞추는데 초점 조절이 되는 범위가 렌즈마다 정해져 있으므로 어느 거리 이하로는 초점 조절이 되지 않는 최소 거리가 존재하게 된다. 이 것을 MOD(Minimum Object Distance, 최소 초점 거리)라고 한다.

(얇은) 렌즈의 공식 1/a + 1/b = 1/f 으로부터
a와 b의 관계 b = a*f/(a-f) 를 계산할 수 있다. 

2010년 11월 27일 토요일

태양광 발전 - 1

몇 년 전부터 태양광 발전이 뜨고(?) 있다. 이 번에 태양광 발전과 관련된 몇 가지 계산을 해 보자.


태양 상수 (Solar Constant)
먼저 지구에 도달하는 태양 에너지의 단위면적당(m^2) 파워는 다음과 같이 계산할 수 있다.
F = L / (4*π*R^2) (L: 태양 에너지, R: 태양과 지구간 거리)
이 것을 수 매니아로 계산하면,
Sun_power/(4*Pi*(Sun_Earth/m_AU)^2) = 1.373E+03 ≒ 1,400 [W/m^2] 이 나온다. 이 값이 이른바 (대기 밖에서의) 태양 상수이다. 이 것을 분당 칼로리로 환산하면
ans*60[sec/min]*1E-4[m^2/cm^2]/cal_J = 1.968E+002 [cal/cm^2•min]
(단위는 이해를 돕기 위해 추가한 것일 뿐 계산시 입력하지 않는다.)

위 태양 상수는 대기 밖에서의 값이며 지구 표면에 도달하는 것은 이 값의 약 60%에 해당하는 1.2 [cal/cm^2•min] (840 [W/m^2]) 이다. 이 것이 태양광 발전을 계산하기 위해 기초가 되는 지표에서의 태양 상수이다.

LG 태안 태양광 발전소의 예
LG 태안 태양광 발전소는 발전 용량 14MW급의 국내 최대의 태양광 발전소이다. (신안에 있는 동양 태양광 발전소가 최대 발전 용량 24MW에 도달하면 국내 최대가 될 것이다.) 여기에 사용된 태양 전지 하나의 크기가 156 mm * 156 mm이고, 60개를 조합하여 태양 전지 모듈 한 개가 구성되므로 태양 전지 모듈 하나의 면적은 0.156^2*60 = 1.46 [m^2]이다.

총 모듈 수가 77,000개이므로 총 태양 전지 면적은 1.124E5 [m^2] (약 3만4천평) 이다. (태양 전지만의 면적이다. 발전소 총 면적은 그 3배인 약 9만평이다.) 폴리(다결정) 실리콘을 사용하는 태양 전지의 변환 효율은 약 16%이므로
태양 상수*0.16*총 면적 = 840*0.16*1.124E5 = 1.511E7 [W] ≒ 15 [MW] (계산값이 발전 용량보다 약간 커진 것으로 보아 변환 효율이 16%보다 약간 작은 것으로 생각됨)

위에서 계산한 발전 용량은 정확하게는 일초를 단위로 하고 있다. ( 1 [W] = 1 [J/s] 이므로) 따라서 시간을 곱하여 일이나 월 또는 년간 발전량을 계산해야 하는데, 이 때 가장 중요한 시간 요소가 하루에 몇 시간이나 태양광 발전을 할 수 있느냐이다. 당연한 이야기이지만 밤에는 태양광 발전을 할 수 없고 그렇다고, 낮 시간도 전체적으로 최대 발전 효율을 유지하지는 못한다. 태양광 발전량을 따질 때 일반적으로 사용하는 일 평균 발전 시간은 4시간이다.

그러므로 LG 태안 태양광 발전소의 일 발전량은
14E6 * 4 = 56 [MWh/day]이고
월 발전량은
56 * 30 = 1680 [MWh/month]이고
연간 발전량은
1680 * 12 = 20160 [MWh/year] ≒ 20 [GWh/year]

이 중 월 발전량을 전국 가구당 월 평균 전력 사용량 250 [kWh]로 나누어 보면 1680E6/250E3 = 6,720 가구가 사용할 수 있는 전력을 생산할 수 있음을 알 수 있다. 즉 태양광 발전 용량 14MW는 우리나라 약 7,000가구에 전력을 공급할 수 있는 규모이다. (일 평균 발전 시간을 4시간, 가구당 월 평균 전력 사용량을 250 [kWh]로 산정했을 때)

인체 대사량과의 비교
이제 태양 상수 및 태양 전지의 변환 효율을 가지고 인체의 에너지 대사량과 비교해 보는 것도 재미있을 것이다.

사람의 대사량은 기초 대사량 + 활동 대사량이다. 여기서 기초 대사량이란 활동을 하지 않고 단지 생명 유지만을 위해 소모하는 에너지 대사량이다. 일반적으로 몸무게 1kg당 1 [kcal/h]를 소모한다고 하므로, 몸무게 70kg의 남자 성인을 대상으로 하면, 시간당 약 70 [kcal/h]이고 하루로 계산해 보면 = 70*24 = 1680 [kcal/day] 이다. 활동 대사량은 보통의 활동을 하는 경우에 기초 대사량의 0.7배로 계산하므로 총 대사량은 1680*1.7 = 2856 [kcal/day] 이다.

이제 [kcal] 단위를 [Wh]로 바꾸어 보면 1[kcal] = 1,000 [cal] = 1,000*cal_J = 4,184 [J] = 4,184*J_Wh =1.16 [Wh] 이다. 따라서, 기초 대사량은 1680*1.16 = 1948.8 [Wh] ≒ 2 [kWh] 이고 총 대사량은 2856*1.16 = 3312[Wh] ≒ 3.3 [kWh] 이다.

사람의 몸이 태양 전지로 덮여 있고 반드시 누워서 태양광 발전을 한다고 상상해 보자. 키가 170cm이고 몸톰의 평균 너비가 30cm이면, 태양광을 받는 면적은 1.70*0.3 = 0.51 ≒ 0.5 [m^2]이다. 이제 변환 효율이 100%인 경우와 16%인 경우에 대해 발전 용량을 따져 보면, 각각 840*1.0*0.5 = 420 [W] 및 840*0.16*0.5 = 67.2 [W] 이다. 여기에 태양 전지와 마찬가지로 일 평균 발전 시간 4시간을 곱하면, 각각 420*4 = 1680 [Wh/day] ≒ 1.7 [kWh/day] 및 67.2*4 = 268.8 [Wh/day] ≒ 0.3 [kWh/day] 이다. 위의 대사량과 비교해 보면, 변환 효율이 100%이면 1.7 [kWh/day]를 발전하므로 기초 대사량 2 [kWh/day]에 약간 부족하지만 근접함을 알 수 있다.

또 하나의 상상을 해 보면 인체가 전기 에너지를 먹을 수 있다면, 총 대사량이 3.3 [kWh/day]이므로 월 3.3*30 = 99 ≒ 100[kWh/month]의 전력량이면 생활할 수 있을 것이다. 전기료로 치면 약 7,000원 정도이다.

[참고] LG 태안 태양광 발전소 :
http://ko.wikipedia.org/wiki/LG_%ED%83%9C%EC%95%88_%ED%83%9C%EC%96%91%EA%B4%91_%EB%B0%9C%EC%A0%84%EC%86%8C

2010년 11월 13일 토요일

Arithmetic of Complex numbers

Representations of Complex Numbers

A complex number is defined as follows
Complex number z = x + iy (x,y : real numbers, i=√(-1))
This is called a rectangular form of it which corresponds to a point on Complex plane.

According to above, a complex number also can be represented as below.
Complex number z = Z∠θ (Z=|z|=√(x^2+y^2), θ=atan(y/x))
This is called a polar form of it.

Arithmetic of Complex numbers

For 2 complex numbers a and b, let a=x1+iy1, b=x2+iy2 in rectangular forms, then arithmetic of them become
a+b=(x1+x2)+i(y1+y2)
a-b=(x1-x2)+i(y1-y2)
a*b=(x1+iy1)*(x2+iy2)=x1x2+ix2y1+ix1y2-y1y2=(x1x2-y1y2)+i(x1y2+x2y1)
a/b=(x1+iy1)/(x2+iy2)=(x1+iy1)*(x2-iy2)/(x2^2-y2^2)=(x1x2+y1y2)/(x2^2+y2^2)+i(x2y1-x1y2)/(x2^2+y2^2)
Add and subtract are simple but multiply and divide are complicated.

However, when they are represented in polar forms as a=A∠θ1 and b=B∠θ2, multiply and divide are simply calculated as follows
a*b=A*B∠(θ1+θ2)
a/b=A/B∠(θ1-θ2)

Now with Number Mania, you can calculate complex numbers easily.

Let a = -0.34+i0.94 (1.0∠109.885), b = 2+i0.92 (2.201∠24.702)
a+b = -0.34+i0.94+2+i0.92 = 1.66+i1.86 (2.493∠48.252)
a-b = -0.34+i0.94-(2+i0.92) = -2.34+i0.02 (2.34∠179.51)
(See Fig. 1)

Also
a*b = 1.0∠109.885*2.201∠24.702 = -1.545+i1.568 (2.201∠134.587)
a/b = 1.0∠109.885/2.201∠24.702 = 0.038+i0.453 (0.454∠85.183)
(See Fig. 2)




[한국어(Korean)]
복소수의 사칙연산

복소수의 표현

복소수는 다음과 같이 정의된다.
복소수 z = x + iy (x,y : 실수, i=√(-1))
이 것을 복소수의 직교좌표형식이라 하고, 복소 평면상의 한 점에 대응한다.

위 사실에 착안하여 복소수를 다음과 같이 표현할 수도 있다.
복소수 z = Z∠θ (Z=|z|=√(x^2+y^2), θ=atan(y/x))
이 것을 복소수의 극좌표형식이라 한다.

복소수의 사칙연산

두 복소수 a와 b를 직교좌표형식으로 a=x1+iy1, b=x2+iy2 라고 할 때,
a+b=(x1+x2)+i(y1+y2)
a-b=(x1-x2)+i(y1-y2)
a*b=(x1+iy1)*(x2+iy2)=x1x2+ix2y1+ix1y2-y1y2=(x1x2-y1y2)+i(x1y2+x2y1)
a/b=(x1+iy1)/(x2+iy2)=(x1+iy1)*(x2-iy2)/(x2^2-y2^2)=(x1x2+y1y2)/(x2^2+y2^2)+i(x2y1-x1y2)/(x2^2+y2^2)
이다. 덧셈(a+b)과 뺄셈(a-b)은 간단하지만 곱셈(a*b)과 나눗셈(a/b)은 복잡함을 알 수 있다.

그런데 복소수 a, b를 극좌표형식으로 나타내면
a=A∠θ1, b=B∠θ2 라고 할 때,
a*b=A*B∠(θ1+θ2)
a/b=A/B∠(θ1-θ2) 으로 되어 계산이 간단해 진다.

이제 Number Mania를 사용하여 복소수의 사칙연산을 해 본다.

a = -0.34+i0.94 (1.0∠109.885), b = 2+i0.92 (2.201∠24.702) 라고 할 때,
a+b = -0.34+i0.94+2+i0.92 = 1.66+i1.86 (2.493∠48.252)
a-b = -0.34+i0.94-(2+i0.92) = -2.34+i0.02 (2.34∠179.51)
을 얻는다. (Fig. 1 참조)

또한
a*b = 1.0∠109.885*2.201∠24.702 = -1.545+i1.568 (2.201∠134.587)
a/b = 1.0∠109.885/2.201∠24.702 = 0.038+i0.453 (0.454∠85.183)
을 얻는다. (Fig. 2 참조)




2010년 11월 7일 일요일

How long will the sun shine?

The sun shines by nuclear fusion. Thus, the questions above, is the same as how long will the sun's nuclear fusion last?

Fusion of the sun mainly consists of proton - proton reactions.

4P->1Alpha+2e(+)+Energy (P: proton, Alpha: alpah particle(nucleus of a helium atom), e(+): positron)
Mass defect : m = 4P – (1Alpha+2e(+)) = 4P – He
(The sum of mass of 1 alpha particle and 2 positrons nearly equals to that of a helium atom.)

Using Number Mania, calculate : 4*p_mass-(He_atomwt*amu) = 4.401E-29 [kg]
According to Einstein's mass - energy equivalence equation,
E = m*c^2 = ans*c^2 = 3.956E-12 [J]
(where ans means not keying that word but clicking ans button)
* Use Eng Mode instead of Fix Mode to display too small numbers.

Now divide the sun's power by above the fusion energy, and the number of times per second can be obtained.
Sun_power/ans = 9.758E+37

Sun's mass defect per second, M : ans*4*p_mass = 6.528E+11 [kg/sec]

Finally, if Sun's mass is divided by above, Sun_mass/ans = 3.048E+18 [sec]
which can be converted to years
ans/3600/24/365 = 9.666E+10 = 1000E8 [year]

In addition, above energy 3.956E-12 [J] can be converted to electron-volt unit as follows
3.956E-12/e_charge = 2.469E+7 [eV] = 24.7 [MeV]


[한국어(Korean)]
태양은 언제까지 빛날 것인가?

태양은 핵융합으로 빛을 낸다. 따라서 위 질문은 태양의 핵융합이 언제까지 지속될 것인가와 같다.

태양의 핵융합은 다음과 같은 양성자-양성자 반응으로 이루어 진다.
4P->1Alpha+2e(+)+에너지 (P: 양성자, Alpha: 알파입자(헬륨원자의 원자핵), e(+): 양전자)
이 때 질량결손 m = 4P – (1Alpha+2e(+)) = 4P – He
(1개의 알파입자와 2개의 양전자의 질량의 합은 헬륨원자의 원자량과 거의 같다고 본다)

수 매니아로 계산하면
4*p_mass-(He_atomwt*amu) = 4.401E-29 [kg]
아인슈타인의 질량-에너지 등가식을 이용하여 에너지로 환산하면
E = m*c^2 = ans*c^2 = 3.956E-12 [J]
(여기서 ans는 ans 버튼을 누르는 것을 의미한다. ans라는 문자를 입력하는 것이 아님을 유의한다.)
* 너무 작은 수를 표시하기 위해 Fix Mode대신 Eng Mode를 사용하세요

이제 태양의 복사속(출력)을 위 에너지로 나누면 초당 핵융합 횟수를 구할 수 있다.
Sun_power/ans = 9.758E+37

태양의 초당 질량결손은 M = ans*4*p_mass = 6.528E+11 [kg/sec]
이제 태양의 질량을 초당 질량결손으로 나누면 Sun_mass/ans = 3.048E+18 [sec]
년으로 환산하면 ans/3600/24/365 = 9.666E+10 = 1000E8 [year] (약 1,000억년)

참고로 위에서 핵융합 한 번의 에너지 3.956E-12 [J]를 전자볼트 단위로 환산하면
3.956E-12/e_charge = 2.469E+7 [eV] = 24.7 [MeV]이다

2010년 11월 6일 토요일

Help for Number Mania (日本語)

数 マニア


バージョン : 2.0β


プログラムの概要 :
単位と数値と計算について、あなたが探していたまさにそのアプリケーション!

 数と関連する3つの主要な機能を提供します。
単位の換算 – 既存の単位換算とは違って、差別化された機能を提供します。
数値 – さまざまな種類の数をDB化し見せてくれて計算する機能と連携されています。
計算 – 来の計算機アプリケーションとは概念と次元を異にした計算機能を提供します。(変数や定数をサポートし、複素数と行列の計算など)


使用方法 :

1. 単位の換算
単位のボタンを押すと、ユニットの種類の一覧が表示されます。必要な単位の種類を選択します。最大24個の単位が表形式で表示されます。基本単位をタッチします。これにより、基準単位を1(または0)としたとき、他の単位の値を計算して示しています。

基本単位の値を1(または0)以外の値にすることを望むの基準単位を押したままにします。これにより、値の入力]ウィンドウが表示されます。 値を入力し、[OK]ボタンをクリックすると、標準モジュールを入力した値とそれに対応する他の単位の値を計算して示しています。

2. 数値
数値ボタンを押すと数のカテゴリ別のタブが表示され、最初のタブのカテゴリーに該当するができますがリストに表示されます。リストの各項目は2行になっています。 上の行に、名前とシンボルが表示されます。 下の行の値の単位が表示されます。

名前と記号をよく見ておいての計算機能を使用する場合、変数の入力]ウィンドウで呼んで来ることのために使用することができます。

アイテムを長く押すと、値の記号をクリップボードにコピーすることができるメニューが表示されます。 ここで、コピーした内容は、計算機能のが、入力ボックスに貼り付けることができます。もちろん、他のアプリケーションにも貼り付けることができます。


* 直接内蔵DBのデータを修正することを希望するユーザーたちのための単位の画面とする画面で、メニューをクリックすると、単位と数値を変更することができるダイアログが表示されます。変更(追加を含む)、および削除をすることができます。 単位の場合、温度は一定なので、変更することはできません。また、数の場合は、カテゴリの追加と削除はサポートされません。

3. 計算
3つの入力画面
計算ボタンを押すと、計算機の画面に切り替わります。 メイン画面は、数を入力するか、またはモードを変更するために使用されていることが入力画面です。上から2行目の文字の入力ボックスをタッチすると、文字入力画面に変わります。最後にすることが、入力画面のf(x)ボタンを押すと、関数の入力画面に変わります。

数値入力ボックスと文字入力ボックス
計算機の画面の一番上の行が、入力ボックスに数を直接入力します。変数または文字定数を入力するには、2番目の行の文字入力ボックスを使用しています。文字の入力ボックスをタッチすると、文字の入力ボックスに入力フォーカスが移動し、画面下のボタンが文字入力のボタンたちで置き換えられます。他の文字を使用して、文字定数を検索するには、文字入力ボックスを長く押してください。文字の入力]ボックスで、変数は@で始まる英数字です。 そのほか、他の文字を入力すると、あらかじめ定義された文字の定数を自動補完機能を使用して、入力することができます。

オートコンプリートリストから選択をすると、すぐにできる入力ボックスに入力され、画面にもできるの入力画面に戻ります。=ボタンを押してものような働きをします。しかし、CLボタンを押すと、すべての入力をキャンセルして数入力画面に戻ります。

オートコンプリートの一覧は、次の文字を入力するために、約1.5秒間だけ見られて消えます。文字の入力ボックスをタッチすると、表示と非表示を交互にします。

数値入力ボックスの編集
数値入力ボックス内で、編集にカーソルを移動することができます。左半分をタッチすると左に,右半分をタッチすると右に移動します。最前列をタッチすると先頭に、最後につけをタッチすると末尾に移動します。


関数の使用方法
数値入力画面で、f(x)ボタンを押すと、画面下のボタンは、関数の入力ボタン々と変わります。関数を選択すると、選択した関数名がすぐにできる入力ウィンドウに入力され、画面にもできるの入力画面に戻ります。

数式を使用する方法
数値入力画面で、[数式]ボタンをクリックすると、いくつか事前に入力された式を見ることができます。 この数式の表現法を注意深く見たのだが、直接数式を入力すると、参考にしてください。数式をタッチして選択]ボタンをクリックすると、数式が入力ウィンドウに入力されます。 この状態で、=ボタンを押すと、最初の変数から値の入力を要求している、

@変数名=?が表示されます。 値を入力し、=ボタンを押すと、変数に値が代入されます。 すべての変数の入力をこのようにして、最後の=のボタンをクリックすると、計算が実行されます。

計算結果の表示
計算結果は、デフォルトでは、複素数で表示されます。 虚数個存在しないか、非常に小さい場合は、シルスブマン表示されます。Engモードでは、小数点3桁の指数形式で表示されます。Fixモード(デフォルトモード)では、指数形式を使用せずに表示します。 Fixモードでは、あまりにも小さい数は0と表示されます。 (この時Engボタンを押すと、すぐにEngモードに変換して表示されます。)

計算に使用されている角度の基本単位はDegです。Radボタンを押すと、次の計算からRadianを使用しています。数値入力ボックスに表示される計算結果は、直交座標形式の複素数ですが、文字の入力]ボックスに、極座標形式の複素数にも同時に表示されるので、より便利に、結果を確認することが悪くなってしまいました。ansボタンを押すと、直前の結果を読み込みます。

統計機能
統計のための別の関数は提供されません。しかし、基本的な統計計算は、履歴管理機能を利用して行うことができます。すべての計算結果は履歴として保存されるため、履歴ボタンをクリックして、履歴の管理]ウィンドウを浮かした後、以前の履歴をすべて削除した後、新たにスドゥルウル入力し、履歴の管理]ウィンドウで、統計情報]ボタンをクリックすると、基本的な統計値を計算して示しています。


4. 行列計算

* 制約事項 : 1) 現在は実行列だけをサポートしています。複素行列は、今後サポートする予定です。2) 関数の合成はサポートしていません。また後日対応する予定です。

行列モード
計算画面の右上に"->行列"ボタンを押すと、行列モードに切り替わります。もう一度押すと、通常の(スカラ)モードに戻ります。

行列の入力
行列を入力するための3つの方法があります。

最初の方法は、履歴機能を使用することで、次の手順を実行します。まず、数や数式を入力し、Execボタンをクリックします。これにより、一つの要素が履歴として保存されます。このように作ろうとする行列のすべての要素を入力します。そして、履歴ボタンを押して、履歴の管理ダイアログを浮かべた後、右下にある行列ボタンをクリックします。

行列の保存ダイアログで、名前(英数字)および行と列の数を入力して保存ボタンを押すと一つの行列がDBに格納されます。行列の名前には、行列を表すための#文字が自動的について保存されるので、後で使用するときは、#を付けて使用してください。

2つ目の方法は、直接することが、入力ボックスに入力する方法として、次の手順を実行します。
例) #a=[1,2,3;4,5,6;7,8,9]
行列の名前を最初に入力し、=の記号を入力し、角かっこ内の数や数式を入力します。列の区分は、として行の区切りは;としています。

3つ目は、外部からの*. csvファイルを読み込む方法です。ただし、この方法を使用するには、まず、/ sdcard/ NumberMainaフォルダに*. csvファイルが事前に作成されている必要があります。(一般的なテキストエディタを使用して焼き付けることが出来ます。) f(x)ボタンを押して、関数の入力画面への切り替え後、右下のfile]ボタンをクリックすると、ファイルを管理するダイアログが表示されます。目的のファイルを選択してインポート]ボタンをクリックします。

そのほかに次の方法で2つの行列の行または列の方向に組み合わせることができます。
(行方向の併合)#f=[#d;#e]
(列方向の併合)#c=[#a,#b]

関数の使用方法
eye : 一つの引数を受けて単位行列を生成します。
(例. eye(3) 또는 #i3=eye(3))
zeros : 一つまたは2つの引数を受け取り、すべての要素が0である行列を生成します。
(例. zeros(4,3) 또는 #z3=zeros(3))
ones : 一つまたは2つの引数を受け取り、すべての要素が1である行列を生成します。
(例. ones(4,3) 또는 #one3= ones(3))
rand : 一つまたは2つの引数を受け取り、乱数で構成された行列を生成します。
(例. rand(4,3) 또는 #rand3= rand(3))
reshape : 既存の行列の行と列(サイズ)を変更して、新しい行列を生成します。
(例. #b=reshape(#a,4,3))
diag : 既存の行列の対角要素で構成される列ベクトルを生成します。
(例. #c1=diag(#a))

' : 既存の行列の転置行列を生成します。
(例. #at=#a') (注意:この時点で行列の要素は、風に扱われるため、値をEvalされていません。値をEvalするには、以下のEval関数を追加的に使用しなければなりません。)
inv : 逆行列を求めます。
(例. #ainv=inv(#a))
det : 行列式を求めます。
(例. det(#a))
size : 行列のサイズを2x1行列で求めます。
(例. size(#a))
rank : 行列の係数を求めます。
(例. rank(#a))
norm : 行列やベクトルの2-賭けることを求めます。
(例. norm(#a))

lu : 正方形の行列のLU分解を実行します。
(例. [#al,#au]=lu(#a))
qr : m>= nの行列のQR分解を実行します。
(例. [#aq,#ar]=qr(#a))
eig : 行列の固有値分解を実行します。
(例. [#av,#ad]=eig(#a))
svd : 行列の特異値分解を実行します。
(例. [#au,#as,#av]=svd(#a))
chol : 行列のコレスキー分解を実行します。
(例. #al=chol(#a))
roots : ベクトル(mx1または1xn行列)の要素を係数とする多項式のグンドゥルウル求めます。
(例. roots(#poly)

exp : 行列指数関数を実行します。
(例. exp(#a))
^ : 行列累乗関数を実行します。
(例. #a^3)
dot : 2つのベクトルの内積を求めます。
(例. dot(#v1,#v2))
cross : 2つの3次元ベクトルの外積を求めます。
(例. cross(#v1,#v2))
trace : 行列の対角合を返します。
(例. trace(#a))
eval : 行列の要素を評価しています。つまり、数式になっている要素の値を計算します。
(例. eval(#a))

db : 内蔵dbに保存された行列を管理するためのダイアログを表示します。削除、名前変更、エクスポートを行うことができます。
file : 外部メモリ(パスは、/ sdcard/ NumberMania)に保存された*. csv fileを管理するためのダイアログを表示します。削除、検索、インポートを行うことができます。

Help for Number Mania (한국어)

수 매니아


버전 : 2.0β


프로그램 개요 :
수와 관련된 세 가지 메인 기능을 제공합니다.

단위 환산 – 양과 질에서 기존의 단위 환산기와는 다른 차별화된 기능을 제공합니다.
– 다양한 범주의 수를 DB화하여 보여 주고 계산 기능과 연계됩니다.
계산 – 기존의 계산기 어플과는 개념과 차원을 달리한 계산 기능들을 제공합니다. (변수 상수 지원, 복소수 및 행렬 계산 등)


사용 방법 :


1. 단위 환산
단위 버튼을 누르면 단위 유형 목록이 나타납니다. 원하는 단위 유형을 선택합니다. 최대 24개의 단위가 표 형태로 나타납니다. 기준 단위를 터치합니다. 그러면 기준 단위를 1(또는 0)로 했을 때의 다른 단위들의 값을 계산하여 보여 줍니다.

기준 단위의 값을 1(또는 0)이 아닌 다른 값으로 하고 싶으면 기준 단위를 길게 누릅니다. 그러면 값 입력 창이 나타납니다. 값을 입력하고 확인 버튼을 누르면 기준 단위를 입력한 값으로 하고 그에 해당하는 다른 단위들의 값을 계산하여 보여 줍니다.

2. 수
수 버튼을 누르면 수의 범주별로 탭이 나타나고 첫 번째 탭의 범주에 해당하는 수들이 목록으로 표시됩니다. 목록의 각 항목은 두 줄로 되어 있습니다. 윗 줄에는 이름과 기호가 표시됩니다. 아랫 줄에는 값과 단위가 표시됩니다. 이름과 기호를 잘 보아 두었다가 계산 기능을 사용할 때, 변수 입력 창에서 불러 오기 위해 사용할 수 있습니다.

항목을 길게 누르면 값이나 기호를 클립보드에 복사할 수 있는 메뉴가 나타납니다. 여기서 복사한 내용은 계산 기능의 수 입력 상자에 붙여 넣을 수 있습니다. 물론 다른 어플에도 붙여 넣을 수 있습니다.


* 직접 내장된 DB의 데이타를 수정하기를 원하는 사용자들을 위하여 단위 화면 및 수 화면에서 메뉴을 누르면 단위와 수를 수정할 수 있는 다이얼로그가 나타납니다. 수정(추가 포함) 및 삭제를 하실 수 있습니다. 단위의 경우 온도는 고정이므로 수정할 수 없습니다. 또한 수의 경우에는 범주의 추가 및 삭제는 지원되지 않습니다.

3. 계산
세 가지 입력 화면
계산 버튼을 누르면 계산기 화면으로 전환됩니다. 기본 화면은 수를 입력하거나 모드를 바꾸기 위해 사용되는 수 입력 화면입니다. 위에서 두 번째 줄에 있는 문자 입력 상자를 터치하면 문자 입력 화면으로 바뀝니다. 끝으로 수 입력 화면의 f(x) 버튼을 누르면 함수 입력 화면으로 바뀝니다.

수 입력 상자와 문자 입력 상자
계산기 화면의 맨 윗 줄은 수 입력 상자로 수를 직접 입력받습니다. 변수나 문자 상수를 입력하려면 두 번째 줄의 문자 입력 상자를 사용합니다. 문자 입력 상자를 터치하면 문자 입력 상자에 입력 포커스가 이동하고 화면 하단의 버튼들이 문자 입력 버튼들로 바뀝니다. 한글을 사용하여 문자 상수를 찾으려면 문자 입력 상자를 길게 눌러 주십시요.

문자 입력 상자에서 변수는 @로 시작하는 영숫자입니다. 그 외에 다른 문자를 입력하면 미리 정의된 문자 상수들을 자동 완성 기능을 사용하여 입력할 수 있습니다. 자동 완성 목록에서 선택을 하면 바로 수 입력 상자로 입력되고 화면도 수 입력 화면으로 돌아 갑니다. = 버튼을 눌러도 같은 기능을 합니다. 그러나 CL 버튼을 누르면 모든 입력을 취소하고 수 입력 화면으로 돌아 갑니다.

자동 완성 목록은 다음 문자 입력을 위하여 약 1.5초 동안만 보여지고 사라집니다. 문자 입력 상자를 터치하면 보이기와 숨기기를 교대로 합니다.

수 입력 상자 편집
수 입력 상자를 편집하기 위해 커서를 이동할 수 있습니다. 수 입력 상자의 왼쪽을 터치하면 왼쪽으로, 오른쪽을 터치하면 오른쪽으로, 앞쪽을 터치하면 맨앞, 끝쪽을 터치하면 맨끝으로 이동합니다.

함수 사용 방법
수 입력 화면에서 f(x) 버튼을 누르면 화면 하단의 버튼들이 함수 입력 버튼들로 바뀝니다. 함수를 선택하면 선택된 함수명이 바로 수 입력 창으로 입력되고 화면도 수 입력 화면으로 돌아 갑니다.

수식 사용 방법
수 입력 화면에서 수식 버튼을 누르면 몇 가지 미리 입력된 수식들을 볼 수 있습니다. 이 수식들의 표현법을 눈여겨 보셨다가 직접 수식을 입력할 때 참고하여 주십시오. 수식을 터치하고 선택 버튼을 누르면 수식이 수 입력 창에 입력됩니다. 이 상태에서 = 버튼을 누르면 첫 번째 변수부터 값 입력을 요청하는 @변수명 = ? 가 표시됩니다. 값을 입력하고 = 버튼을 누르면 변수에 값이 대입됩니다. 모든 변수 입력을 이와 같이 하고 마지막 = 버튼을 누르면 계산이 수행됩니다.

계산 결과 표시
계산 결과는 기본적으로 복소수로 표시됩니다. 허수부가 없거나 매우 작으면 실수부만 표시됩니다. Eng 모드에서는 소수점 3자리의 지수 형식으로 표시됩니다. Fix 모드(기본 모드)에서는 지수 형식을 사용하지 않고 표시합니다. Fix 모드에서는 너무 작은 수는 0으로 표시됩니다. (이 때 Eng 버튼을 누르면 바로 Eng 모드로 변환하여 보여줍니다.)

계산에 사용되는 각도의 기본 단위는 Deg 입니다. Rad 버튼을 누르면 다음 계산부터 Radian을 사용합니다. 수 입력 상자에 표시되는 계산 결과는 직각좌표형식의 복소수입니다만 문자 입력 상자에 극좌표형식의 복소수로도 동시에 표시되므로 좀 더 편리하게 결과를 확인할 수 았습니다. ans 버튼을 누르면 바로 직전의 결과값을 불러 옵니다.

통계 기능
통계를 위한 별도의 함수들은 제공되지 않습니다. 그러나 기본적인 통계치 계산은 이력 관리 기능을 이용하여 할 수 있습니다. 모든 계산 결과는 이력으로 저장되므로 이력 버튼을 눌러 이력 관리 창을 띄운 후 예전 이력들을 전체 삭제한 후 새로 수들을 입력한 후 이력 관리  창에서 통계 버튼을 누르면 기본적인 통계치들을 계산하여 보여 줍니다.

4. 행렬 계산
* 제약 사항 : 1) 현재 실 행렬만 지원합니다. 복소 행렬은 추후 지원할 예정입니다. 2) 함수의 합성은 지원하지 않습니다. 이 또한 추후에 지원할 예정입니다.

행렬 모드
계산 화면의 우측 상단에 “->행렬” 버튼을 누르면 행렬 모드로 전환됩니다. 다시 한 번 누르면 일반 (스칼라) 모드로 돌아옵니다.

행렬의 입력
행렬을 입력하는 세 가지 방법이 있습니다.

첫 번째 방법은 이력 기능을 사용하는 것으로 다음과 같이 합니다. 먼저 수 또는 수식을 입력하고 Exec 버튼을 누릅니다. 그러면 하나의 요소가 이력으로 저장됩니다. 이와 같이 만들고자 하는 행렬의 모든 요소를 입력합니다.

그리고 이력 버튼을 눌러서 이력 관리 다이얼로그을 띄운 후 우측 하단에 있는 행렬 버튼을 누릅니다. 행렬 저장 다이얼로그에서 이름(영숫자) 그리고 행과 열의 개수를 입력 후 저장 버튼을 누르면 하나의 행렬이 DB에 저장됩니다. 행렬 이름에는 행렬을 나타내기 위한 # 문자가 자동으로 붙어서 저장되므로 나중에 사용할 때는 #을 붙여서 사용하기 바랍니다.

두 번째 방법은 직접 수 입력 상자에 입력하는 방법으로 다음과 같이 합니다.
예) #a=[1,2,3;4,5,6;7,8,9]
행렬 이름을 먼저 입력하고 = 기호를 입력 후 대괄호 안에 수 또는 수식을 입력합니다. 열의 구분은 ,로 하고 행의 구분은 ;으로 합니다.

세 번째 방법은 외부로부터 *.csv 파일을 불러오는 방법입니다. 단, 이 방법을 사용하려면 먼저 /sdcard/NumberMaina 폴더에 *.csv 파일이 미리 만들어져 있어야 합니다. (일반 텍스트 에디터를 사용하여 만드시면 됩니다.) f(x) 버튼을 눌러 함수 입력 화면으로 전환 후 우측 하단의 file 버튼을 누르면 파일 관리 다이얼로그가 나타납니다. 원하는 파일을 선택하여 가져오기 버튼을 누릅니다.

그 외에 다음의 방법으로 두 행렬을 행 또는 열 방향으로 합칠 수 있습니다.
(행 방향 합침)#f=[#d;#e]
(열 방향 합침)#c=[#a,#b]

함수 사용 방법
eye : 하나의 인수를 받아 항등 행렬을 생성합니다.
(예. eye(3) 또는 #i3=eye(3))
zeros : 하나 또는 두 개의 인수를 받아 모든 요소가 0인 행렬을 생성합니다.
(예. zeros(4,3) 또는 #z3=zeros(3))
ones : 하나 또는 두 개의 인수를 받아 모든 요소가 1인 행렬을 생성합니다.
(예. ones(4,3) 또는 #one3= ones(3))
rand : 하나 또는 두 개의 인수를 받아 난수로 구성된 행렬을 생성합니다.
(예. rand(4,3) 또는 #rand3= rand(3))
reshape : 기존 행렬의 행과 열(크기)를 변경하여 새로운 행렬을 생성합니다.
(예. #b=reshape(#a,4,3))
diag : 기존 행렬의 대각 요소들로 구성된 열 벡터를 생성합니다.
(예. #c1=diag(#a))

: 기존 행렬의 전치 행렬을 생성합니다.
(예. #at=#a’) (주의: 이 때 행렬들의 요소는 식으로 취급하므로 값으로 Eval되지 않습니다. 값으로 Eval하려면 아래 Eval함수를 추가적으로 사용하여야 합니다.)
inv : 역 행렬을 구합니다.
(예. #ainv=inv(#a))
det : 행렬식을 구합니다.
(예. det(#a))
size : 행렬의 크기를 2x1 행렬로 구합니다.
(예. size(#a))
rank : 행렬의 계수를 구합니다.
(예. rank(#a))
norm : 행렬 또는 벡터의 2-노름을 구합니다.
(예. norm(#a))

lu : 정사각형 행렬의 LU 분해을 실행합니다.
(예. [#al,#au]=lu(#a))
qr : m>=n인 행렬의 QR 분해을 실행합니다.
(예. [#aq,#ar]=qr(#a))
eig : 행렬의 고유값 분해를 실행합니다.
(예. [#av,#ad]=eig(#a))
svd : 행렬의 특이값 분해를 실행합니다.
(예. [#au,#as,#av]=svd(#a))
chol : 행렬의 Cholesky 분해를 실행합니다.
(예. #al=chol(#a))
roots : 벡터(mx1 또는 1xn 행렬)의 요소들을 계수로 하는 다항식의 근들을 구합니다.
(예. roots(#poly)

exp : 행렬 지수 함수를 실행합니다.
(예. exp(#a))
^ : 행렬 거듭제곱 함수를 실행합니다.
(예. #a^3)
dot : 두 벡터의 내적을 구합니다.
(예. dot(#v1,#v2))
cross : 두 3차원 벡터의 외적을 구합니다.
(예. cross(#v1,#v2))
trace : 행렬의 대각합을 구합니다.
(예. trace(#a))
eval : 행렬의 요소들을 평가합니다. 즉 수식으로 되어 있는 요소들을 값으로 계산합니다.
(예. eval(#a))

db : 내장 db에 저장된 행렬을 관리하기 위한 다이얼로그를 띄웁니다. 삭제, 이름 변경, 내보내기를 할 수 있습니다.
file : 외부 메모리(경로는 /sdcard/NumberMania)에 저장된 *.csv file을 관리하기 위한 다이얼로그를 띄웁니다. 삭제, 조회, 가져오기를 할 수 있습니다.

Help for Number Mania (English)

Number Mania



Version : 2.0β


About :

Just for units, numbers and calculations !
Unit – Convert more units at the easier
Number – See a great variety of numbers to be used for calculation
Calc – Meet a new dimension of calculation. (Variables and Constants, Complex numbers and Matrices)


How to Use :

1. Unit
When pushing Unit button, the list of unit kinds will be displayed. Choose one. 24 units of that kind at max will be shown in a grid. Touch one which will be a reference. And then the reference will have a value of 1 and others are converted according to it.

If you want the reference to have another value, push it a little bit long. A dialog for input value will be popped up. Enter a new value and push Confirm button, with the reference of the entered value, others are converted according to it.


2. Number
When pushing Number button, several tabs will be shown and numbers of the first tab will be listed. Each item has two lines. The top line has name and symbol of the number while the bottom line has value and dimension of it. If you remember name and/or symbol of it, you can use it to enter the constant in calculation.

If you push an item a little bit long, a popup will be displayed where you can copy it as value or symbol into Clipboard for use in calculation or in another app.

* For those who want to edit the internal DB, 2 Edit dialogs are provided as MENU, one for Units and the other for Numbers. You can edit (or add) and delete it. Only temperature among units is fixed. In case of Numbers, a kind cannot be added and deleted.


3. Calculation
Inputs of 3 kinds
When pushing Calc button, a calculator will be shown. The default screen has buttons for number-input. If touch the second text box from the top (which is character-input box), buttons are changed to character-input. For other charaters (eg. Korean), please push the text box a little bit long. At third, when pushing f(x) button, they are changed to function-input.

Characters
Within character-input box, if it's started with @, which will be a variable. Others will be constants. In case of constants, Auto Complete is supported for your convenience. If you select one among Auto Complete list, that constant\'s symbol will be entered into number-input box and the input focus also will move into it. = button will do the same. But, if you push CL button, all entered in character-input box will be discarded and the input focus will return to number-input box.

Auto Complete list only shows about 1.5 seconds for next input. Touching character-input box will toggle between showing and hiding it.

Movements of the cursor for edit
Within number input box, you can move the cursor to edit. Touch the left half for left move while the right half for right move by one character. And touch the head(most-left) for move first and the tail(most-right) for move last.

Formula
If you push 4mul button, you can see several pre-saved formulae which will help you understand how the formula should be formed. Choose one and it will be input into number-input box. When you push = button, a prompt to request value of a variable will be displayed. Enter a value and = button. Repeat this as many as the number of variables and push = button to calculate the formula.

Display of the result
The result will be shown in Complex number. If it has no imaginary part or is too small, only its real part will be shown. In Eng mode, it has the exponent form with 3 places of deicimal while in Fix mode (Default), it has no exponent, therefore, which can be 0 if it's too small. In that case, if you push Eng button, it will bi displayed as Eng mode immediately.

For angle, Deg is used as the default. If you push Rad button, it will be used after that. The result in number-input box is in rectangular form of the complex number. The result is displayed in the character-input box as the polar form of it, too. This is useful for checking the result. If you push ans button, The previous result will be recalled for the next calculation.

Statistic function
Any dedicated function for statistics is not provided. History functions, however, will give some statistical calculations. When pushing Stat button, History dialog will be shown. There, clear all histories and enter numbers for statistical calculation. And then push Stat button in History dialog. Some statistics will be calculated and displayed.

4. Matrix Calculation
* Restrictions : 1) Only real matrices are supported at this point. Complex matrices will be supported later. 2) Composite functions are not supported which will be also supported later.

Matrix Mode
For matrix calculation, push "->Matrix" button on the title bar of the Calc screen. To return to scalar calculation, push it again.

3 ways to input a matrix
There are 3 ways to input a matrix.

The first method is to use History function as follows. Input a number or an expression and push Exec button, which is stored as one element in History. And repeat this until the last element is entered in History. And click Hist button. In History dialog, you can find Matrix button. After push it, enter a name and the numbers of rows and columns to create a matrix into DB.

To indicate the name of a matrix, # character will be attached to the front of the name automatically while you should add # to the name of it to use a matrix later.

The second way is to enter elements directly as below.
ex) #a=[1,2,3;4,5,6;7,8,9]
Enter the name of a matrix starting with #. And key-in = (which means substitution) and elements. Use , for column delimiter and ; for row delimiter.

The third method is to import a *.csv file from the outside. For this, pre-created *.csv files should already exist in the /sdcard/NumberMaina folder. (To make one, you can use any text editor.) After switching to function-input screen by clicking f(x) button, push "file" button. There, you can import a *.csv file into DB.

In addition, you can merge two matrices as follows.
(Row dir.)#f=[#d;#e]
(Column dir.)#c=[#a,#b]

Functions
eye : Create an identity matrix
(ex. eye(3) or #i3=eye(3))
zeros : Create a matrix with all 1
(ex. zeros(4,3) or #z3=zeros(3))
ones : Create a matrix with all 0
(ex. ones(4,3) or #one3= ones(3))
rand : Create a matrix with random elements
(ex. rand(4,3) or #rand3= rand(3))
reshape : Reform a matrix
(ex. #b=reshape(#a,4,3))
diag : Create a column vector with diagonal elements of a given matrix
(ex. #c1=diag(#a))

' : Transpose a matrix
(ex. #at=#a')
inv : Calc an inverse matrix
(ex. #ainv=inv(#a))
det : Calc a determinant
(ex. det(#a))
size : Get a dimension
(ex. size(#a))
rank : Calc a rank
(ex. rank(#a))
norm : Calc 2-norm
(ex. norm(#a))

lu : LU decomposition of a square matrix
(ex. [#al,#au]=lu(#a))
qr : QR decomposition of a matrix with m>=n
(ex. [#aq,#ar]=qr(#a))
eig :Eigen values decomposition
(ex. [#av,#ad]=eig(#a))
svd : Singular values decomposition
(ex. [#au,#as,#av]=svd(#a))
chol : Cholesky decomposition
(ex. #al=chol(#a))
roots : Calculate roots of a polynomial corresponding to a vector
(ex. roots(#poly)

exp : Matrix exponential
(ex. exp(#a))
^ : Matrix power
(ex. #a^3)
dot : dot product of two vectors
(ex. dot(#v1,#v2))
cross : cross product of two 3-dimension vectors
(ex. cross(#v1,#v2))
trace : Sum of diagoanal elements
(ex. trace(#a))
eval : Evaluate a matrix
(ex. eval(#a))

db : Delete, rename and export matrices stored in DB.
file : Delete, view and import *.csv fils under the /sdcard/NumberMania folder of the external storage.

Screenshots of Number Mania

Here are some screenshots of Number Mania.











For those of V2.0β2 Update, please refer to the below.

http://holoprogrammer.blogspot.com/2011/05/numbermania-v20-update.html


Welcome to Number Mania

Thank you for buying Number Mania!

Number Mania is, as far as I know, the only calculator app that supports the followings:
1. Formulae with Variables and Constants with built-in DB.
2. Complex Numbers not only in Rectangular forms but also in Polar forms.
3. Matrix calculations including the expressions
4. More Units for Conversions, which Users can add/modify/delete.


-NumberMania V2.0β6 Update :
 http://holoprogrammer.blogspot.com/2012/06/numbermania-v206-update.html

-NumberMania V2.2 Update :
 http://holoprogrammer.blogspot.kr/2012/12/numbermania-v22-update.html

-Usage of Variables :
 http://holoprogrammer.blogspot.com/2012/05/usage-of-variables.html

-Tips for Matrix Calc :
 http://holoprogrammer.blogspot.com/2012/05/tips-for-matrix-calc.html

-Usage of %(percent)
 http://holoprogrammer.blogspot.kr/2012/12/usage-of-percent.html

-Comparision Number Mania with Matlab for Matrix/Vector Calculation : Since V2.3
http://holoprogrammer.blogspot.kr/2013/02/comparision-number-mania-with-matlab.html

-NumberMania V2.4 Update :
http://holoprogrammer.blogspot.kr/2013/03/numbermania-v24-update.html