|
smath |
|
|
Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member Сказал «Спасибо»: 634 раз |
Доступна новая версия: SMath Studio 0.65.0 beta Бесплатный математический пакет с графическим интерфейсом для вычисления математических выражений и построения двумерных и трёхмерных графиков. Поддерживает работу с матрицами, векторами, комплексными числами, дробями и алгебраическими системами. Удобный, графический (как на бумаге) интерфейс и богатые вычислительные возможности программы хорошо сочетаются с достойным количеством настроек и автоматических режимов. В дистрибутив программы также встроен информативный математический справочник. SMath Studio Handheld на смартфоне
Цитата: Управление: численное вычисление выражения (аналог знака «=»); удерживание клавиши нажатой более 0,4 сек позволяет произвести символьное вычисление выражения (знак «стрелка вправо»). Также, нажатие «щелчком» по клавише вызывает оператор присваивания, в том случае, если во время нажатия курсор находится справа от новой пользовательской переменной или функции. SMath Studio Handheld на коммуникаторе (КПК)
SMath Studio Desktop на настольном компьютере Исправленные ошибки и новые возможности
Известные ошибки и ограничения Системные требования Среда: .NET Compact Framework 2.0 cab (5,33МБ), zip (1,99МБ) Поддерживаемые языки интерфейса Handheld (18 языков): Desktop (1 язык): Загрузка
ВАЖНО: Перед установкой программы необходимо удалить предыдущую её версию. Отредактировано пользователем 16 ноября 2008 г. 4:01:14(UTC) |
![]() |
WWW |
| Пользователи, просматривающие эту тему |
|
Guest |
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Написал вот такой код:
static int cmp(const void* a, const void* b) {
return( ((massifVoltageAndIndex*)a)->Voltage -
((massifVoltageAndIndex*)b)->Voltage );
}
При сборки получил предупреждение «old-style cast» попытался исправить на
static int cmp(const void* a, const void* b) {
return( (reinterpret_cast<massifVoltageAndIndex*>(a))->Voltage -
(reinterpret_cast<massifVoltageAndIndex*>(b))->Voltage );
}
Но получил ошибку:
error: reinterpret_cast from type ‘const void*’ to type
‘massifVoltageAndIndex*’ casts away qualifiers
return( (reinterpret_cast<massifVoltageAndIndex*>(a))->Voltage -
(reinterpret_cast<massifVoltageAndIndex*>(b))->Voltage );
^
![]()
Teivaz
9746 серебряных знаков15 бронзовых знаков
задан 23 фев 2020 в 15:02
Кушаем слона по кусочку 🙂
static int cmp(const void* a, const void* b)
{
return ((reinterpret_cast<massifVoltageAndIndex*>(const_cast<void*>(a)))->Voltage -
(reinterpret_cast<massifVoltageAndIndex*>(const_cast<void*>(b)))->Voltage);
}
ответ дан 23 фев 2020 в 15:06
![]()
HarryHarry
210k15 золотых знаков114 серебряных знаков224 бронзовых знака
1
Здесь нет ни одной причины использовать C-style, reinterpret или const кастование:
static int cmp(const void* a, const void* b)
{
using Ptr = massifVoltageAndIndex const *;
return static_cast<Ptr>(a)->Voltage - static_cast<Ptr>(b)->Voltage;
}
ответ дан 23 фев 2020 в 15:30
![]()
user7860670user7860670
28.3k3 золотых знака16 серебряных знаков34 бронзовых знака
2
ИНФОРМАТИКА И ВычИСЛИТЕЛьНАЯ ТЕХНИКА И УПРАВЛЕНИЕ
Ушаков Ю. А., Ушакова Н. Ю. О специфике применения Smath Studio в электротехнических расчетах // Современная наука: актуальные проблемы теории и практики. Серия: Естественные и Технические Науки. -2020. -№12. -С. 145-155 DOI 10.37882/22232966.2020.12.38
DOI 10.37882/2223–2966.2020.12.38
ОСПЕЦИФИКЕ ПРИМЕНЕНИЯ SMATH STUDIO
ВЭЛЕКТРОТЕХНИЧЕСКИХ РАСЧЕТАХ
SMATH STUDIO FEATURES APPLICATION IN ELECTRICAL ENGINEERING CALCULATIONS
Yu. Ushakov
N.Ushakova
Summary. The article discusses the features of using the free mathematical program Smath Studio for solving electrical tasks. The differences betweenSmathStudioandMathcadintheanalysisofsteady-stateand transientmodesinlinearandnonlinearelectricalandmagneticcircuits, the specifics of graphic illustrations of electrical calculations, and the practical use of executable files are described.
Keywords: Smath Studio, Mathcad, theoretical electrical engineering, steady state and transient analysis.
|
В |
последние годы значительно повысился интерес |
|
российских пользователей к бесплатной мате- |
матической программе Smath Studio [1], разработчиком которой является российский программист Андрей Ивашов. Это связано как с реализуемой в настоящее время государственной политикой последовательного перехода организаций в различных областях деятельности на преимущественное использование отечественного и свободного программного обеспечения (ПО) [2], так и с потребностью в доступных и бесплатных программах при дистанционном режиме обучения или
работы.
По сравнению с другими бесплатными математическими программами Smath Studio имеет ряд явных преимуществ: доступность, малый объем, возможность
|
установки при различных операционных |
системах |
|
как на стационарный компьютер (Windows, |
Linux), так |
и на любое мобильное устройство (смартфон, планшет с Android или iOS), наличие облачной версии.
Однако наиболее привлекательным для пользователя является сходство Smath Studio с зарубежной лицензионной системой Mathcad, которая в настоящее время широко используется в инженерных и научных расчетах [3]. Программа действительно близка к Mathcad по интерфейсу, функционалу, техническим качествам, однако
Ушаков ЮрийАлександрович
К.т.н., доцент, Оренбургский государственный университет unpk@mail.ru
Ушакова НатальяЮрьевна
К.т.н., доцент, Оренбургский государственный университет olaa56@mail.ru
Аннотация. В статье рассмотрены особенности применения бесплатной математической программы Smath Studio для решения электротехнических задач. Описаны отличия Smath Studio от Mathcad при анализе установившихся и переходных режимов в линейных и нелинейных электрических и магнитных цепях, специфика графических иллюстраций электротехническихрасчетов,практическоеиспользованиеисполняемыхфайлов.
Ключевые слова: Smath Studio, Mathcad, теоретическая электротехника, анализ установившихся и переходных режимов.
считать ее бесплатным клоном Mathcad было бы неверным. Это два разных приложения, имеющие свои характерные особенности, некоторые из которых являются эксклюзивными.
SmathStudioнепрерывно дорабатывается, содержит постоянно пополняемый набор дополнений (плагинов), которые распространяются с открытым исходным кодом. С 2006 года по настоящее время было разработано около 60 стабильных версий программы, каждая последующая актуализированная версия содержит улучшения и исправления.
Одной из причин, по которой Smath Studio пока не столь популярен, как Mathcad, является недостаток разработанной подробной технической и методической документации по его применению. Значительная часть российских публикаций о Smath Studio носит либо обзорный характер *4; 5+, либо содержит результаты решения какой-либо узкой задачи с использованием программы в качестве расчетного инструмента *6; 7+. Работ, содержащих комплексный анализ и рекомендации по использованию Smath Studio в конкретных профессиональных областях, довольно мало [8].
Проанализировать функциональные возможности, специфику и целесообразность применения Smath
|
Серия: Естественные и технические науки №12 декабрь 2020 г. |
145 |
|
ИНФОРМАТИКА И ВычИСЛИТЕЛьНАЯ ТЕХНИКА И УПРАВЛЕНИЕ
с помощью функции roots, которая в программе есть в двух модификациях: roots (3) с указанием приближенных значений искомых неизвестных и roots (2) без указания приближений.
Для цепей синусоидального тока, уравнения которых имеют комплексные коэффициенты, возможности решения СЛАУ в Smath Studio ограничиваются вообще одним методом обратной матрицы, так как функция roots не предназначена для решения уравнений с комплексными корнями.
Функцией solve в Smath Studio в отличие от Mathcad можно решать только отдельные уравнения, а не систему, да и то они должны обязательно иметь действительные, а не комплексные корни.
Следует отметить, что индексация элементов вектора решения в Smath Studio при использовании метода обратной матрицы начинается с единицы, а не с нуля, как вMathcad,чтоудобноприанализеэлектрическихцепей.
Отличительной особенностью Smath Studio является его способность решать СЛАУ методом обратной матрицы сразу для нескольких вариантов правой части уравнений, в Mathcad такой возможности нет. В электротехнике эту способность Smath Studio можно использовать для расчета электрической цепи методом наложения. При расчете токов ветвей этим методом левые части уравнений, составленных для цепи, например, по законам Кирхгофа остаются неизменными, а вариантов правой части будет столько, сколько в цепи источников электромагнитной энергии. Каждый вариант правой части записывается при расчете в отдельный столбец в матрице свободных членов. Матрица результатов расчета будет содержать столько же столбцов. При расчете токов каждый столбец —это частичные токи ветвей, вызванные каждом источником энергии в отдельности.
На рисунке 1 приведен фрагмент расчета токов электрической цепи методом наложения с одновременным решением СЛАУ с тремя вариантами правой части уравнений.
2.О реализации символического метода
|
расчета электрических цепей и |
использовании |
|
единиц измерения в Smath Studio |
Анализ установившихся режимов линейных однофазных и трехфазных цепей синусоидального тока проводится традиционно символическим методом, при котором синусоидальные токи и напряжениязаменяются их комплексными изображениями. Работа с комплексными числами в Smath Studio во многом аналогична
работе с ними в Mathcad. Мнимая единица здесь тоже обозначается буквой i, но возможности переобозначить ее в настройках программы через пункты Меню на принятое в электротехнике обозначение j (как это можно сделать в Mathcad) здесь не предусмотрено.
Результаты расчетов токов и напряжений в цепях синусоидального тока получаются в виде комплексных чисел в алгебраической форме записи. Для перевода их в показательную форму записи нужно рассчитать модуль и аргумент комплексного числа. Как и в Mathcad, аргумент в Smath Studio по умолчанию считается в радианах, для перевода его в угловые градусы нужно вставить любым способом единицу измерения «Градус». Правда следует отметить, что в Smath Studio разработаны специальные функции xy2pol и pol2xy, которые должны облегчить пользователю перевод комплексного числа из алгебраической в показательную форму записи и обратно. Но работают они не всегда корректно. Например, у функции xy2pol результат расчета аргумента выдается в радианах, а при попытке перевести его в градусы, на множитель 180/π автоматически умножаются рассчитанные и модуль, и аргумент, что приводит в итоге к неверным результатам.
Кроме того, в Smath Studio нет опции получения из комплексного числа комплексно-сопряженного числа. В электротехнике так называемый «сопряженный комплекс тока» широко используется для расчета полной комплексной мощности. Для его нахождения можно предложить пользовательскую функцию
.
Smath Studio позволяет при вводе исходных данных вводить и их единицы измерения, обширный список которых предлагается во вкладке Меню «Вставка». При расчетах программа должна их распознать и автоматически подставить нужные единицы измерения в результаты расчетов. Во многих простых задачах электротехники эта опция действительно работает правильно и ее можно использовать. Но в некоторых случаях наличие введенных единиц измерения мешает и не позволяет провести расчеты. Например, при расчете цепи по законам Кирхгофа с помощью функции roots или методом обратной матрицы программа выдает сообщение об ошибке «Единицы измерения не соответствуют» и не считает токи. Это связано с разной размерностью уравнений Кирхгофа и соответственно строк матрицы. В подобных ситуациях лучше проводить расчеты в безразмерных величинах.
|
Серия: Естественные и технические науки №12 декабрь 2020 г. |
147 |
|
ИНФОРМАТИКА И ВычИСЛИТЕЛьНАЯ ТЕХНИКА И УПРАВЛЕНИЕ
не появляется и носит чисто иллюстративный характер.
В приведенном на рисунке 2 фрагменте расчета показана также пользовательская функция для расчета сопряженного комплекса тока, используемого далее вформулеполнойкомплексной мощностиS. Кроме того продемонстрированы некорректные результаты работы функцииxy2pol напримере расчетамодуляиаргумента комплексного тока I1. Сначала аргумент тока рассчитан в радианах, при попытке перевести его в градусы изменился не только аргумент, но и модуль тока.
Во фрагменте расчета часть формул скрыта с помощью элемента «Область» из вкладки Меню «Вставка».
3.О расчете несинусоидальных периодических
инелинейных режимов электрических цепей в Smath Studio
При анализе установившихся режимов в электрических цепях несинусоидального тока используется более сложный математический аппарат. Расчет таких цепей основан на принципе наложения и включает в себя: разложение периодической несинусоидальной функции в ряд Фурье; расчет цепи для каждой гармоники ряда; запись результирующих величин токов и напряжений в виде суммы мгновенных значений (в виде ряда Фурье).
ВSmath Studio для расчета коэффициентов ряда Фу-
рье функцию можно задать только двумя способами:аналитическим выражением;векторами с последующейинтерполяцией.
ВMathcad, кроме этого, для задания функции можно еще использовать логическую функцию if. В Smath Studio при таком задании функции она не воспринимается в дальнейших операциях расчета коэффициентов ряда Фурье.
Первый способ целесообразно использовать, если несинусоидальную функцию достаточно просто описать аналитическими выражениями на определенных отрезках. Задание функции векторами наиболее удобно использовать для формализации графиков, заданных отрезками прямых. При необходимости моделирования скачка такой функции можно изменить значение одной или нескольких координат на такую малую величину, что это не отразится на дальнейших вычислениях.
Расчет коэффициентов ряда Фурье проводится по общеизвестнымввысшей математике формулам.Для этих целей в Smath Studio есть функция вычисления определенного интеграла. Следует отметить, что вSMath Studio
в отличие от Mathcad можно вычислять только определенные интегралы. Расчет можно проводить отдельно для каждой гармоники, а можно оформить в виде циклического процесса, используя оператор for и элемент line с панели Программирование.
На рисунке 3 приведен пример разложения в ряд Фурье функции, заданной отрезками прямых. Для интерполяции функции использована функция линейной интерполяции linterp.
В этом примере показаны некоторые «странности»
Smath Studio:
для того чтобы рассчитать модули и аргументы гармоник напряжения, пришлось присвоить им
наименования (Umk, Ψk), так как в противном случае программа выдавала сообщения об ошибках: «Аргумент должен быть скаляром» и «Ошибка приведения типов». Mathcad такие расчеты провел бы без переопределения величин;
нельзя записать формулу напряжения в мгновенной форме записи, используя знак суммы (как это показано во фрагменте расчета из Mathcad на рисунке 3). Выражение напряжения в виде суммы гармоник записано вручную, но и в этом случае Smath не смог подставить в него числовые данные, как это делает Mathcad, чтобы получилось читаемое выражение.
Еще одна «странность» Smath Studio обнаружилась при попытке разложить в ряд Фурье функцию, заданную аналитическими выражениями на определенных отрезках периода. Программа выдает ошибку при расчете коэффициентов ряда, если в формуле общий множитель 1/π умножается на сумму определенных интегралов. Если же на этот множитель умножается каждый интеграл, расчет реализуется успешно.
При анализе нелинейных электрических и магнитных цепей, в которых нелинейные характеристики элементов в основном задаются совокупностью табличных значений широко используется интерполяция. Smath Studio позволяет использовать помимо линейной интерполяции интерполяцию сплайнами. При этом следует учитывать, что на заданном отрезке при любой интерполяции получаются близкие значения функции, а вот за пределами заданных отрезков данных значения при линейной интерполяции и интерполяции сплайнами будут сильно различаться.
На рисунке 4 показан фрагмент расчета магнитной цепи, в котором уравнение Кирхгофа для интерполированных функций магнитных потоков решается с помощью функции solve и находится значение межузлового магнитногонапряжения.
|
150 |
Серия: Естественные и технические науки №12 декабрь 2020 г. |
|
ИНФОРМАТИКА И ВычИСЛИТЕЛьНАЯ ТЕХНИКА И УПРАВЛЕНИЕ
|
dio, к сожалению, преобразовать сложный |
многочлен |
корнях возникают описанные выше неудобства при |
||||||
|
к требуемому виду, используя имеющиеся символьные |
формировании полинома. |
|||||||
|
операции, практически невозможно. Проще выполнить |
||||||||
|
преобразования вручную или в какой-либо другой |
Крометого,ипридействительных,иприкомплексных |
|||||||
|
программе. |
корнях в Smath Studio не получается сформировать |
|||||||
|
читаемые результирующие выражения для оригиналов |
||||||||
|
Вторая проблема при комплексно-сопряженных |
и их приходится формировать вручную, используя |
|||||||
|
корнях в классическом методе расчета переходного |
промежуточные результаты расчетов. |
|||||||
|
процесса может возникнуть на этапе расчета |
||||||||
|
постоянных интегрирования. В случае комплексных |
Переходной процесс в электрической цепи можно |
|||||||
|
корней |
постоянные |
интегрирования |
находятся |
рассчитывать и численно. Для численного решения |
||||
|
из системы нелинейных алгебраических уравнений, для |
дифференциальных уравнений в Smath Studio можно |
|||||||
|
решения которых в Smath Studio используется функция |
применять дополнение «ODE Solvers» из онлайн- |
|||||||
|
roots. В данном случае целесообразно использовать ее |
галереи, которое содержит функции rkfixed и Rkadapt. |
|||||||
|
модификацию roots (3), в записи которой указываются |
Обе функции используют для решения метод Рунге — |
|||||||
|
приближения искомых величин. Однако если заданные |
Кутты четвертого порядка, rkfixed — с фиксированным |
|||||||
|
приближения |
отличаются |
даже |
незначительно |
шагом, Rkadapt — с адаптивным шагом. На рисунке |
||||
|
от истинных значений, решение не будет найдено. Math- |
5 показан фрагмент расчета переходного процесса |
|||||||
|
cad при решении подобных систем уравнений не столь |
в сложной электрической цепи с двумя накопителями |
|||||||
|
критичен к задаваемым начальным приближениям. |
энергии с помощью функцииrkfixed. |
|||||||
|
Операторный метод расчета переходных процессов |
5. О графических особенностях Smath Studio в |
|||||||
|
электротехнических расчетах |
||||||||
|
заключается в том, что при расчётах действительные |
||||||||
|
функции |
времени f(t), |
описывающие |
процессы |
Расчет электрических цепей в электротехнике |
||||
|
в электрических цепях и называемые оригиналами, |
практически |
всегда |
сопровождается построением |
|||||
|
заменяют |
их |
операторными |
изображениями F(p) |
двумерных |
графиков |
временных, векторных или |
спомощью преобразования (интеграла) Лапласа. топографических диаграмм. Нужно отметить, что подход
|
Электрическая схема заменяется операторной схемой |
к заданию и построению графиков в Smath Studio |
|||||
|
замещения, из которой рассчитываются изображения |
радикально отличается от Mathcad. |
|||||
|
искомых токов и напряжений, далее от изображений |
||||||
|
переходят к оригиналам. |
Одно из своеобразных требований Smath Studio |
|||||
|
заключается в том, что при построении двумерного |
||||||
|
Следует отметить, что возможности |
Smath |
Stu- |
графика функции одного переменного на поле графика |
|||
|
dio позволяют так же, как и в Mathcad, рассчитать |
эта переменная должна быть обязательно обозначена |
|||||
|
операторные токи и напряжения в виде функций или |
латинской буквой «x», при любом другом символе |
|||||
|
получить решение в общем виде, используя оператор |
программа напишет, что он «не определен». В самом же |
|||||
|
символьного вычисления. |
выражении функции, которая записана до графика, |
|||||
|
эта переменная может быть обозначена любой другой |
||||||
|
Для перехода |
от изображений |
к |
оригиналам |
буквой, на построение графика это никак не повлияет. |
||
|
в символьных операциях Mathcad имеется оператор in- |
Причем это требование распространяется только |
|||||
|
vlaplace. Правда, справедливости ради нужно отметить, |
на функции, заданные аналитически. |
|||||
|
что корректно этот оператор работал до версии |
||||||
|
Mathcad 13 включительно. В версиях Mathcad 14 и 15 |
Если же функция задана в виде двух векторов значений |
|||||
|
для обратного преобразования Лапласа сложные |
по осям абсцисс и ординат, то для построения ее графика |
|||||
|
выраженияприходитсяраскладыватьнаболеепростые, |
такой оба вектора должны быть объединены в единую |
|||||
|
используя операции символьной математики [10]. |
матрицу. И в этом случае безразлично, какими буквенными |
|||||
|
символами обозначены вектор аргументов и вектор |
||||||
|
В Smath Studio оператора процедуры обратного |
функции. Название объединенной матрицы тоже может |
|||||
|
преобразования Лапласа нет, поэтому |
для перехода |
быть произвольным, и даже не обязательно должно быть |
||||
|
от изображений к оригиналам целесообразно |
записано в виде функции. В электротехнике именно так |
|||||
|
использовать стандартный |
алгоритм |
используемой |
задаются вектора токов и напряжений для их изображения |
|||
|
в электротехнике теоремы разложения. И здесь |
на комплексной плоскости. Примеры и особенности |
|||||
|
успешность расчета |
опять |
зависит от |
того, |
какие |
построения графиков функций, заданных аналитически |
|
|
корни получатся в процессе расчета: действительные |
и векторами приведены выше на рисунках 2 и 3. |
|||||
|
или комплексно-сопряженные. При комплексных |
152 Серия: Естественные и технические науки №12 декабрь 2020 г.
Всем добрый день пытаюсь промоделировать RLC-четырёполюсник,с помощью программы OpenModelica(Схема и формулы прикреплены отдельным рисунком).
При нахождении АЧХ,ФЧХ возникла проблема с преобразованием из Complex в Real.
| Matlab M | ||
|
Я попытался изменить код следующим образом:
| Matlab M | ||
|
Но возникла уже новая ошибка:
| Matlab M | ||
|
Но если я присваиваю комплексное число в скобках к другому комплексу, тем самым присваивая 1 аргумент (а не 0, как в предыдущей ошибке), тогда ошибка ссылается на неправильно составленный конструктор и преобразованию из Complex в Real.
| Matlab M | ||
|
Вернуться к обсуждению:
Ошибка Type mismatch, приведение типов Complex и Real в OpenModelica Математические программы
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
Решение уравнений матричным методом в smath studio
Решение нелинейных уравнений
Пример 3.1. Найти корень уравнения x – sin x – 0,25 = 0 на отрезке [0,2] с точностью 0,0001.
MathCAD
Для решения одного нелинейного уравнения с одной неизвестной система MathCAD имеет встроенную функцию, которая в зависимости от типа задачи может иметь или два или четыре аргумента и, соответственно, работает несколько по-разному: root(f(x),x); root(f(x),x,a,b), где f(x) — скалярная функция, определяющая исходное нелинейное уравнение (4.1); х – скалярная переменная, относительно которой решается уравнение; а, b – границы интервала, внутри которопй происходит поиск корня.
Первый тип функции root требует предварительного задания начального приближения х0 переменной х. Поиск корня будет производиться вблизи этого значения методом секущих. Если уравнение неразрешимо, то при попытке найти его корень будет выдано сообщение об ошибке. Кроме того, к ошибке или выдаче неправильного корня может привести и попытка применить метод секущих в области локального максимума или минимума функции f(x). В этом случае секущая будет иметь направление, близкое к горизонтальному, выводя точку следующего приближения далеко от предполагаемого корня. Аналогичные проблемы могут возникнуть, если начальное приближение выбрано слишком далеко от настоящего решения, или f(x) имеет особенность типа бесконечности.
Иногда удобнее задавать не начальное приближение к корню, а интервал [а, b], внутри которого заведомо находится корень. В этом случае следует использовать функцию root с четырьмя аргументами; присваивать начальное значение переменной х в этом случае не нужно. Поиск корня будет осуществлен в промежутке между а и b альтернативным численным методом (Риддера или Брента).
| Решение (распечатка MathCAD) | |
| f(x) := x – sin(x) – 0.25 x := 0,0.1..2 х := 1 – начальное приближение s := root(f(x), x) s =1.171 — корень уравнения f(s)=–4.836´10 –5 — погрешность | ![]() |
SMath Studio
Для решения одного нелинейного уравнения с одной неизвестной система SMath Studio имеет встроенную функцию, которая в зависимости от типа задачи может иметь или два или три аргумента: roots(f(x); x) или roots(f(x); x; a), где f(x) – скалярная функция, определяющая исходное нелинейное уравнение (4.1); х – скалярная переменная, относительно которой решается уравнение; а – начальное приближение переменной х.
Решение (распечатка SMath Studio)
Решение систем линейных алгебраических уравнений
Пример 3.2. Решить систему уравнений

