합, 방정식 풀이, 미적분
이 페이지에서는 연속된 항을 모두 더하거나 곱하는 방법, 방정식이 성립하는 값을 찾는 방법, 식을 공식으로 또는 한 점에서 미분하는 방법, 정적분을 계산하는 방법을 다뤄요. Σ나 Π 기호가 필요한 문제, 손으로 쉽게 정리할 수 없는 방정식, 과제에서 구한 도함수나 곡선 아래 넓이를 검산하고 싶을 때 참고하세요.
이 함수들은 모두 sum(k^2, k, 1, 10)의 k처럼 변수 이름을 인수 중 하나로 받아요. 그 이름은
호출 안에서만 존재하므로, 메모의 다른 곳에 있는 같은 이름의 값을 바꾸지 않아요.
유한 합과 곱
sum(k, k, 1, 100) 결과 5,050sum(k^2, k, 1, 10) 결과 385summation(2*k - 1, k, 1, 10) 결과 100product(k, k, 1, 5) 결과 120인수는 식, 변수, 첫 번째 값, 마지막 값 순서예요. 양 끝이 모두 포함되므로
sum(k, k, 1, 100)은 1 + 2 + … + 100을 더해요. summation은 sum의 다른 이름이에요. 셋째 줄은
처음 열 개의 홀수를 더하면 10²이 된다는 걸 보여 주고, 마지막 줄은 5 팩토리얼이에요.
합은 금액과 단위에도 쓸 수 있어서 정기 저축 계산에 알맞아요.
# 5년 동안 매년 초에 £1,200씩 연 5%로 저축sum(£1200 * 1.05^k, k, 1, 5) 결과 £6,962.30곱은 확률을 연달아 곱할 때 유용해요. 23명 중 적어도 두 사람의 생일이 같을 확률은 23명의 생일이 모두 다를 확률을 1에서 뺀 값이에요.
p = 1 - product((365 - k)/365, k, 0, 22)(p as %) to 1 dp 결과 50.7%세부 사항:
- 첫 번째 값과 마지막 값은 정수여야 해요.
- 마지막 값이 첫 번째 값보다 작으면 항이 없어요. 합은 0, 곱은 1이에요.
- 합이나 곱 하나에는 항이 최대 10,000개까지 들어갈 수 있어요.
sum(sum(j, j, 1, n), n, 1, 4)처럼 합을 중첩할 수 있으며, 결과는20이에요. 중첩된 호출은 전체 작업 한도 하나를 함께 나눠 써요.- 이미 가진 값들을 더하려면
sum([4, 8, 15])처럼 목록을 사용하세요. 목록과 통계를 참고하세요.
수치 근 하나 찾기
solve는 지정한 두 한계 사이에서 방정식을 참으로 만드는 변수 값을
찾아요.
solve(x^2 = 2, x, 0, 2) 결과 1.4142135624solve(x^2 - 4, x, -3, 0) 결과 -2solve(cos(x) = x, x, 0, 1) 결과 0.7390851332# 돌이 44.1m를 떨어지는 데 얼마나 걸릴까?solve(4.9*t^2 = 44.1, t, 0, 10) 결과 3# 양초 판매가 £12, 개당 제작비 £4, 고정비 £2,000solve(12*n = 2000 + 4*n, n, 0, 1000) 결과 250인수는 방정식, 변수, 하한, 상한 순서예요. =를 쓴 방정식을 넣어도 되고, 식만 넣어도 돼요.
식만 넣으면 solve는 expression = 0으로 취급해요.
한계 정하기
solve가 작동하려면 지정한 한계 사이 어딘가에서 방정식 양변의 크기 관계가 뒤바뀌어야 해요.
다시 말해 left - right가 한쪽 한계에서는 양수, 다른 쪽 한계에서는 음수여야 해요(또는 한계에서
정확히 0이어도 돼요). 그런 다음 범위를 좁혀 가며 교차점을 찾아요.
그 결과 몇 가지 주의할 점이 있어요.
- 한계 사이에 근이 두 개 있으면 전체적으로는 부호가 바뀌지 않을 수 있어요.
solve(x^2 - 4, x, -3, 3)은x^2 - 4가 양 끝에서 모두 양수이므로 실패해요.0과3처럼 근 하나만 감싸는 한계를 사용하세요. x^2 = 0처럼 곡선이 0에 닿기만 하는 근은 부호가 절대 바뀌지 않으므로 이 방법으로 찾을 수 없어요.- 식이 범위 전체에서 정의되어 있어야 해요. 음수의
sqrt는 오류이므로solve(sqrt(x) = 2, x, -1, 10)은 실패해요. 대신 범위를0부터 시작하세요. 0근처의1/x처럼 0을 건너뛰는 불연속은 근이 아니므로, 그런 곳에서solve는 답 대신 오류를 표시해요.- 하한은 상한보다 작아야 하고, 둘 다 일반 숫자여야 해요.
solve는 근을 하나만 돌려주며, 모든 근의 목록을 돌려주지는 않아요. 일반 숫자만 다루므로
방정식에서 단위는 빼고 쓰세요.
반올림과 재사용
결과는 매우 가까운 수치 근삿값이라서 표시되는 마지막 자릿수가 틀릴 수 있어요. 깔끔한 수치가
필요하면 같은 줄에 to 4 dp(또는 원하는 자릿수)를 붙이고, 결과를 다시 쓰려면 먼저 이름을
붙이세요.
solve(sqrt(x) = 2, x, 0, 10) 결과 4.0000000001solve(sqrt(x) = 2, x, 0, 10) to 4 dp 결과 4변의 길이 = solve(sqrt(x) = 2, x, 0, 10) 결과 4.0000000001변의 길이 * 3 to 2 dp 결과 12solve를 나만의 함수로 감싸면 다른 값으로 다시 쓸 수 있어요.
근(y) = solve(x^2 = y, x, 0, 10)근(9) 결과 3미지수가 여러 개인 일차방정식 여러 개를 풀려면
벡터와 행렬의 solve_system을 사용하세요.
기호 미분
인수를 두 개 쓰면 differentiate(또는 derivative)가 도함수를 공식으로 보여 줘요.
differentiate(sin(x), x) 결과 cos(x)derivative(x^3, x) 결과 (3*(x^(3-1)))derivative(x * sin(x), x) 결과 (sin(x)+(x*cos(x)))derivative(exp(2*x), x) 결과 (exp((2*x))*2)결과는 간단히 정리되지 않으며 모든 단계가 괄호로 묶여요. (3*(x^(3-1)))은 3x²이에요. 식에 있는
소수는 분수로 바뀌므로 19.6은 (98/5)로 나타나요.
결과는 Varlig가 계산에 쓸 수 있는 값이 아니라 텍스트예요. 결과를 쓰려면 공식을 나만의 함수에 입력하세요.
기울기(x) = 3*x^2기울기(2) 결과 12기호 미분이 처리할 수 있는 것:
- 합, 곱, 몫, 거듭제곱, 연쇄 법칙을 사용하는
+,-,*,/와 거듭제곱 sin,cos,tan,sinh,cosh,exp,ln,sqrt함수- 그 밖의 이름(상수로 취급되며 결과에 이름 그대로 남음)
이름이 메모에서 값을 가질 필요는 없으므로 기호가 들어 있는 공식도 미분할 수 있어요.
derivative(a*x^2, x) 결과 (a*(2*(x^(2-1))))abs, log, 직접 정의한 함수 같은 다른 함수는 오류가 나요. 이런 경우에는 아래의 수치 형식을
사용하세요. 또한 공식에는 원래 식의 제약 조건이 따라오지 않아요. sqrt(x)의 도함수는
(1/(2*sqrt(x)))가 독립된 공식처럼 보여도 sqrt(x)가 정의되는 곳에서만 유효해요.
수치 미분
세 번째 인수를 쓰면 derivative가 그 점에서의 기울기를 숫자로 보여 줘요.
derivative(x^3, x, 2) 결과 12differentiate(sin(x), x, 0) 결과 1derivative(sqrt(x), x, 4) 결과 0.25높이(t) = 20*t - 4.9*t^2derivative(높이(t), t, 1) 결과 10.2이 형식은 위의 높이처럼 메모에서 정의한 함수에도 쓸 수 있는데, 기호 형식은 그렇지 못해요.
숫자를 계산하므로 식에 있는 다른 이름은 모두 값이 있어야 해요. sum, product, solve,
integrate도 마찬가지예요.
derivative(a*x^2, x, 2) 결과 Unsupported: Unknown name: aa = 3derivative(a*x^2, x, 2) 결과 12결과는 그 점의 양쪽 가까운 값들로 구한 추정치예요. 실제 기울기가 깔끔한 숫자라면 Varlig는 그
숫자를 저장하므로 정확히 비교해도 돼요. exp(x)의 기울기처럼 무리수인 기울기는 모든 자릿수를
유지하므로 허용 오차 안에서 비교하세요.
derivative(x^3, x, 2) == 12 결과 trueabs(derivative(exp(x), x, 1) - e) < 1e-6 결과 true식은 그 점 주변에서 꺾이거나 끊긴 곳 없이 매끄러워야 해요. abs는 0에서 꺾이므로
derivative(abs(x), x, 0)은 오류이고, sqrt는 0의 왼쪽에서 정의되지 않으므로
derivative(sqrt(x), x, 0)도 오류예요.
정적분
integrate(x^2, x, 0, 3) 결과 9integrate(sin(x), x, 0, pi) 결과 2integrate(x^2, x, 3, 0) 결과 -9integrate(4/(1 + x^2), x, 0, 1) 결과 3.1415926536# 3초 동안 떨어진 거리: 속도 9.8t m/s를 적분integrate(9.8*t, t, 0, 3) 결과 44.1인수는 sum과 같은 순서로 식, 변수, 하한, 상한이에요. 결과는 두 한계 사이에서 곡선 아래의
부호 있는 넓이예요. 한계를 서로 바꾸면 부호가 뒤집히고, 두 한계가 같으면 0이 나와요.
integrate(출력(t), t, 0, 4)처럼 메모에서 정의한 함수도 적분할 수 있어요.
integrate는 수치적으로 계산하므로 할 수 없는 것도 있어요.
- 부정적분은 없어요. 결과는 항상 숫자이며 공식이 나오지는 않아요.
- 두 한계 모두 유한한 숫자여야 해요. 무한대까지 적분하는 방법은 없어요.
- 식이 범위 전체에서 정의되어 있어야 해요.
integrate(1/sqrt(x), x, 0, 1)은 넓이 자체는 유한하지만1/sqrt(0)이 0으로 나누기가 되므로 오류예요. - 불연속, 뾰족한 봉우리, 매우 빠른 진동이 있는 식은 부정확한 결과나 오류가 나올 수 있어요.
- 단위는 받지 않으므로 마지막 예시처럼 주석에 적어 두세요.
알고리즘과 수렴
일상적으로 쓸 때는 이런 세부 사항을 몰라도 되지만, 결과가 이상해 보이거나 오류가 날 때 도움이 돼요.
solve 함수는 이분법을 사용해요. 범위를 계속 반으로 나누면서 부호가 바뀌는 쪽 절반을 남겨요.
left - right의 값이 0에서 10⁻¹⁰ 이내이고 범위가 충분히 좁아지면 멈추고, 128번 나눠도 찾지
못하면 오류를 표시하고 포기해요.
기호 derivative 계산은 정리하지 않고 표준 규칙을 한 단계씩 적용해요. 결과는 최대
8,192자까지 가능해요. 완전한 컴퓨터 대수 시스템은 아니에요.
수치 derivative 계산은 점점 작아지는 간격으로 중심 차분을 비교하고, 양쪽에서의 기울기를 따로
확인해요. 두 값이 일치하지 않거나 그 점 근처의 값이 정의되지 않으면 추측값 대신 오류가
표시돼요.
integrate 함수는 적응형 7점·15점 가우스–크론로드 규칙을 사용해요. 범위의 각 구간에서 두 추정치를
비교하고, 추정 오차가 가장 큰 구간을 나누는 과정을 전체 추정 오차가 10⁻⁹ × max(1, |answer|)보다
작아질 때까지 반복해요. 분할은 최대 2,048번, 분할 깊이는 20단계까지 허용되며, 전체에서 함께
쓰는 계산 한도는 100,000단계예요. 표본점이 고르게 배치되어 있지 않으므로 0부터 1까지의
cos(128*pi*x) 같은 빠른 진동도 상수로 오인하지 않고 거의 0으로 올바르게 적분해요. 그래도 오차
추정은 경험적 방법이므로 특이점이나 불연속이 있는 식의 결과는 주의해서 받아들이세요.
전체 규칙은 고급 수학 참조에 있어요.
종합해 보기
물리 과제를 검산해 볼게요. 공을 19.6m/s로 똑바로 위로 던지고, 중력 가속도는 9.8m/s²로 잡아요.
# t초 뒤의 높이(미터)높이(t) = 19.6*t - 4.9*t^2속도(t) = 19.6 - 9.8*t# 높이가 다시 0이 되면 착지(t = 0은 건너뜀)착지 = solve(높이(t) = 0, t, 1, 10) 결과 4# 1초 뒤의 속력: 높이의 기울기로 구함derivative(높이(t), t, 1) 결과 9.8# 가장 높은 지점: 속도가 0인 곳최고점 = solve(속도(t) = 0, t, 0, 착지) 결과 2높이(최고점) 결과 19.6# 검산: 최고점까지 속도를 적분하면 같은 높이가 나옴integrate(속도(t), t, 0, 최고점) 결과 19.6공은 4초 뒤에 착지하고 2초에 19.6m까지 올라가요. 착지 줄의 하한 1은 solve가 t = 0에
있는 다른 근을 피하게 해 줘요. 마지막 줄은 속도를 적분하는 다른 방법으로 높이를 확인해요.