БлогNot. Mathcad: попадание точки в область и уравнение прямой по 2 точкам :)

Mathcad: попадание точки в область и уравнение прямой по 2 точкам :)

Представим, что нам нужна функция, умеющая отличать ситуацию, когда точка на плоскости попадает в одну или несколько областей, описанных некими соотношениями, от ситуации, когда точка в области не попадает. Эта область может быть, например, такой (закрашена на рисунке):

написать функцию Mathcad, определяющую попадание точки на плоскости в некоторую область
написать функцию Mathcad, определяющую попадание точки на плоскости в некоторую область

Расчёт может зависеть от одного или нескольких дополнительных параметров (в нашем случае это значение R), которые можно передать как дополнительные аргументы функции или просто определить как переменные.

Задачу будет решать функция F(x,y) следующего вида:

F(x,y):=if(0≤x≤2⋅Rʌ0≤y≤2⋅Rʌx2+y2≥R2vx≤0ʌy≤0ʌy≥a⋅x+b,1,0)

Откуда она взялась?

Так как нас интересует только факт попадания или непопадания точки с координатами (x,y) в область, общий шаблон функции будет иметь вид

F(x,y):=if(условие,1,0)

то есть, при истинном условии возвращается 1, а при ложном 0. Осталось написать условие. Непересекающихся областей на рисунке две, конкретная точка может попадать только в одну из них, поэтому условие имеет общий вид

область1vобласть2

, где операция логического "или" (or), обозначаемая в Mathcad символом "v", вводится соответствующей кнопкой панели инструментов Boolean (Логический), там же, кстати, находятся и остальные значки отношений, такие как ≤, ≥ и т.п.

Примем за область1 квадрат со стороной 2⋅R, из которого вырезана четвертушка окружности. Попадание точки в "чистый" квадрат можно записать условием

0≤x≤2⋅Rʌ0≤y≤2⋅R

Существенно, что ограничения на координаты x и y точек, образующих квадрат, должны выполняться одновременно, поэтому они объединены операцией логического "и" (and), которая в Mathcad обозначается "ʌ" и вводится с той же панели Boolean. Точка, попадающая в квадрат, не должна при этом лежать внутри окружности радиуса R с центром в начале координат, учтём это дополнительным условием

x2+y2≥R2

которое свяжем той же операцией "ʌ" с остальными двумя ограничениями.

Теперь разберёмся с областью 2. Отсечь третью координатную четверть, в которой находится наша треугольная область, легко условием вида x≤0ʌy≤0, а чтобы получить условие, записанное в форме y≥a⋅x+b, нужно вывести уравнение прямой y=a⋅x+b, то есть, найти коэффициенты a, b прямой, проходящей через точки с координатами (-2⋅R,0), (0,-2⋅R). Тогда все точки, отвечающие условию y=a⋅x+b, будут лежать на прямой, условие y<a⋅x+b описывает полуплоскость ниже прямой, а y>a⋅x+b - выше. Мы везде ставим знаки ≤и ≥ вместо < и >, так как включаем в отсекаемые области их границы.

Как в Mathcad найти уравнение прямой, проходящей через 2 точки? Способов, по крайней мере, два.

1. Занести координаты x, y двух точек в соответствующие векторы, затем вызвать стандартную функцию slope ("наклон") для вычисления коэффициента a, а функцию intercept ("отсечка") для получения коэффициента b:

вычисление коэффициентов прямой, проходящей через 2 точки, стандартными функциями Mathcad
вычисление коэффициентов прямой, проходящей через 2 точки, стандартными функциями Mathcad

Здесь для удобства введена нумерация элементов векторов с единицы вместо принятого по умолчанию нуля (оператор ORIGIN:=1). Обратите внимание, что x-координаты точек указаны в векторе x, а y-координаты - в векторе y.

2. Почитать всё вручную. Так как прямая проходит через две заданные точки с координатами (x1,y1) и (x2,y2), имеем систему двух уравнений с двумя неизвестными, решаемую относительно неизвестных a, b:

a*x1+b=y1
a*x2+b=y2

Вычитая из второго уравнение первое, получаем

a = (y2-y1)/(x2-x1)

после чего находим b=y1-a*x1 или y2-a*x2. Это работает при любых x1≠x2, а если x1=x2, то уравнение прямой превращается просто в x=const.

"ручное" вычисление в Mathcad коэффициентов прямой, проходящей через 2 точки
"ручное" вычисление в Mathcad коэффициентов прямой, проходящей через 2 точки

Наконец, такую область легко изобразить на контурной диаграмме (верхнее меню Insert - Graph - Contour plot или Вставка - График - Контурный). Просто подготовим таблицу значений функции F(x,y) с помощью стандартного метода CreateMesh и вставим диаграмму:

графическое изображение области на плоскости с помощью контурной диаграммы в Mathcad
графическое изображение области на плоскости с помощью контурной диаграммы в Mathcad

 Скачать архив .zip с этим документом .xmcd Mathcad 14/15 (17 Кб)

Если мы хотим хранить координаты каждой точки в своём отдельном векторе из 2 элементов, работу с функциями придётся изменить, кроме того, есть отдельная функция line, чтобы посчитать сразу два коэффициента прямой, проходящей через две точки (первый коэффициент будет означать значение intercept, а второй slope). Пример показан на рисунке ниже.

Уравнение прямой по 2 точкам функцией line, точки заданы отдельными векторами
Уравнение прямой по 2 точкам функцией line, точки заданы отдельными векторами

26.03.2017, 17:12 [8658 просмотров]


теги: числа учебное графика mathcad

К этой статье пока нет комментариев, Ваш будет первым