MathCAD
Для решения систем уравнений в среде MathCAD можно применять вычислительный блок Given/Find. Он состоит из трех частей:
1. ключевое слово Given;
2. система уравнений, записанная с помощью логических операторов;
3. вызов встроенной функции Find(xl, х2. хп).
Перед применением блока Given/Find необходимо задать начальные значения переменным xl, x2,хп.
Однако более наглядным является решение СЛАУ в матричной форме. В этом случае используется встроенная функция lsolve(A,b), где А — матрица коэффициентов системы, b — вектор правых частей.
Решение (распечатка MathCAD)
SMath Studio
Для решения систем уравнений в среде SMath Studio применяется матричный метод решения: коэффициенты левых частей уравнений записываются в квадратную матрицу A размером 4´4, свободные коэффициенты записываются в столбец B размером 4´1. Решением будет столбец X, который находится умножением обратной матрицы на столбец B:
. Решение существует, если определитель матрицы A не равен нулю. Получив решение, нужно сделать проверку, т.е. убедиться, что
.
Пример выполнения задания 2
Модуль 2
Решение иженерных задач средствами
Компьютерной математики
Лабораторная работа № 2
Нахождение корней нелинейных уравнений. Решение систем нелинейных уравнений
Цель: изучить основные возможности приложения Smath Studio для решения нелинейных уравнений и систем.
Вопросы для самоконтроля
1. Что является корнем уравнения?
2. Правило записи функции для использования команды solve.
3. В чем разница между численным и аналитическим нахождением корней уравнения?
4. Чем отличаются команды solve(2) и solve(4).
5. Для чего используется функция polyroots?
6. Правило записи вектора коэффициентов для polyroots.
7. Что является решение системы уравнений?
8. Правило записи уравнений для использования команды roots.
9. В чем разница между численным и аналитическим решениями системы уравнений?
10. Чем отличаются команды roots (2) и roots (3).
Индивидуальные задания 1
Найти корень уравнения численно и, если это возможно, аналитически. Результаты сравнить. Выполнить проверку.
| № варианта | Уравнение | № варианта | Уравнение |
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
Индивидуальные задания 2
Найти численно корни полинома. Выполнить проверку.
| Вариант | Полином | Вариант | Полином |
| x 2 -12x-4=0 | x 3 -3x 2 -4x+1=0 | ||
| x 3 -24x+11=0 | x 3 -34x 2 +4x+1=0 | ||
| x 3 +2x-7=0 | x 3 -27x-17=0 | ||
| x 3 -21x+7=0 | x 4 -2x 3 +2x 2 -2x+1=0 | ||
| x 3 -5x+1=0 | x 4 -3x 3 +3x 2 -3x+2=0 | ||
| x 3 -12x+5=0 | x 4 -3x 3 +5x 2 -3x+8=0 | ||
| x 3 +3x 2 -4x-1=0 | x 4 -4x 3 +8x 2 -4x+16=0 | ||
| x 3 -9x 2 +20x-11=0 | x 4 -4x 3 +4x 2 -4x+3=0 | ||
| x 3 -12x+5=0 | x 4 -4x 3 +12x 2 -4x+27=0 | ||
| x 3 +6x 2 +6x-7=0 | x 4 -6x 3 +18x 2 -6x+81=0 | ||
| x 3 -3x 2 -x+2=0 | x 4 -5x 3 +10x 2 -5x+24=0 | ||
| x 3 -10x 2 +4x+9=0 | x 4 -5x 3 +15x 2 -5x+54=0 | ||
| x 4 +x-1=0 |
Индивидуальные задания 3
Найти численное решение системы. Выполнить проверку.
| № варианта | Система уравнений | Начальная точка |
![]() |
(-0,9;1,4) | |
![]() |
(1;1) | |
![]() |
(1;1) | |
![]() |
(0;0) | |
![]() |
(0;0) | |
![]() |
(0;0) | |
![]() |
(0;0) | |
![]() |
(0,9;1,4) | |
![]() |
(0;0) |
| № варианта | Система уравнений | Начальная точка |
![]() |
(1;1) | |
![]() |
(-0,5;0,5) | |
![]() |
(-1;1) | |
![]() |
(0;0) | |
![]() |
(0;0) | |
![]() |
(0;0) | |
![]() |
(0;0) | |
![]() |
(0;0) | |
![]() |
(-1;1) | |
![]() |
(-0,9;-1,4) | |
![]() |
(0,5;-1,5) | |
![]() |
(0,5;1,5) | |
![]() |
(2;2) | |
![]() |
(1,5;0,5) | |
![]() |
(-2;2) | |
![]() |
(0;1) |
Пример выполнения задания 1
Найти корень уравнения
численно и, если это возможно, аналитически. Результаты сравнить. Выполнить проверку.
Методические рекомендации
1. Запишите функцию (предварительно приведя уравнение к виду f(x)=0):
.
2. Постройте график функции. График пересекает ось абсцисс в одной точке, значит, уравнение имеет один корень.
3. Запишите стандартную команду:
Справа от знака равенства увидим результат: 0,7391.
2 Выполните проверку, найдя значение функции в полученной точке:
.
Если бы решение было точным, то при проверке получили бы 0. Значение
означает, что результат получен с точностью до 4-го знака.
Конечный вид документа SMathStudio:

