Перейти к содержимому

Как работает функция find в маткаде

  • автор:

Как работает функция find в маткаде

• Функции find(var1, var2, . ) , minerr(var1, var2, . ) возвращают значения var1 , var2 , . , удовлетворяющие уравнениям и неравенствам, заданным в блоке решения. Если требуется найти n переменных, блок решения должен содержать n уравнений. Допускается матричное представление как при решении с матричными переменными.

Если имеется только одна неизвестная переменная, решением будет скаляр. В противном случае решением будет вектор, в котором первый элемент — переменная var1 , второй — var2 и т. д. Если имеется несколько неизвестных переменных, результатом будет вектор из найденных значений переменных. Нельзя найти решение для отдельного элемента в векторе, используемом в блоке решения. PTC Mathcad подбирает значения всех неизвестных переменных одновременно для минимизации погрешности.

• var1 , var2 , . являются скалярами или переменными-массивами, имеющимися в системе уравнений. В теле блока решения или перед ним необходимо задать начальные приближения для всех переменных. Если ожидается получение комплексного решения, то должны использоваться комплексные значения начального приближения.

Дополнительные сведения
• Функции find и minerr действуют только внутри блоков решения.
• Если в блоке решения используется функция minerr , необходимо проверять правильность результата.
• В функциях find и minerr для решения используется метод Левенберга-Маркара.

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

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

• Функция minerr отличается от функций find и minimize тем, что если выбранный алгоритм не сходится, то возвращается ответ, найденный на последней допустимой итерации, даже если он не удовлетворяет критерию сходимости. Если алгоритм сходится, то функция minerr возвращает те же результаты, что и find .

• Наследованные функции PTC Mathcad Minerr и Find взаимозаменяемы с find и minerr соответственно.

• При вставке функций нижнего регистра с ленты или при вводе вручную версий в нижнем или верхнем регистре им автоматически назначается обозначение Ключевое слово (Keyword) .

• Если система не сходится, но необходимо узнать найденное решение, даже если оно не удовлетворяет критериям сходимости, воспользуйтесь функцией minerr .

• Значение CTOL может влиять на решение для нелинейных систем. Если задать значение CTOL слишком малым, решение может не сойтись. Если возникла такая проблема, попробуйте изменить значение CTOL . Можно также попробовать изменить начальное приближение или добавить ограничение в виде неравенства.

Решение систем уравнений в MathCad

Для решения уравнений в Mathcad можно воспользоваться двумя способами. Эти способы были частично рассмотрены в разделе «Решение уравнений»:

Использование метода Given — Find:

В рабочем поле mathcad записываем слово Given. Это служебное слово. Оно подключает определенные программные модули mathcad для обработки исходных данных, необходимых для решения системы уравнений численными методами.

Затем указывается начальное приближение для искомых переменных. Это нужно для увеличения скорости и точности решения системы. Если начальное приближение не задать, то mathcad по умолчанию примет его равным нулю для всех переменных, при этом, если окажется, что система имеет несколько решений, то есть риск не определить все корни. Поэтому лучше всегда задавать приближение

Рис. 1. Ввод исходных данных в поле mathcad

Далее вводятся уравнения. Их можно записать в явном или неявном виде. Само уравнение набирается с клавиатуры вручную с использованием панели Calculator. Из этой панели можно взять основные математические операции: дроби, тригонометрию, факториалы и прочее. Уравнение нужно записывать с использованием логического символа «ровно». На панели Boolean он выделен жирным шрифтом (см. рис. 2)

Рис. 2. Панели Boolean и Calculator

Когда уравнения записаны вводится функция Find(x, y, z. ) (где х, y, z. — переменные). Это функция, которая возвращает результат решения системы. Значение функции Find() можно присвоить какой-либо переменной с помощью символа «:=» и использовать ее далее в расчетах (см. рис. 3). При решении систем уравнений в mathcad результатом всегда будет являтся матрица значений

Рис. 3. Ввод функции Find()

Для того чтобы увидеть результат решения системы уравнений, после Find(x, y, z. ) следует поставить символ «» либо «=» из панели Evaluation (см. рис. 4).

Рис. 4. Панель «Evaluation»

В зависимости от сложности системы через определенное время MathCad выведет результат. На рис. 5 можно рассмотреть синтаксис и результат решения системы уравнений. Обратите внимание, что можно присваивать результат решения системы матричной переменной и можно работать с отдельными ее элементами

