Вища математика: функції та обмеження
Ця сторінка узагальнює розширені математичні можливості 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 |
| Найчастіше значення | mode([1,2,2,3]) |
2 |
| Процентиль | percentile([1,2,3,4],25) |
1.75 |
| Стандартне відхилення генеральної сукупності | population_stddev([1,2,3,4]) |
1.1180339887 |
| Сума на діапазоні | sum(k^2, k, 1, 10) |
385 |
| Добуток на діапазоні | product(k, k, 1, 5) |
120 |
| Точне розв'язання рівняння | solve(x^2 - 5x + 6 = 0) |
[2, 3] |
| Розв'язання рівняння в діапазоні | 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 |
Списки, матриці й комплексні числа — звичайні значення. Їм можна давати назви, передавати у власні функції; вони перераховуються після зміни попереднього рядка.
squares(n) = sum(k^2, k, 1, n)squares(3) дорівнює 14first(items) = items[0]first([10, 20]) дорівнює 10root(y) = solve(x^2 = y, x, 0, 10)root(9) дорівнює 3Що гарантує обчислювальний рушій
Усе на цій сторінці спирається на одне правило: обчислення або має обґрунтований результат, або показує помилку з поясненням. Точне обчислення ніколи не замінюється просто правдоподібним числом.
Точність відповіді
| Спосіб обчислення | Що охоплює |
|---|---|
| Точні дроби | Коефіцієнти рівняння й корінь лінійного рівняння; корені квадратного рівняння з дискримінантом — повним квадратом; матричні +, -, *, множення на число, transpose, det, inverse, rank і solve_system; median, mode, modes, percentile, quartile та всі три види дисперсії |
| Десятковий квадратний корінь | stddev, sample_stddev, population_stddev і корені інших квадратних рівнянь |
| Двійкова арифметика з рухомою комою | eigenvalues, qr, lu, svd, integrate і solve із чотирма аргументами |
Точність означає відсутність округлення від зчитування рядка до показу відповіді: точний результат зберігається після присвоєння назви, збереження й повторного використання. Наближений результат — десяткове число з обмеженою точністю, як у sqrt. Його остання показана цифра не гарантує правильного округлення, тому порівняння двох наближених результатів через == ненадійне: solve(x^2 - 2 = 0) і sqrt(2) обидва показують 1.4142135624, але не рівні.
В одній відповіді точні й наближені результати не змішуються. Якщо дискримінант квадратного рівняння не є повним квадратом, обидва корені будуть наближеними.
Одиниці
| Операція | Правило |
|---|---|
| Матриці | Лише числа без одиниць; одиниці, гроші й комплексні елементи не допускаються |
| Рівняння | Лише числа без одиниць в обох частинах |
median, mode, modes, percentile, quartile, stddev, population_stddev |
Одна спільна розмірність або числа без одиниць. Сумісні одиниці приводяться до одиниці першого значення, і відповідь її зберігає |
variance, sample_variance, population_variance |
Лише числа без одиниць: дисперсія підносить спостереження до квадрата й не зберігає одиниць |
Поєднання величин з одиницями та без них спричиняє помилку, а не мовчазне використання чисел без одиниць. Є один усталений виняток: окреме 0 набуває одиниці інших значень.
Що не допускається
Жодна з таких ситуацій не дає числа чи текстової відповіді. Кожна спричиняє помилку, яка називає непідтримувану дію та, якщо можливо, пропонує підтримуваний запис:
- Поліноміальне рівняння вище другого степеня, неполіноміальне рівняння, невідома в дільнику або показнику степеня, дві назви без заданих значень, рівняння без невідомої або з одиницями чи грошима. У кожному випадку повідомлення вказує на числовий
solveіз чотирма аргументами. - Рівняння без дійсного кореня не повертає комплексний; рівняння, правильне для всіх значень, не вибирає одне з них.
- Матрична операція з несумісними чи неквадратними розмірами, обернення виродженої матриці або елемент, що не є числом без одиниць.
mode, якщо жодне значення не повторюється або кілька значень мають однакову найбільшу частоту; процентиль поза межами 0–100; квартиль поза межами 0–4; будь-яка статистика порожнього списку, крімsum,productіcount.
Навмисно не підтримуються: символьні перетворення, крім збирання коефіцієнтів полінома, системи нелінійних рівнянь, комплексні корені дійсного рівняння, матриці з одиницями або грошима, символьне інтегрування й побудова графіків.
Самі повідомлення наведено на сторінці Помилки, діагностика й обмеження.
Запис списків і математичних функцій
- Коми розділяють елементи й аргументи. Кома з пробілом завжди є роздільником, а кома перед рівно трьома цифрами групує тисячі, тому
[1,200, 1,800]має два елементи. Без пробілів кожна кома розділяє елементи, як у[12,-51,4]. Якщо запис можна прочитати двома способами, як[1,234], повідомлення про помилку показує обидва однозначні варіанти. Для дробової частини використовуйте десяткову крапку. - Матриці — це списки рядків, наприклад
[[1,2],[3,4]]. Скорочений запис із крапкою з комою на зразок[1,2;3,4]не підтримується. - Індекси починаються з 0 і мають бути цілими невід'ємними числами. Індекс за межами списку спричиняє помилку: він не переходить циклічно на початок і не зменшується автоматично.
- Кількість аргументів перевіряється.
sqrt(4,9)спричиняє помилку, а не спробу вгадати намір.
Списки й статистика
Список приймають такі функції: length або count, sum, product, average або mean, median, min, max, mode і modes, percentile і quartile, а також функції розкиду variance, sample_variance, population_variance, stddev, sample_stddev і population_stddev.
modeповертає відповідь, лише коли одне значення трапляється строго найчастіше. Однакова найбільша частота чи відсутність повторів спричиняє помилку з посиланням наmodes,medianабоaverage.modesповертає всі найчастіші значення.percentile(list, rank)приймає ранг від 0 до 100 і лінійно інтерполює між двома найближчими рангами за визначенням із включеними краями: 50-й процентиль — медіана, а 0-й і 100-й — найменше й найбільше значення.quartile(list, k)приймає цілеkвід 0 до 4 і дорівнюєpercentile(list, 25k).varianceіstddev— вибіркові форми: вони ділять наn - 1і потребують двох значень.population_varianceіpopulation_stddevділять наnі потребують одного.sample_varianceіsample_stddev— повні назви коротких варіантів.- Для порожнього списку
sumдорівнює 0,product— 1, аcount— 0. Інші статистики порожнього списку спричиняють помилки. - Два списки однакової довжини додаються й віднімаються поелементно. Список можна множити або ділити на число, а два списки — порівнювати через
==. range(start, end, step)включає обидві межі. Крок необов'язковий.dot(a, b)обчислює скалярний добуток двох дійсних векторів.
spend = [420, 385, 510, 460] дорівнює [420, 385, 510, 460]sum(spend) дорівнює 1,775average(spend) дорівнює 443.75median(spend) дорівнює 440spend[0] дорівнює 420spend * 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 |
Точна вибіркова дисперсія з діленням на кількість значень мінус один |
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) |
Ранг будь-якої прямокутної матриці методом точного виключення |
dot(a, b) |
Скалярний добуток двох векторів однакової довжини |
cross(a, b) |
Векторний добуток двох векторів із трьома елементами |
solve_system(A, b) |
Розв'язує A*x = b для квадратної матриці A та одновимірного вектора 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 приймають прямокутні матриці й повертають компактні («тонкі») множники розкладу. Обчислення власних значень і SVD зупиняються після 10 000 ітерацій. У відображенні елемент, що є лише похибкою округлення відносно найбільшого елемента, показується як 0, але доступ за індексом повертає збережене значення. Погано обумовлені матриці можуть втрачати точність, тому не перевіряйте ці результати через ==.
# Two adult tickets and one child ticket cost 34; one adult and two children cost 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. Збережене значення лишається незмінним. - Порівняння:
<і>працюють, лише коли обидві уявні частини дорівнюють нулю. - Інші функції:
sin,cos,tanта обернені до них, гіперболічні й обернені гіперболічні функції,exp,ln,logабоlog10,log2,cbrt, а також дробові й комплексні степені приймають комплексні числа. Вони використовують арифметику з рухомою комою та головні гілки. Логарифм нуля й будь-який нескінченний або невизначений результат спричиняють помилку.
(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(equation) розпізнає поліноміальне рівняння першого або другого степеня з однією невідомою й обчислює його корені. Невідома — єдина назва в рівнянні без заданого значення; назва зі значенням підставляється як відповідна величина. Праву частину можна опустити — тоді вираз прирівнюється до нуля.
- Лінійне рівняння повертає число. Квадратне — список різних дійсних коренів за зростанням, тож кратний корінь дає список з одним елементом. Форма відповіді залежить від записаного степеня, а не кількості знайдених коренів.
- Коефіцієнти та їхні перетворення точні; корені також точні, якщо дискримінант є повним квадратом. Інше квадратне рівняння дає два корені в десятковому наближенні.
- Обидві частини мають бути числами без одиниць. Одиниці, гроші й комплексні значення не допускаються.
- Рівняння без дійсного кореня дає
Error: no real solution, а не комплексний корінь. Якщо рівняння виконується для всіх значень, повідомлення прямо вказує на це, не вибираючи окреме значення. - Усе інше — степінь 3 і вище, неполіноміальне рівняння, невідома в дільнику чи показнику степеня, друга назва без значення — відхиляється з підказкою форми з чотирма аргументами, наведеної нижче.
solve(2x + 6 = 10) дорівнює 2solve(x^2 - 5x + 6 = 0) дорівнює [2, 3]solve(x^2 - 2 = 0) дорівнює [-1.4142135624, 1.4142135624]solve(x^2 + 1 = 0) дорівнює Error: no real solutionsolve(expression, name, lower, upper) — інша функція: вона знаходить одне дійсне значення name між lower і upper, за якого вираз дорівнює нулю. solve(left = right, name, lower, upper) знаходить значення, за якого обидві частини рівні.
- Межі мають бути скінченними числами, причому
lowerменше заupper. - Корінь точно на межі приймається. Інакше вираз має бути додатним на одній межі й від'ємним на іншій та неперервним між ними.
- На кожному кроці пошук ділить інтервал навпіл. Він завершується успішно в межах 128 кроків, коли вираз відрізняється від нуля не більше ніж на
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) обчислює площу під графіком виразу між двома скінченними межами.
- Перестановка меж змінює знак відповіді, а однакові межі дають нуль.
- Використовуються адаптивні 7- і 15-точкові правила Гауса — Кронрода з нерівномірно розташованими точками. Це запобігає хибному результату для регулярних коливань на зразок
cos(128*pi*x):integrate(cos(128*pi*x), x, 0, 1)дає приблизно-1.3e-15, тобто нуль у межах похибки округлення. - Цільова загальна оцінка похибки — не більше ніж
1e-9від модуля відповіді (або1e-9для відповідей із модулем менше за 1). Метод порівнює щонайменше два рівні деталізації, враховує похибку округлення й спочатку уточнює ділянку з найбільшою оціненою похибкою. - Обчислення зупиняється після 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— крок, а не кількість знаків після коми:round(17, 5)округлює до найближчого кратного 5. Округлення до знаків після коми описано в розділі Округлення. - Логарифми, експоненти й гіперболічні функції не приймають одиниці або гроші. Звичайні тригонометричні функції приймають кути на зразок
30°. - Квадратні й кубічні корені зберігають одиниці, якщо їхні показники степеня діляться без остачі; піднесення величин до степеня також зберігає одиниці. Температуру в Цельсіях або Фаренгейтах не можна підносити до квадрата чи добувати з неї корінь.
gcd(12, 18) дорівнює 6round(17, 5) дорівнює 15sin(30°) дорівнює 0.5sqrt(9 m²) дорівнює 3 m(2 kg)^2 дорівнює 4 kg²Обмеження
Обмеження перевіряються до показу відповіді:
- 1 024 елементи у списку або
range - матриці до 32 × 32
- 10 000 членів в одному
sumабоproduct - 16 рівнів вкладених списків і викликів функцій
- 100 000 кроків для всіх розширених обчислень у рядку, включно з вкладеними викликами
- 4 096 біт у чисельнику або знаменнику дробу, як і в інших обчисленнях Varlig Calc
Досягнення обмеження показує помилку в цьому рядку, а решта нотатки продовжує працювати. Часткова сума, обернена матриця чи корінь без досягнутої збіжності ніколи не видаються за готову відповідь. Усі обмеження й пояснення точності наведено в розділі Читання результатів: відображення й точність.