나의 큰 O는 log x야

고정 헤더 영역

글 제목

메뉴 레이어

나의 큰 O는 log x야

메뉴 리스트

  • 홈
  • Tag
  • Guestbook
  • Admin
  • 분류 전체보기
    • 적분史
    • 프로그래밍
      • PG어
      • 테크닉
      • 3D
      • Multi precision
      • 포니게임개발
      • 스페샬
      • NLP
    • 소리
    • 언어
      • 어원 이야기
      • 라틴어
    • 수업노트
      • 한국고대경제와사회
      • 영어구조론
      • 정보검색론
      • 인간의삶과역사속의미생물
      • 기타
    • 잉여
      • 미래
      • 수학
      • 종교개혁
    • 그냥 공부
    • 가짜 정보 정정합니다.

검색 레이어

나의 큰 O는 log x야

검색 영역

컨텐츠 검색

분류 전체보기

  • 역삼각함수를 구현해보자.

    2008.12.08 by ∫2tdt=t²+c

  • 삼각함수를 구현해보자.

    2008.12.07 by ∫2tdt=t²+c

  • 자연로그 ln을 구현해보자.

    2008.12.03 by ∫2tdt=t²+c

  • 지수함수 exp를 구현해보자.

    2008.11.28 by ∫2tdt=t²+c

  • 제곱근(sqrt) 함수를 구현해보자.

    2008.11.26 by ∫2tdt=t²+c

  • 개념 3D 이해 5.프로젝션 변환

    2008.11.17 by ∫2tdt=t²+c

  • 개념 3D 이해 4.뷰 변환

    2008.11.13 by ∫2tdt=t²+c

  • 개념 3D 이해 3.변환

    2008.11.13 by ∫2tdt=t²+c

역삼각함수를 구현해보자.

하아 어느덧 여러 수학함수를 구현해보려는 기나긴 장정이 역삼각함수에까지 이르렀다. 아직 쌍곡선 함수를 비롯한 여러 수학함수들이 남아있지만, 거의 쓰이지 않는 관계로(또한 귀찮은 관계로) 글쓰기를 무기한 연기해버리기로 했다. 역삼각함수는 각을 구해내기 위해서 자주 쓰인다. acos,asin,atan 등이 있지만, 가장 유용한 함수는 atan2이다. atan2는 x축 변위,y축 변위를 받아서 -Pi에서 Pi 사이의 각을 구해준다. (acos,asin,atan함수는 제한된 범위의 각만 구해낼수 있다.) 일단 atan2함수도 atan를 이용해 구현될수 있으므로 좀 뒤로 미루자. 먼저 역시 방대한 지식이 담겨있는 위키백과만큼 좋은 참조물도 없다. 영어위키백과: 역삼각함수 역삼각함수들에 대해서 다음 등식이 성립한다..

프로그래밍/테크닉 2008. 12. 8. 00:07

삼각함수를 구현해보자.

여태까지 제곱근함수와 지수함수, 로그함수를 대충 구현해보았다. 이를 이용하면 어지간한 계산들을 다 할 수 있으나, 한 가지 막히는 부분이 있으니 바로 삼각함수이다. 삼각함수는 약방의 감초라할만큼 안 들어가는 곳 없이 두루두루 들어간다. 삼각함수는 비용이 비싼 측에 낀다. (계산량을 줄일만한 획기적 방법이 별로 없는듯하다.) 그래서 삼각함수 연산을 자주 하는 프로그램에서는 대게 테이블을 만들어놓고 참조하는 방법을 쓴다. 이 방법이 대체로 빠른 방법이어서 추천하는 바이다. (가장 좋은 방법은 FPU의 빵빵한 지원이라고나 할까) 아래에 설명하는 계산법은 그냥 이렇게도 계산할수 있다는 거지, 이 식을 활용해서 계산하면 좋다는 의미는 아니다. 공학용으로 삼각함수계산을 어떻게 하나 궁금해서 영어위키백과를 찾아봤더니..

