2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 задание области в Mathematica
Сообщение29.03.2012, 13:17 


14/03/12
52
Здравствуйте!
У меня имеется набор точек с координатами {x,y,z}. Мне необходимо выделить область, находящуюся между двумя полуокружностями. Т.е. из массива точек {x,y,z} исключить те точки, чьи координаты x и y принадлежат полуокружностям. Координаты центров окружностей и радиус мне известны. Как это сделать в Mathematica?
Например,
Select[f, VectorQ[#] && #[[1]] > 1 && #[[2]] > 2 && #[[3]] > 0 &]
Таким образом я могу выделить область, для которой x>1,y>2,z>0. Как тут задать окружность?

$(x-xi)^2 + (y-yi)^2 = R^2$ - окружность радиуса R с центром в точке {xi,yi}.
Как задать точки с координатами, принадлежащими этой окружности (или наоборот, не принадлежащими - буду использовать "Drop")?

 Профиль  
                  
 
 Re: задание области в Mathematica
Сообщение29.03.2012, 20:36 
Заслуженный участник


25/02/11
1797
По поводу выбора точек на окружности. Данные для нее представим в виде массива, окружность задается координатами центра, скажем, $(1,0)$ и радиусом, в данном случае 3:
Код:
circle = {{1, 0}, 3}

Определим проверку того, что точка с координатами coords1
лежит на окружности {coords2,R}:
Код:
cond[coord1_, {coord2_, R_}] := Norm[coord1 - coord2] == R

Дает True, если лежит и False, если нет.
Теперь для массива точек
Код:
points = {{1, 2}, {4, 0}, {3, 1}, {1, 3}}

выбрать лежащие на окружности можно так:
Код:
Select[points, cond[#, circle] &]

дает
Код:
{{4, 0}, {1, 3}}

А не лежащие
Код:
Select[points, !cond[#, circle] &]

 Профиль  
                  
 
 Re: задание области в Mathematica
Сообщение30.03.2012, 12:08 


14/03/12
52
Vince Diesel спасибо!

А если мне нужно, к примеру, выбрать точку с координатой "x", которая находится вне круга радиуса R=0.6.

points = {{0.5, 0.5, 100}, {2, 3, 100}};

cond[coord1_, {coord2_, R_}] := Norm[coord1 - coord2] > R

Select[points, cond[VectorQ[#] && #[[1]], circle = {{0, 0}, 0.6}] &]

Мне выдаёт: {{0.5, 0.5, 100}, {2, 3, 100}}
А должен выдать {{2,3,100}}
Где у меня ошибка?

 Профиль  
                  
 
 Re: задание области в Mathematica
Сообщение30.03.2012, 14:39 
Заслуженный участник


25/02/11
1797
Если точки на плоскости, почему у них по три координаты?

Если речь идет о первой координате, то зачем огрод с окружностью городить? Смин. исправлениями можно так:
Код:
cond[coord1_, {coord2_, R_}] := Norm[coord1[[1]] - coord2[[1]]] > R
Select[points, cond[#, circle = {{0, 0}, 0.6}] &]

 Профиль  
                  
 
 Re: задание области в Mathematica
Сообщение30.03.2012, 15:23 


14/03/12
52
Vince Diesel в сообщении #553785 писал(а):
Если точки на плоскости, почему у них по три координаты?

То что нужно! Спасибо!
две координаты {x,y} в плоскости, в которой окружности находятся и одна координата {z} соответствует значению функции (величина поля). Выкидывая некоторые точки, я отбрасываю ненужные мне значения функции в определенной области.

 Профиль  
                  
 
 Re: задание области в Mathematica
Сообщение02.04.2012, 11:13 


14/03/12
52
Дизель,
Всё таки я не могу отдельно по координатам отбрасывать ненужные мне точки. Получаю неправильный результат.
Необходимо выделить точки с координатами {x,y}, но в то же время тащить за собой z.
То есть у меня массив {x,y,z}.
Именно так, как раньше:
cond[coord1_, {coord2_, R_}] := Norm[coord1 - coord2] > R
Select[points, cond[#, circle = {{0, 0}, 1}] &];

только, где points={{x,y,z}} с независимым z, а не {{x,y}}. Как мне это сделать?
Мне нужно исключить точку {x1,y1,z1}, координаты которой x1 и y1 лежат внутри окружности R.
Но также и z1 - это какое-то число, которое мне тоже необходимо выкинуть, если x1 и y1 не удовлетворяют условиям "cond".

 Профиль  
                  
 
 Re: задание области в Mathematica
Сообщение02.04.2012, 12:16 
Заслуженный участник


25/02/11
1797
Код:
points = {{0.5, 0.5, 100}, {2, 3, 100}};
cond[coord1_, {coord2_, R_}] := Norm[coord1[[1 ;; 2]] - coord2[[1 ;; 2]]] > R
Select[points, cond[#, circle = {{0, 0}, 0.6}] &]

 Профиль  
                  
 
 Re: задание области в Mathematica
Сообщение02.04.2012, 12:34 


14/03/12
52
Vince Diesel

ОНО! Спасибо

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group