전체 글 725

주어진 정수의 소인수분해(primt factorization)와 오일러 phi 함수값

[참고 자료 1] 온라인 소인수분해(prime factorization) [참고 자료 2] 소인수분해 설명 [참고 자료 2] 한국어 위키피디아에서 설명하는 소인수분해 [참고 자료 3] 영문 Wikipedia 에서 설명하는 소인수분해 * Mathematica 를 이용하여 정수의 소인수 분해, 모든 약수의 총합, 오일러 phi 함수값 구하기 * Maxima 를 이용하여 정수의 소인수 분해, 모든 약수의 총합, 오일러 phi 함수값 구하기 (참고: Maxima 에서는 오일러 phi 함수명이 totient 로 되어 있다.) * 위의 그림에서 짤린 아랫 부분도 보여주는 PDF 파일:

학습/수학 2011.11.09

모든 양의 약수를 구하고 소수(prime number)인지 아닌지 판별하기

프로그램 언어 배우는 과정의 한 예제로는 적당하지만, 알고리즘 면으로는 매우 비효율적인 소스를 C, C++, Java, C#, Python, Ruby, Groovy, Lua, Octave 언어 등으로 작성해 보았다. * 모든 양의 약수를 구하고 소수인지 아닌지 판별하는 C 언어 소스 /** * Filename: findAllDivisorsNotGoodC_01.c * * Purpose: * Find all positive divisors of a given nonzero integer. * * With VC++ * Compile: cl findAllDivisorsNotGoodC_01.c * Execute: findAllDivisorsNotGoodC_01 * * With gcc * Compile: gcc f..

학습/수학 2011.11.01

온라인 행렬 계산기 소개

웹에서 행렬 계산을 해주는 온라인 행렬 계산기 * 위의 하이퍼 링크를 따라가면 행렬식, 역행렬, 트레이스, 위수(rank), 가우스 소거법, 가우스-조르단 소거법, 고유값과 고유벡터, LU 분해, QR 분해, SVD 분해, Cholesky 분해 등의 계산 결과를 볼 수 있다. * 행렬의 요소를 입력할 때 행의 구분자로 '캐리지 리턴'(즉, 엔터 키)와 '세미콜론'을 사용한다. 예: 1 2 3; 4 5 6; 2 1 1 을 입력하면 3x3 행렬로 인식하여 계산한다.

학습/수학 2011.10.27

간단한 무리방정식의 풀이

무리방정식에는 무연근이 있을 수 있다. 여기서는 무리방정식 sqrt(x + 1) = x - 2 의 풀이를 Mactimatica, Maxima 등에서는 어떻게 하는지 알아 본다. 우선 손계산으로 풀어보자. 무리방정시에는 무연근(계산 상으로는 근으로 나오지만 원래 방정식의 의마에는 맞지 얺는 근)이 나올 수 있다. 먼저 근이 존재할 범위를 알아 본다. 제곱근 기호 속이 0 이상이라야 하므로 x + 1 >= 0 즉 x >= -1 이다. 또 제곱근의 값 자체가 0 이상이므로 주어진 방정식의 우변도 0 이상이라야 한다. 그러므로 x - 2 >= 0 즉, x >= 2 이다. 그러므로 근의 존재 범위는 x >= -1 과 x >= 2 의 공통범위 x >= 2 이다. 이 범위에 있지 않는 근은 모두 무연근이므로 버린다...

학습/수학 2011.10.27

직각삼각형의 빗변의 길이 구하기 / underflow 와 overflow 방지

C 언어, Java 언어, Python 언어 등으로 프로그래밍할 때 부동소수점수(floating point number) 를 많이 사용한다. 보동 double 타입이라고 부르는 수치형 데이터인데, 이 데이터의 처리 가능 범위는 대략 ( -1.79769313486231E308 ~ 1.79769313486232E308 ) 정밀도 비트수 범위 유효숫자 개수(10진수) 단정밀도 32 bits ±1.18×10−38 to ±3.4×1038 약 7개 배정밀도 64 bits ±2.23×10–308 to ±1.80×10308 약 15개 이다. 그렇다면 1.0E-190 에 해당하는 부동소수점수는 0 이 아니며 이것의 제곱 1.0E-380 도 0이 아니다. 그런데 1.0E-380 을 컴퓨터 계산에서는 어떻게 처리될까? 아마..

학습/수학 2011.10.22

