Matlab  |  Mathcad  |  Maple  |  Mathematica  |  Statistica  |  Другие пакеты
Internet-класс  |  Примеры  |  Методики  |  Банк задач  |  Консультации & Форум  |  Download  |  Ссылки  |  Конкурсы
Справочник по Matlab
 
RAT, RATS
Представление результата в виде рационального числа или цепной дроби

Синтаксис:

[N, D] = rat(X) rat(X) S = rats(X)
[N, D] = rat(X, tol) rat(X, tol) S = rats(X, tol)

Описание:

Несмотря на то что все числа с плавающей точкой представлены в ком-пьютере в виде рациональных чисел, иногда целесообразно представить число в виде отношения двух относительно небольших целых чисел. Такое представление на основе цепных дробей и реализуется с использованием вышеперечисленных функций.

Функция [N, D] = rat(X) определяет для входа x два таких целых числа n и d, при которых выполняется условие n/d - x <= 1e-6*abs(x).

Функция [N, D] = rat(X, tol) позволяет указать точность приближения tol, отличную от 1e-6.

Функции rat(X) и rat(X, tol) позволяют вывести на экран результат в виде цепной дроби.

Если в качестве входа задан массив чисел X, то результатом операций будут массивы соответствующего размера.

Функция S = rats(X, k) использует функцию rat(X), чтобы вывести на экран результат в виде простой дроби
           s = [sprintf(['%' num2str(fix(k/2)), n) '/' sprintf(['%-' num2str(fix(k/2)) '.0f'], d)],
точность аппроксимации для которой составляет tol = 10^(-fix(k/2)) * abs(x).

Для функции S = rats(X) точность аппроксимации принимается по умолчанию равной 1e-6* abs(x), что соответствует значению k = 13.

Функция format rat равносильна функции rats.

Алгоритм:

Функция rat(X) аппроксимирует каждый элемент массива X цепной дробью следующего вид:

image601.gif (821 bytes)

Величины dk получены последовательным выделением целой части с последующим обращением дробной части. Точность аппроксимации возрастает по степенному закону с ростом числа членов. Самая медленная сходимость наблюдается при рациональной аппроксимации числа x = sqrt(2). Погрешность аппроксимации с учетом k членов составляет 2.68 * (0.173)^k, так что учет каждого последующего члена увеличивает точность менее чем на одну десятичную цифру, так что для достижения максимальной точности в арифметике с плавающей точкой требуется 21 член.

Примеры:

Рассмотрим аппроксимацию числа p в виде цепной дроби и рационального числа

            rat(pi)
            ans = 3 + 1/(7 + 1/(16))
            rat(pi, 1e-12)
            ans = 3 + 1/(7 + 1/(16 + 1/(-294 + 1/(3 + 1/(-4 + 1/(5))))))
            [n,d]=rat(pi);
            [n d]
            ans =   355     113
            [n, d]=rat(pi, 1e-12);
            [n d]
            ans =    5419351    1725033
            s = rats(pi)
            s = 355/113
            s = rats(pi, 26)
            s = 5419351/1725033

В начало страницы К предыдущему разделуК следующему разделу

Карта сайта | На первую страницу | Поиск |О проекте |Сотрудничество |
Exponenta Pro | Matlab.ru

Наши баннеры


Copyright © 2000-2003. Компания SoftLine. Все права защищены.

Дата последнего обновления информации на сайте: 15.04.03
Сайт начал работу 1.09.00

www.softline.ru

Призы для подписчиков научно-практического журнала: Exponenta Pro. Математика в приложениях