loading..
Русский    English
16:48
листать

О генерации числовых последовательностей в SQL Server стр. 2

B. О последовательности чисел Фибоначчи

Последовательность Фибоначчи может быть вычислена с помощью следующей итерационной формулы:

A[i+2] = A[i] + A[i+1];  i = 1,…, n; A[1] = A[2] = 1.

Здесь очень легко увидеть аналогию с общим случаем предыдущего пункта, если ввести функцию f(x,y)=x+y.
Для хранения номера итерации i можно использовать колонку [iter], для A[i] используется колонка [a], для A[i+1] и A[i+2] - колонки [b] и [c]. Колонка [d] не потребуется. Используя общий подход, расчет чисел Фибоначчи можно выразить следующим кодом:

Консоль
Выполнить
  1. WITH Fibonacci(iter,a,b,c) AS
  2. (
  3.  SELECT iter=1, a=1, b=1, c=1+1
  4.  UNION ALL
  5.  SELECT iter+1, a=b, b=c, c=b+c
  6.  FROM Fibonacci WHERE b < 1000
  7. )
  8. SELECT * FROM Fibonacci;

Приведем результат запроса для вычисления чисел Фибоначчи, меньших 1000 (они
находятся во втором столбце таблицы).

iter a b c
1    1    1    2
2    1    2    3
3    2    3    5
4    3    5    8
5    5    8    13
6    8    13    21
7    13    21    34
8    21    34    55
9    34    55    89
10    55    89    144
11    89    144    233
12    144    233    377
13    233    377    610
14    377    610    987
15    610    987    1597
16    987    1597    2584

С. Нахождение корней уравнений

Большой раздел математического и функционального анализа посвящен нахождению корней уравнений функции одного и многих переменных. Корнем уравнения g(x) = 0 называется число r (или вектор r), удовлетворяющее условию: g(r) = 0. Общим методом решения таких уравнений является сведение задачи к задаче о неподвижной точке:

x=f(x).

Смысл такого сведения состоит в нахождении такой функции f, при которой уравнения g (x) = 0 и x = f(x) являются эквивалентными. Кроме того, оператор f должен быть сжимающим. То есть, если значение r1 находится рядом с решением r, то значение r2=f(r1) должно быть еще ближе к решению:
abs(r-r2) < A * abs(r-r1), где положительная константа A меньше единицы (A<1) и не зависит от выбора значения r1.

Сжимающих отображений может быть много. Предпочтительными являются те из них, для которых константа A принимает меньшее значение. Чем меньше константа, тем быстрее сходится процесс нахождения корня уравнения g(x):

r2 = f(r1), r3 = f(r2),  r4 = f(r3) …

Приведем иллюстрирующий пример на SQL.

Bookmark and Share
Страницы: 1 2 3
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE CONSTRAINT Convert COUNT CROSS APPLY CTE DATEADD DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FOREIGN KEY FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INFORMATION_SCHEMA INNER JOIN insert INTERSECT IS NOT NULL IS NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker Больше тэгов
Учебник обновлялся
месяц назад
https://exchangesumo.com/obmen/YAMRUB-EPAYEUR/
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.
Rambler's Top100