2014 dxdy logo

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

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




 
 задание области в Mathematica
Сообщение29.03.2012, 13:17 
Здравствуйте!
У меня имеется набор точек с координатами {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 
По поводу выбора точек на окружности. Данные для нее представим в виде массива, окружность задается координатами центра, скажем, $(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 
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 
Если точки на плоскости, почему у них по три координаты?

Если речь идет о первой координате, то зачем огрод с окружностью городить? Смин. исправлениями можно так:
Код:
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 
Vince Diesel в сообщении #553785 писал(а):
Если точки на плоскости, почему у них по три координаты?

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

 
 
 
 Re: задание области в Mathematica
Сообщение02.04.2012, 11:13 
Дизель,
Всё таки я не могу отдельно по координатам отбрасывать ненужные мне точки. Получаю неправильный результат.
Необходимо выделить точки с координатами {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 
Код:
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 
Vince Diesel

ОНО! Спасибо

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


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