고급 수학: 기능과 한계
이 페이지에서는 Varlig Calc의 고급 수학 기능인 목록, 벡터와 행렬, 복소수, 합과 곱, 방정식 풀이, 미적분을 요약해요. 기능마다 함수가 하는 일, 받는 값, 결과의 정확도, 한계를 정리했어요. 결과가 예상과 다를 때 세부 사항을 확인하는 데 활용하세요.
더 많은 예와 함께 차근차근 알아보려면 다음 가이드를 참고하세요: 목록과 통계, 벡터와 행렬, 복소수, 합, 방정식 풀이, 미적분.
한눈에 보기
| 기능 | 예 | 결과 |
|---|---|---|
| 목록 | [1, 2+3, 4*2] |
[1, 5, 8] |
| 목록의 항목 | [10, 20, 30][1] |
20 |
| 중첩 목록의 항목 | [[1,2],[3,4]][1][0] |
3 |
| 수량의 합계 | sum([1 kg, 500 g]) |
1.5 kg |
| 통계 | average([1,2,3]), median([5,1,3]) |
2, 3 |
| 거꾸로 세는 범위 | range(5, 1, -2) |
[5, 3, 1] |
| 목록 더하기 | [1,2] + [3,4] |
[4, 6] |
| 행렬 곱 | [[1,2],[3,4]] * [[1,0],[0,1]] |
[[1, 2], [3, 4]] |
| 역행렬 | inverse([[1,2],[3,4]]) |
[[-2, 1], [1.5, -0.5]] |
| 행렬식 | det([[1,2],[3,4]]) |
-2 |
| 전치 행렬 | transpose([[1,2],[3,4]]) |
[[1, 3], [2, 4]] |
| 연립 일차 방정식 | solve_system([[2,1],[1,2]], [34,29]) |
[13, 8] |
| 복소수 산술 | (2+3i) * (2-3i) |
13 |
| 복소수 제곱근 | sqrt(complex(-4,0)) |
2i |
| 범위에 대한 합 | sum(k^2, k, 1, 10) |
385 |
| 범위에 대한 곱 | product(k, k, 1, 5) |
120 |
| 방정식 풀기 | solve(x^2 = 4, x, 0, 3) |
2 |
| 기호 미분 | differentiate(sin(x), x) |
cos(x) |
| 한 점에서의 미분값 | derivative(x^3, x, 2) |
12 |
| 정적분 | integrate(x^2, x, 0, 3) |
9 |
목록, 행렬, 복소수는 일반 값과 같아요. 이름을 붙이거나 직접 정의한 함수에 넘길 수 있고, 앞줄을 수정하면 다시 계산돼요.
제곱합(n) = sum(k^2, k, 1, n)제곱합(3) 결과 14첫째(항목) = 항목[0]첫째([10, 20]) 결과 10근(y) = solve(x^2 = y, x, 0, 10)근(9) 결과 3목록과 수학 함수 쓰는 방법
- 항목과 인수는 쉼표로 구분해요. 쉼표 뒤에 공백이 오면 항상 값을 구분하고, 쉼표 뒤에 정확히 세 자리 숫자가 오면 천 단위를 구분하므로
[1,200, 1,800]은 항목이 두 개예요. 공백이 없으면[12,-51,4]처럼 쉼표마다 값이 나뉘어요.[1,234]처럼 쉼표를 두 가지로 읽을 수 있으면 오류 메시지가 두 가지 쓰는 방법을 모두 보여 줘요. 소수는 소수점으로 쓰세요. - 행렬은 행의 목록이에요. 예를 들어
[[1,2],[3,4]]처럼 써요.[1,2;3,4]같은 세미콜론 약식은 없어요. - 인덱스는 0부터 시작하며 0 이상의 정수여야 해요. 목록 끝을 넘어서는 인덱스는 오류이며, 처음으로 되돌아가거나 범위에 맞게 잘리지 않아요.
- 인수의 개수를 확인해요.
sqrt(4,9)는 추측하지 않고 오류를 표시해요.
목록과 통계
다음 함수는 목록을 받아요: length 또는 count, sum, product, average 또는 mean, median, min, max, stddev(표본 표준 편차).
- 빈 목록의
sum은 0,product는 1,count는 0이에요. 빈 목록의 다른 통계는 오류예요. - 길이가 같은 두 목록은 항목끼리 더하고 뺄 수 있어요. 목록에 숫자를 곱하거나 목록을 숫자로 나눌 수 있고, 두 목록을
==로 비교할 수도 있어요. range(start, end, step)은 양 끝을 포함해요. step은 생략할 수 있어요.dot(a, b)는 두 실수 벡터를 곱해요.
지출 = [420, 385, 510, 460] 결과 [420, 385, 510, 460]sum(지출) 결과 1,775average(지출) 결과 443.75median(지출) 결과 440지출[0] 결과 420지출 * 1.1 결과 [462, 423.5, 561, 506]range(0, 1, 0.25) 결과 [0, 0.25, 0.5, 0.75, 1]목록 변환
| 호출 | 결과 | 기능 |
|---|---|---|
sort([3,1,2]) |
[1, 2, 3] |
단위 없는 숫자를 오름차순으로 정렬. 같은 항목은 원래 순서를 유지 |
reverse([1,2,3]) |
[3, 2, 1] |
어떤 목록이든 순서를 뒤집음 |
unique([3,1,3,2]) |
[3, 1, 2] |
값마다 처음 나온 것만 남김. 단위까지 포함해 정확히 일치해야 같은 항목 |
slice([10,20,30,40], 1, 3) |
[20, 30] |
시작 인덱스부터 끝 인덱스 직전까지의 항목을 가져옴 |
map(x^2, x, [1,2,3]) |
[1, 4, 9] |
각 항목에 대해 식을 계산 |
filter(x > 1, x, [1,2,3]) |
[2, 3] |
조건이 참인 항목만 남김 |
variance([1,2,3]) |
1 |
개수에서 1을 뺀 값으로 나누는 정확한 표본 분산 |
slice에는 0 ≤ start ≤ end ≤ 목록 길이를 만족하는 정수가 필요해요. 그 밖의 경계는 오류예요.variance에는 단위 없는 숫자가 두 개 이상 필요해요.map과filter는 식을 먼저 받고, 그다음 각 항목에 쓸 이름, 마지막으로 목록을 받아요. 이 이름은 호출 안에서만 적용되므로 다른 곳에서 정의한 이름을 바꾸지 않아요.filter의 식은true나false를 내야 해요.
벡터와 행렬
벡터는 평평한 목록이고 행렬은 행의 목록이에요. 행렬은 직사각형 모양이어야 하고, 단위 없는 실수로 이루어져야 하며, 행과 열이 각각 1개부터 32개까지여야 해요.
| 함수 | 기능 |
|---|---|
A * B |
행렬 곱. A의 열 개수가 B의 행 개수와 같아야 함 |
transpose(A) |
행과 열을 맞바꿈 |
shape(A) |
[rows, columns] |
identity(n) |
n × n 단위 행렬 |
trace(A) |
정사각 행렬의 대각 성분의 합 |
det(A) |
정사각 행렬의 행렬식 |
inverse(A) |
정사각 행렬의 역행렬. 특이 행렬이면 오류 |
rank(A) |
정확한 소거법으로 구한 계수(rank). 모든 직사각 행렬에 사용 가능 |
dot(a, b) |
길이가 같은 두 벡터의 내적 |
cross(a, b) |
항목이 세 개인 두 벡터의 외적 |
solve_system(A, b) |
정사각 행렬 A와 평평한 벡터 b에 대해 A*x = b를 풂 |
eigenvalues(A) |
실수 정사각 행렬의 고윳값. 복소수 쌍을 포함하며 순서는 정해져 있지 않음 |
qr(A) |
[Q, R]. Q*R은 A와 근사적으로 같음 |
lu(A) |
[P, L, U]. P*A는 L*U와 근사적으로 같음. 정사각 행렬만 가능 |
svd(A) |
[U, s, Vt]. s는 특잇값의 평평한 목록이고, A는 U*diag(s)*Vt와 근사적으로 같음 |
정확한 결과. det, inverse, rank, solve_system은 정확한 분수를 사용해요. rank에는 반올림 허용 오차가 없어요. solve_system은 특이한 연립 방정식에 대해 오류를 알리며, 비선형 연립 방정식이나 해가 무수히 많은 연립 방정식은 처리하지 않아요.
근사 결과. eigenvalues, qr, lu, svd는 부동소수점을 사용하며, 출력이 유한한 값인지 확인해요. qr과 svd는 직사각 행렬을 받으며 축소형("thin") 인수를 반환해요. 고윳값과 SVD 계산은 10,000번 반복한 뒤 멈춰요. 표시되는 결과에서 가장 큰 성분에 비해 반올림 오차에 불과한 성분은 0으로 표시되지만, 인덱스로 접근하면 저장된 값이 반환돼요. 조건이 나쁜 행렬은 정확도가 떨어질 수 있으므로, 이런 결과는 ==로 검사하지 마세요.
# 성인 2명과 어린이 1명의 입장권은 34, 성인 1명과 어린이 2명은 29solve_system([[2,1],[1,2]], [34,29]) 결과 [13, 8]det([[2,1],[1,2]]) 결과 3rank([[1,2],[2,4]]) 결과 1복소수
i라는 이름이나 사용자 정의 단위를 따로 정의하지 않았다면 i는 허수 단위예요.
- 함수:
complex(real, imaginary),real,imag,conj,abs,arg(라디안),sqrt(주근)는 모두 복소수를 받아요. - 정확도: 실수부와 허수부, 산술, 정수 거듭제곱은 정확하게 유지돼요. 일반적인 거듭제곱근과
arg는 근삿값이에요. - 실수 결과:
(2+3i) * (2-3i)처럼 허수부가 상쇄되면 결과는 일반 실수가 돼요.-4 + 0i나complex(-4,0)처럼 복소수로 쓴 값은-4로 표시되더라도 산술과 이름을 거치는 동안 복소수로 유지돼요. - 음수의 제곱근과 로그:
sqrt(-4),ln(-1),log(-100)은 실수 범위에 머무르며, 대신 써야 할 복소수 형태(예:sqrt(-4 + 0i))를 알려 주는 허수 오류를 표시해요. 그 형태나sqrt(complex(-4,0))을 쓰면2i가 나와요. - 표시: 부동소수점 반올림 오차에 불과한 부분은 0으로 표시되므로
exp(i*pi)는-1로 표시돼요. 저장된 값에는 그 자릿수가 남아 있어요. - 비교:
<와>는 두 값의 허수부가 모두 0일 때만 작동해요. - 그 밖의 함수:
sin,cos,tan과 그 역함수, 쌍곡선 함수와 그 역함수,exp,ln,log또는log10,log2,cbrt, 그리고 분수 거듭제곱이나 복소수 거듭제곱은 모두 복소수를 받아요. 이들은 부동소수점과 주가지를 사용해요. 0의 로그와 유한하지 않은 모든 결과는 오류예요.
(2+3i) * (2-3i) 결과 13abs(3+4i) 결과 5sqrt(-4 + 0i) 결과 2isqrt(complex(-4,0)) 결과 2isqrt(-4) 결과 Error: imaginary number. For a complex answer, write sqrt(-4 + 0i)exp(i*pi) 결과 -1합과 곱
sum(expression, name, from, to)는 from부터 to까지(양 끝 포함)의 각 정수에 대해 식을 계산해 모두 더해요. summation은 같은 함수의 다른 이름이고, product는 더하는 대신 곱해요.
- 이름은 호출 안에서만 쓰여요. 이미 정의한 이름을 바꾸지 않고, 그 줄이 그 이름에 의존하게 만들지도 않아요.
- 합이나 곱 안에 다른 합이나 곱을 넣을 수 있어요.
to가from보다 작으면 범위가 비어 있으므로 합은 0, 곱은 1이에요.- 한 번의 호출에는 항이 최대 10,000개까지 들어갈 수 있어요.
sum(k^2, k, 1, 10) 결과 385product(k, k, 1, 5) 결과 120k = 7 결과 7sum(k, k, 1, 3) 결과 6k 결과 7방정식 풀이
solve(expression, name, lower, upper)는 lower와 upper 사이에서 식이 0이 되는 name의 실숫값 하나를 찾아요. solve(left = right, name, lower, upper)는 양변이 같아지는 지점을 찾아요.
- 경계는 유한한 숫자여야 하고,
lower가upper보다 작아야 해요. - 경계에 정확히 있는 근은 인정돼요. 그렇지 않다면 식이 한쪽 경계에서는 양수, 다른 쪽 경계에서는 음수여야 하고, 그 사이에서 연속이어야 해요.
- 탐색은 단계마다 구간을 절반으로 줄여요. 128단계 안에 식의 값이 0과
1e-10이내로 가까워지고 구간이 충분히 좁아지면 성공해요. 확인하는 지점 중 식이 정의되지 않는 곳이 있거나 탐색이 수렴하지 않으면 그 줄에 오류가 표시돼요. - 모든 근이 아니라 근 하나만 찾아요. 연립 일차 방정식에는
solve_system을 사용하세요.
solve(1500 + 12*x = 20*x, x, 0, 1000) 결과 187.5solve(x^2 = 2, x, 0, 2) 결과 1.4142135624미적분
기호 미분
differentiate(expression, name)(derivative(expression, name)로도 쓸 수 있음)은 도함수를 텍스트로 반환해요.
- 단위 없는 실수 산술에 대해 합, 곱, 몫, 거듭제곱, 연쇄 법칙을 사용하며,
sin,cos,tan,sinh,cosh,exp,ln,sqrt도 처리해요. - 식 안의 다른 이름은 메모에 값이 있든 없든 상수로 취급해요.
differentiate(a*x^2, x)는(a*(2*(x^(2-1))))을 줘요. - 결과는 간단히 정리되지 않으며, 최대 8,192자로 제한돼요.
abs같은 다른 함수는 오류예요. 그런 함수에는 한 점에서의 미분값을 사용하세요. 이 기능은 완전한 컴퓨터 대수 시스템이 아니에요.- 도함수에는 원래 식과 같은 정의역 제한이 적용돼요.
differentiate(sin(x), x) 결과 cos(x)differentiate(x^3, x) 결과 (3*(x^(3-1)))한 점에서의 미분값
derivative(expression, name, point) 또는 인수가 세 개인 differentiate는 한 점에서의 기울기를 수치적으로 계산해요. 정밀화된 중심 차분을 사용하고, 그 결과를 한쪽 방향 추정값과 비교해 확인해요. 식에는 직접 정의한 함수를 쓸 수 있지만, 그 점 근처에서 매끄러워야 하고 단위 없는 실수를 사용해야 해요. 추정값이 수렴하지 않거나 표본값이 정의되지 않으면 그 줄에 오류가 표시돼요.
수치 계산 형태는 숫자를 구하므로, 변수를 제외한 모든 이름에 값이 있어야 해요. 한 점에서의 미분값, sum, product, solve, integrate에 해당하며, 값이 없는 이름이 있으면 Unsupported: Unknown name: 뒤에 그 이름이 표시돼요.
derivative(x^3, x, 2) 결과 12f(x) = x^2derivative(f(x), x, 3) 결과 6differentiate(a*x^2, x) 결과 (a*(2*(x^(2-1))))derivative(a*x^2, x, 3) 결과 Unsupported: Unknown name: a정적분
integrate(expression, name, lower, upper)는 유한한 두 경계 사이에서 식 아래의 넓이를 계산해요.
- 경계를 맞바꾸면 결과의 부호가 바뀌고, 두 경계가 같으면 0이에요.
- 적응형 7점 및 15점 가우스-크론로드 규칙을 사용해 고르지 않은 간격의 점에서 표본을 추출해요. 그래서
cos(128*pi*x)같은 규칙적인 파동에 속지 않아요.integrate(cos(128*pi*x), x, 0, 1)은 약-1.3e-15를 주는데, 반올림 오차 범위에서 0이에요. - 전체 오차 추정값이 결과 크기의
1e-9배 이하(결과가 1보다 작으면1e-9이하)가 되도록 해요. 최소 두 단계의 세밀도를 비교하고, 반올림 오차를 감안하며, 추정 오차가 가장 큰 부분부터 정밀화해요. - 정밀화 2,048회, 분할 20단계, 또는 그 줄의 다른 고급 수학 연산과 함께 쓰는 100,000단계에 도달하면 멈춰요. 한계에 도달하거나 표본값이 정의되지 않으면 오류예요.
- 오차 추정값은 좋은 지침이지만 보장은 아니에요. 매끄럽고 유한한 식을 사용하세요. 뾰족한 봉우리, 불연속점, 빠른 진동이 있는 식은 결과가 부정확할 수 있어요.
- 부정적분과 무한 경계는 지원하지 않아요.
integrate(x^2, x, 0, 3) 결과 9integrate(x^2, x, 3, 0) 결과 -9수학 함수의 인수와 단위
factorial은fact의 다른 이름이고,trunc는int의 다른 이름이에요.sign은 -1, 0 또는 1을 반환해요.atan2(y, x)는 라디안 각도를 단위 없는 숫자로 반환해요.round,floor,ceil의 선택적 두 번째 인수는 소수 자릿수가 아니라 단위(step)예요.round(17, 5)는 가장 가까운 5의 배수로 반올림해요. 소수 자릿수로 반올림하는 방법은 반올림을 참고하세요.- 로그, 지수 함수, 쌍곡선 함수에는 단위나 금액을 쓸 수 없어요. 일반 삼각 함수는
30°같은 각도를 받아요. - 제곱근과 세제곱근은 지수가 나누어떨어지면 단위를 유지하고, 수량의 거듭제곱도 단위를 유지해요. 섭씨나 화씨 온도는 제곱하거나 근을 구할 수 없어요.
gcd(12, 18) 결과 6round(17, 5) 결과 15sin(30°) 결과 0.5sqrt(9 m²) 결과 3 m(2 kg)^2 결과 4 kg²한계
결과를 표시하기 전에 다음 한계를 확인해요.
- 목록 또는
range의 항목 1,024개 - 최대 32 × 32 행렬
sum또는product한 번에 항 10,000개- 중첩된 목록과 함수 호출 16단계
- 중첩된 호출을 포함해 한 줄의 모든 고급 수학 연산이 함께 쓰는 100,000단계
- 분수의 분자 또는 분모 4,096비트(Varlig Calc의 다른 부분과 같음)
한계에 도달하면 그 줄에 오류가 표시되고, 메모의 나머지 부분은 계속 작동해요. 부분적인 합, 역행렬, 수렴하지 않은 근이 답으로 표시되는 일은 없어요. 모든 한계와 결과의 정확도는 결과 읽기: 표시와 정밀도를 참고하세요.