메뉴 건너뛰기

imp

상수 e에 대한 글

박영식2007.08.26 21:12조회 수 2168댓글 0

    • 글자 크기

 상수 e는 다음과 같은 과정에서 느닷없이 나타나기도 한다. (1) 0과 1사이에 있는 임의의 수를 선택한다. (2) 같은 구간에서 또 하나의 수를 선택하여 이전의 수에 더한다. (3) 동일한 과정을 반복한다. 이런 식으로 0과 1사이에서 임의로 선택된 수를 계속더해 나간다고 했을 때, 총합이 1보다 커지려면 평균적으로 몇 번을 더해야 할까? 답 : 2.718523... <리만 가설 중>


 수 e는 수학적 중요도로 볼 때 원주율(파이)와 대등하고, 통상 얌전한 영어 소문자로 쓰여져 친숙한 느낌을 주는, 하지만 그래도 그 속을 이해하기가 보통 쉽지 않은 자연로그의 밑수 e는 대략 그 값이 2.718281828459045235360287471352662497이다.
상수 e는 18세기 중엽에 스위스의 수학자 오일러가 처음으로 세상에 소개한 수이다. 상수 e에 대한 표준적 정의를 처음 접하는 사람에게는 그 정의가 약간 복잡하고 어렵게 보일지 모른다.

수 e는 '정수 N이 점점 커질 때, 일반항이
(1+1/N)^N
인 수열의 극한값'으로 정의된다. N이 2일 때, 위의 식은
(1+1/2)^2=(3/2)^2=2.25
가 된다. N이 3일 때 그것은
(1+1/3)^3=(4/3)^3=2.37
이고, N의 값이 연속적으로 커짐에 따라 차례로
(1+1/4)^3=(5/4)^3=2.44, (6/5)^5, (7/6)^6,......
이렇게 계속된다. 따라서 e는
(10,001/10,000)^10,000=2.718145
와 아주 가깝다. 또한 상수 e는
(1,000,001/1,000,000)^1,000,000
에 더 가깝다.

비록 정의가 추상적이기는 하지만 이와 같이 e를 정의하면, 우리는 은행의 서류나 복리계산에 빠짐없이 나오는 e의 중요한 역할을 눈치챌 수가 있다.
e는 자연로그 함수의 밑수이다. 이 말을 명확이 이해하려면 까다로운 로그에 대한 약간의 부연 설명이 필요하다. 예를 들어, 10의 제곱은 100이므로 100의 상용로그는 2이다. 10의 세제곱은 1000이므로 1000의 상용로그는 3이다. 그리고 10의 2.7제곱은 500이므로 상용로그는 2.7이다. [log(500)=2.7] 한편, 어떤 수의 자연로그는 그 수와 같아지는 e의 지수를 나타낸다. 따라서, e의 (6.9)제곱은 1000이므로 1000의 자연로그는 (6.9)가 된다. [ln(1000)=6.9] e의 (4.6)제곱은 100이므로 100의 자연로그는 (4.6)이고, e의 (0.7)제곱은 2이므로 2의 자연로그는 0.7이다. 특히 마지막 수 2의 자연로그인 (0.7)은 재정학에서 매우 중요하다. 상수 (0.7)을 당신이 받는 이율로 나눈 값이 바로 당신의 원금이 두 배가 되는 데 걸리는 년수가 된다. 따라서 이율이 10%(0.10)일 때 당신의 원금이 두 배가 되는 데 걸리는 년수는 7년(0.7을 0.1로 나눈값)이고, 이율이 14%이면 원금이 두 배가 되는 년수는 5년(0.7을 0.14로 나눈값)이다.
이제부터 상수 e가 연출하는 믿기지 않는 현상을 몇 가지만 살펴보자. 우선 부교수를 1명 채용하고자 N명의 후보를 면접해야 하는 S대학 M학과가 있는데, 그 학과는 아래의 3가지 면접 원칙을 가지고 있다고 하자.
첫째, 후보의 면접이 끝나는 즉시 당사자에게 채용 여부를 알린다.
둘째, 일단 면접에서 떨어진 사람을 다시 면접해서 채용할 수는 없다.
면접이 마지막 사람까지 가면 그는 자동적으로 채용된다.
이 3가지 면접 원칙으로 M학과는 과연 자신이 원하는 최선의 후보를 채용할 수 있을까? M학과가 최선의 후보를 채용할지 여부는 아무도 장담할 수 없다. 그러나 M학과는 자신이 원하는 최선의 호보를 채용할 수 있는 확률은 극대화할 수 있는데, 그 전략은 통상 다음과 같이 세워진다. 먼저 Kn 따라서 만약 40명의 후보를 무작위 순서로 면접한다면 최적의 전략은 즉석에서 40명의 37%인 처음 15명을 무조건 떨어뜨린 다음 그의 앞 사람 모두보다 더 나은 후보를 부교수로 채용하는 것이다. 이런 방법을 사용해서 최선의 후보를 채용하게 될 확률 또한 아주 이상하게 1/e 또는 약 37%이다. 어떤 전략도 37%보다 더 좋은 확률을 가져다 주진 않는다. 비록 전제 조건인 M학과의 면접 원칙에 부자연스러운 면이 없진 않지만, 배우자를 선택하기 위한 '맛선 보기'와 같은 유사한 문제들 역시 이와 동일한 접근법과 논법이 사용된다.
상수 e는 무리수(두 정수의 비로 나타낼 수 없기 때문에 비순환 무한소수)인 동시에 초월수(대수방정식의 근이 될 수 없는 수)이다. 그럼에도 불구하고 e는 중요한 수학공식과 정리에 매우 흔하게 나타난다. 수 e는 삼각함수, 기하학, 미분방정식, 무한급수, 해석학 등 무수히 많은 서로 다른 수학의 분야에서 항상 필수적으로 등장하는 참으로 신출귀몰하고 의미심장한 수이다.
(1998년 3월 21일 하창호)