프로그래밍/테크닉 2008. 12. 7. 01:39

자연로그 ln을 구현해보자.

저번 글에서 지수함수를 구현하는 글을 대충 올렸었다. 지수함수를 구현했다면 역함수는 로그함수도 한번 꼭 구현해볼 필요가 있다. 지수함수(exp)와 로그함수(ln)를 이용하면 pow함수를 구현할수 있다. 사실 로그함수가 제곱근 함수 다음으로 널리 쓰인다고 볼 수도 있는데, 지수함수를 먼저 구현한 이유는 로그함수 구현은 꽤 까다롭기 때문이다. 잡소리 그만하고 자연로그란 밑이 e(=2.71828...)인 로그를 일컫는다. 수학적 정의는 다음과 같다. 이면이다. 모든 부동소수점 데이터는 꼴로 나타낼수 있으므로 여기에 로그를 취하면 이렇게 된다. ln2는 상수값이므로 중요하지 않고 n*ln2도 곱셈으로 계산가능하다. 우리가 구현해야할것은 를 계산하는 부분이다. 두고두고 써먹는 테일러 전개를 이용해서 자연로그 함수..

프로그래밍/테크닉 2008. 12. 3. 01:55

지수함수 exp를 구현해보자.

저번에 제곱근 함수를 구현해본것에 이어서 밑을 e(2.71828..)로하는 지수함수 exp에 대해 구현해보자. exp(x)의 테일러 전개식이다. 다행이도 exp(x)의 전개식은 어떤 x에 대해서도 성립한다. 그럼 그냥 간단히 저 식을 구현하는걸로 exp구현을 끝낼수 있지만, 역시 프로그래머에게는 속도가 중요하다. 그래서 다음과 같이 식을 변형해보자. (단, )가 된다. 는 어차피 부동소수점데이터에서 지수부로 곧바로 들어갈테고 만 계산하면 된다. 그런데 ln2=0.693147.. 이므로, α는 ln2보다 작으므로, 테일러 전개에서 x의 차수가 높아질수록 항의 값은 작아질 것이다. 이제 필요한 정밀도까지 계산해 내려가면 된다. float(32비트 부동소수점형)같은 경우 정밀도가 23비트이므로 항이 보다 작아..

프로그래밍/테크닉 2008. 11. 28. 00:35

제곱근(sqrt) 함수를 구현해보자.

우리가 프로그래밍을 하면서 자주 사용하는 여러 수학 함수들이 있다. 할일 없는 사람들은 이 함수들이 어떻게 작동하는지 정말 궁금해할지도 모른다. (물론 나도 그런 할 일 없는사람이다.) 한 번 내가 알고 있는 것들을 글로 써보며 생각을 정리해보고자 한다. 수학함수를 구현할때 가장 중요한 점은 정밀도와 속도이다. 늘상 있는 일이지만 프로그래머는 정확성과 속도 사이를 잘 조율해야한다. 필요이상의 정밀도는 시간 낭비일뿐이다. 먼저 수학함수 중에서 가장 인기가 높은 제곱근 함수 (sqrt함수) 거리 구할때를 비롯하여 안 쓰이는 곳이 없는 인기 좋은 함수이다. 한번 float sqrt(float x)를 구현해보자. 부동소수점 데이터는 꼴로 표현된다. (음수일 경우와 0일 경우는 무시했다.) 여기서 두 가지 경우로..

프로그래밍/테크닉 2008. 11. 26. 00:45

개념 3D 이해 5.프로젝션 변환