1. Запишите функцию в виде:
.
2 Выделите курсором переменную х.
3. В меню выбрать Вычисление ® Найти корни.
4. Выполните проверку.
1. Конечный вид документа SMathStudio:

1. Запишите функцию:
.
2. Для получения аналитического решения запишите стандартную команду:
solve(f(x) ; x), после которой на ПИ «Арифметика» выберите →.
3. Выполните проверку, найдя значение функции в полученной точке.
Конечный вид документа SMathStudio:


Если бы решение было точным, то при проверке получили бы 0. Значение
означает, что результат получен с точностью до 4-го знака. Делаем вывод, что SMathStudio не может найти точные корни данного уравнения.
Если уравнение имеет несколько корней (как, например, уравнение
), то применение стандартной процедуры решения даст ответ в виде вектора:

Корни выдаются в диапазоне «по умолчанию» [-20; 20]. Изменить диапазон можно в меню Сервис – Опции – Вычисление.
Можно использовать второй вариант этой процедуры для выбора решения на заданном промежутке. Для этого при наборе solve во всплывающей подсказке выбираем solve(4) и в шаблон вписываем:
Solve( ; ; левая граница интервала; правая граница интервала). Получим:

Если функция f(x) в уравнении f(x)=0 представляет собой полином степени n, то процедура solve может выдать только один корень. Чтобы получить все корни полинома (их количество совпадает со степенью полинома), стоит использовать встроенную функцию polyroots(v). Например, найдем численно корни полинома x 3 +2x-1=0.
1) задаем функцию (левую часть уравнения f(x)=0).
2) задаем вектор коэффициентов (кнопка на ПИ «Матрица»), в появившемся диалоговом окне указываем количество строк (равно степени полинома +1) и столбцов (количество уравнений).
3) записываем функцию polyroots(v)=.
4) делаем проверку, подставив найденные значения в функцию.
Конечный вид документа Smath Studio:

