Mathcad — это компьютерная программа для проведения математических расчётов и создания технической документации. Но как и любая другая программа, Mathcad может выдавать ошибки. В этой статье мы рассмотрим пошаговую инструкцию того, как найти и исправить ошибки в Mathcad.
Шаг 1: Понимание причины ошибки
Перед тем, как начать исправлять ошибку, нужно понять, почему она возникла. К сожалению, иногда Mathcad может выдавать не очень информативные сообщения об ошибках. Однако в большинстве случаев сообщения об ошибке содержат достаточно информации, чтобы понять, в чём заключается проблема.
Шаг 2: Проверьте синтаксис
Одной из основных причин возникновения ошибок в Mathcad является неправильный синтаксис. Проверьте, не содержится ли ваше выражение в скобках или кавычках? Все открывающие символы, такие как скобки, должны закрываться. Если вы использовали кавычки в своем выражении, то их нужно закрывать.
Шаг 3: Проверьте тип данных
Еще одна причина ошибок в Mathcad — неправильный тип данных. Например, попытка произвести операцию с несовместимыми типами данных может вызвать ошибку. Убедитесь, что все переменные в вашем выражении имеют правильный тип данных.
Шаг 4: Проверьте переменные
Еще одна распространенная причина ошибок в Mathcad — использование переменных, которые не были определены. Убедитесь, что все используемые переменные были определены в вашем документе Mathcad.
Шаг 5: Проверьте названия функций
Еще одна причина ошибок в Mathcad — использование неправильных имен функций. Убедитесь, что вы используете правильные имена функций и что они были определены в вашем документе.
Шаг 6: Устраните ошибку
Когда вы нашли причину ошибки, нужно устранить ее. Если вы не можете понять, как исправить ошибку, попробуйте найти ответ в документации Mathcad или поисковике.
Заключение
Поиск и устранение ошибок — важная часть работы с Mathcad. Хорошее знание синтаксиса, типов данных, названий функций и переменных может помочь ускорить процесс поиска и исправления ошибок. Если вы не можете решить проблему самостоятельно, возможно, вам потребуется обратиться за помощью к специалистам.
Помогаю со студенческими работами здесь
Ошибка Out of stack
run-tim error 28
Out of stack
Option Explicit
Sub rgr_varian_13()
Dim s As Integer, m As…
Есть ли связь между STL-stack и stack — высокопроизводительная память?
Куча источников, как всегда много отсебятины, в общем я запутался…
Ошибка stack overflow
работаю с qt через visual studio, написал пример из книги вроде не сложный однако при компиляции…
Ошибка stack owerflow
Всех приветствую форумчане) Настигла беда
Помогите исправить
Код Ошибки:
procedure…
Искать еще темы с ответами
Или воспользуйтесь поиском по форуму:
Приложение 4. Сообщения об ошибках
71
Приведенная далее информация об ошибках вычислений выполнена по следующей схеме: текст сообщения об ошибке (перевод сообщения) — вероятная причина ошибки — возможные пути устранения ошибки.
Сообщения об ошибках в численных вычислениях
A «Find» or «Minerr» must be preceded by a matching «Given» (Функциям find или minerr должно предшествовать ключевое слово given). Эта ошибка выделяет функцию find или minerr при их несогласованности с given. Каждый вычислительный блок, который заканчивается функцией find или minerr, должен начинаться с ключевого слова given.
All evaluations resulted in either an error or a complex result (Вычисления приводят к ошибке или к комплексному результату). Mathcad не может начертить некоторые точки, потому что не существует действительных значений для их нанесения на график. Это сообщение может появиться, если имеется ошибка или все значения — комплексные.
Arguments in function definitions must be names (Аргументы в определениях функции должны быть именами). Выделенное определение функции содержит неправильный перечень аргументов. В списке аргументов должны быть правильно поименованы переменные или список имен необходимо отделить запятыми.
All the elements in the vector cannot be the same (Все элементы вектора не могут быть одинаковыми). Если используется встроенная функция, возможно, неправильно указаны ее имя или параметры. Проверьте правильность ввода встроенной функции, установив курсор на имени функции и нажав клавишу F1.
At least one limit must be infinity (По крайней мере один предел должен быть бесконечным). Если для интегрирования выбран алгоритм бесконечного предела, то по крайней мере один из пределов интеграла должен быть бесконечным.
Символ бесконечности вводится нажатием комбинации клавиш Ctrl+Shift+z. Для изменения алгоритма, использующего бесконечный предел, или для вычисления какого-либо другого интеграла щелкните на интеграле правой кнопкой мыши и измените алгоритм с помощью контекстного меню.
Can only evaluate an nth order derivative when n=0, 1..5 (Можно вычислить n-й
порядок производной, только когда n = 0, 1, 2, …, 5). Порядок производной должен быть целым числом от 0 до 5. Если нужно посчитать производную более высокого порядка, сделайте это с помощью символьного дифференцирования.
Can only plot positive values when log axes are used (Только положительные величины могут быть на графике, если используются логарифмические координаты). Двухмерный график в декартовых или полярных координатах строится в логарифмических координатах, в которых не может быть величин отрицательных или равных нулю.
Can’t converge to a solution. Encountered too many integrator steps (Невозможно найти решение. Сделано слишком много шагов интегрирования). Алгоритм решения дифференциального уравнения не позволяет найти решение этого уравнения. Попробуйте изменить начальные или граничные условия. Возможно, решения просто не существует.
Can’t converge to a solution. The integrand may have a singularity or the integral may not be finite (Невозможно найти решение. Подынтегральное выражение может иметь точку сингулярности или интеграл может быть бесконечным). Вычисление интегралов, производных, функций root, find, minerr осуществляется итерационными методами. Вы увидите это сообщение, если после большого числа итераций не получен ответ с требуемой точностью.
Попробуйте изменить значение постоянной TOL. При работе с функциями root, find, minerr попробуйте задавать различные значения начальных приближений.
Can’t define the same variable more than once in the same expression (Невозможно определить ту же самую переменную более одного раза в одном и том же выражении). Вы пытаетесь вычислить одну и ту же переменную дважды в одном выражении. Пример подобной ошибки: если вы создаете вектор с именем a:= и используете это же имя справа, то получите это сообщение.
Can’t determine what units the result of this operation should have (Невозможно определить, в каких единицах должен быть представлен результат операции). Вы возвели выражение, содержащее единицы измерения, в степень, являющуюся переменной или вектором. В итоге невозможно определить размерность результата. Если выражение имеет размерность, то его можно возводить только в действительную фиксированную степень.
Can’t evaluate this expression. It may have resulted in an overflow or an infinite loop
(Невозможно вычислить это выражение. Это может быть результатом переполнения или бесконечным числом циклов). Это выражение может содержать слишком много вложенных функций или функция может быть константой в бесконечных циклах.
Проверьте несколько итераций цикла.
Can’t evaluate this expression because it’s either too complicated or it’s defined in terms of itself (Невозможно вычислить это выражение, потому что оно или слишком сложное,
или определяет само себя). Эта ошибка возникает, если функция определена в 72 терминах самой себя, что ведет к появлению рекурсивной функции, где условие
окончания процесса не определено. Например, f(x) := f(x)+5 ведет к переполнению стека. Необходимо изменить имя функции.
Как правило, имена функций слева и справа должны быть разными, если, конечно, это не рекурсивная функция.
Can’t evaluate this function when its argument is zero (Невозможно вычислить эту функцию, если ее аргумент равен нулю). Функция неопределенна, если аргумент равен нулю. Такое сообщение появляется при вычислении логарифма от нуля. Can’t divide by zero (Деление на ноль невозможно). Где-либо в программе или внутри численного метода возникло деление на ноль. Найдите место деления на ноль и устраните его. Попробуйте поменять параметры численного метода, константы точности или сам численный алгоритм.
Can’t find a solution. Encountered too many iterations (Невозможно найти решение.
Слишком много итераций). Это сообщение появляется при использовании функции polyroot, если степень полинома слишком велика. Попробуйте найти корни полинома символьным методом.
Can’t find a solution to this system of equations (Невозможно найти решение системы уравнений). Попробуйте изменить начальные приближения.
Что делать, если функция find не может найти решение, описано в главе 3.
Can’t find the data file you’re trying to use (Невозможно найти файл, который вы пытаетесь использовать). Удостоверьтесь, что такой файл существует в указанном месте.
Can’t have anything with units or dimensions here (Здесь не должно быть единиц измерений или размерностей). Это выражение использует единицы измерений гделибо, где они не разрешены.
Единицы измерений не разрешены:
варгументах большинства функций;
вэкспонентах;
вверхних и нижних индексах.
Для того чтобы использовать выражения с единицами измерений, вначале переведите это выражение в UnitsOf(выражение).
Can’t have more than one array in a contour plot (Не может быть более одного массива в контурном графике). Вы вводите более одного массива в место ввода контурного или поверхностного графика. Разрешается иметь только один массив в данном месте ввода, так как на контурном графике может быть изображена только одна поверхность.
Can’t plot this many points (Невозможно начертить график с таким большим количеством точек). Попытка построения графика с числом точек, превосходящим возможное. Попробуйте сделать число точек меньшим, чем 150 000.
Can’t perform this operation on the entire array at once. Try using «vectorize» to perform it element by element (Невозможно выполнить эту операцию во всем массиве сразу. Попытайтесь использовать векторизацию, чтобы преобразовать элемент за элементом). Это сообщение можно увидеть, например, при попытке разделить один вектор на другой.
Для того чтобы применить функцию или оператор к каждому элементу вектора или матрицы, используйте оператор векторизации.
Can’t raise an expression having units to a complex power (Нельзя возводить в комплексную степень выражение, имеющее единицы измерения). Выражение с единицами измерения можно возводить только в действительную степень. Для того, чтобы возвести в комплексную степень выражение с единицами измерения, вначале переведите это выражение в UnitsOf(выражение) — единицы измерения будут отменены.
Can’t solve a system having this many equations (Невозможно решить систему,
имеющую так много уравнений). Mathcad может решать системы уравнений, содержащие не больше 200 нелинейных уравнений и не больше 500 линейных.
Can’t understand something in this data file. If this file came from a spreadsheet, make sure you saved it as ASCII text only (Невозможно что-либо понять в этом файле данных. Если этот файл взят из откуда-либо из готовых материалов, убедитесь, что он сохранен в формате ASCII). При считывании файла функцией READPRN файл должен быть записан в формате ASCII.
Все строки в файле должны иметь одинаковое число величин. Строки, не содержащие численных величин, игнорируются. Если файл имеет требуемый формат, а вы видите это сообщение об ошибке, удалите из файла любой текст.
Can’t understand the name of this function. If you’re trying to multiply, use «*»
(Невозможно понять имя этой функции. Если вам нужно умножить, используйте знак умножения). Такое сообщение появляется, если выражение, не являющееся функцией, используется как функция или имя функции записано неверно.
Can’t understand the way this range variable is defined (Невозможно понять определение дискретной (ранжированной) переменной). Неверное определение дискретной переменной.
Дискретная переменная может быть определена двумя способами:
var := n1 |
..n2 ; |
|
var := n1 |
, n2 ..n3 . |
73 |
Can’t understand this number (Невозможно понять это число). Это выражение содержит символ или десятичную точку там, где это непозволительно. Например, вы увидите этой сообщение об ошибке, если случайно запишете число как .452.
Can’t use a range variable in a solve block (Невозможно использовать дискретную переменную в вычислительном блоке). Эта сообщение об ошибке появляется, если использовать дискретную переменную в неподходящем месте, например, в вычислительном блоке.
Исключите дискретную переменную из вычислительного блока. Попробуйте создать функцию, включающую в себя вычислительный блок.
Cannot evaluate this accurately at one or more of the values you specified (Невозможно точно вычислить выражение в одной или нескольких точках). Эта ошибка указывает, что вы пытаетесь вычислить функцию для аргумента, находящегося за пределами области определения функции.
Cannot perform this operation on a string (Нельзя выполнить эту операцию над строкой). Нельзя выполнить математические операции со строковой переменной. Could not find a solution (Невозможно найти решение). Численный метод расходится (не может найти решения). Возможно, решения не существует. Подробнее об этом написано в главе 3.
Could not find a solution because the root finder failed (Невозможно найти решение.
Сбой при нахождении корней). При решении дифференциального уравнения с граничными условиями функция sbval не может вычислить недостающие начальные условия. Попробуйте изменить начальные приближения.
Cross product is defined only for vectors having exactly three elements (Векторное произведение определяется только для векторов, имеющих ровно три элемента).
Degree of the polynomial must be between 1 and 99 (Степень полинома должна быть от
1 до 99). Вектор коэффициентов полинома, используемый функцией polyroot, должен содержать от 2 до 99 элементов.
Encountered a floating point error (В заданной точке функция не может иметь такого значения).
End of File (Конец файла). Вы пытаетесь функцией READ прочитать больше данных, чем есть в файле.
End points cannot be the same (Конечная и начальная точки не могут быть одинаковыми). При решении дифференциальных уравнений конечные точки интервала интегрирования должны быть разными.
Found a number with a magnitude greater than 10^307 while trying to evaluate this expression (Найдено число, превышающее 10307). Попробуйте поменять параметры численного алгоритма или сам алгоритм.
Found a singularity while evaluating this expression. You may be dividing by zero
(Обнаружена сингулярность при вычислении этого выражения. Возможно деление на ноль). Проверьте численные значения величин в этом выражении.
Illegal context. Press F1 for Help (Недопустимый контекст. Нажмите клавишу F1, чтобы получить помощь). Трудно диагностируемая ошибка. Часто вызывается синтаксическими ошибками при наборе выражений.
При использовании в правой части выражения переменных с индексами или дискретных переменных все индексы и все дискретные переменные обязательно должны появиться и в левой части выражения в качестве индексов или параметров функции.
Illegal dimensions (Недопустимые размеры массива). Массив не имеет столько строк и столбцов, сколько требуется.
Введите имя массива и нажмите клавишу =, чтобы проверить истинные размеры массива.
Invalid expansion point (Невозможно разложить выражение в ряд в окрестности указанной точки). Проверьте правильность использования ключевого слова series при символьном вычислении выражения.
Invalid matrix dimension. The number of rows is less than the number of columns
(Неправильный размер матрицы. Число строк меньше, чем число столбцов). Функция svd требует, чтобы число строк было больше числа столбцов или равно ему.
Live symbolics not available (Символьные вычисления невыполнимы). Это сообщение появляется при использовании символьного знака равенства, если в данной версии Mathcad символьные вычисления отсутствуют.
Loess cannot extrapolate (Функция loess не может экстраполировать выражение). Точки для интерполяции выражения должны лежать между минимальным и максимальным значениями заданных точек.
Matrix is singular. Cannot compute its inverse (Матрица сингулярная. Невозможно вычислить обратную матрицу). Матрица вырожденная или почти вырожденная. Ее определитель равен нулю или число обусловленности очень велико.
Matrix must be positive definite (Матрица должна быть положительно определенной). Это сообщение появляется, когда матричный аргумент функции не является
положительно определенным. Матрица является положительно определенной, если |
|||||
ее собственные числа действительные и положительные. |
|||||
Must be 1 complex matrix or 2 real matrices (Должна быть одна матрица комплексных |
74 |
||||
чисел или две матрицы действительных чисел). Это условие необходимо при |
|||||
построении графика векторного поля. |
|||||
Must be a vector with real elements (Должен быть вектор действительных чисел). |
|||||
Вектор не должен иметь мнимых чисел и должен быть столбцом, а не строкой. |
|||||
Must be between two lock regions (Курсор должен быть между границами запираемой |
|||||
зоны). При создании закрытой области — команда Format |
Area |
Lock |
|||
(Формат |
Зона |
Запереть) — необходимо вначале щелкнуть мышью между |
|||
границами запираемой зоны. |
|||||
Must be less than the number of data points (Аргумент должен быть меньше, чем число |
|||||
точек в массиве данных). Для дополнительной информации установите курсор на |
|||||
названии встроенной функции и нажмите клавишу F1. |
|||||
Must be a real scalar (Должно быть действительным числом). |
|||||
Must have more than four rows (Матрица должна иметь больше четырех рядов). |
|||||
Must have 1 or 2 columns (Матрица должна иметь один или два столбца). Первый |
|||||
матричный аргумент в функциях кубической сплайн-интерполяции должен иметь |
|||||
один столбец для одномерной сплайн-интерполяции и два столбца — для |
|||||
двухмерной. |
|||||
Must have three vectors or one matrix (Должно быть три вектора или одна матрица). |
|||||
При построении графика поверхности в поле ввода надо вписать или три вектора, |
|||||
разделенных запятыми, или одну матрицу. |
|||||
No bitmaps were found in the worksheet (В документе нет графических объектов). Это |
|||||
сообщение появляется при выполнении команды Format |
Color |
Optimize Palette. |
|||
(Формат |
Цвет |
Оптимизировать палитру). |
Not enough memory for this operation (Для этой операции недостаточно памяти).
Only positive values are allowed here (Здесь можно использовать только положительные величины).
ORIGIN should be an integer whose magnitude is less than 16 million (ORIGIN должно быть целым числом, меньшим 16 млн).
(Rows – 1) must be power of 2 (Матрица должна иметь 2n рядов).
Something is wrong with the solve block used to define this function. It may need a guess value (Что-то неверно в блоке решения. Возможно, необходимо начальное приближение). Такое сообщение появляется при использовании блока решения внутри функции пользователя. Попробуйте оценить непосредственно сам блок решения вне функции пользователя. Вы получите другое более подробное сообщение об ошибке.
String contains the wrong number of characters or the wrong kind of characters (Строка содержит неверное число символов или неверный вид символов). При использовании смешанных программ необходим ввод символов в строке аргументов: I — для целых чисел, B — для бинарных чисел, С — для любого вещественного числа.
The elements in this vector must be in increasing order (Элементы этого вектора должны быть расположены в порядке возрастания). Такое требование предъявляется к вектору аргументов при работе с массивами данных, например, при интерполяции или построении гистограмм.
The expression to the left of the equal sign cannot be defined (Выражение слева от знака равенства не может быть определено). Возможна синтаксическая ошибка. Слева от оператора присваивания могут находиться имена переменных, векторов, матриц и функций (с аргументами в скобках).
The format of this vector is invalid. Press F1 for help (Неверный размер вектора.
Нажмите клавишу F1 для вызова помощи). Некоторые функции требуют в качестве аргумента вектор, созданный другой функцией. Этот вектор имеет специальный формат, создаваемый другой функцией, например cspline, regress и др.
The function values on the two bracket end points must be of opposite signs (Величины функции в двух крайних точках интервала должны быть разного знака). При задании интервала поиска корней функцией root величины функции в двух крайних точках интервала должны быть разного знака. Выбирайте границы интервала поиска корней после построения графика функции.
The number of rows must be a power of 2 (Число элементов вектора должно быть равно 2n). Ошибка возникает при неверном числе данных для волнового преобразования функцией wave.
The number of rows or columns do not match (Число строк и столбцов в этих матрицах не согласовано). Подобное сообщение об ошибке часто появляется при неправильном перемножении матриц. Нажмите клавиши Shift+F1 и щелкните мышью на имени функции, чтобы узнать необходимые размеры матриц.
The unit placeholder can only have real, non-zero scalars put into it (В место ввода размерности при выводе результатов вычислений можно вводить, кроме размерностей, только действительные, не равные нулю скалярные величины).
The units in this expression do not match (Размерности в этом выражении не согласованы). Несогласованные вычисления с размерными и безразмерными величинами. При вычислениях без учета размерностей, видимо, осталась не заданной
какая-либо величина, обозначенная буквами m, s, N и т. д., которые по умолчанию встроены в Mathcad как стандартные размерности длины, времени и силы.
There is an extra comma in this expression (В этом выражении есть лишняя запятая). 75
Проверьте синтаксис. Видимо, запятая использована вместо точки.
There must be more data points than parameters (В массиве данных должно быть больше точек, чем параметров функции). Такое требование предъявляют, например,
функции regress и genfit.
There must be more than three data points (Эта функция требует вектор, содержащий по крайней мере четыре элемента).
This array must have more than one row or column (Этот массив должен иметь больше,
чем одну строку или столбец). Например, при построении графиков поверхности требуется матрица значений. Некоторые функции требуют матричных аргументов.
This expression has a «(» without a matching «)». (В выражении не хватает скобок).
Проверьте выражение.
This expression is incomplete. You must fill in the placeholders (Выражение неполное.
Вы должны заполнить места ввода).
This expression is incomplete. You must provide an operator (Выражение неполное. Вы должны ввести оператор).
This expression is too complicated. Try defining it in smaller pieces (Выражение слишком сложное. Постарайтесь определить его по частям).
This file could not be opened. Make sure it exists (Этот файл не может быть открыт.
Убедитесь, что он существует). При считывании внешнего файла функцией READPRN возможно, что файл имеет статус «только для чтения». Если считываемый файл не находится в том же каталоге, что и файл, используемый Mathcad, необходимо указать полный путь к нему.
This function has too many arguments (Функция имеет слишком много аргументов). Для встроенных функций щелкните мышью на имени функции и нажмите клавишу F1. Проверьте правильность использования функции. Для функции пользователя проверьте определение функции.
This function is undefined at one or more of the points you specified (Функция не определена в одной или нескольких точках). Вы используете оператор или функцию для неприемлемых значений аргумента, например, lg(0) или –3! (факториал отрицательного числа не определен).
This image format is not supported (Этот формат изображения не поддерживается
Mathcad).
This integer is too large (Величина слишком большая для работы с ней). This integer is too small (Величина слишком мала для работы с ней).
This is invalid. If you are using conditional statements in a Mathcad program, make sure all cases are accounted for (Это неверно. Если вы используете условие в Mathcadпрограмме, убедитесь, что все возможные случаи учтены). В условный оператор программирования добавьте еще одно место ввода и впишите еще одно значение с ключевым словом Otherwise (иначе).
This is not a valid interval (Неправильно указан интервал). Начальное значение интервала должно быть меньше конечного.
This is not allowed inside a solve block. For example, definitions are not allowed in a solve block (Это не разрешено внутри вычислительного блока. Например, определения не могут находиться внутри вычислительного блока). Внутри вычислительного блока могут находиться только решаемые уравнения и ограничения к ним.
This list contains too many items (Список содержит слишком много имен). Вы ввели в список слишком много имен, разделенных запятыми. Чаще всего это случается с графиками.
This matrix must be square. It should have the same number of rows as columns (Матрица должна быть квадратной. Число строк должно быть равно числу столбцов).
This must be an integer. The expression you used appears to have a fractional part (Здесь должно быть целое число. Похоже, что выражение содержит дробную часть). Проверьте верхние и нижние индексы. Они должны быть целыми числами. Некоторые функции, такие как identity и submatrix, требуют целочисленных аргументов.
This must be the name of a function or variable (Здесь должно быть имя функции или переменной).
This must be the name of a mapping function (Здесь должно быть имя функции преобразования координат). Такой аргумент требуется функциям CreateMech и CreateSpace.
This operation can only be performed on a function (Эту операцию можно производить только над функцией). Аргумент функции сам должен быть функцией.
This operation can only be performed on an array. It can’t be performed on a number (Эту операцию можно выполнить только над массивом, но не над числом). Например, если вы пишете имя с верхним индексом, то это должен быть вектор.
This operation can only be performed on a number or an array (Эту операцию можно выполнить только над числом или массивом).
This operation can only be performed on a string (Эту операцию можно выполнить только над строкой). Например, строковые функции требуют хотя бы один строковый аргумент.
0 / 0 / 0 Регистрация: 12.05.2015 Сообщений: 10 |
|
1 |
|
Ошибка — эта переменная не определена. Как исправить08.01.2017, 20:05. Показов 58937. Ответов 16
Добрый день.
__________________ 0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
08.01.2017, 20:05 |
16 |
Модератор 5025 / 3857 / 1325 Регистрация: 30.07.2012 Сообщений: 11,414 |
|
08.01.2017, 20:11 |
2 |
Nikon19, везде вместо = (символа эквивалентности) поставьте := (символ присваивания). И будет Вам счастье… 1 |
0 / 0 / 0 Регистрация: 12.05.2015 Сообщений: 10 |
|
08.01.2017, 20:17 [ТС] |
3 |
Менял на символ присваивания, после чего такая ошибка возникает внутри самой формулы(сначала пишет, что не определена M,например). 0 |
Модератор 5025 / 3857 / 1325 Регистрация: 30.07.2012 Сообщений: 11,414 |
|
08.01.2017, 20:18 |
4 |
Nikon19, файл в архив и сюда… (НЕ КАРТИНКУ) 0 |
0 / 0 / 0 Регистрация: 12.05.2015 Сообщений: 10 |
|
08.01.2017, 20:21 [ТС] |
5 |
Здесь уже поменял обратно на символ присваивания. 0 |
Модератор 5025 / 3857 / 1325 Регистрация: 30.07.2012 Сообщений: 11,414 |
|
08.01.2017, 20:36 |
6 |
Сообщение было отмечено Nikon19 как решение РешениеNikon19, Вам надо объявить еще одну функцию, имя которой Вы используете в последней функции… (желтый фон). Как-то так… 1 |
0 / 0 / 0 Регистрация: 12.05.2015 Сообщений: 10 |
|
08.01.2017, 20:47 [ТС] |
7 |
Большое спасибо! Миниатюры
0 |
Модератор 5025 / 3857 / 1325 Регистрация: 30.07.2012 Сообщений: 11,414 |
|
08.01.2017, 20:56 |
8 |
Nikon19, так Вам надо просто построить график ОПРЕДЕЛЕННОГО вида ИЛИ решить какую-то конкретную задачу и посмотреть, какой график получится? Уточните, пожалуйста. 0 |
0 / 0 / 0 Регистрация: 12.05.2015 Сообщений: 10 |
|
08.01.2017, 21:08 [ТС] |
9 |
Есть пример, в рамках которого получено значение вероятности безотказной работы программы. Формула расчета в маткаде представлена. Необходимо построить график (вида как экспоненциальный) в зависимости от времени, но проблема в том, что t=20 в этом примере. 0 |
44 / 1 / 0 Регистрация: 14.06.2014 Сообщений: 150 |
|
12.09.2017, 15:43 |
10 |
Привет всем! 0 |
2045 / 1434 / 728 Регистрация: 25.12.2016 Сообщений: 4,036 |
|
12.09.2017, 16:02 |
11 |
Nikon19, экспонента так получается,аргумент надо поменять Миниатюры
0 |
0 / 0 / 0 Регистрация: 16.10.2021 Сообщений: 3 |
|
16.10.2021, 19:47 |
12 |
ошибка при построении графика (эта переменная не определена) 0 |
2045 / 1434 / 728 Регистрация: 25.12.2016 Сообщений: 4,036 |
|
16.10.2021, 20:01 |
13 |
wern, график ниже опустите. 1 |
0 / 0 / 0 Регистрация: 16.10.2021 Сообщений: 3 |
|
16.10.2021, 20:11 |
14 |
т.е проблема только в положении графика относительно матриц? я передвинул и все получилось, спасибо большое 0 |
2045 / 1434 / 728 Регистрация: 25.12.2016 Сообщений: 4,036 |
|
16.10.2021, 20:19 |
15 |
т.е проблема только в положении графика относительно матриц? да,так и есть. 1 |
0 / 0 / 0 Регистрация: 16.10.2021 Сообщений: 3 |
|
16.10.2021, 20:34 |
16 |
прошу прощения, а что делать когда появляется ошибка «формы этих значений должны совпадать. Это значение имеет форму Unitless а другие имеют форму: [] Unitless» 0 |
2045 / 1434 / 728 Регистрация: 25.12.2016 Сообщений: 4,036 |
|
16.10.2021, 20:40 |
17 |
wern, десятичная точка в маткаде применяется,а не запятая. Изображения
0 |
Что ж, хотя мы уже немало всего успели обсудить насчет программирования в такой замечательной математической среде, как MathCAD, еще немало весьма существенных тем осталось за кадром. И, пожалуй, самая существенная из них — это взаимодействие начинающего программиста, пишущего программы в MathCAD’е, и ошибок в его программах. Именно на ней мы с вами сейчас и остановимся.
В общем-то, если сказать, что ошибки никто не любит, это будет не так уж далеко от истины. Точнее, никто не любит собственные ошибки. Чужие любят все, а не только экзаменаторы и разнообразные инспекторы. Однако, к сожалению, при программировании (а написание небольших вспомогательных программок в MathCAD’е, как я уже когда-то давно тому назад говорил, это тоже программирование) ошибки попросту неизбежны. Даже самые лучшие программисты совершают ежедневно множество ошибок, и никто, в общем-то, за это не применяет к ним особых санкций. Существует даже такое мнение, что программа без ошибок совершенно бесполезна — если в ней нет ошибок, значит, в ней нет и никакой полезной функциональности, потому что не ошибается только тот, кто ничего не делает. Так что ошибки в программах — это вполне естественные спутники каждого, кто пишет даже самые маленькие программки, а потому и бояться их не следует. Тем не менее, с ошибками в программах можно и нужно бороться. И для этого существуют специальные средства, некоторые из которых доступны и тем, кто пишет программы в MathCAD’е. Однако, прежде чем рассказывать о том, что это за средства, и как ими нужно пользоваться, нужно, как мне лично кажется, поговорить еще немного о том, вокруг чего будет сосредоточена наша борьба — то есть о самих ошибках.
Классификация ошибок
Поскольку, как я уже говорил, ошибки довольно многочисленны, их имеет смысл классифицировать. Сделать это стоит, в общем-то, уже хотя бы попросту потому, что разные виды ошибок требуют различных к себе подходов, и их устранение требует вложения различного количества труда того, кто писал программу.
Самые простые ошибки — синтаксические. Как вы уже имели возможность воочию убедиться, при программировании очень важно придерживаться определенных правил в записи конструкций. Например, если вы вместо имени функции rkfixed напишете в программе tkfixed, ошибившись при вводе на одну букву и нажав на соседнюю с r клавишу t, то как раз и получите в свое распоряжение самую что ни на есть классическую синтаксическую ошибку. Ни к каким особенно страшным последствиям она (как, впрочем, и все другие ошибки аналогичного класса) не приведет: программа просто не сможет быть выполнена по той причине, что MathCAD не сможет найти функцию, которую вы ему указали. Искать такие ошибки тоже совсем не сложно — они всегда хорошо видны, поскольку даже сама среда подсвечивает их, чтобы можно было найти особенно быстро. Исправлять, соответственно, тоже очень просто: достаточно записать идентификатор правильно, и все в программе станет на положенные места. MathCAD, кстати, избавляет пользователя от множества таких ошибок благодаря необходимости вводить все операторы, управляющие ходом программы, с помощью специальных горячих клавиш или соответствующих кнопок на панели инструментов Программирование. Если бы их нужно было, напротив, набирать вручную с клавиатуры, то и возможности сделать синтаксическую ошибку были бы несравнимо шире.
Второй тип ошибок — ошибки алгоритмические. Это такие ошибки, которые, в принципе, не мешают выполнению программы, но делают результаты такого выполнения полностью лишенными всякого смысла. Многие из таких ошибок — банальные опечатки: там, где нужно было поставить плюс, вы, например, поставили в спешке минус или же сделали что-нибудь другое примерно в таком же духе. Конечно, сказать, что алгоритмические ошибки — это сплошь и рядом одни только опечатки, было бы, мягко говоря, не до конца верно. Потому что очень многие из них являются следствием недостаточности знаний писавшего программу — то есть если ошибочно составлена сама последовательность действий, которые должен сделать MathCAD для того, чтобы вы могли получить интересующий вас результат. Еще великое множество алгоритмических ошибок — результат банальной невнимательности: например, присвоение значения не той переменной, ее необнуление либо, например, вывод не той переменной в качестве результата выполнения вашей программы. В общем-то, именно об алгоритмических ошибках мы с вами сейчас и будем говорить более подробно. Однако есть еще один, особенно неприятный, тип ошибок.
Третий тип — это ошибки мистические. Да-да, именно мистические, я не оговорился. Какие именно это ошибки? Это ошибки, имеющие совершенно непонятную природу и столь же непонятный способ лечения — как правило, это проявления ошибок не в вашей программе, а в каком-то из внутренних компонентов MathCAD’а. К сожалению, эти ошибки, в «большом» программировании встречающиеся не так уж, в общем-то, и часто, в MathCAD’е не такие уж редкие гости. Отчасти это объясняется тем, что MathCAD — это все-таки средство расчетов, а не программирования, которое играет в этой среде второстепенную и вспомогательную роль, но, конечно, когда реально сталкиваешься с такими вот мистическими ошибками, это все не слишком успокаивает. Хотя поначалу почти все ошибки в программах кажутся мистическими, на самом деле большая их часть все-таки имеет рациональную природу. Если же природа появившейся ошибки вам совершенно непонятна, то вам следует коренным образом перестроить структуру программы или хотя бы тот ее фрагмент, в котором локализовалось проявление этой ошибки. Практически во всех случаях этот не слишком хитрый прием позволяет полностью избавить программу от досадной непонятной ошибки.
Что ж, о самих ошибках мы с вами, можно считать, побеседовали. Теперь давайте, пожалуй, перейдем к тому, какими именно способами можно бороться с самыми распространенными из них — то есть алгоритмическими. Об остальных, в общем-то, я уже довольно подробно все рассказал, а вот что касается алгоритмических ошибок, то здесь нужно будет в большинстве случаев прибегнуть к помощи специализированных встроенных в MathCAD инструментов.
Отладка в MathCAD’е
Процесс поиска и устранения алгоритмических ошибок называется по-русски отладкой. По-английски этот же самый процесс называется debugging, то есть, если дословно, «избавление от жучков». В общем-то, и по-русски довольно часто можно услышать термины «дебагинг» или «баг», однако во избежание путаницы мы будем использовать слово «отладка» (если, конечно, не возражаете). Кстати, история возникновения английского термина весьма любопытна, и, вполне возможно, вы ее слышали. Первые компьютеры были машинами весьма громоздкими и дорогостоящими, а потому и всевозможные поломки для них были делом далеко не просто устранимым. Когда выяснилось, что причиной очередной поломки стал жучок, забравшийся внутрь компьютера и вызвавший замыкание, в счете за ремонт записали: «debugging». Рука шутника оказалась легкой — термин, как видите, прижился и используется на протяжении уже многих десятилетий.
В чем же заключается процесс отладки? На самом деле ничего особенно таинственного и трудного для понимания здесь нет. Просто во время отладки у вас есть возможность выполнять программу не сразу «залпом», как это происходит обычно, а пошагово, то есть выполнять последовательно друг за другом каждую строчку программы, делая, когда нужно, паузы для осмысления работы программы и просмотра промежуточных значений каждой из переменных. Отладка используется при разработке любых программ, а потому и создатели MathCAD включили поддержку этого удобного и, в общем-то, достаточно универсального средства выявления ошибок в свой программный продукт. Доступ к инструментам, используемым при отладке программ в MathCAD’е, осуществляется через подпункт Debug меню Tools в главном рабочем окне MathCAD’а (см. соответствующий скриншот).
Стоит отметить, что, поскольку MathCAD — это среда, ориентированная не на программирование, а на различные вычислительные действия, то отладка в ней имеет более широкое применение, чем только отладка программ, которые пишет пользователь. Отлаживать можно и все вычисления даже в том случае, если они выполняются без применения какого-либо программирования с вашей стороны. В общем-то, поскольку такая возможность будет весьма полезной для большинства читателей не столько при программировании в MathCAD’е, сколько при обычных вычислениях, то именно с такой позиции мы с вами и станем рассматривать отладку в этой мощной математической среде. Нам также понадобится панель отладки. Ее включают так же, как все остальные панели инструментов, в меню View -> Toolbars. Конечно, эта панель, как вы могли уже заметить, дублирует отладочное меню в Tools -> Debug, однако, думаю, нажать на кнопку, расположенную на этой панели, будет все-таки проще и быстрее, чем искать соответствующий пункт в надежно спрятанном от пользователя меню.
При переходе в отладочный режим (кнопка либо пункт меню Toggle Debug Mode) внешний вид главного окна MathCAD’а меняется (см. скриншот): внизу появляется специальное окно, используемое для просмотра промежуточной отладочной информации. Оно называется Trace Window.
Однако о том, что именно отображается в этом самом окне, а также о том, что от нас требуется сделать с документом перед тем, как его можно будет уже полноценно отлаживать, мы с вами поговорим, пожалуй, в следующий раз, чтобы не перегружать вас разнообразной полезной информацией. Сейчас же подведем итоги разговора про ошибки, возникающие в процессе написания программ в математической среде MathCAD.
Выводы
Как видите, ошибок в программах действительно бояться не следует. Это вполне нормальная составляющая процесса программирования, неизбежно проявляющаяся в каждом из результатов этого процесса. Тем не менее, с ошибками можно и нужно бороться, и с большинством из них это можно производить с весьма высокой вероятностью достижения успеха. Хотя, конечно же, встречаются и такие ошибки, с которыми трудно будет разобраться даже тому, кто на программировании, что называется, собаку съел. Но все-таки они встречаются не так уж часто. Так что в программировании, если вы хотите избежать мучений, связанных с поиском ошибок, очень важна ваша внимательность. Если вы будете достаточно внимательны при написании программы, то риск допустить ошибку будет сравнительно невелик. Впрочем, это правило применимо не только к программированию.
SF, spaceflyer@tut.by
Компьютерная газета. Статья была опубликована в номере 42 за 2008 год в рубрике soft
Вычисления
Эта глава посвящена основам вычислений в Mathcad. Она содержит
все необходимые сведения о применении переменных и функций, операторов Присваивания,
численного вывода и символьного вывода (см. разд. 3.1), а также других операторов
(см. разд. 3.2). В заключение описываются основные средства управления процессом
вычислений в Mathcad (см. разд. 3.3) и уверится несколько слов о том, каким
образом происходит выдача сообщений об ошибках при вычислениях (см. разд. 3.4).
3.1. Переменные и функции
Основные инструменты математика — это операции с переменными
величинами и функциями. В Mathcad переменные, операторы и функции реализованы
в интуитивной форме, т. е. выражения в редакторе вводятся и вычисляются так,
как они были бы написаны на листе бумаги. Порядок вычислений в документе Mathcad
также очевиден: математические выражения и действия воспринимаются процессором
слева направо и сверху вниз.
Перечислим основные действия, которые пользователь может совершать для определения
и вывода переменных и функций.
3.1.1. Определение переменных
Чтобы определить переменную, достаточно ввести ее имя и присвоить ей неко-topoe значение, для чего служит оператор присваивания (см. следующий раздел).
3.1.2. Присваивание переменным значений
Чтобы присвоить переменной новое значение, например переменную х сделать равной 10:
- Введите в желаемом месте документа имя переменной, например
х. - Введите оператор присваивания с помощью клавиши <:>
или нажатием соответствующей кнопки Definition (Присваивание) на панели инструментов
Calculator или Evaluation (Выражения), как показано на рис. 3.1. - Введите в появившийся местозаполнитель новое значение переменной
(10).
Рис. 3.1. Результат ввода оператора присваивания
Результат перечисленных действий показан в листинге 3.1.
Кнопка оператора присваивания для удобства помещена сразу на две панели Calculator
(Калькулятор) и Evaluation (Выражения).
Листинг 3.1. Присваивание переменной численного значения
Ввести новое значение переменной возможно как в виде числа, так и в виде математического выражения, содержащего другие переменные (листинг 3.2) и функции (см. следующие разделы), а также в виде строкового выражения (листинг 3.3.). В последнем случае будет создана переменная s не численного, а строкового типа.
Листинг 3.2. Присваивание переменной вычисленного значения выражения
Листинг 3.3. Присваивание переменной строкового значения
Если переменная с некоторым именем создается в данном документе впервые, то для ввода оператора присваивания, вместо двоеточия, допускается использовать символ равенства «=», который Mathcad автоматически заменит символом присваивания.
В некоторых случаях это невозможно, в частности, когда значение
присваивается переменной, имя которой зарезервировано Mathcad. Например, присвоить
значение переменной с именем N можно, лишь вводя двоеточие, т. к. по умолчанию
это имя обозначает в Mathcad размерность силы (Ньютон).
Чтобы переопределить значение переменной, определенной в документе, оператор присваивания следует вводить не знаком равенства, а двоеточием, либо пользоваться панелью инструментов.
Не вполне соответствующий общепринятому математическому стилю вид оператора
присваивания (не =, а:==) является, на самом деле, компромиссом, связанным
с назначением Mathcad как системы программирования. Этот оператор показывает,
что он действует, в отличие от других, не слева направо, а справа налево, поскольку
значение (справа) задается переменной (слева). И если непосвященного математика
внешний вид этого оператора может ввести в некоторое заблуждение, то пользователю
Mathcad он прямо говорит о действии, выполняемом в данном месте документа: значение
переменной не выводится на экран (о чем говорит знак =), а некоторое значение
присваивается (:=) данной переменной.
Для подготовки отчетов, тем не менее, может потребоваться изменить
отображение оператора присваивания с принятых по умолчанию символов «:=»
на символ равенства. Это делается для конкретного оператора присваивания с помощью
пункта View Definition As контекстного меню (рис. 3.2) либо для всего документа
с помощью команды Tools / Worksheet Options / Display)(Сервис / Опции документа
/ Отображение) (см. разд. «Управление отображением некоторых операторов»гл.
2).
Рис. 3.2. Различное отображение оператора присваивания
Помимо разобранного оператора присваивания (а он применяется наиболее часто), существует также возможность глобального присваивания.
3.1.3. Функции
Функции в Mathcad записываются в обычной для математика форме:
- f (х, …) — функция;
- f — имя функции;
- х,… — список переменных.
Легче всего ввести написание функции в документ при помощи клавиатуры.
В Mathcad формально можно разделить функции на два типа:
- встроенные функции;
- функции, определенные пользователем.
Применение функций обоих типов в расчетах совершенно одинаково, с тем исключением, что любую встроенную функцию можно сразу использовать в любом месте документа (о вставке встроенных функций в документ читайте в разд. «Знакомство с Mathcad» гл. 1), а пользовательскую функцию необходимо предварительно определить в документе до момента вычисления ее значения.
3.1.4. Определение функции пользователя
Для того чтобы определить функцию пользователя, например f(x,y) = x2-cos (x+y):
- Введите в желаемом месте документа имя функции (f).
- Введите левую скобку «(«, имена переменных через
запятую х, у и правую скобку «)». При вводе левой скобки и запятой
автоматически будут появляться соответствующие местозаполнители. - Введите оператор присваивания с панели инструментов или нажатием
клавиши <:>. - Введите в появившийся местозаполнитель выражение, определяющее
функцию x 2 -cos(x+y), пользуясь клавиатурой или панелями инструментов.
Результат ввода иллюстрируется листингом 3.4.
Листинг 3.4. Определение функции пользователя
Все переменные, присутствующие справа в выражении определения
функции, либо должны входить в список аргументов функции (в скобках, слева после
имени функции), либо должны быть определены ранее. В противном случае будет
выведено сообщение об ошибке, причем имя неопределенной переменной будет выделено
красным цветом (рис. 3.3).
Рис. 3.3. Сообщение об ошибке («Эта переменная или функция
ранее не определена»)
3.1.5. Вывод значений переменных и функций
Чтобы вычислить в документе некоторое математическое выражение, которое может состоять из переменных, операторов и функций (встроенных и определенных пользователем):
- Введите это выражение, например х у.
- Нажмите клавишу <=>.
В результате справа от введенного знака равенства появится вычисленное значение выражения (листинг 3.5, предпоследняя строка). Нельзя изменять содержимое выражения справа от знака равенства, поскольку оно есть результат работы вычислительного процессора Mathcad, совершенно скрытой от глаз пользователя. Подчас (когда выражение содержит функции, реализующие разные численные методы, часто в сложных комбинациях) алгоритмы расчета бывают очень затейливыми и занимают существенное время. О том, что некоторое выражение документа находится в стадии вычисления, свидетельствует обрамляющая его зеленая рамка и невозможность предпринять какое-либо действие с программой Mathcad.
Листинг 3.5. Вычисление выражения.
Заметьте, что, перед тем как вычислить значение математического выражения,
Вы обязаны определить значение каждой входящей в него переменной (две первых
строки листинга 3.5). Вычисляемое выражение может содержать любое количество
переменных, операторов и функций. Вывод текущего значения той или иной переменной
приведен в последней строке листинга 3.5, а значения функции — в листингах 3.6
и 3.7.
Листинг 3.6. Вывод значения функции.
Листинг 3.7. Вывод значения функции (продолжение листинга 3.6)
При определении функций пользователя через различные переменные важную роль играет присутствие имен этих переменных в списке аргументов или определение их выше в тексте документа. Например, результаты вывода значения функции f (х,у) в листинге 3.6 остались бы точно такими же, если до или после определения функции присвоить переменным х и у некоторые значения. Так происходит потому, что значения аргумента заданы непосредственно в строке вычисления функции. Если же определить функцию f (х) так, как это сделано в листинге 3 8, то она будет зависеть от значения переменной у в момент определения f (х) (т. е. у=5), поскольку у не входит в список аргументов f (х). Фактически f (x) =x 2 -cos (х+5). Даже если где-нибудь ниже в программе пользователь переопределит значение у, Mathcad все равно будет помнить функцию f (х) как выражение x2-cos (х+5) (листинг 3.9).
Листинг 3.8. К определению функций пользователя
Листинг 3.9. К определению функций пользователя (продолжение листинга 3.8)
Внимательнее относитесь к обязательному требованию совпадения количества аргументов
при определении и выводе значения функций. Сравните, например, листинги 3.6
и 3.8, в которых, несмотря на одинаковое выражение в правой части определения
функции f, создаются две существенно разные функции f (х, у) и f (х), соответственно
Вводя знак равенства для вычисления математических выражений в Math-cad, Вы фактически применяете оператор вычисления или численного вывода (numerical evaluation). Его можно ввести также нажатием кнопки со знаком равенства на одной из панелей инструментов: Calculator (Калькулятор) или Evaluation (Выражения) (см. рис. 3.1). Оператор численного вывода означает, что все вычисления проводятся с числами, а различные встроенные алгоритмы реализуются соответствующими численными методами.
3.1.6. Символьный вывод
Наряду с численным выводом, в Mathcad имеется возможность символьного, или аналитического, вычисления значения выражения. Для символьных вычислений имеется ряд специальных средств, которые будут детально рассмотрены позднее (см. гл. 5), самое простое из них — это оператор символьного вывода (symbolic evaluation). Он обозначается символом -» и в большинстве случаев применяется точно так же, как оператор численного вывода, однако внутреннее различие между действием этих двух операторов огромно. Если численный вывод — это в обычном смысле этого слова «запрограммированный» расчет по формулам и численным методам, скрытый от глаза пользователя, то символьный вывод — результат работы системы искусственного интеллекта, встроенной в Mathcad и называемой символьным процессором. Работа символьного процессора также невидима (и, чаще всего, даже трудно представима) пользователю и заключается в анализе самого текста математических выражений. Конечно, гораздо более узкий круг формул можно рассчитать символьно, хотя бы потому, что, вообще говоря, относительно не такая большая часть математических задач допускает аналитическое решение.
Чтобы попытаться вычислить символьно математическое выражение,
например В sin(arcsin(С Х)), где В,С,Х — некоторые переменные:
- Введите это выражение: В sin(asin(С Х)).
- Введите оператор символьного вывода сочетанием клавиш +<>,
либо нажатием соответствующей кнопки (рис. 3.4) на панели Symbolic (Символика)
или Evaluation (Выражения).
Рис. 3.4. Кнопка вставки оператора символьного вывода
После этого справа от символа оператора символьного вывода появится определенное аналитически значение выражения (листинг. 3.10) либо сообщение об ошибке «No answer found» (Ответ не найден). Если символьному процессору Mathcad не удается аналитически упростить выражение, то оно будет выдано справа от знака -» в том же виде, что и слева.
Листинг 3.10. Символьный вывод выражения
Листинг 3.11. Символьный вывод выражений, которое не удалось упростить
Присмотритесь внимательнее к листингам 3.10 и 3.11: для символьного вывода не требуется предварительно определять переменные, входящие в левую часть выражения! Если же переменным были все-таки присвоены ранее некоторые значения, символьный процессор просто подставит их в упрощенную формулу и выдаст результат с учетом этих значений (см. в качестве примера два следующих листинга — 3.12 и 3.13).
Точно так же, как рассчитываются численно значения функций, можно вычислять
их и с помощью символьного процессора. Сравните соответствующие результаты,
которые представлены в листинге 3.12 (конечно, символьный и численный ответы
равны: 9 cos(8)=-1.31). Аналогично можно «символьно выводить значения переменных.
Например, присвоить некоторой переменной значение функции или сложного выражения
(листинг 3.13, вторая строка) и затем вывести значение переменной в символьном
виде.
Листинг 3.12. Численный и символьный вывод значения функции
Листинг 3.13. ЧислвйныЙ и символьный вывод
Как показывают приведенные примеры, преимущество символьных вычислений заключается в выдаче аналитического результата, который для математика часто является более ценным. Поэтому, исходя из специфики конкретных задач, решайте, стоит ли наряду с численными расчетами попытаться получить и символьное решение.
3.1.7. Допустимые имена переменных и функций
В заключение перечислим, какие символы можно, а какие нельзя применять в именах, которые пользователь дает переменным и функциям, и перечислим ряд ограничений на присваивание имен. Допустимые символы:
- большие и маленькие буквы — Mathcad различает регистр: так,
имена х и х определяют разные переменные. Кроме того, Mathcad различает и
шрифт, например имена х и х воспринимаются как разные; - числа от 0 до 9;
- символ бесконечности (клавиши ++);
- штрих (клавиши +);
- греческие буквы — они вставляются с помощью панели Greek
(Греческие символы); - символ подчеркивания;
- символ процента;
- нижний индекс.
С осторожностью используйте нижний индекс в определении имен
переменных и функций, не путая его с индексом векторной переменной. Чтобы ввести
имя с нижним индексом, например, K max: введите букву «K»,
затем точку «.», после чего линии ввода опустятся чуть ниже, и только
затем сам нижний индекс max.
Теперь рассмотрим ограничения на имена переменных и функций:
- имя не может начинаться с цифры, символа подчеркивания, штриха
или процента; - символ бесконечности должен быть только первым в имени;
- все буквы в имени должны иметь один стиль и шрифт;
- имена не могут совпадать с именами встроенных функций, констант
и размерностей, например sin или TOL. Тем не менее, допускается их переопределение,
но тогда одноименная встроенная функция больше не будет использоваться по
первоначальному назначению; - Mathcad не различает имен переменных и функций: если сначала
определить функцию f (х), а потом переменную f, то в оставшейся части документа
будет утеря* доступ к функции f (x).
В некоторых случаях желательно использовать имена переменных и функций, содержащие символы операторов Mathcad или другие символы, которые нельзя вставлять в имена непосредственно. Для этого существуют две возможности.
Во-первых, имя, составленное из любых символов и заключенное в квадратные
скобки, Mathcad будет воспринимать корректно (рис. 3.5, сверху). Например, чтобы
ввести имя :
- Нажмите клавиши ++ — появится
пара квадратных скобок с местозаполнигелем внутри. - Введите в местозаполяитель последовательность любых символов,
например a+b.
Рис. 3.5. Специальные символы в именах переменных
Во-вторых, если Вас не устраивает наличие квадратных скобок в
имени, то вставить в него специальные символы можно чуть более сложным способом.
Например, для ввода имени a+b:
- Введите первый символ (а), который должен быть допустимым
для имен Mathcad. - Нажмите клавиши ++ для
перехода в специальный «текстовый» режим редактирования. - Введите последовательность любых символов (+).
- Еще раз нажмите клавиши ++,
чтобы вернуться в обычный режим редактирования. Теперь можно продолжать ввод
допустимых символов в имя (b).
Результат этих действий показан в нижней строке рис. 3.5. Если требуется, чтобы имя начиналось со специального символа (средняя строка рис. 3.5), то необходимо выполнить все пункты 1-4, вводя в начале имени произвольный допустимый символ, а по завершении ввода просто стирая его.
3.2. Операторы
Каждый оператор в Mathcad обозначает некоторое математическое действие в виде символа. В полном согласии с терминологией, принятой в математике, ряд действий (например, сложение, деление, транспонирование матрицы и т. п.) реализован в Mathcad в виде встроенных операторов, а другие действия (например, sin, erf и т. п.) — в виде встроенных функций. Каждый оператор действует на одно или два числа (переменную или функцию), которые называют операндами. Если в момент вставки оператора одного или обоих операндов не хватает, то недостающие операнды будут отображены в виде местозаполнителей. Символ любого оператора в нужное место документа вводится одним из двух основных способов:
- нажатием соответствующей клавиши (или сочетания клавиш) на
клавиатуре; - нажатием указателем мыши соответствующей кнопки на одной
из математических панелей инструментов.
Напомним, что большинство математических панелей содержат сгруппированные по смыслу математические операторы, а вызвать эти панели на экран можно нажатием соответствующей кнопки на панели Math (Математика).
Везде в этом разделе будем рассматривать только второй способ вставки оператора
Те же, кто предпочитает использовать клавиатуру, найдут перечень горячих клавиш
в приложении 2.
Выше мы рассмотрели особенности применения трех операторов: присваивания
(см. разд. 3.1.2), численного (см. разд. 3.1.5) и символьного вывода (см. разд.
3.1.6). Разберем в данном разделе действие прочих операторов Mathcad и возможности
определения операторов пользователя.
3.2.1. Арифметические операторы
Операторы, обозначающие основные арифметические действия, вводятся с панели Calculator (Калькулятор), показанной на рис. 3.6:
- сложение и вычитание: + — (листинг 3.14);
- умножение и деление: / + (листинг 3.15);
- факториал: ! (листинг 3.16);
- модуль числа: |х| (листинг 3.16);
- квадратный корень: (листинг 3.17);
- корень n-й степени: (листинг 3.17);
- возведение х в степень у: х y (листинг 3.17);
- изменение приоритета: скобки (листинг 3.18);
- численный вывод: = (все листинги).
Рис. 3.6. Панель Calculator
Листинг 3.14. Операторы сложения, вычитания и отрицания
Листинг 3.15. Операторы деления и умножения
Листинг 3.16. 0ператор факториала и модуля
Листинг 3.17. Операторы извлечения корня и возведения в степень
Листинг 3.18. Оператор изменения приоритета ()
Как видно, с помощью этой панели можно ввести не только перечисленные операторы, но и их часто используемые комбинации, например, возведение экспоненты в степень, смешанное произведение и деление, а также мнимую единицу и число я. Заметим, что допускается запись оператора деления как в одну, так и в две строки, что обеспечивается наличием двух соответствующих кнопок на панели Calculator.
Напомним, что в редакторе Mathcad можно выбирать отображение оператора умножения (см. разд. «Управление отображением некоторых операторов» гл. 2). Для того чтобы поменять его:
- Щелкните правой кнопкой мыши на выражении, содержащем оператор
умножения. - Выберите первый пункт появившегося контекстного меню View
Multiplication As (Представление умножения). - В подменю выберите пункт, соответствующий стилю представления
умножения: в виде обычной точки (Dot), точки с уменьшенным расстоянием от
него до сомножителей (Narrow Dot), толстой точки (Large Dot), крестика (X),
без символа с небольшим расстоянием между сомножителями (Thin Space), вообще
вместе (No Space). Чтобы просмотреть, как будет выглядеть выражение в двух
последних представлениях, нужно снять с него выделение. Чтобы вернуть представление
по умолчанию, выберите в подменю контекстного меню пункт Default.
Некоторых операторов, например таких, как оператор комплексного сопряжения, на панелях инструментов нет (листинг 3.19). Его приходится вводить исключительно с клавиатуры нажатием клавиши <«> в пределах математической области.
Листинг 3.19. Оператор комплексного сопряжения
3.2.2. Вычислительные операторы
Вычислительные операторы вставляются в документы при помощи панели инструментов Calculus (Вычисления). При нажатии любой из кнопок в документе появляется символ соответствующего математического действия, снабженный несколькими местозаполнителями. Количество и расположение местозаполнителей определяется типом оператора и в точности соответствует их общепринятой математической записи. Например, при вставке оператора суммы (рис. 3.7) необходимо задать четыре величины: переменную, по которой надо произвести суммирование, нижний и верхний пределы, а также само выражение, которое будет стоять под знаком суммы (пример заполненного оператора суммы см. ниже в листинге 3.22).
Для того чтобы вычислить неопределенный интеграл, следует заполнить
два местозаполнителя: подынтегрального выражения и переменной интегрирования.
Рис. 3.7. Вставка оператора суммирования
После ввода какого-либо вычислительного оператора имеется возможность вычислить его значение либо численно, нажатием клавиши <=>, либо символьно, с помощью оператора символьного вывода.
Перечислим основные вычислительные операторы и приведем простейшие примеры их применения:
- дифференцирование и интегрирование;
- производная (листинг 3.20);
- N-Я производная (листинг 3.20);
- определенный интеграл (листинг 3.21);
- неопределенный интеграл (листинг 3.21).
- суммирование и вычисление произведения;
- сумма (листинг 3.22);
- произведение (листинг 3.22);
- сумма ранжированной переменной (листинг 3.23);
- произведение ранжированной переменной (листинг 3.23).
- пределы (листинг 3.24);
- двусторонний;
- левый;
- правый.
Листинг 3.20. Операторы вычисления производных
Листинг 3.21. Операторы интегрирования
Листинг 3.22. Операторы суммирования и вычисления произведения
Листинг 3.23. Операторы суммировани и вычисления произведения
О назначении и особенностях использования ранжированных переменных будет рассказано
в следующей главе (см. разд. «Ранжированные переменные» гл. 4).
Листинг З.24. Операторы символьного вычисления пределов
В отличие от других, операторы поиска предела могут быть вычислены только
символьно (см. гл. 5).
Операторы суммирования и вычисления произведения фактически являются
более удобной записью операторов + и х с большим количеством операндов. А вот
вычислительные операторы поиска производных и интегралов существенно отличаются
от операторов умножения и сложения тем, что реализованы на основе определенных
численных методов, которые в скрытой (невидимой для пользователя) форме запускаются
вычислительным процессором Mathcad. При численном расчете интегралов и производных
необходимо, хотя бы в общих чертах, представлять принцип работы соответствующих
алгоритмов, чтобы избежать ошибок и неожиданностей при получении результатов
(численным методам интегрирования и дифференцирования посвящена гл. 7).
Рис. 3.8. Поиск бесконечного ряда
Важно отметить, что имеется возможность вычислять интегралы с
одним или обоими бесконечными пределами, а также в символьной форме искать значения
бесконечных пределов, сумм (рядов) и произведений. Для удобства ввода кнопка
с символом бесконечности помещена на ту же панель инструментов Calculus (Вычисления).
Пример вставки символа бесконечности в задаче поиска бесконечного ряда приведен
на рис. 3.8.
3.2.3. Логические операторы
Результатом действия логических, или булевых, операторов являются только числа 0 (если логическое выражение, записанное с их помощью, истинно) или 1 (если логическое выражение ложно). Чтобы вычислить значение логического выражения, например 1=1 (рис. 3.9):
- Вставьте с панели Boolean (Булевы операторы) соответствующий
оператор =. - В появившиеся местозаполнители вставьте операнды (две единицы).
- Нажмите клавишу <=>, чтобы получить ответ.
Рис. 3.9. Вставка логического оператора
Получается абсурдное на первый взгляд выражение i«i=i. Однако на самом деле все правильно. Справа от оператора вывода записано логическое выражение 1*1 (обратите внимание, что логический знак равенства выглядит по-другому, нежели обычный), которое является истинным. Поэтому значение данного выражения равно 1, что и показано справа от знака равенства.
Перечислим логические операторы:
- больше (Greater Than);
- меньше (Less Than);
- больше или равно (Greater Than or Equal);
- меньше или равно (Less Than or Equal);
- равно (Equal);
- не равно (Not Equal to);
- и (And);
- или (Or);
- исключающее или (Exclusive or);
- отрицание (Not).
Операнды в логических выражениях могут быть любыми числами. Однако
если оператор по смыслу применим только к 0 и 1, то любое неравное нулю число
по умолчанию принимается равным 1. Но в результате все равно может получиться
либо 0, либо 1. Например, ¬ (-0.33)=0.
Примеры действия логических операторов приведены в листингах 3.25 и 3.26.
Листинг 3.25. Операторы сравнения.
Листинг 3.26. Булевы операторы.
Логические операторы чрезвычайно важны при записи подлежащих решению алгебраических уравнений и неравенств в приемлемой для Mathcad форме.
3.2.4. Матричные операторы
Матричные операторы предназначены для совершения различных действий над векторами и матрицами. Поскольку большинство из них реализует численные алгоритмы, о них будет подробно рассказано в части III (см. гл. 9).
3.2.5. Операторы выражения
Почти все вычислительные операторы были рассмотрены выше (см. разд. 3.1). Они сгруппированы на панели Evaluation (Выражения).
- Оценить численно (Evaluate Numerically) (см. разд. 3.1.5)
- Вычислить символьно (Evaluate Symbolically) (см. разд. 3.1.6)
- Присваивание (Definition) (см. разд. 3.1.2)
- Глобальное присваивание (Global Definition)
Рассмотрим различие между операторами обычного присваивания и глобального
присваивания (процесс его вставки в документ показан на рис. 3.10). Для того
чтобы вычислить выражение, содержащее некоторую переменную или функцию, необходимо,
чтобы этой переменной ранее в документе было присвоено какое-либо значение.
Иначе будет выдаваться сообщение об ошибке (рис. 3.11). Однако если в любой
части документа (например в самом низу) вставить оператор глобального присваивания,
то переменная будет определена в любой части документа (листинг 3.27).
Листинг 3.27. Действие операторов присваивания и глобального присваивания
Рис. 3.10. Кнопка глобального присваивания на панели Evaluation
Рис. 3.11. Обычное присваивание сказывается только на нижеследующей
части документа
Как видно из листинга 3.27, обычное, или локальное, присваивание
переменной х действует от момента х:=10 до момента глобального присваивания
х = 5. Вообще говоря, Mathcad анализирует документы на предмет присваивания
переменных в два прохода: сначала распознаются все операторы глобального присваивания,
и все выражения в документе сверху вниз и слева направо вычисляются в соответствии
с ними, а при втором проходе в том же порядке анализируются операторы локального
присваивания, и все выражения вычисляются с поправкой на них. Приведем важный
пример взаимодействия глобального и локального присваивания (листинг 3.28).
Листинг 3.28. Взаимодействие глобального и локального присваивания
Обратите внимание, что, несмотря на локальное присваивание переменной
x:=10 в третьей строке листинга, значение переменной у вычисляется все-таки
в соответствии с глобальным значением х = 5, поскольку сама переменная y глобальным
образом определена через переменную х.
Аккуратнее относитесь к определению глобальных переменных и, во избежание
путаницы, старайтесь не переопределять их локально. Применяйте глобальное присваивание
только для определения констант и, по возможности, избегайте случаев, когда
оператор вывода предшествует оператору глобального присваивания для улучшения
читаемости документов.
Точно так же как Вы глобально присваиваете значение переменной, допускается глобально определять функции (листинг 3.29).
Листинг 3.29. Глобальное определение функции пользователя
Оператор глобального присваивания можно отображать не только в виде тождественного
равенства, но и как обычный знак равенства. Для этого вызовите на операторе
контекстное меню и в подменю пункта View Definition As выберите пункт Equal
(Равенство).
3.2.6. Создание оператора пользователя
Запросы взыскательного пользователя могут отнюдь не исчерпываться набором
встроенных операторов Mathcad. Для вставки в документы заранее созданных операторов
пользователя применяется панель Evaluation (Выражения).
Выбор имени оператора
Оператор пользователя может иметь абсолютно любое имя (см. ранее раздел «Имена, содержащие операторы и специальные символы» этой главы). Однако, исходя из смысла операторов, логично давать им имена в виде символов. Это удобно делать с помощью коллекции символов, находящейся в справочной информации Mathcad. Выберите в верхнем меню Help / QuickSheets (Справка / Быстрые шпаргалки) и войдите затем в самый последний раздел Extra Math Symbols (Дополнительные символы) открывшегося содержания Шпаргалок. Там Вы увидите целую коллекцию символов, любой из которых можно просто перетащить указателем мыши в нужное место документа.
Присваивать оператору некоторое действие следует точно так же, как функции пользователя.
Создание бинарного оператора
Чтобы создать бинарный оператор, например реализующий действие х у 2:
- Введите имя оператора, например, bin.
- Наберите знак скобки <(>, затем список из двух операндов
через запятую, <х>, <,>, <у>, затем закрывающую скобку <)>. - Введите оператор присваивания <: >.
- Введите выражение, зависящее от операндов, действие которого
необходимо присвоить оператору (х-у 2).
Создание унарного оператора
Унарный оператор создается точно так же, только вместо двух операндов, отделенных запятой, Вам следует ввести лишь один операнд. Например, чтобы создать оператор с именем %, реализующий перевод доли числа в проценты и сводящийся к умножению его на 100 (листинг 3.30):
- Введите имя оператора. Для этого нажмите клавиши <а>,
+ ++,<%>, затем снова ++,
потом сотрите в имени букву «а». - После знака % наберите скобку «(«, далее «х11,
затем еще одну скобку «)». - <:>.
- Введите выражение х100.
Листинг 3.30. Создание унарного оператора пользователя
Использование бинарного оператора
Возможны два вида вставки пользовательского бинарного оператора в документ, отличающиеся только отображением в документе. Чтобы вставить оператор в форме графа (или дерева):
- Нажмите кнопку Tree Operator (Оператор дерево) на панели
Evaluation (Выражения) (рис. 3.12, справа). - В появившиеся местозаполнители введите имя оператора (на
вершине графа) и значения операндов (в ответвления дерева). - Введите оператор присваивания, нажав клавишу <=>.
Результат действия оператора показан на рис. 3.12, внизу слева.
Кроме древовидной формы оператора, допускается использование его
в виде последовательности «операнд- имя оператора- другой операнд»
(рис. 3.12, вторая строка слева). Чтобы ввести такую форму оператора, следует
нажать соседнюю кнопку Infix Operator (Оператор внутри) с изображением xfy.
Рис. 3.12. Применение пользовательского бинарного оператора
Использование унарного оператора
Вставка унарного оператора совершенно аналогична, только вместо
двух операндов требуется ввести один (рис. 3.13). Унарный оператор вставляется
нажатием кнопки Prefix Operator (Оператор перед) на панели Evaluation (Выражения)
либо кнопки Postfix Operator (Оператор после). Первый путь проиллюстрирован
правой частью рис. 3.13 (в момент вставки) и результатом действия оператора
(слева), а результат вставки оператора по второму пути — левой нижней строкой
того же рисунка
Рис. 3.13. Применение пользовательского унарного оператора
3.3. Управление вычислениями
Документ Mathcad — это в полном смысле этого слова компьютерная
программа, а сама система Mathcad — настоящая система программирования, правда
ориентированная на математика, а не на профессионального программиста. Большинство
других сред программирования (знакомых читателю по реализации таких языков,
как Си, Фортран, Бейсик и т. п.) разделяют редактирование кода программ и их
выполнение, которое можно вызвать предназначенными для этого командами. В Mathcad
и код программы, и результат их выполнения объединены в одном документе. Тем
не менее, функции редактирования формул и их расчеты выполняются раздельно,
и пользователь имеет возможность управлять всеми важнейшими опциями вычислений.
3.3.1. Режимы вычислений
Все примеры, которые мы рассматриваем в этой книге, неявно предполагают, что
включен автоматический режим вычислений. Он включается
по умолчанию при создании пустого документа, поэтому если вводятся выражения,
содержащие операторы вывода, они вычисляются немедленно. Вообще говоря, имеется
два режима вычислений:
- автоматический режим (automatic mode) — все вычисления проводятся
автоматически по мере ввода формул; - ручной режим (manual mode) — начало вычислений каждой формулы
или всего документа производится пользователем.
Режим вычислений можно выбрать с помощью команды Tools / Calculate / Automatic Calculation (Сервис / Пересчитать / Считать автоматически), как показано на рис. 3.14. Если в этой строке меню установлен флажок проверки, значит, включен автоматический режим, если флажка нет, то редактируется документ в ручном режиме вычислений. Чтобы сменить режим, просто выберите этот пункт меню (например, нажав кнопку мыши в ситуации, показанной на рис 3.14, включите ручной режим).
Режим вычислений устанавливается независимо для каждого документа Одновременно
могут быть открыты несколько документов, вычисляемых в различных режимах
Преимущества и недостатки каждого режима очевидны. С одной стороны, автоматические
вычисления упрощают работу с документом, поскольку результаты расчетов появляются
в реальном времени, и пользователь имеет возможность анализировать их сразу.
С другой стороны, если вычисления сложные, то они могут отнимать много времени
(что особенно заметно на компьютерах с не слишком мощным процессором и небольшим
объемом оперативной памяти). Поэтому зачастую, чтобы продолжить редактирование
документа, требуется довольно длительное ожидание завершения расчетов В частности,
если поменять какое-либо выражение в начале большого документа, которое влияет
на последующие вычисления, то все они пересчитываются заново. В таких случаях
часто удобнее редактировать текст в ручном режиме, а вычисления включать по
мере необходимости.
Рис. 3.14. Выбор режима вычислений
3.3.2. Прерывание вычислений
Mathcad осуществляет вычисления документа, как это принято в большинстве сред программирования: сверху вниз и слева направо. Пока очередное выражение находится в процессе расчета (вычислительным или символьным процессором), оно выделяется рамкой зеленого цвета (рис. 3.15), а любые действия пользователя по дальнейшему редактированию документа блокируются. Если у вас не слишком быстрый компьютер, а формулы достаточно сложные, то можно наблюдать, как зеленая рамка перескакивает с одного выражения на другое
Чтобы прервать затянувшийся процесс вычислений, нажмите клавишу
Появится диалоговое окно, показанное на рис. 3.16, в котором нужно
подтвердить прерывание вычислений (ОК). В этом случае выражения, которые Mathcad
не успел вычислить, будут помечены в документы красным цветом. Прерванные вычисления
возобновляются нажатием клавиши или командой Tools / Calculate /
Calculate Now (Математика / Пересчитать / Пересчитать)
Рис. 3.15. Процесс вычисления выражения
Рис. 3.16. Диалоговое окно прерывания вычислений
3.3.3. Вычисления в ручном режиме
Если флажок в строке команды Tools / Calculate / Automatic Calculation
(Сервис / Пересчитать / Считать автоматически) снят, пользователь должен запускать
вычисления самостоятельно
- Для того чтобы вычислить все формулы во всем документе, выполните
команду Tools / Calculate / Calculate Worksheet (Математика / Пересчитать
/ Пересчитать все). - Для вычисления всех формул в видимой части документа выберите
пункт Tools / Calculate / Calculate Now (Сервис / Пересчитать / Пересчитать)
либо нажмите клавишу , либо щелкните на кнопке с изображением знака
равенства (Calculate) на стандартной панели инструментов - Прервать вычисления можно обычным образом, нажав клавишу
.
Управлять размером видимой части документа можно при помощи изменения масштаба
отображения документа
При редактировании текста в ручном режиме не выполняются ни вычисления,
ни построение графиков, а соответствующие места в выражениях формально отмечаются
местозаполнителями (рис. 3.17.)
Рис. 3.17. Чтобы запустить вычисления в ручном режиме,
нажмите кнопку Calculate
3.3.4. Отключение вычисления отдельных формул
Mathcad позволяет отключить вычисление какой-либо формулы. При этом она не будет влиять на последующие вычисления. Чтобы не вычислять определенную формулу в документе:
- Щелкните правой кнопкой мыши на формуле.
- Выберите в контекстном меню пункт Disable Evaluations (Выключить
вычисления), как показано на рис. 3.18.
Эквивалентный способ выключения вычисления отдельной формулы заключается в вызове диалогового окна Properties (Свойства) через одноименный пункт контекстного меню (см. рис. 3.18) или главного меню Format (Формат). В диалоге Properties следует перейти на вкладку Calculation (Вычисления) и установить там флажок Disable Evaluations (Выключить вычисления).
Результат выключения формулы из процесса вычислений проиллюстрирован листингом 3.31. На нем выключен второй из операторов присваивания, о чем можно судить по наличию черного квадрата сразу за формулой. Соответственно, в последней строке выведенное значение переменной х «не чувствует» выключенного присваивания и остается равным 3.
Листинг 3.31. Вычисление второго оператора присваивания выключено
Рис. 3.18. Отключение вычисления формулы с помощью контекстного
меню
3.3.5. Оптимизация вычислений
Отличительная черта новых версий Mathcad — улучшенные возможности
ускорения численных вычислений за счет применения элементов символьной математики.
Непосредственно перед численным расчетом Mathcad автематически пытается упростить
выражение, используя символьный процессор. Это называется оптимизацией. За счет
того что от версии к версии качество работы символьного процессора улучшается,
символьное преобразование зачастую существенно ускоряет расчеты. Режим оптимизации
включается либо в документе целиком, либо для отдельных формул.
Чтобы включить или отключить режим оптимизации всех выражений в активном документе, выберите команду Tools / Optimize / Worksheet (Сервис / Оптимизация / Документ), как показано на рис. 3.19. Содержание документа, изображенного на этом же рисунке, помогает понять математический смысл режима оптимизации: для ускорения вычисления нижнего (определенного) интеграла выгодно использовать его аналитическое решение, определенное символьным процессором.
Чтобы изменить режим оптимизации для отдельной формулы, не меняя
выбранного режима для остальных выражений документа, выделите эту формулу линиями
ввода и выберите в верхнем меню Tools / Optimize / Equation (Сервис / Оптимизация
/ Уравнение).
Рис. 3.19. Режим оптимизации вычислений
3.3.6. Диалоговое окно Worksheet Options
Наравне с изложенными способами установки режимов вычислений,
их также удобно устанавливать для всего документа на вкладке Calculations (Вычисления)
диалогового окна Worksheet Options (Опции документа), вызываемого с помощью
команды Tools / Worksheet Options (Сервис / Опции документа). Три флажка задают
включение соответствующего режима вычислений (рис. 3.20).
- Recalculate automatically (Пересчитать автоматически) — включение
режима автоматических вычислений. - Use strict singularity checking for matrices (Использовать
проверку матриц на сингулярность) — опция, появившаяся в версии Mathcad 2001,
которая важна при некоторых операциях с матрицами. Она означает проведение
дополнительной проверки на сингулярность матрицы перед использованием численных
алгоритмов, что позволяет, во избежание неправильного применения численного
метода, выдать заранее сообщение об ошибке, если матрица сингулярная. - Optimize expressions before calculating (Оптимизировать выражения
перед вычислением) — включение режима оптимизации. - Use exact equality for Boolean comparisons (Использовать
точное равенство для логического сравнения) — когда флажок выбран, применяется
жесткий критерий точного равенства чисел (точнее, числа при сравнении считаются
равными, если отличаются по модулю менее чем на 10 -307). Если флажок
снят, используется более мягкий критерий (относительное различие чисел по
модулю менее чем на 10 -12).
Рис. 3.20. Управление режимом вычислений в диалоговом
окне Worksheet Options
Помимо флажков проверки, имеется также пара переключателей, которая
позволяет реализовать новый режим ускоренных вычислений (higher speed calculation).
Он включается выбором переключателя Higher speed calculation (Ускоренные вычисления),
изображенного на рис. 3.20. Чтобы отключить режим ускоренных вычислений, выберите
переключатель Backward compatibility (Обратная совместимость). В этом случае
вычисления будут проводиться без дополнительной оптимизации по скорости, в точности
так же, как в предыдущих версиях (Matvcsd 2000 и ниже) Необходимость таких расчетов
может возникнуть, если вдруг Вы столкнулись с сообщениями об ошибках в документах,
созданных в предыдущих версиях Mathcad и корректно в них работающих.
3.4. Сообщения об ошибках
Когда процессор Mathcad по тем или иным причинам не может вычислить
выражение, он вместо ответа выдает сообщение об ошибке (рис. 3.21). Если курсор
находится вне формулы с ошибкой, то в ней имя функции или переменной, которая
вызвала ошибку, отмечается красным цветом (сверху на рис. 3.21). При щелчке
на такой формуле под ней появляется текстовое сообщение о типе ошибки, обрамленное
черным прямоугольником (рис. 3.21, снизу).
Рис. 3.21. Сообщение об ошибке
Если некоторые выражения вызывают ошибку, они просто игнорируются, а следующие выражения в документе по-прежнему вычисляются. Конечно, если формулы, вызвавшие ошибку, влияют на значения нижеследующих формул, то они будут также интерпретированы как ошибочные. Поэтому, встречая в документе сообщения об ошибках, найдите сначала самое первое из них. Часто ее устранение позволяет избавиться и от последующих ошибок.
Как бы хорошо вы ни овладели системой Mathcad, сообщения об ошибках все равно будут появляться в документах. Они могут быть связаны как с орфографическими ошибками, так и с более серьезными внутренними причинами, требующими знания численных алгоритмов расчетов. Искусство математика во многом состоит в умении анализировать ошибочные ситуации и находить правильный выход из них.
Возможности Mathcad можно в полной мере оценить только при использовании переменных и функций.
Два знака равенства
В выражениях Вам необходимо использовать числа (константы), переменные, операторы и знаки равенства. В повседневной жизни мы используем знак равенства = для различных операций. Mathcad, однако, различает эти операции. Наиболее важные из них:
- определение (присвоить значение) – вводится через двоеточие [:]
- вычисление – вводится через знак равенства [=]
Оператор определения не менее важен, чем оператор вычисления. Значение выражения y
можно отобразить только после присвоения ему какого-либо значения. x
и y
здесь являются переменными
.
Введите следующие выражения:
Эти два знака равенства принципиально различны, поэтому их не следует путать.
Поместите курсор перед числом 4 в первом выражении:
Удалите число 4 с помощью клавиши и введите 5. Щелкните по пустой области и убедитесь, что результат третьего выражения изменился на 25:
Попробуйте удалить число 25. Вы увидите, что при первом нажатии число станет красным, а при повторном нажатии удалится 25 и знак равенства:
Использование переменных
Введите следующие выражения:
Попробуйте изменить значение x
на 100, 0.5, -4 и 0:
Первые два случая дадут в результате число. При -4 получится мнимое число. Да, Mathcadможет работать и с такими числами. При нуле программа выдаст ошибку, а результат будет обведен красным. Если Вы щелкните по неправильному выражению, то получите описание, что может быть не так:
Теперь о том, какие имена можно и нельзя использовать для переменных. Есть несколько правил: имя переменной не может начинаться с цифры и в имени переменной нельзя использовать пробелы и знаки операторов. Имена переменных могут начинаться:
- с любой строчной или прописной буквы
- другие символы, если они не являются операторами
- символы с вкладки Математика –> Операторы и символы –> Символы
- символы из Таблицы символов Windows
Вот несколько примеров:
Переменные можно использовать, только если они были определены ранее. «Ранее» означает, что объявление переменной должно располагать выше или левее выражения, где она используется. Если переменная не объявлена, появится сообщение об ошибке:
Подстрочные индексы
В Mathcad есть два различных вида подстрочных индекса для переменных:
- Описательный подстрочный индекс.
- Индекс массива (матрицы).
Чтобы набрать описательный подстрочный индекс, введите имя переменной, нажмите и наберите подстрочный индекс:
Переменная с описательным подстрочным индексом – это обычная переменная, со своим именем. Индекс массива существенно отличается от него. Этот индекс можно ввести, нажав открывающую квадратную скобку [ после имени переменной. У переменной может быть один или два индекса массива:
Индекс массива должен быть числом. При этом не следует путать виды подстрочных индексов, т.к. они выглядят практически идентично:
Разница видна при щелчке мышью по выражению:
У переменной может быть сразу описательный индекс и индекс массива. Сначала всегда идет описательный индекс:
Функции
Переменные можно использовать, только если они были определены ранее. Однако есть одно важное исключение – определение функции. Можно определить собственную функцию, как на примере ниже:
Переменная a
является локальной для функции. Она не определена за пределами функции:
Если Вы определили a
до определения функции, значение a
не будет изменено в процессе вычисления значения функции.
Внимание: если Вы дали переменной такое же имя, как и функции, Вы больше не сможете использовать эту функцию. У переменной и функции должны быть разные имена:
Этой проблемы можно избежать, задав для переменной и функции разные обозначения. Об этом мы поговорим в уроке 10 «Обозначения и единицы измерения».
Функции могут содержать две и более переменной:
Здесь значения переменных x
и y
также не изменяются при вычислении функции.
Встроенные функции
В Mathcad есть большое число встроенных функций. Зайдите на вкладку Функции:
Список всех функций можно увидеть, щелкнув по кнопке Все функции.
Заметьте, что тригонометрические функции принимаю в качестве аргумента угол в радианах, а не в градусах. Для использования градусов используйте символ с вкладки Математика –> Операторы и символы –> Символы:
Математика в тексте
В текст можно вставить математическую область. Таким образом, можно использовать над- и подстрочные символы в тексте. Для этого при редактировании текстовой области нажмите кнопку Математика с вкладки Математика –> Области:
Резюме
- В Mathcadесть два различных знака равенства: определить:= и вычислить =.
- Имя переменной обычно начинается с буквы; цифры нельзя использовать в начале переменной. Также можно использовать символы с клавиатуры, с панели Математика –> Операторы и символы –> Символы, с Таблицы символов Windows.
- Чтобы определить переменную и задать ей значение:
- щелкните мышью на пустую область;
- введите имя переменной;
- нажмите [:] для ввода оператора определения;
- введите значение, которое Вы хотите присвоить.
- Чтобы дать переменной описательный подстрочный индекс:
- нажмите ;
- введите подстрочный индекс.
- Чтобы дать переменной индекс массива:
- щелкните мышью в конце имени переменной;
- нажмите открывающую квадратную скобку [;
- введите число – подстрочный индекс.
- Переменную можно использовать ниже или правее места, где она определена.
- Имя функции следует набирать по тем же правилам, что и имя переменной, но ввод имени функции заканчивается вводом [(]. В скобках содержатся аргументы функции.
- Переменные в функциях – локальные, т.е. они определены только при использовании функции.
- Математическую область можно встроить в текст. Эту возможность следует использовать, если необходимо вставить над- и подстрочные символы в текст.
2. Элементы языка MathCAD
К основным элементам математических выражений MathCAD относятся операторы, константы, переменные, массивы и функции.
2.1
Операторы
Операторы
— элементы MathCAD, с помощью которых можно создавать математические выражения. К ним, например, относятся символы арифметических операций, знаки вычисления сумм, произведений, производной, интеграла и т.д.
Оператор определяет:
а) действие, которое должно выполняться при наличии тех или иных значений операндов;
б) сколько, где и какие операнды должны быть введены в оператор.
Операнд
— число или выражение, на которое действует оператор. Например, в выражении 5!+3 числа 5! и 3 — операнды оператора «+» (плюс), а число 5 — операнд факториала (!).
Любой оператор в MathCAD можно ввести двумя способами:
· нажав клавишу (сочетание клавиш) на клавиатуре;
· используя математическую панель.
Для присвоения или вывода содержимого ячейки памяти, связанной с переменной, используются следующие операторы:
—
знак присвоения (вводится нажатием клавиши :
на клавиатуре (двоеточие в английской раскладке клавиатуры) или нажатием соответствующей кнопки на панели Калькулятор
);
Такое присвоение называется локальным
. До этого присваивания переменная не определена и ее нельзя использовать.
— глобальный оператор присвоения. Это присвоение может производиться в любом месте документа. К примеру, если переменной присвоено таким образом значение в самом конце документа, то она будет иметь это же значение и в начале документа.
— оператор приближенного равенства (x1). Используется при решении систем уравнений. Вводится нажатием клавиши;
на клавиатуре (точка с запятой в английской раскладке клавиатуры) или нажатием соответствующей кнопки на Булевой панели.
Оператор (простое равно), отведенный для вывода значения константы или переменной.
Простейшие вычисления
Процесс вычисления осуществляется при помощи:
Панели Калькулятора, Панели Исчислений и Панели Оценки.
Внимание.
Если необходимо поделить все выражение в числителе, то его нужно первоначально выделить, нажав пробел на клавиатуре или поместив в скобки.
2.2 Константы
Константы
—
поименованные объекты, хранящие некоторые значения, которые не могут быть изменены.
Например, p = 3.14.
Размерные константы
— это общепринятые единицы измерения. Например, метры, секунды и т.д.
Чтобы записать размерную константу, необходимо после числа ввести знак * (умножить), выбрать пункт меню Вставка
подпункт Юнит
. В измерениях наиболее известные вам категории: Length — длина (м, км, см); Mass — вес (гр, кг, т); Time — время (мин, сек, час).
2.3 Переменные
Переменные
являются поименованными объектами, имеющими некоторое значение, которое может изменяться по ходу выполнения программы. Переменные могут быть числовыми, строковыми, символьными и т.д. Значения переменным задаются с помощью знака присвоить (: =).
Внимание.
MathCAD прописные и строчные буквы воспринимает как разные идентификаторы.
Системные переменные
В MathCAD
содержится небольшая группа особых объектов, которые нельзя отнести ни к классу констант, ни к классу переменных, значения которых определены сразу после запуска программы. Их правильнее считать системными переменными.
Это, например, TOL — погрешность числовых расчетов, ORIGIN — нижняя граница значения индекса индексации векторов, матриц и др. Значения этим переменным при необходимости можно задать другие.
Ранжированные переменные
Эти переменные имеют ряд фиксированных значений, либо целочисленных, либо изменяющихся с определенным шагом от начального значения до конечного.
Для создания ранжированной переменной используется выражение:
Name =N begin
,(N begin
+Step)..N end
,
где Name — имя переменной;
N begin
— начальное значение;
Step — заданный шаг изменения переменной;
N end
— конечное значение.
Ранжированные переменные широко применяются при построении графиков. Например, для построения графика некоторой функции f
(
x
) прежде всего необходимо создать ряд значений переменной x
— для этого она должна быть ранжированной переменной.
Внимание.
Если в диапазоне изменения переменной не указывать шаг, то программа автоматически примет его равным 1.
Пример
. Переменная x
изменяется в диапазоне от –16 до +16 с шагом 0.1
Чтобы записать ранжированную переменную, нужно ввести:
Имя переменной (x
);
Знак присвоения (:=)
Первое значение диапазона (–16);
Запятую;
Второе значение диапазона, которое является суммой первого значения и шага (–16+0.1);
Многоточие (..
) — изменение переменной в заданных пределах (многоточие вводится нажатием точки с запятой в английской раскладке клавиатуры);
Последнее значение диапазона (16).
В результате у вас получится: x
:= –16,–16+0.1..16.
Таблицы вывода
Любое выражение с ранжированными переменными после знака равенства инициирует таблицу вывода.
В таблицы вывода можно и вставлять числовые значения и корректировать их.
Переменная с индексом
Переменная с индексом
— это переменная, которой присвоен набор не связанных друг с другом чисел, каждое из которых имеет свой номер (индекс).
Ввод индекса осуществляется нажатием левой квадратной скобки на клавиатуре или при помощи кнопки x n
на панели Калькулятор
.
В качестве индекса можно использовать как константу, так и выражение. Для инициализации переменной с индексом необходимо ввести элементы массива, разделяя их запятыми.
Пример.
Ввод индексных переменных.
— ввод числовых значений в таблицу производится через запятую;
— вывод значения первого элемента вектора S;
— вывод значения нулевого элемента вектора S.
Определение переменных в Mathcad
Чтобы определить переменную, достаточно ввести её имя и присвоить ей некоторое значение, для чего служит оператор присваивания.
1. Введите в желаемом месте документа имя переменной.
2. Введите оператор присваивания с помощью клавиши <;> или нажатием соответствующей кнопки Definition (Присваивание) на панели инструментов Calculator (Арифметика) или Evaluation (Выражения).
3. Введите в появившийся фрейм требуемое значение переменной.
Кнопка оператора присваивания для удобства помещена сразу на две панели Calculator и Evaluation .
Ввести новое значение переменной возможно как в виде числа, так и в виде математического выражения, содержащего другие переменные и функции, а также в виде строкового выражения (листинг 3.1). В последнем случае будет создана переменная s
не численного, а строкового типа.
Функции
Функции в Mathcad записываются в обычной для математика форме, например,
f
(x
)=sin
(x
),
где f
(х
) — функция;
f
— имя функции;
х
— список переменных.
Легче всего ввести написание функции в документ при помощи клавиатуры.
В Mathcad формально можно разделить функции на два типа˸
- встроенные функции;
- функции, определенные пользователем.
Применение функций обоих типов в расчетах совершенно одинаково, с тем исключением, что любую встроенную функцию можно сразу использовать в любом месте документа, а пользовательскую функцию необходимо предварительно определить в документе до момента вычисления её значения.
Определение переменных в Mathcad — понятие и виды. Классификация и особенности категории «Определение переменных в Mathcad» 2015, 2017-2018.
Текстовую область можно разместить в любом незанятом месте документа Mathcad. Чтобы до начала ввода указать программе, что требуется создать не формульный, а текстовый регион, достаточно, перед тем как ввести первый символ, нажать клавишу » (двойная кавычка). В результате на… .
Для выполнения программы-функции необходимо обратиться к имени программы-функции с указанием списка фактических параметров (если в описании программы присутствует список формальных параметров), т. е.
<имя — программы> (список фактических параметров)
Фактические… .
Для набора выражения используются клавиатура и панели инструментов, которые доступны с помощью меню Просмотр\Панели. Например, для расчёта выражения необходимо набрать 1/, затем найти знак корня в панели «Калькулятор». В знаменателе выражения появится шаблон который… .
Основными инструментами работы в Mathcad являются математические выражения, переменные и функции. Нередко записать формулу, использующую ту или иную внутреннюю логику (например, возвращение различных значений в зависимости от условий), в одну строку не удается. Назначение… .
Для проведения измерений осциллограф нужно настроить, для чего следует задать:
расположение осей, по которым откладывается сигнал;
нужный масштаб развертки по осям;
смещение начала координат по осям,
режим работы по входу: закрытый или открытый;
режим… .
Для написания программ в среде MathCad существует специальная панель Programmіng (Программирование) (рис.16, а), она относится к панели Math (Математические) (рис.16, б).
Язык программирования MathCad имеет предельно малое количество операторов (рис. 16, а). Чтобы написать программу,… [читать подробнее] .
Известно, что экспериментальные данные, как правило, задаются дискретно в виде массива данных из двух пар чисел (хі, уі). В связи с этим возникает задача аппроксимации дискретных данных непрерывной функцией f(x). В MathCad для обработки экспериментальных данных существуют… .