~ : 틸드(tilde), | : 버티컬바(vertical bar), ^ : 서큠플렉스(Circumflex)
! : 익스클레메이션 포인트(Exclamaion Point) ` : 그레이브(Grave)

박영식 (비회원)
    • 글자 크기

댓글 달기

conv와 dsb의 비교

[원문보기]

t=linspace(0,1,1000);
g1 = cos(2*pi*100*t)+cos(2*pi*200*t); % target signal.
G1 = fftshift(fft(g1));
G1 = G1.* conj(G1) / 1000;
in = cos(2*pi*50.*t); % input signal.
IN = fftshift(fft(in));
IN = IN.* conj(IN) / 1000;
g = conv(g1,in); % convolution.
%dsb = g1+in; % DSB Mod.
dsb = g1.*in; % DSB Mod.
f=[-500:499];
G=fft(g);
G=fftshift(G);
realG = G.* conj(G) / 1000;


DSB=fftshift(fft(dsb));
realDSB = DSB.* conj(DSB) / 1000;


subplot(4,1,1);
plot(f,G1);
title('target signal');


subplot(4,1,2);
plot(f,IN);
title('input signal');


subplot(4,2,5);
plot(t,g(1:1000));
axis([0 0.05 -5 5]);
title('convolution signal in time');


subplot(4,2,7);
plot(f,realG(1:1000));
title('convolution signal in freq.');


subplot(4,2,6);
plot(t,dsb);
axis([0 0.05 -5 5]);
title('DSB signal in time');


subplot(4,2,8);
plot(f,realDSB);
title('DSB signal in freq.');

퓨리에 변환을 통한 주파수영역으로 전환

[원문보기]
t=linspace(0,1,1000);
g=cos(2*pi*100*t)+cos(2*pi*200*t);
dt=t(2)-t(1);
df=1/dt/(1000-1);
f=[-500:499];
G=fft(g);
G=fftshift(G);
realG = G.* conj(G) / 1000;
subplot(2,1,1);
plot(t,g);
axis([0 0.05 -1.5 2]);
subplot(2,1,2);
plot(f,realG);
axis([-300 300 0 250]);

cos함수의 주파수영역에서 보기

[원문보기]
t = 0:0.001:0.6;
x = cos(2*pi*150*t)+cos(2*pi*50*t);
y = x;
subplot(2,1,1)
plot(1000*t(1:50),y(1:50))
title('Signal')
xlabel('time (milliseconds)')
Y = fft(y,512);
Pyy = Y.* conj(Y) / 512;
f = 1000*(0:256)/512;
subplot(2,1,2)
plot(f,Pyy(1:257))
title('Frequency')
xlabel('frequency (Hz)')

모니터에서 연기가 나면서 타는 냄새가....

[원문보기]

모든 전자제품에서 타는 냄새는 탄탈 캐패시터(Taltal Capacitor)가 파손되어


타기 때문에 생깁니다.


아마 노트북 분해하고 속을 보면 까맣게 탄 자국이 있을 것입니다.


 


탄탈이 타는 이유는 허용할 수 있는 전압치(내압이라고 합니다)가 있는데 이보다 과한 전압이 들어오는 경우


내부에 있는 전해용액이 증발하여 타게 됩니다.


 


처음 사용시엔 이상이 없어 보일 수 있어도, 시간이 지남에 따라 조금씩 조금씩 증발하여 없어지기 때문에 어느 날 갑자기 냄새가 나면서 타게 됩니다.


 


탄탈이 타게되면 전원(Power)과 접지(Ground)가 붙어서 단락(Short)이 발생하여 과전류가 흐르기 때문에 노트북 내부 회로가 보호를 위해 꺼진 것입니다.


 


따라서, 잠깐 켜진다고 다시 사용하면 파손된 탄탈외에 다른 부품들도 파손될 수 있으므로 수리전엔 사용하지 마세요.


 


아마 수리센터로 가면 메인보드를 갈아야 한다고 할 수도 있습니다.


하지만, 이것은 분명히 메인보드 설계오류이기 때문에 따질 필요는 있습니다.


 


최근에는 이러한 탄탈 불량현상 때문에 탄탈은 사용하지 않고 설계하는 추세입니다.

zbxe 작업일지(11일차)

[원문보기]
1. syn.php 수정
   - 배율 값 1.5
   - syn node text corrective mapping
2. zbxe.php 수정
   - 최근 자신 게시글 출력 및 글쓰기 버튼 클릭시 자동 태그 기능 링크
   - 좌표가 없을 때 예외처리
3. syn_sch.php
   - 업데이트가 아닐 때라고 해제버튼 추가
4. 회원추가
   - 10여명
   - 박영식 커리어플랜에 5명 적용 및 test

창업일지 - 세금계산서, 부가세신고

[원문보기]
1. 세금계산서는 부가세(VAT)를 명기하고, 거래내역을 잘 볼 수 있게 하기 위해 작성하는 것으로 이해된다. 사실 알고 보면 별거 없다. 비즈폼에 가입하면 좋은 EXCEL서식이 있다. 이것을 쓰면 좋을 것 같다. 음..... WEB SOLUTION으로 만들 수 있을까?
 하면 못 할 것 없겠지....

2. 부가세신고는

개인사업자는 신고하는 번거로움을 줄이고자 1년에 두번 신고합니다.


1기확정(1~6월분을 7/25까지), 2기확정( 7~12월분은 다음연도 1/25까지) 이렇게 두번 신고를 들어갑니다.


대신 1기 예정, 2기 예정때는 세무서에서 전기부가세신고된 납부세액의 50%를 고지서발송합니다.


이 예정고지서를 납부하면 확정신고시 납부세액에서 차감한 세액을 납부합니다.
------------------------------------------------------------------------
위와 같이 하면 된다.
------------------------------------------------------------------------
세금계산서 발행해 달라고 하면 공급가액(거래금액)에 10% 부가세를 받으시면 됩니다


물론 이돈은 나중에 부가세 신고하실때 나라에 내셔야 하는 돈입니다.
------------------------------------------------------------------------
 부가세를 포함으로 자동 계산해 주는 계산툴이 호프집에 존재하는 것 같다. 그래서 12000원이 지불금이라면, 역 계산을 통해, 10910원이 지불금 부가세가 10%인 1090원정도가 붙어서 12000원이 지불금으로 되는 것이다. 이런 걸 만들어야 겠다.

zbxe 작업일지(10일차)

[원문보기]
1. syn_sch.php 수정
  - 검색결과를 보여주고, 결과로 나온 유저의 플랜 링크 수정
2. planning.php와 xe_official 내용 수정
  - 합성도 보기 메뉴와 mid값에 따른 보여주기 결과 표시.
3. simple.php 수정
  - vector의 색을 설정 값에 따른 색으로 보여줌.

매트랩 구현 사전 학습

[원문보기]
Σa_n Sin(N x X)의 계산
n은 1, 3, 5로 했으며,
-90에서 501도까지를 rad로 환산하여 계산하였다.

결과값은 img와 같이 얻었다.

홀수의 N만 넣으면, 구형파와 유사한 모양을 띤다.

img는 excel chart이다.

sin x + (sin 3x) / 2 + (sin 5x) / 5 의 그래프.

zbxe 작업일지(9일차)

[원문보기]
1. planning.php 수정
  - login 정보가 없으면, planning관련 메뉴 숨김

2. syn.php 개선
  - syn 노드이면, syn 노드 끼리 동기화
  - syn 노드의 내용은 visibility를 hidden으로 설정
  - syn 노드 user의 내용은 visibility를 사용자(syn user)로 표시
  - extmul을 이용한 확장

zbxe 작업일지(8일차)

[원문보기]
1. syn.php 생성
  - while문으로 배열 fetch를 이용한 code 효율화
  - syn되어 있는 user의 plan load 및 출력
  - path color의 저장 값 사용

zbxe 작업일지(7일차)

[원문보기]
1. file 업로드 추가
  - upload.php , upload_e.php

2. file 업로드 예외처리
  - jpg, JPG만 가능
  - 1K이하만 가능

3. opener.location.reload(); 명령어 적용
  - popup을 일으킨 대상 프레임의 릴로드

창업일지 - 부가통신사업신고필증 수령

[원문보기]
1. 정보통신부 인터넷 민원을 통해 서울 체신청으로 부터 수령하였다.

zbxe 작업일지(6일차)

[원문보기]
1. zbxe.php파일의 예외처리
   - table이 존재하지 않을 때(유저 srl이 올바르지 않을 때) exit();

2. zbxe에 api 추가
   - 네이버 맵 api
   - 다음 동영상 api

3. 페이지 추가
   - 광고 안내
   - 메뉴 제작

워크넷(한국고용정보원)의 직업적성검사결과

[원문보기]
1시간 이상이 걸려서 18개 항목의 검사를 받았다.

예상대로 객관성이 결여된 정확하지 않은 정보가 나왔다.

책을 많이 읽고 있는터라 언어력과 추리력이 높게 나왔고, 계산을 소홀이 하고 있기에 계산력이 부진했다. 선호 직업에 대한 평가에서는 무리가 없는 것으로 나왔다. 결론이 무엇인가? 하고 싶은 것을 하라는 거지 뭐....

zbxe 작업일지(5일차)

[원문보기]
1. xml parser 연동
  - urlencode()를 이용해 query를 넘겨 FEED ON FEEDS라이브러리 이용
  - 도서 api 2차 키워드 지원

2. naver 상호검색 api 연동
  - zbxe.php에 FEED ON FEEDS라이브러리 이용

3. write_form.php, simple.php 수정
  - 작성자의 태그와 작성 대상 키워드 태그 적용(글쓰기 가능)

zbxe 작업일지(4일차)

[원문보기]
1. home.php 예외처리
  - 외부경로(zbxe 밖에서 접근)

1-1. design.html 예외처리
  - 로그인하지 않은 사용자의 호출

2. simple.php 예외처리
  - 존재하지 않는 (srl값 호출)시

2-1. 기본 레이아웃(xe_official) 편집
  - 커리어플랜의 보기/편집/삭제 모드로 3분류

창업일지 - 사업자등록 및 통신판매업신고

[원문보기]
 1. 사업자 등록은 주업종, 주업태 선정 외에는 어려운 점이 없었다. 일반과세자로 등록되었으며, 접수자와의 의견 교환이 종료되면 대기자가 없을시 1분이내에 발급된다.
  -> 장소 : 세무서

 2. 통신판매업신고는 구청 지역경제과에서 하였으며, 여러가지 확인절차(세금 채납 등)을 거쳐 신청을 완료하였다. 사업자등록증과 신분증만 있으면 된다.

창업일지 - 통신판매업신고증 수령 및 부가통신사업신고

[원문보기]
 1. 구청 지역경제과에서 문자를 받고 '면허세' 45000원을 지로형태의 고지서를 통해 은행에 제출하였다. 간이과세자는 면제 받는다. 영수증을 보여주면 간단한 확인 절차를 거치고 수령할 수 있다.

 2. 부가통신사업신고는 정보통신부(www.mic.go.kr)에서 갖가지(?) Active-x 컨트롤러를 설치하면, 온라인으로 간단히 신청가능하고, 등기로 받아볼 수 있다. 1800원정도 나온다.(빠른 등기는 500~1000원 정도 추가 과금)

 % 도메인 포워딩이 완료되었다. 페이지 작업을 해야하는데...

zbxe 작업일지(3일차)

[원문보기]
1. simple.php 제작
  - 보기 모드
  - '플래닝 보기' 페이지에 링크 추가
2. mashup 페이지 제작
  - 최근 게시글 출력(자신글, 관련글)

php XML파서

[원문보기]

<xml.php>

$file = "cultlife.xml";
function trustedFile($file)
{
// only trust local files owned by ourselves
if (!eregi("^([a-z]+)://", $file) && fileowner($file) == getmyuid())
{
return true;
}
return false;
}
function startElement($parser, $name, $attribs)
{
  print "&lt;<font color=#0000cc>$name</font>";
if (sizeof($attribs)) {
/*while (list($k, $v) = each($attribs)) {
print "<font color=#009900>$k</font><font color=#990000>$v</font>";
} */
}
print "&gt;";
}
function endElement($parser, $name)
{
print "&lt;/<font color=#0000cc>$name</font>&gt;<br>";
}
function characterData($parser, $data)
{
print "<b>$data</b>";
}
function PIHandler($parser, $target, $data)
{
switch (strtolower($target)) {
case "php":
global $parser_file;
// If the parsed document is "trusted", we say it is safe
// to execute PHP code inside it. If not, display the code
// instead.
if (trustedFile($parser_file[$parser])) {
eval($data);
} else {
printf("Untrusted PHP code: <i>%s</i>", htmlspecialchars
($data));
}
break;
}
}
function defaultHandler($parser, $data)
{
if (substr($data, 0, 1) == "&" && substr($data, -1, 1) == ";") {
printf('<font color="#aa00aa">%s</font>', htmlspecialchars
($data));
} else {
printf('<font size="-1">%s</font>', htmlspecialchars($data));
}
}
function externalEntityRefHandler($parser, $openEntityNames, $base,
$systemId,
$publicId)
{
if ($systemId) {
if (!list($parser, $fp) = new_xml_parser($systemId)) {
printf("Could not open entity %s at %sn", $openEntityNames,
$systemId);
return false;
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($parser, $data, feof($fp))) {
printf("XML error: %s at line %d while parsing entity %
sn",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser),
$openEntityNames);
xml_parser_free($parser);
return false;
}
}
xml_parser_free($parser);
return true;
}
return false;
}
function new_xml_parser($file) {
global $parser_file;
$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 1);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
xml_set_processing_instruction_handler($xml_parser, "PIHandler");
xml_set_default_handler($xml_parser, "defaultHandler");
xml_set_external_entity_ref_handler
($xml_parser, "externalEntityRefHandler");


if (!($fp = @fopen($file, "r"))) {
return false;
}
if (!is_array($parser_file)) {
settype($parser_file, "array");
}
$parser_file[$xml_parser] = $file;
return array($xml_parser, $fp);
}
if (!(list($xml_parser, $fp) = new_xml_parser($file))) {
die("could not open XML input");
}
print "<pre>";
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %dn",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
print "</pre>";
print "parse completen";
xml_parser_free($xml_parser);


<xmltest.xml>

<?xml version='1.0'?>
<!DOCTYPE chapter SYSTEM "/just/a/test.dtd" [
<!ENTITY plainEntity "FOO entity">
<!ENTITY systemEntity SYSTEM "xmltest2.xml">
]>
<chapter>
<TITLE>Title &plainEntity;</TITLE>
<para>
<informaltable>
<tgroup cols="3">
<tbody>
<row><entry>a1</entry><entry
morerows="1">b1</entry><entry>c1</entry></row>
<row><entry>a2</entry><entry>c2</entry></row>
<row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
&systemEntity;
<sect1 id="about">
<title>About this Document</title>
<para>
<!-- this is a comment -->
<?php print 'Hi! This is PHP version '.phpversion(); ?>
</para>
</sect1>
</chapter>

<xmltest2.xml>

<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY testEnt "test entity">
]>
<foo>
<element attrib="value"/>
&testEnt;
<?php print "This is some more PHP code being executed."; ?>
</foo>

첨부 (0)
위로