Пример выполнения задания 2
Решить систему уравнений
численно и, если это возможно, аналитически. Результаты сравнить. Выполнить проверку.
Методические рекомендации
1. Записываем функцию roots( ; ).
2. Для получения численного решения ставим знак «=». Получим результат с заданным количеством знаков после запятой.
3. Выполняем проверку, подставив полученные значения в исходную систему уравнений. В данном примере 1-ое уравнение решено точно, 2-ое – с точностью до 3-го знака.
4. Вид документа SMathStudio:

Можно каждое уравнение системы привести к виду f(x)=0. Тогда запись решения будет выглядеть следующим образом:

Если нужно получить одно из нескольких возможных решений, можно задать начальное приближение (координаты ближайшей известной к ответу точки) для переменных следующим образом:
МЕТОД РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ.
Метод квадратных корней.
Метод квадратных корней используется для решения линейной системы:

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

Перемножая матрицы Т’ и Т и приравнивая матрице A, получим следующие формулы для определения 

После того, как матрица Т найдена, систему заменяем двумя эквивалентными ей системами с треугольными матрицами:

Обратный ход. Записываем в развернутом виде системы:

Отсюда последовательно находим:


При вычислениях применяется обычный контроль с помощью сумм, причем при составлении суммы учитываются все коэффициенты соответствующей строки.
Заметим, что при действительных
могут получиться чисто мнимые
. Метод применим и в этом случае .
Метод квадратных корней дает большой выигрыш во времени по сравнению с рассмотренными ранее методами, так как, во-первых, существенно уменьшает число умножений и делений (почти в два раза для больших n), во-вторых, позволяет накапливать сумму произведений без записи промежуточных результатов.
Задание. Решить систему линейных уравнений методом квадратных корней.
Провести эту работу в SMathStudio.


