Как найти неявную функцию

Форум пользователей пакета Mathcad

Модератор: Admin

AACH
Сообщения: 33
Зарегистрирован: Чт янв 03, 2008 2:37 am
Контактная информация:

Сообщение AACH » Чт сен 23, 2010 4:42 pm

uni писал(а):А F9 жать пробовали? Или выполнить полную калькуляцию документа?

Чтобы построить график вашей задачи нужно ввести функцию:

f(u, mначальная) := exp(u/v) - mначальная/mконечная

Эту функцию подставлять в implicitplot2d().

Спасибо, все строит.

Додик
Сообщения: 69
Зарегистрирован: Ср апр 07, 2010 3:14 pm

Сообщение Додик » Сб сен 25, 2010 8:27 pm

uni, а можно Вам задать пару вопросов по Вашей работе? Или это секрет?
Например, для чего матрица TriTable?

uni
Сообщения: 1817
Зарегистрирован: Сб ноя 13, 2004 3:06 pm
Откуда: п.г.т. Излучинск
Контактная информация:

Сообщение uni » Сб сен 25, 2010 9:57 pm

Секрета нет. Можно. Это упрощённый вариант алгоритма Марширующих кубов. Этот алгоритм был предложен лет 30 назад для визуализации медицинских изображений в 3D.
Упрощённый - это значит то же самое, но в 2D.

TriTable - это упорядоченная таблица вершин с количеством строк 2^4 = 16. Название взято от прошлой функции. TRIangles TABLE - таблица вершин треугольников.

В данном случае это таблица вершин квадрата.

Код: Выделить всё

0000: -1,-1,-1,-1,-1
0001: 0,3,-1,-1,-1
0010: 0,1,-1,-1,-1
...
1111: 0,-1,-1,-1,-1


-1 - это метка СТОП для алгоритма рисования.
0,1,2,3 - это нумерация вершин квадрата.

В таблице перебраны все варианты, когда в вершинах перебираются + и -:
+ - положительное значение исследуемой функции;
- - отрицательное значение функции.

Область построения делится на условные квадраты. Все квадраты перебираются в цикле. Узнаются значения функции в вершинах каждого квадрата. Количество таких вариантов плюсов и минусов ограничено. Они занесены в вектор EdgeTable - список возможных вариантов чередования значений функции в "квадрате".

Если, к примеру, в квадрате две верхние вершины одного знака, а две нижние противоположного, то посередине будет линия. Её координаты вычисляются интерполяцией на ребрах квадрата.

uni
Сообщения: 1817
Зарегистрирован: Сб ноя 13, 2004 3:06 pm
Откуда: п.г.т. Излучинск
Контактная информация:

Сообщение uni » Сб сен 25, 2010 10:04 pm

Поищите в сети алгоритм Лоренсена и Клайна.

Додик
Сообщения: 69
Зарегистрирован: Ср апр 07, 2010 3:14 pm

Сообщение Додик » Вс сен 26, 2010 1:59 pm

uni, а Вы где нибудь публиковали свою работу?

uni
Сообщения: 1817
Зарегистрирован: Сб ноя 13, 2004 3:06 pm
Откуда: п.г.т. Излучинск
Контактная информация:

Сообщение uni » Вс сен 26, 2010 4:07 pm

А зачем? Этот алгоритм и так везде используется. В Derive, Maple, Mathematica и т.д.
Я и назвал функцию по типу таких же в других математических пакетах: implicitplot2d()

Эти функции известны для постоянных пользователей Mathcad у нас и на главном форуме тоже. Вообще, я сделал семейство функций:
implicitplot2d(), implicitplot3d() - для построения неявных функций в 2d и 3d соответственно;
fieldplot2d(), fieldplot3d() - для построения векторных полей и фазовых картин.

Ну и ещё много чего разного делал, но, увы, Mathcad теряет больше, чем приобретает, и я несколько отошёл от дел. Единственно, что меня ещё интересует - это решение СНУ и символьные вычисления как таковые.

uni
Сообщения: 1817
Зарегистрирован: Сб ноя 13, 2004 3:06 pm
Откуда: п.г.т. Излучинск
Контактная информация:

Сообщение uni » Вс сен 26, 2010 4:12 pm

Если интересен сам алгоритм, то вот тут кое-что есть про него на русском языке:
Выдержка из книжки
(дописывать книжку было некогда, а с выходом новых версий MC ещё и не интересно)

AACH
Сообщения: 33
Зарегистрирован: Чт янв 03, 2008 2:37 am
Контактная информация:

Сообщение AACH » Вт сен 28, 2010 5:42 am

uni, дайте пожалуйста ссылку на функцию implicitplot3d().

uni
Сообщения: 1817
Зарегистрирован: Сб ноя 13, 2004 3:06 pm
Откуда: п.г.т. Излучинск
Контактная информация:

Сообщение uni » Вт сен 28, 2010 3:26 pm

Вот тут документ MC11 с функциями, описанными выше. Только они работают либо с MC11, либо в MC14 M035.

http://files.mail.ru/OF2WYH

AACH
Сообщения: 33
Зарегистрирован: Чт янв 03, 2008 2:37 am
Контактная информация:

Сообщение AACH » Вт сен 28, 2010 5:51 pm

uni писал(а):Вот тут документ MC11 с функциями, описанными выше. Только они работают либо с MC11, либо в MC14 M035.

http://files.mail.ru/OF2WYH

Спасибо, работает в МС-13

Додик
Сообщения: 69
Зарегистрирован: Ср апр 07, 2010 3:14 pm

Сообщение Додик » Пн июл 11, 2011 11:22 pm

uni писал(а):А зачем? Этот алгоритм и так везде используется. В Derive, Maple, Mathematica и т.д.
Т.е., Вам без разницы, что пользуются вашими трудами и даже не ссылаются на Вас?

uni
Сообщения: 1817
Зарегистрирован: Сб ноя 13, 2004 3:06 pm
Откуда: п.г.т. Излучинск
Контактная информация:

Сообщение uni » Вт июл 12, 2011 12:19 am

Это я пользуюсь чужими трудами. Мой вклад - это лишь адаптация алгоритма к системе Mathcad. Ничего сложного там нет. Я бусплатно пользуюсь таким количеством ПО, что мне просто стыдно предъявлять кому-то какие-то требования. Пытаюсь в меру своих сил быть полезным обществу.

Сейчас я перешёл на другую программу - SMath Studio. Её возможности в будущем превысят таковые у Mathcad 11 и старше. Самое же главное, мне как программисту, - я могу неограниченно дополнять как символьную, так и численную библиотеки в этой программе. Ну и разработчик из Питера оперативно на всё реагирует. В ближайший год я перепишу все наработки Mathcad'а в эту программу.

Что интересно, программа работает под Линукс (в Mono).

Додик
Сообщения: 69
Зарегистрирован: Ср апр 07, 2010 3:14 pm

Сообщение Додик » Вт июл 12, 2011 9:49 pm

uni писал(а):Это я пользуюсь чужими трудами. Мой вклад - это лишь адаптация алгоритма к системе Mathcad. Ничего сложного там нет. Я бусплатно пользуюсь таким количеством ПО, что мне просто стыдно предъявлять кому-то какие-то требования. Пытаюсь в меру своих сил быть полезным обществу.

Непрограммистам это очень сложно. И, конечно, проще использовать готовый алгоритм, сославшись на какую то методику.