Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2014, 18:55   #1
КРИЖ
Пользователь
 
Регистрация: 08.03.2011
Сообщений: 44
По умолчанию Трехмерный массив в одномерный

Надо было сделать трехмерную модель Изинга, с примесями, но так как там приходиться бегать по 3 вложеным циклам, а тут ещё и вдобавок бегать по ячейкам трехмерого массива где хранятся значения спина, то захотелось сделать массив одномерный. И появилась такая вот проблема:в трехмерном массиве двигаюсь по нему таким вот образом
Код:
for(a=0;a<L*L*L;++a)//пробегаем по решётки и ищем случайный спин
{
	j = Mersenne.IRandomX(0,L-1);
	i = Mersenne.IRandomX(0,L-1);
	k = Mersenne.IRandomX(0,L-1);

	r = Mersenne.Random();

	if(sp[i+L*j+L*k])
	{
		if(r<0.5)
		{
			sp_new=sp[i+L*j+L*k];
		}
		else
		{
			sp_new=-sp[i+L*j+L*k];
			dE=(double)2*sp[i+L*j+L*k]*Sosedu(sp,i,j,k);
							
			//тепловая баня
			if(dE<=0.0)//if((dE<=0.0)||(dE<=-0.0))
			{
				//sp[i+L*j+L*k]=sp_new;
				r = Mersenne.Random();
				if(w(dE,T)>r)
				{
					sp[i+L*j+L*k]=sp_new;
				}
			}
			else
			{
				r = Mersenne.Random();
				if(w(dE,T)>r)
				{
					sp[i+L*j+L*k]=sp_new;
				}
			}
		}
	}
}//закончили пробег по случайному спину
и как потом выяснялось что не для всех j,k это справедливо, например для j=0 или k=0, мы попадаем в одни и тот же участок памяти, вопрос как можно двигать по нему, но именно с индексами i,j,k. Знаю что можно обойтись одним, но генерировать надо именно i,j,k так как есть функция которая считает по ближайщим спинам.
КРИЖ вне форума Ответить с цитированием
Старый 12.10.2014, 20:14   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Теперь дайте полное описание задачи. Может вы изначально неправильно решаете
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Трехмерный массив Leisan_S Паскаль, Turbo Pascal, PascalABC.NET 7 09.01.2015 19:17
Трехмерный динамический массив в Pascal 4итер Помощь студентам 3 05.06.2013 10:51
трехмерный массив Bape}l{ka Microsoft Office Excel 12 26.01.2012 15:11
трехмерный массив world12_tk Помощь студентам 2 06.01.2012 17:04
Трехмерный дин. массив revanatar Общие вопросы C/C++ 3 29.11.2010 22:02