Схема Халецкого.
Рассмотрим систему линейных уравнений, записанную в матричном виде:

Где
— квадратная матрица (i, j = 1, 2, . , n) и

Представим матрицу А в виде произведения А=ВС, где

Тогда элементы
будут определяться по формулам

Отсюда искомый вектор х может быть вычислен из цепи уравнений

Так как матрицы B и С треугольные, то системы легко решаются, а именно:

Из формул видно, что числа
выгодно вычислять вместе с коэффициентами
Эта схема вычислений называется схемой Халецкого. В схеме применяется обычный контроль с помощью сумм.
Схема Халецкого удобна для работы на клавишных вычислительных машинах, так как в этом случае операции «накопления» можно проводить без записи промежуточных результатов.
Задание. Решить систему линейных уравнений методом Халецкого.
Провести эту работу в SMathStudio.



Метод простой итерации
Пусть система линейных уравнений

Каким-либо образом приведена к виду

где С – некоторая матрица, а f – вектор-столбец.
Исходя из произвольного вектора
,

сторим итерационный процесс

или в развернутой форме

Производя итерации, получим последовательность векторов 
Доказано, что если элементы матрицы С удовлетворяют одному из условий

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

Эти оценки можно усилить соответственно так:


Процесс итераций заканчивают, когда указанные оценки свидетельствуют о достижении заданной точности.
Начальный вектор
может быть выбран, вообще говоря, произвольно. Иногда берут
Однако наиболее целесообразно в качестве компонент вектора
взять приближенные значения неизвестных, полученные грубой прикидкой.
Первый способ. Если диагональные элементы матрицы А отлины от нуля, т. е.