전편에 뷰 변환을 통해서 모델 공간에 있는 물체를 뷰 공간으로 변환할수 있었다. 카메라의 입장에서 물체를 볼 수 있게 된것이다. 그러나 모니터에 물체를 띄우려면 아직도 멀고 험한 길이 기다리고 있다. 모니터는 2차원 평면이다. 하지만 3차원 물체는 말 그대로 3차원인데 어떻게 2차원 평면에 나타내나? 정답은 축을 하나 버리는 것이다. 3차원에서 축 하나를 버리면 2차원이 되므로 평면에 그릴수 있다. ┌ │ │ │ │ │ └ 1 0 0 0 ┐ │ │ │ │ │ ┘ 0 1 0 0 0 0 0 0 0 0 0 1 뷰 변환이 끝난 점들에 이 행렬을 곱해보자. [x,y,z,1]에 이 행렬을 곱하면 [x,y,0,1]이 된다. 이제 이 x,y값을 가지고 모니터에 그려주면 땡이다. 라고 말하면 회이크다. 이렇게 하면 원근..

프로그래밍/3D 2008. 11. 17. 23:55

개념 3D 이해 4.뷰 변환

원래는 전 글에서 변환 설명을 다 끝내려고 했는데 길어져서 나누어버렸다. 우리의 현재 목표는 3차원상의 물체를 카메라에서 보이는 대로 화면에 표현하는 것이다. 이것을 저번 편에서 배웠던 행렬 변환을 이용해서 만들어보자. 가장 먼저 할일! 입장바꿔 생각해보기(易地思之). 먼저 Direct3D상에서는 x축이 모니터에서 오른쪽으로 뻗어나가는 방향이고, y축이 모니터에서 위쪽으로 뻗어나가는 방향이고 z축이 모니터 안쪽으로 들어가는 방향이다. (Direct3D를 예로 들어 설명한 이유는 가장 많이쓰이기 때문이다. OpenGL이나 또 다른 3D API에서는 축을 다르게 잡는다.) 그리고 모니터의 정 중앙이 원점(0,0,0)이 된다. 그럼 카메라가 볼때 원점은 어디가 될까? 바로 자기 자신의 위치가 원점이 될 것이다..

프로그래밍/3D 2008. 11. 13. 14:21

개념 3D 이해 3.변환

3차원 그래픽을 위해서인지는 몰라도 선형대수학이라는 학문이 발전되어 있다. 고등학교 때 행렬을 배우면서 이걸 어디에다가 쓰지 어디에다가 쓰지 했지면, 행렬은 3차원 그래픽에 쓰이고 있었다! 위키백과: 선형대수학 선형대수학은 벡터와 행렬에 대해서 연구하는 학문인데, 간단하게 말해서 우리는 3차원 상의 변환을 표현하기 위해서 행렬 변환을 사용할 것이다. 여기서 너무 수학적인것에 대해 설명한다면 머리가 터질지 모르므로 간략히 설명하면서 넘어가겠다. 일단 저번에 표현해봤던 점을 다음과 같이 벡터로 표현해보자. (x y z 1) 마지막에 1이 왜 들어갔냐고 따지지말라. 1의 유용함이 곧 드러날것이다. 우리는 이 4차원 벡터에다가 4차 정사각행렬을 곱할것이다. 이 식 그림들은 DirectX Documentation..

프로그래밍/3D 2008. 11. 13. 13:20

추가 정보

인기글

최신글

글쓴이 ∫2tdt=t²+c

블로그 이미지

제가 안 것의 대부분은 인터넷으로부터 왔으니, 다시 인터넷에게 돌려주어야 합니다. bab2min@gmail.com

댓글

태그

python 토픽 모델링 악보 영어구조론 텍스트 마이닝 우리역사바로알기대회 NLP 한국고대경제와사회 pg어 리듬게임 자연언어처리 라틴어 정보조직론 문헌정보통계 포니게임 c++ kiwi Direct3D BigFloat php

방문자

오늘
어제
전체

페이징

이전
1 ··· 65 66 67 68 69
다음
나의 큰 O는 log x야
메일 bab2min@gmail.com
Skin Images are from Stinkehund.

티스토리툴바