Рис. 5. Результат численного решения системы уравнений

Mathcad позволяет решать системы уравний в символьном виде. Обычно это полезно, когда требуется получить не точное значение переменных, а их выражения через константы. Например, если мы заменим все числовые константы на неизвестные параметры и решим уравнение относительно x, y и z, то результат выведется в символьном виде (см. рис. 6). Причем, обратите внимание, что в данном случае нам не нужно вводить начальное приближение и мы должны использовать символ «» для вывода результата. Как правило, символьное решение получается громоздким, поэтому не всегда рекомендуется использовать этот метод

Рис. 6. Результат символьного решения системы уравнений

Использование метода Solve:

Как показывает практика, методом solve иногда удается решить системы уравнений, которые не поддаются решению с помощью функции Find()

Синтаксис следующий: на панели matrix нажимаем иконку Matrix or Vector и в появившемся окне указываем количество уравнений входящих в систему. В нашем примере их будет три (см. рис. 7)

Рис. 7. Создание матрицы для метода SOLVE

Заполняем систему, вводя последовательно все уравнения используя логический символ «ровно» из панели Boolean. Каждый элемент матрицы-столбца содержит одно уравнение (см. рис. 8)

Рис. 8. Ввод системы уравнений для метода SOLVE

Когда все уравнения введены, убедитесь, что курсор ввода находится в вашей матрице и затем нажмите кнопку «solve» из панели Symbolic. Появится служебное слово (функция) solve. Далее поставте запятую и введите последовательно все переменные, относительно которых необходимо решить систему уравнений (см. рис. 9)

Рис. 9. Синтаксис метода SOLVE для решения систем

Уведите курсор в свободное поле mathcad и дождитесь окончания решения системы. Обратите внимание, что мы не вводили начальные приближения. Даный метод их назначает автоматически. Обратите так же внимание, что для решения системы в символьном виде синтаксис аналогичен (см. рис. 10)

Рис. 10. Синтаксис метода SOLVE для решения систем

Как показывает моя инженерная практика, решение систем в символьном виде сопряжено с большими вычислительными трудностями. То есть иногда решение системы занимает массу времени, и в итоге mathcad выдает выражение для одной переменной непомерной длины, которое нельзя использовать. Поэтому рекомендуется прменять эту возможность лишь в крайних случаях и по возможности «помогать» mathcad, заменяя константы известными числовыми значениями

Donec eget ex magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fergiat. Pellentesque in mi eu massa lacinia malesuada et a elit. Donec urna ex, lacinia in purus ac, pretium pulvinar mauris. Curabitur sapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dapibus rutrum facilisis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tristique libero eu nibh porttitor fermentum. Nullam venenatis erat id vehicula viverra. Nunc ultrices eros ut ultricies condimentum. Mauris risus lacus, blandit sit amet venenatis non, bibendum vitae dolor. Nunc lorem mauris, fringilla in aliquam at, euismod in lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In non lorem sit amet elit placerat maximus. Pellentesque aliquam maximus risus, vel venenatis mauris vehicula hendrerit.

Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fersapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique lorem ipsum dolor.

Форма обратной связи

Поделиться

Статистика

  • © student-engineer.pro :: Semen Kuptcov

Как работает функция find в маткаде

Функции > Решение и оптимизация > Пример. Решение системы линейных уравнений

Пример. Решение системы линейных уравнений

Решите систему n линейных уравнений с n неизвестными с использованием функции lsolve или с помощью блоков решения

Использование lsolve

1. Предположим, что имеется следующий набор уравнений (определенных с помощью оператора «равно»):

Щелкните для копирования этого выражения

2. Задайте несингулярную матрицу, соответствующую данной системе уравнений:

Щелкните для копирования этого выражения

3. Задайте вектор из констант, соответствующий данной системе уравнений.

Щелкните для копирования этого выражения

4. Используйте функцию lsolve для поиска решения:

Щелкните для копирования этого выражения

Щелкните для копирования этого выражения

Использование блоков решения

Вышеприведенную систему уравнений также можно решить с помощью блока решения.

Если представить систему в виде матрицы, умноженной на неизвестный вектор X, то необходимо найти решение одновременно для всех переменных в векторе. В такой формулировке ни один из элементов вектора нельзя представить в виде константы.