то систему можно записать в виде:

В этом случае элементы матрицы С определяются следующим образом:

и тогда условия приобретают вид:


Неравенства будут выполнены, если диагональные элементы матрицы А удовлетворяют условию:

т.е. если модули диагональных коэффициентов для каждого уравнения системы больше суммы модулей всех остальных коэффициентов (не считая свободных членов).
Второй способ покажем на примере.
Вообще говоря, для любой системы с невырожденной матрицей существуют сходящиеся итерационные методы решения, но далеко не всегда они удобны для практических вычислений.
Если метод итераций сходится, он дает следующие преимущества по сравнению с методами, рассмотренными выше.
1) Если итерации сходятся достаточно быстро, т. е. если для решения системы требуется менее n итераций, то получаем выигрыш во времени, так как число арифметических действий, необходимых для одной итерации, пропорционально n 2 , а общее число арифметических действий в методе Гаусса, например, пропорционально n 3 .
2) Погрешности округления в методе итераций сказываются значительно меньше, чем в методе Гаусса. Кроме того, метод итераций является самоисправляющимся, т. е. отдельная ошибка, допущенная в вычислениях, не отражается на окончательном результате, так как ошибочное приближение можно рассматривать как новый начальный вектор.
Последнее обстоятельство часто используется для уточнения значений неизвестных, полученных методом Гаусса.
3) Метод итераций становится особенно выгодным при решении систем, у которых значительное число коэффициентов равно нулю. Такие системы появляются, например, при решении уравнений в частных производных.
4) Процесс итераций приводит к выполнению однообразных операций и сравнительно легко программируется на ЭВМ.
Задание. Решить систему линейных уравнений методом простых итераций.
Провести эту работу в SMathStudio.



