역삼각함수란 삼각함수의 역함수를 의미하고,
역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다.
수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데,
FreeBASIC 언어에서는 asin 함수로 구현되어 있다.
아래의 소스는 FreeBASIC 의 (명령줄 컴파일 명령) fbc 로 컴파일되는 소스이다.
참고 1. FreeBASIC 은 이전(MS-DOS 시절)에 쓰던 Quick BASIC 과 유사하며, Quick BASIC을 발전시킨 것이라고 보변 된다. 아래는 Wikipedia 에서 적어 놓은 FreeBASIC 의 설명이다.
---------------------------------------------------
FreeBASIC
is a free/open source (GPL), 32-bit BASIC compiler[2] for Microsoft Windows, protected-mode DOS (DOS extender), Linux, FreeBSD and Xbox.---------------------------------------------------
참고 2. Double 타입의 부동소수점수를 원하는 위치에서 적당히 반올림하여 출력하기 위해서는 Format 또는 Format$ 함수를 써야 하는데, 이를 위해서는 FreeBASIC 언어에서는 소스에
#include "string.bi"
를 추가해야 한다.
(참고로, FreeBASIC 언어에서는 Print Using 과 "#.#########" 포맷을 이용해서 Double 타입을 출력하면, 근사값이라는 의미로 수치 앞에 퍼센트 기호(%)가 붙는다.)
참고 3. 제곱근을 구하기 위해 C, Java, Ruby, Python 언어에서는 sqrt 함수를 사용하고, Visual BASIC, C# 언어에서는 Sqrt 함수를 사용하지만, FreeVASIC 언어에서는 Quick BASIC 언어에서 처럼 Sqr 로 구현되어 있다. (Sqrt 가 아니라 마지막 분자 t 가 빠진 Sqr 임에 주의한다.)
참고 4. FreeBASIC 언어에는 쌍곡선 함수가 구현되어 있지 않아 아래의 소스에 FreeBASIC 지수함수 Exp 를 이용하여 쌍곡ㅅ선 함수 sinh 함수와 cosh 함수를 구현헤 놓았다.
REM =============================================================
REM Filename: testArcSine.bas
REM
REM This source should be compiled by using FreeBASIC,
REM which can be downloaded from http://www.freebasic.net
REM
REM Compile: fbc testArcSine.bas
REM Execute: testArcSine
REM
REM Date: 2013. 1. 2.
REM Copyright (c) pkim _AT_ scripts.pe.kr
REM =============================================================
#include "string.bi"
Function asinh(x As Double) As Double
Dim y As Double = log(x + Sqr(x*x + 1))
return y
End Function
Function cosh(x As Double) As Double
Dim y As Double = (Exp(x) + Exp(-x))/2.0
return y
End Function
Function sinh(x As Double) As Double
Dim y As Double = (Exp(x) - Exp(-x))/2.0
return y
End Function
Function acosh(x As Double) As Double
Dim y As Double = log(x + Sqr(x*x - 1))
return y
End Function
Sub Main()
Dim x As Double = -0.9
Dim y As Double = asin(x)
' Print Using "y = asin(" & x & ") = #"; y
' Print Using "y = asin(" & x & ") = #.#########"; y
Print "y = asin(" & x & ") = "& Format$(y, "0.#########")
' Print "sin(y) = sin(" & y & ") = " & sin(y)
' Print Using "sin(y) = sin(#.########) = #"; y, sin(y)
Print "sin(y) = sin(" & Format$(y, "0.#########") & ") = " & sin(y)
Print
x = 1.1
Dim u As Double = acosh(x)
' Print "u = acosh(" & x & ") = " & u
Print "u = acosh(" & x & ") = " & Format$(u, "0.#########")
Dim v As Double = asinh(x)
' Print "v = asinh(" & x & ") = " & v
Print "v = asinh(" & x & ") = " & Format$(v, "0.##########")
' Print "cosh(u) = cosh(" & u & ") = " & Cosh(u)
' Print "sinh(v) = sinh(" & v & ") = " & Sinh(v)
Print "cosh(u) = cosh(" & Format$(u, "0.#########") & ") = " & Cosh(u)
Print "sinh(v) = sinh(" & Format$(v, "0.#########") & ") = " & Sinh(v)
' Print Format$(1.23, "#.#")
End Sub
Main()
' ---------------------------
' Output:
' y = asin(-0.9) = -1.119769515
' sin(y) = sin(-1.119769515) = -0.9
'
' u = acosh(1.1) = 0.4435682544
' v = asinh(1.1) = 0.9503469298
' cosh(u) = cosh(0.4435682544) = 1.1
' sinh(v) = sinh(0.9503469298) = 1.1
' ---------------------------
'프로그래밍 > BASIC' 카테고리의 다른 글
이진 파일을 읽어서 16진수로 보여주는 HexView 소스 with Visual BASIC (0) | 2013.08.06 |
---|---|
Visual BASIC 언어로 평방근, 입방근, n제곱근 구하는 함수를 구현하고 테스트하기 (0) | 2013.01.12 |
클래스 상속(subclassing) 예제 for .NET with Visual Basic (0) | 2009.05.01 |
스트링 리스트에서 스트링 찾기(find) with Visual Basic (0) | 2009.04.27 |
스트링 배열에서 스트링 찾기(find) with Visual Basic (0) | 2009.04.27 |