2014 dxdy logo

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

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


Правила форума


В этом разделе нельзя создавать новые темы.



Начать новую тему Ответить на тему
 
 Найти функцию обратную функции нумерации диагональной пары
Сообщение07.04.2010, 21:15 


07/04/10
17
Есть лабораторная работа, в которой нужно найти диагональную пару по ее номеру. формула нумерации следущая.. (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 
Заслуженный участник
Аватара пользователя


22/11/06
1096
Одесса, ОНУ ИМЭМ
Насколько я понимаю, у вас есть квадратная таблица, элементу $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 


07/04/10
17
Не диагонального, а любого. P.S забыл сказать, что нумерация начинается с 0.

 Профиль  
                  
 
 Re: Найти функцию обратную функции нумерации диагональной пары
Сообщение08.04.2010, 08:32 
Заслуженный участник


11/05/08
32166
Перепишите уравнение в виде $\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