여러가지 도구를 이용한 행렬의 고유값(eigenvalue)과 고유벡터(eigenvector) 구하기

여기서는 2x2 행렬 A = [ 1, 1/2; 1/2, 1/3 ] 의 고유값과 고유벡터를 구하는 여러가지 방법을 소개한다. 정의 (고유값과 고유벡터) 주어진 m by n 행렬 A 에 대하여 Av = λv (단, v 는 영아닌 벡터, λ 는 스칼라) 를 만족하는 v 와 λ 가 존재할 때, v 를 A 의 고유벡터, λ 를 A 의 고유값이라고 한다. * Mathematica를 이용하여 행렬의 고규값과 고유벡터 구하기 * Maxima 를 이용하여 행렬의 고유값과 고유벡터 구하기 ** 아래에서 v1 이 고유벡터이고, lambda1 이 고유값이다. ( 그런데, v1 이 행벽터로 표현되어 잇다. 그러므로 이를 transpose 하여 열벡터로 바꾸어야 한다 .) ** v1 의 transpose 를 취하여 행렬 m 을 ..

학습/수학 2011.10.20

여러 가지 도구로 연습해본 분수 계산

* Mathemaica 로 연습해본 분수 계산 * C++ 언어로 구현해본 분수 계산 예제 소스 (참고1: 0으로 나누는 예외상황, 0의 음수 지수 예외상황 처리됨) (참고2: VC++ 와 g++ 로 모두 컴파일되고 실행됨) /** * Filename TestFraction.cpp * * Version: 0.4 * Purpose: Calculate fractions. * * With VC++ * Compile: cl TestFraction.cpp /EHsc * Execute: TestFraction * * With g++ * Compile: g++ TestFraction.cpp -o TestFraction * Execute: ./TestFraction * * Date: 2011. 10. 9 (Sun) */..

학습/수학 2011.10.06

여러 가지 도구로 연습해본 복소수 계산

* Mathematica 로 연습해본 복소수 계산 (PDF 파일로 저장한 것) * Octave 로 연습해본 복소수 계산 (허수 단위는 기호 j 로 표현) octave-3.4.0:1> abs(1+2j) ans = 2.2361 octave-3.4.0:2> log(1+2j) ans = 0.80472 + 1.10715i octave-3.4.0:3> log(-1+2j) ans = 0.80472 + 2.03444i octave-3.4.0:4> log(-1-2j) ans = 0.80472 - 2.03444i octave-3.4.0:5> arg(1+2j) ans = 1.1071 octave-3.4.0:6> arg(1+-2j) ans = -1.1071 octave-3.4.0:7> arg(-1+-2j) ans = -2.0..

학습/수학 2011.10.03

Ubuntu 와 Mac 에서 GiNaC 를 이용한 도함수 계산

GiNaC 홈페이지 : http://www.ginac.de GiNaC is an open framework for symbolic computation within the C++ programming language * Ubuntu 에서 GiNaC 설치하기 "시냅틱 패키지 관리자" 사용 또는 $ sudo apt-get install ginac * Mac 에서 GiNaC 설치하기 $ sudo port install ginac * 예제 소스(파일명: seventh.cpp) - 오일러의 수 계산하는 예제 #include using namespace GiNaC; ex EulerNumber(unsigned n) { symbol x; const ex generator = pow(cosh(x),-1); return ..

학습/수학 2011.09.24

Ubuntu 에서 KAlgera 사용하기

KAlgebra 는 Ubuntu 10.4.x (루시드 링스) 에 기본으로 설치되어 있는 간이 계산기로서 2D, 3D 그래프도 그려준다. KAlgebra 를 실행하려면 Ubuntu 의 주메뉴에서 "프로그램" -> "교육" -> "KAlgebra" 를 차례로 선택히면 된다. KAlgebra 실행 창의 메뉴에서 "Help" > "KAlgebra Handbook" 하여 Hep 창이 뜨지 않으면 "시냅틱 패키지 관리자"를 실행하여 khelpcenter 를 설치한다. (아래와 같은 Help 창이 뜬다.) * KAlgebra 의 Help 화면 * KAlgebra 를 실행하여 간단한 수식 계산하기 * KAlgebra 가 그려준 함수 y = x^2 - 2x 의 그래프 * 의의 그림울 저장하기 직전의 KAlgebra 창 스샷

학습/수학 2011.09.23