2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Найти функцию обратную функции нумерации диагональной пары
Сообщение07.04.2010, 21:15 
Есть лабораторная работа, в которой нужно найти диагональную пару по ее номеру. формула нумерации следущая.. (i+j)(i+j+1)/2 + i = n
ясно, что надо выразить индексы i и j через n. т.е Решить это уравнение в нат. числах.Решение будет и оно будет единственно из определения нумерации.. А вот с поиском самого решения возникли трудности.. единственное к чему с мог прийти это что (m+n)^2=z-3m-n -> Z>=3m+n. но мне это не помогло:(

 
 
 
 Re: Найти функцию обратную функции нумерации диагональной пары
Сообщение08.04.2010, 01:13 
Аватара пользователя
Насколько я понимаю, у вас есть квадратная таблица, элементу $a_{ij}$ которой присвоен порядковый номер $n(i,j)=(i+j)(i+j+1)/2+i$. Вам надо найти способ восстановления позиции диагонального элемента по его номеру, т. е. решить уравнение $n(i,i)=N$ относительно $i$.

Если я правильно вас понял, то достаточно заметить, что $n(i,i)=2i(i+1)$, а значит уравнение $n(i,i)=N$ сводится к квадратному $2i^2+2i-N=0$. Его вы решать умеете?

 
 
 
 Re: Найти функцию обратную функции нумерации диагональной пары
Сообщение08.04.2010, 08:12 
Не диагонального, а любого. P.S забыл сказать, что нумерация начинается с 0.

 
 
 
 Re: Найти функцию обратную функции нумерации диагональной пары
Сообщение08.04.2010, 08:32 
Перепишите уравнение в виде $\dfrac{k(k+1)}{2}+i=n, \quad 0\leqslant i \leqslant k, \quad k=i+j$. Возьмите в качестве $k_0$ целую часть неотрицательного корня квадратного уравнения $\dfrac{k(k+1)}{2}=n$. Тогда будет $i=n-\dfrac{k_0(k_0+1)}{2}$ и затем $j=k_0-i$.

Да, есть нюанс. Всё это хорошо на бумаге. Но если работа лабораторная, то предполагается, наверное, программная реализация. Тогда нельзя быть уверенным в том, что взятие целой части будет корректно работать в граничных случаях, когда значение корня окажется целым (т.е. в случаях $i=0$). Поэтому после вычисления $i,\;j$ надо проверить подстановкой, выполняется ли исходное соотношение -- и если нет, то просто увеличить $k_0$ на единицу и пересчитать $i,\;j$. (Можно и короче, но так логически проще.)

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group