Треки
/
WebAssembly
WebAssembly
/
Вправи
/
Раціональні числа
Раціональні числа

Раціональні числа

Середня

Вказівки

Раціональне число визначається як частка двох цілих чисел a і b, які називаються відповідно чисельником і знаменником, де b != 0.

Note

Зауважмо, що математично знаменник не може дорівнювати нулю. Однак у багатьох реалізаціях раціональних чисел знаменник може бути нулем, а поведінка при цьому подібна до додатної чи відʼємної нескінченності в числах з плаваючою комою. У таких випадках знаменник і чисельник зазвичай усе одно не можуть бути нулями одночасно.

Абсолютна величина |r| раціонального числа r = a/b дорівнює |a|/|b|.

Сума двох раціональних чисел r₁ = a₁/b₁ і r₂ = a₂/b₂ дорівнює r₁ + r₂ = a₁/b₁ + a₂/b₂ = (a₁ * b₂ + a₂ * b₁) / (b₁ * b₂).

Різниця двох раціональних чисел r₁ = a₁/b₁ і r₂ = a₂/b₂ дорівнює r₁ - r₂ = a₁/b₁ - a₂/b₂ = (a₁ * b₂ - a₂ * b₁) / (b₁ * b₂).

Добуток (множення) двох раціональних чисел r₁ = a₁/b₁ і r₂ = a₂/b₂ дорівнює r₁ * r₂ = (a₁ * a₂) / (b₁ * b₂).

Ділення раціонального числа r₁ = a₁/b₁ на інше r₂ = a₂/b₂ дає r₁ / r₂ = (a₁ * b₂) / (a₂ * b₁), якщо a₂ не дорівнює нулю.

Піднесення раціонального числа r = a/b до невідʼємного цілого степеня n дає r^n = (a^n)/(b^n).

Піднесення раціонального числа r = a/b до відʼємного цілого степеня n дає r^n = (b^m)/(a^m), де m = |n|.

Піднесення раціонального числа r = a/b до дійсного (з плаваючою комою) числа x дає частку (a^x)/(b^x), яка є дійсним числом.

Піднесення дійсного числа x до раціонального числа r = a/b дає x^(a/b) = root(x^a, b), де root(p, q) позначає корінь q-го степеня з p.

Реалізуйте такі операції:

  • додавання, віднімання, множення та ділення двох раціональних чисел;
  • абсолютну величину, піднесення заданого раціонального числа до цілого степеня, піднесення заданого раціонального числа до дійсного (з плаваючою комою) степеня, піднесення дійсного числа до раціонального степеня.

Реалізація раціональних чисел завжди повинна бути зведена до нескоротного вигляду. Наприклад, 4/4 має зводитися до 1/1, 30/60 має зводитися до 1/2, 12/8 має зводитися до 3/2 тощо. Щоб скоротити раціональне число r = a/b, треба поділити a і b на найбільший спільний дільник (НСД) чисел a і b. Так, наприклад, gcd(12, 8) = 4, тому r = 12/8 можна звести до (12/4)/(8/4) = 3/2. Зведена форма раціонального числа має бути в «стандартному вигляді» (знаменник завжди має бути додатним цілим числом). Якщо знаменник є відʼємним цілим числом, треба помножити і чисельник, і знаменник на -1, щоб досягти стандартного вигляду. Наприклад, 3/-4 має бути зведено до -3/4

Вважайте, що в мові програмування, з якою ми працюємо, немає реалізації раціональних чисел.

Піднесення раціональних чисел до дійсного степеня потребує обчислення числа в нецілому степені, а такої можливості у WebAssembly вбудовано немає.

Однак вираз x ^ y можна також подати як x ^ y = exp(y * ln(x)).

І, на щастя, для обчислення експоненти й натурального логарифма можна скористатися різними рядами.

Експоненціальна функція

Найкращий спосіб обчислити експоненту - ряд Тейлора:

exp(x) ≃ 1 + x + x ^ 2 / 2! + x ^ 3 / 3! + x ^ 4 / 4! + ... + x ^ n / n!

Функція логарифма (для додатних x)

Існує багато способів ефективно обчислити натуральний логарифм. Один із них - ряд, побудований на оберненому гіперболічному тангенсі:

ln(x) / 2 ≃ y + y ^ 3 / 3 + y ^ 5 / 5 + ... + y ^ n / n where y = (x - 1) / (x + 1)

Є й інший ряд Тейлора для обчислення натурального логарифма:

ln(x) = (x - 1) - (x - 1) ^ 2 / 2 + (x  - 1) ^ 3 / 3 - (x - 1) ^ 4 / 4 ... + (x - 1) ^ n / n

Він дає точні результати лише для x у межах від 0 до 2. Однак можна також скористатися рівністю ln(x) = - ln(1 / x)

Піднесення до цілого степеня

Для піднесення до цілого степеня краще використовувати множення разом із циклом або рекурсією, і заради швидкодії, і заради точності. А щоб досягти ще кращої швидкодії, можна скористатися методом Горнера, який зменшує кількість множень.


Джерело

WikipediaПосилання відкривається в новому вікні або вкладці
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
WebAssembly Exercism

Час розпочати Раціональні числа?

Зареєструйтеся на Exercism, щоб вивчати й опановувати WebAssembly, а також 87 вправ та справжнє наставництво від людей, і все це безкоштовно.