Метод Зейделя.
Метод Зейделя является модификацией метода простой итерации. Он заключается в том, что при вычислении (k + 1)-го приближения неизвестного xi при i>1 используются уже вычисленные ранее (k + 1)-е приближения неизвестных
Таким образом, для системы вычисления по методу Зейделя ведутся по формулам:

Указанные в методе простой итерации условия сходимости остаются верными и для метода Зейделя. Обычно метод Зейделя дает лучшую сходимость, чем метод простой терации, хотя это бывает не всегда. Кроме того, метод Зейделя может оказаться более удобным при программировании, так как при вычислении
нет необходимости хранить значения 
Задание. Решить систему линейных уравнений методом Зейделя.
источники:
http://lektsii.org/8-53113.html
http://poisk-ru.ru/s3503t3.html
Ошибка приведения типов
-
Moonrain
- Сообщения: 8
- Зарегистрирован: 29 ноя 2006, 10:18
Ошибка приведения типов
Есть рабочий отчет. Через некоторое время при попытке зайди в режим дизайнера отчета выскакивает ошибка
Exception: Stimulsoft.Report.Components.StiMargin cannot be converted to type Stimulsoft.Report.Components.StiMargin
В чем может быть проблема? Отчет без ошибок!
Спасибо.
-
Moonrain
- Сообщения: 8
- Зарегистрирован: 29 ноя 2006, 10:18
Ошибка приведения типов
Сообщение
Moonrain » 29 янв 2007, 05:41
Спасибо за внимание. У меня большой проект, весь его послать не могу, а при выделении только отчета ошибка не воспроизводится.
-
Edward
- Сообщения: 930
- Зарегистрирован: 09 июн 2006, 12:23
Ошибка приведения типов
Сообщение
Edward » 29 янв 2007, 06:46
Ситуация очень похожа на конфликт версий dll. Возможно при запуске приложения обращение происходит к dll другой версии. Эти dll предыдущих версий могут находится в GAC Вашей системы, также Visual Studio может производить кэширование мспользуемых dll в папке Document and Settings…
Попробуйте очистить GAC:
1. Control Panel — Administrative Tools — Microsoft .NET Framework Configuration
2. Удалите все dll — файлы StimulReport.Net из папки Document and Settings и вложенных.
Спасибо.
-
Moonrain
- Сообщения: 8
- Зарегистрирован: 29 ноя 2006, 10:18
Ошибка приведения типов
Сообщение
Moonrain » 30 янв 2007, 12:08
Спасибо за помощь! Действительно, после того как были снесены все версии dll и поставлена только одна, ошибок пока не возникало.
Тему можно закрывать.



SMathStudioHandheld.0_65_0.Setup.cab
SMathStudioHandheld.0_65_0.Setup.cab.zip
SMathStudioHandheld.0_65_0.Setup.exe
SMathStudioDesktop.0_65_0.Setup.msi 

















