1. Задайте вектор начальных приближений X:

Щелкните для копирования этого выражения

Щелкните для копирования этого выражения

2. Вставьте блок решения, а затем используйте функцию find для решения заданной системы уравнений:

Щелкните для копирования этого выражения

В вектор начальных приближений X должен быть определен выше и за пределами блока решения.

Блоки решения — решения для матриц

1. Задайте набор алгебраических уравнений Риккати (из теории систем и управления):

Щелкните для копирования этого выражения

Щелкните для копирования этого выражения

Щелкните для копирования этого выражения

2. Задайте матрицу начальных приближений как единичную матрицу:

Щелкните для копирования этого выражения

3. Используйте функцию find для решения заданного набора уравнений:

Щелкните для копирования этого выражения

Единицы измерения в блоках решения

1. Задайте V1 , V2 и V3 значение 1 вольт:

Щелкните для копирования этого выражения

Щелкните для копирования этого выражения

Щелкните для копирования этого выражения

2. Задайте и решите систему уравнений с тремя неизвестными:

Научная электронная библиотека

Решение систем уравнений MathCAD осуществляет численными методами. При этом должно быть задано некоторое начальное приближение для тех переменных, значение которых необходимо найти. Основываясь на этих начальных данных, MathCAD будет последовательно уточнять решение до тех пор, пока не подберет наиболее точные значения. Проблемы возникают, когда нелинейная система имеет несколько решений. За один раз MathCAD находит только одно решение, которое обычно более близко к заданному начальному приближению. Поэтому в таких случаях необходимо решать систему несколько раз с различными начальными приближениями.

Решающий блок состоит из нескольких компонент, следующих на листе в строго определенном порядке:

1.2.1. Начальное приближение (присваивание начальных значений переменным).

1.2.2. Директива Given, которую необходимо набрать с клавиатуры.

1.2.3. Уравнения, которые необходимо решить. Уравнения вводятся в обычной математической форме, но вместо простого знака равенства «=» используется оператор логического равенства (вводится путем нажатия Ctrl- =).

1.2.4. Обращение к функции Find. Аргументами функции являются имена переменных, относительно которых решается система. Функция возвращает вектор значений, где первый элемент соответствует первой переменной в списке аргументов, второй элемент – второй переменной и так далее.

Пример. Решим систему нелинейных уравнений:

Данная система имеет два решения. Найдем одно из них (рис. 11) с начальным приближением x = 0; y = 0.

Последняя запись – вектор (–1; –2) есть значение, которое вернула функция Find, то есть одно из решений системы. Найти второе решение можно, если взять другое начальное приближение x = 2; y = 2. Тогда функция Find вернет вектор (2; 4).

Начиная с MathCAD 2000 существует возможность одновременно найти несколько решений. Для этого система уравнений и начальные приближения должны быть переписаны в векторной форме (рис. 12). Каждая переменная будет вектором, содержащим столько компонент, сколько решений находится. В системе изменения коснутся преимущественно членов с перемножением переменных. Допустим, что в уравнении присутствует выражение x*x. Если x = (x1; x2) – вектор, то x∙x = x1∙x1 + x2∙x2. Нам же необходим результат поэлементного перемножения (x1∙x1; x2∙x2). Для этого существует специальная операция, записываемая как .

Рис. 11. Решение системы в MathCAD

Рис. 12. Пример одновременного поиска нескольких решений

Изменения коснулись и части получения результата. В данном случае функция Find вернет вектор из двух элементов, которые мы обозначили как X и Y. Каждый из этих элементов есть вектор значений x или y для решений. Соответственно первое решение – (–1; –2); второе решение – (2; 4).

Аналитическое решение линейных и нелинейных систем уравнений

Данное решение используется для получения решений в общем виде. Обычно при этом система уравнений записывается только с использованием буквенных обозначений переменных, без конкретных чисел. Для получения аналитического решения (рис. 13, 14) используется оператор аналитического вычисления «→» вместо оператора числового вычисления «=».

Рис. 13. Пример аналитического решения нелинейной системы

Рис. 14. Пример аналитического решения линейной системы

Следует обратить внимание, что здесь при решении системы нелинейных уравнений в блоке Given-Find уже нет необходимости указывать начальные приближения, поскольку решение идет не численными, а символьными методами (используется ядро математической системы Maple).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *