Деление на ноль маткад ошибка как исправить

Приложение 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

Регистрация: 09.07.2013

Сообщений: 69

1

Исправить ошибку – деление на ноль

21.12.2014, 22:49. Показов 4855. Ответов 6


Студворк — интернет-сервис помощи студентам

помогите пожалуйста,не выводит график…что не так?уравнение переписано правильно

Миниатюры

Исправить ошибку - деление на ноль
 



0



Модератор

Эксперт по математике/физике

5091 / 3906 / 1342

Регистрация: 30.07.2012

Сообщений: 11,680

21.12.2014, 22:59

2

o_serobaba, сделайте так… ПКМ на ГО и затем пункт Свойства…

Миниатюры

Исправить ошибку - деление на ноль
 



1



6630 / 4733 / 1975

Регистрация: 02.02.2014

Сообщений: 12,683

21.12.2014, 22:59

3

o_serobaba, вам же сразу выдано “деление на ноль”.. значит, в настройках покопаться, чтобы нулевые значения обойти..

Кликните здесь для просмотра всего текста

Исправить ошибку - деление на ноль



1



0 / 0 / 0

Регистрация: 09.07.2013

Сообщений: 69

21.12.2014, 23:08

 [ТС]

4

Krasme, подскажите пожалуйста, что вы сделали в настройках?



0



6630 / 4733 / 1975

Регистрация: 02.02.2014

Сообщений: 12,683

21.12.2014, 23:17

5

o_serobaba, я вам скрин вкладки показала.. обратите внимание на “число сеток”…



0



0 / 0 / 0

Регистрация: 09.07.2013

Сообщений: 69

21.12.2014, 23:24

 [ТС]

6

Krasme, ошибку выдавать перестал,но график так же не выводит…я и “начало” и “число сеток” пробовала менять,и всё вместе…все равно не выводит(



0



6630 / 4733 / 1975

Регистрация: 02.02.2014

Сообщений: 12,683

21.12.2014, 23:27

7

Лучший ответ Сообщение было отмечено o_serobaba как решение

Решение

o_serobaba, а после настроек что пишет?
еще часто вариант попадает такой, что ошибки не выдает, но не рисует.. ПКМ по графику и убрать галку “Граница”



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

21.12.2014, 23:27

Помогаю со студенческими работами здесь

Деление на ноль
Здравствуйте! При выполнения задания по Mathcadу выходит сообщение деление на ноль. В чем проблема…

Деление на ноль
Доброго времени суток! Обращаюсь с такой проблемой и прошу не ругаться, так как я почитал разные…

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

Выводит ошибку вещественное деление на ноль
Необходимо составить программу ввода значения аргумента и вычисления значения функции Y(x).Функции…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

7

Данила Чепурин



Мастер

(1434),
закрыт



2 года назад

Где ошибка, выражение введено верно, и ноль оно выдавать не может. Все попытки менять степень экспоненты (удалять, добавлять, менять элементы в числителе и знаменателе степени) не привели ни к чему. Ошибка пропадает только если убрать либо поменять “-1” после экспоненты на другое число. Но ведь экспонента не может быть равна нулю….

Вадим Котов

Просветленный

(30301)


2 года назад

машинный ноль вручную считается, а точность с помощью машины. Например длина волны 10 в минус 356 степени см и ещё на что нибудь умножить и будет 10 в минус 3000. Но ведь обратна величина будет очень большая например заряд электрона, а обратная величина, постоянная Планка Аем и т. п ???

Fluffy

Сообщения: 5
Зарегистрирован: Пн мар 01, 2010 11:38 pm

При построение поверхности выдаётся ошибка деление на 0

Здравствуйте! При построение поверхности данной функции

f(c,k1)=c+(1-c)*k1-c*((1-c)(1-2*k1+k1^2))/(3(c+(1-c)*k1)) выдаётся ошибка “деление на ноль”. Такая проблема возникает при построение поверхности любой дробной функции где в знаменателе может быть ноль. Но мне нужны значения функции при (с) от 0,1 до 1. Подскажите почему это происходит и как можно построить поверхность этой функции ???


VFO

Сообщения: 4227
Зарегистрирован: Ср фев 27, 2002 8:03 pm

Re: При построение поверхности выдаётся ошибка деление на 0

Сообщение VFO » Вт мар 02, 2010 8:34 am

Fluffy писал(а):Здравствуйте! При построение поверхности данной функции
f(c,k1)=c+(1-c)*k1-c*((1-c)(1-2*k1+k1^2))/(3(c+(1-c)*k1)) выдаётся ошибка “деление на ноль”. Такая проблема возникает при построение поверхности любой дробной функции где в знаменателе может быть ноль. Но мне нужны значения функции при (с) от 0,1 до 1. Подскажите почему это происходит и как можно построить поверхность этой функции ???

Mathcad по умолчанию строит поверхность в квадрате от -5 до 5 и “спотыкается” на нуле. Измените диапазон аргумента с на 0.1 – 1 во вкладке Data…


Korobov V I

Сообщения: 1609
Зарегистрирован: Вт янв 21, 2003 5:12 pm

Re: При построение поверхности выдаётся ошибка деление на 0

Сообщение Korobov V I » Вт мар 02, 2010 10:53 am

Fluffy писал(а):… Но мне нужны значения функции при (с) от 0,1 до 1. Подскажите почему это происходит и как можно построить поверхность этой функции ???

Для построения поверхности можно воспользоваться также функцией CreateMesh, которая позволяет задавать диапазоні изменения каждого из двух аргкментов в отдельности.


Fluffy

Сообщения: 5
Зарегистрирован: Пн мар 01, 2010 11:38 pm

Сообщение Fluffy » Ср мар 03, 2010 10:01 am

Mathcad по умолчанию строит поверхность в квадрате от -5 до 5 и “спотыкается” на нуле. Измените диапазон аргумента с на 0.1 – 1 во вкладке Data…

В этой вкладке он стоит по умолчанию и не хочет меняться.


Korobov V I

Сообщения: 1609
Зарегистрирован: Вт янв 21, 2003 5:12 pm

Сообщение Korobov V I » Ср мар 03, 2010 10:19 am

Fluffy писал(а):

Mathcad по умолчанию строит поверхность в квадрате от -5 до 5 и “спотыкается” на нуле. Измените диапазон аргумента с на 0.1 – 1 во вкладке Data…

В этой вкладке он стоит по умолчанию и не хочет меняться.

Все должно меняться. Прикрепите документ.


Fluffy

Сообщения: 5
Зарегистрирован: Пн мар 01, 2010 11:38 pm

Сообщение Fluffy » Ср мар 03, 2010 12:08 pm

Спасибо большое за ответы! Действительно всё меняется это у mathcad глюк был.


Содержание

  1. Оператор on error маткад
  2. Перехват ошибок в MathCAD (on error)
  3. Оператор on error маткад
  4. Иллюстрированный самоучитель по MathCAD 11
  5. Перехват ошибок
  6. Оператор on error маткад

Оператор on error маткад

Программные операторы в Mathcad

В системе Mathcad можно реализовать расчеты по сложным разветвленным алгоритмам или с циклическими процессами. Это реализуется использованием встроенных программных операторов, похожих на используемые в различных языках программирования (рис. 1.17). Как видно на рис. 1.18 и 1.19, где вычисляется факториал, программный модуль в системе Malhcad превратился в самостоятельный блок, причем при необходимости выполнить несколько операторов, их объединяют жирной вертикальной чертой.

Модуль может вести себя как безымянная функция без параметров, но возвращающая результат – первый пример. Программный модуль может выполнять и роль тела функции пользователя с именем и параметрами – второй пример.

Набор программных операторов для создания программных модулей ограничен и содержит следующие элементы:

  • Add Line – создает и при необходимости расширяет жирную вертикальную линию, справа от которой в шаблонах задается запись программного блока;
  • – символ локального присваивания (в теле модуля);
  • if – условный оператор;
  • for – оператор задания цикла с фиксированным числом повторений;
  • while – оператор задания цикла, действующего до тех пор, пока выполняется некоторое условие;
  • otherwise – оператор иного выбора (обычно применяется с if);
  • break – оператор прерывания;
  • continue – оператор продолжения;
  • return – оператор возврата;
  • on error – оператор обработки ошибок.

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

Оператор внутреннего присваивания выполняет функции внутреннего, локального присваивания. Например, выражение присваивает переменной x значение 123. Локальный характер присваивания означает, что такое значение х сохраняет только в теле программы. За пределами тела программы значение переменной х может быть неопределенным, либо равно значению, которое задается вне программного блока операторами локального := или глобального присваивания.

Условный оператор if является оператором для создания условных выражений. Он задается в виде:

Если условие выполняется, то возвращается значение выражения. Совместно с этим оператором часто используются операторы прерывания break и иного выбора otherwise.

Оператор цикла for служит для организации циклов с заданным числом повторений. Он записывается в виде:

Эта запись означает, что выражение, помешенное в расположенный ниже заменитель, будет выполняться для значений переменной Var, меняющихся от Nmin до Nmax с шагом +1. Переменную счетчика Var можно использовать в исполняемом выражении.

Оператор цикла while служит для организации циклов, действующих до тех пор, пока выполняется некоторое условие. Этот оператор записывается в виде:

Выполняемое выражение записывается на место расположенного ниже заполнителя.

Оператор иного выбора otherwise обычно используется совместно с оператором if . Это поясняет следующая программная конструкция:

Здесь f(x) получает значение 1, если х>0, и –1 во всех остальных случаях.

Оператор прерывания break вызывает прерывание работы программы всякий раз, как он встречается. Чаще всего он используется совместно с оператором условного выражения if и операторами циклов while и for, обеспечивая переход в конец тела цикла.

Оператор продолжения continue используется для продолжения работы после прерывания программы. Он также чаще всего используется совместно с операторами задания циклов while и for, обеспечивая возвращение в точку прерывания и продолжение вычислений.

Оператор возвращения return прерывает выполнение программы и возвращает значение операнда, стоящего следом за ним. Например, конструкция

будет возвращать значение 0 при любом х Оператор и функция обработки ошибок позволяет создавать конструкции обработчиков ошибок. Этот оператор задается в виде:

Здесь если при выполнении Выражения_1 возникает ошибка, то выполняется Выражение_2. Для обработки ошибок полезна также функция error(S), которая, будучи помешенной в программный модуль, при возникновении ошибки выводит всплывающую подсказку с надписью, хранящейся в символьной переменной S.

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

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

Источник

Перехват ошибок в MathCAD (on error)

Программирование в Mathcad позволяет осуществлять дополнительную обработку ошибок. Если пользователь предполагает, что выполнение кода в каком-либо месте программного модуля способно вызвать ошибку (например деление на ноль), то эту ошибку можно перехватить с помощью оператора on error. Чтобы вставить его в программу, надо поместить линии ввода в ней в нужное положение и нажать кнопку с именем оператора on error на панели Programming (Программирование). В результате появится строка с двумя ме-стозаполнителями и оператором on error посередине (рис. 6.10).

Рис. 6.10. Вставка оператора перехода по ошибке

В правом местозаполнителе следует ввести выражение, которое должно выполняться в данной строке программы. В левом — выражение, которое будет выполнено вместо правого выражения, если при выполнении последнего возникнет ошибка. Приведем пример применения оператора on error (листинг 6.15) в программном модуле, который рассчитывает функцию обратного числа значению n. Если n=0, то и присвоенное значение z=0, поэтому в последней строке программы выполняется правое выражение расчета i/z. Так происходит при расчете f (-2). Если попытаться вычислить f (0) как в конце листинга, то выполнение программы, заложенной в f (n), вызовет ошибку деления на ноль в последней строке программы. Соответственно, вместо выражения справа от оператора on error будет выполнено левое выражение, присваивающее функции f(n) строковое значение «user error: cannot divide by zero» (пользовательская ошибка: деление на ноль невозможно). Конечно, этой строке можно присвоить и текст на русском языке.

Листинг 6.15. Перехват ошибки деления на ноль

Рис. 6.11. Перехват ошибки деления на ноль

Оператор перехвата ошибок удобно применять в комбинации со встроенной функцией error(S). Она приводит к генерации ошибки в обычной для Mathcad форме с сообщением s. Пример усовершенствования листинга 6.15 для такого стиля обработки ошибки деления на ноль показан на рис. 6.11.

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

Источник

Оператор on error маткад

6.2.8. Перехват ошибок (on error)

Программирование в Mathcad позволяет осуществлять дополнительную обработку ошибок. Если пользователь предполагает, что выполнение кода в каком-либо месте программного модуля способно вызвать ошибку (например деление на ноль), то эту ошибку можно перехватить с помощью оператора on error. Чтобы вставить его в программу, надо поместить линии ввода в ней в нужное положение и нажать кнопку с именем оператора on error на панели Programming (Программирование). В результате появится строка с двумя ме-стозаполнителями и оператором on error посередине (рис. 6.10).

Рис. 6.10. Вставка оператора перехода по ошибке

В правом местозаполнителе следует ввести выражение, которое должно выполняться в данной строке программы. В левом — выражение, которое будет выполнено вместо правого выражения, если при выполнении последнего возникнет ошибка. Приведем пример применения оператора on error (листинг 6.15) в программном модуле, который рассчитывает функцию обратного числа значению n. Если n=0, то и присвоенное значение z=0, поэтому в последней строке программы выполняется правое выражение расчета i/z. Так происходит при расчете f (-2). Если попытаться вычислить f (0) как в конце листинга, то выполнение программы, заложенной в f (n), вызовет ошибку деления на ноль в последней строке программы. Соответственно, вместо выражения справа от оператора on error будет выполнено левое выражение, присваивающее функции f(n) строковое значение «user error: cannot divide by zero» (пользовательская ошибка: деление на ноль невозможно). Конечно, этой строке можно присвоить и текст на русском языке.

Листинг 6.15. Перехват ошибки деления на ноль

Рис. 6.11. Перехват ошибки деления на ноль

Оператор перехвата ошибок удобно применять в комбинации со встроенной функцией error(S). Она приводит к генерации ошибки в обычной для Mathcad форме с сообщением s. Пример усовершенствования листинга 6.15 для такого стиля обработки ошибки деления на ноль показан на рис. 6.11.

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

Источник

Иллюстрированный самоучитель по MathCAD 11

Перехват ошибок

Программирование в Mathcad позволяет осуществлять дополнительную обработку ошибок (on error). Если пользователь предполагает, что выполнение кода в каком-либо месте программного модуля способно вызвать ошибку (например деление на ноль), то эту ошибку можно перехватить с помощью оператора on error. Чтобы вставить его в программу, надо поместить линии ввода в ней в нужное положение и нажать кнопку с именем оператора on error на панели Programming (Программирование). В результате появится строка с двумя местозаполнителями и оператором on error посередине (рис. 6.10).


Рис. 6.10. Вставка оператора перехода по ошибке

В правом местозаполнителе следует ввести выражение, которое должно выполняться в данной строке программы. В левом – выражение, которое будет выполнено вместо правого выражения, если при выполнении последнего возникнет ошибка. Приведем пример применения оператора on error (листинг 6.15) в программном модуле, который рассчитывает функцию обратного числа значению n. Если n=0, то и присвоенное значение z=0, поэтому в последней строке программы выполняется правое выражение расчета i/z. Так происходит при расчете f (-2). Если попытаться вычислить f (0) как в конце листинга, то выполнение программы, заложенной в f (n), вызовет ошибку деления на ноль в последней строке программы. Соответственно, вместо выражения справа от оператора on error будет выполнено левое выражение, присваивающее функции f(n) строковое значение «user error: cannot divide by zero» (пользовательская ошибка: деление на ноль невозможно). Конечно, этой строке можно присвоить и текст на русском языке.

Листинг 6.15. Перехват ошибки деления на ноль:

Оператор перехвата ошибок удобно применять в комбинации со встроенной функцией error(S). Она приводит к генерации ошибки в обычной для Mathcad форме с сообщением s. Пример усовершенствования листинга 6.15 для такого стиля обработки ошибки деления на ноль показан на рис. 6.11.


Рис. 6.11. Перехват ошибки деления на ноль

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

Источник

Оператор on error маткад

ГЛАВА 6

  • 6.1. Программирование без программирования
  • 6.2. Язык программирования MathCAD
    • 6.2.1. Что такое программа?
    • 6.2.2. Создание программы (Add Line)
    • 6.2.3. Разработка программы
    • 6.2.4. Локальное присваивание ( (if, otherwise)
    • 6.2.6. Операторы цикла (for, while, break, continue)
    • 6.2.7. Возврат значения (return)
    • 6.2.8. Перехват ошибок (on error)
  • 6.3. Примеры программирования

MathCAD — это система, ориентированная на пользователя, который не обязан знать абсолютно ничего о программировании. Создатели MathCAD изначально поставили перед собой такую задачу, чтобы дать возможность профессионалам-математикам, физикам и инженерам самостоятельно проводить сложные расчеты, не обращаясь за помощью к программистам. Несмотря на блестящее воплощение этих замыслов, выяснилось, что вовсе без программирования MathCAD серьезно теряет в своей силе, в основном, из-за недовольства пользователей, знакомых с техникой создания программ и желающих осуществить свои расчеты в привычном для себя программистском стиле. Вместо знакомых принципов программирования, пользователям старых версий MathCAD предлагалось комбинировать несколько специфичных встроенных функций и ранжированные переменные (см. разд. 6.1).
Последние версии MathCAD имеют не очень мощный, но весьма элегантный собственный язык (см. разд. 6.2). С одной стороны, он дает возможность программисту эффективно применять программный код в документах MathCAD. С другой, простота и интуитивность языка программирования позволяет быстро ему обучиться. Наконец, программные модули внутри документа MathCAD сочетают в себе и обособленность (поэтому их легко отличить от остальных формул), и простоту смыслового восприятия.
Несмотря на небольшое число операторов, язык программирования MathCAD позволяет решать самые различные, в том числе и довольно сложные, задачи и является серьезным подспорьем для расчетов (см. разд. 6.3).
6.1. Программирование без программирования
В ранних версиях MathCAD встроенного языка программирования не было. Чтобы применять привычные операции проверки условий и организовывать циклы, приходилось изобретать причудливую смесь из встроенных функций условия if (листинг 6.1) и until и комбинаций ранжированных переменных (листинг 6.2).

Примечание
В связи с устоявшимися традициями применения языка программирования функцию until настоятельно не рекомендуется использовать в дальнейшей работе (тем не менее, она действует в MathCAD 2001, но отнесена к устаревшим функциям).

Листинг 6.1. Функция условия

Листинг 6.2. Организация цикла при помощи ранжированной переменной

Фактически, использование ранжированных переменных — мощный аппарат MathCAD, похожий на применение циклов в программировании. В подавляющем большинстве случаев намного удобнее организовать циклы (в том числе вложенные) с помощью ранжированных переменных, чем заниматься для этого программированием. Полезнее освоить технику, связанную с ранжированными переменными, векторами и матрицами, поскольку на ней основаны главные принципы расчетов в MathCAD, в частности подготовка графиков. (Более подробную информацию о ранжированных переменных и связанными с ними возможностями можно получить в гл. 4.)
6.2. Язык программирования MathCAD
Для вставки программного кода в документы в MathCAD имеется специальная панель инструментов Programming (Программирование), которую можно вызвать на экран нажатием кнопки Programming Toolbar на панели Math (Математика), как показано на рис. 6.1. большинство кнопок этой панели выполнено в виде текстового представления операторов программирования, поэтому их смысл легко понятен.
Изложим последовательно основные составные части языка программирования MathCAD и рассмотрим примеры его использования.

Рис. 6.2. Начало создания программного модуля

Рис. 6.3. Вставка программного оператора

Совет
Не забывайте, что для желаемого размещения линий ввода внутри формула можно использовать не только мышь и клавиши со стрелками, но и пробел. С помощью последовательных нажатий пробела линии ввода «захватывают» разные части формулы.

Рис. 6.5. Вставка новой строки в существующую программу

Рис. 6.6. Положение линий ввода влияет на положение новой линии
Зачем может потребоваться вставка новой линии в положение, показанное на рис. 6.7 Новая вертикальная черта с двумя линиями выделяет фрагмент программы, который относится к условию х>о, находящемуся в его заголовке. Пример возможного дальнейшего программирования показан в листинге 6.4.

Рис. 6.9. Вставка оператора цикла
4. В нижний местозаполнитель введите тело цикла, т. е. выражения, которые должны выполняться циклически.
5. При необходимости дополните программу другими строками и введите в них нужный код.

Примечание
Диапазон значений переменной в условии цикла for можно задать как с помощью диапазона ранжированной переменной (листинг 6.6), так и с помощью вектора (листинг 6.7).

Листинг 6.6. Оператор цикла for с ранжированной переменной

Листинг 6.7. Оператор цикла for с вектором

Листинг 6.8. Оператор цикла while ,

Иногда необходимо досрочно завершить цикл, т. е. не по условию в его заголовке, а в некоторой строке в теле цикла. Для этого предназначен оператор break. Модификации листингов 6.6 и 6.8 с прерыванием цикла оператором break приведены в листингах 6.9 и 6.10, соответственно. Например, в листинге 6.9, как только значение переменной цикла i достигает 2, цикл, благодаря оператору break в последней строке программного модуля, прерывается. Соответственно, значение переменной х остается равным 0+1+2=3.
Листинг 6.9. Оператор break внутри цикла for

Листинг 6.10. Оператор break внутри цикла while

Примечание
Чтобы четче обозначить границы завершения тела цикла, в его конце может использоваться дополнительная строка с оператором continue, который вводится одноименной кнопкой панели Programming. Примеры, модернизирующие листинги 6.7 и 6.8, иллюстрируются листингами 6.11 и 6.12, соответственно. Как видно, на результат программы наличие оператора continue не влияет.

Рис. 6.10. Вставка оператора перехода по ошибке
В правом местозаполнителе следует ввести выражение, которое должно выполняться в данной строке программы. В левом — выражение, которое будет выполнено вместо правого выражения, если при выполнении последнего возникнет ошибка. Приведем пример применения оператора on error (листинг 6.15) в программном модуле, который рассчитывает функцию обратного числа значению п. Если п^о, то и присвоенное значение z#o, поэтому в последней строке программы выполняется правое выражение расчета l/z. Так происходит при расчете f (-2). Если попытаться вычислить f(0), как в конце листинга, то выполнение программы, заложенной в f (п), вызовет ошибку деления на ноль в последней строке программы. Соответственно, вместо выражения справа от оператора on error будет выполнено левое выражение, присваивающее функции, f (п) строковое значение «user error: cannot divide by zero» (пользовательская ошибка: деление на ноль невозможно). Конечно, этой строке можно присвоить и текст на русском языке.
Листинг 6.15. Перехват ошибки деления на ноль

Оператор перехвата ошибок удобно применять в комбинации со встроенной функцией error(S). Она приводит к генерации ошибки в обычной для MathCAD форме с сообщением s. Пример усовершенствования листинга 6.15 для такого стиля обработки ошибки деления на ноль показан на рис. 6.11. Обратите внимание, что сделанные изменения свелись к помещению текста сообщения об ошибке в аргумент функции error.

Примечание
С помощью средств программирования можно создавать намного более сложные программы. Несколько примеров достаточно эффективного применения программирования вы найдете в разд. «Фазовый портрет динамической системы» гл. 11 и разд. «Разностные схемы» гл. 12.

Листинг 6.16. Программирование в численных расчетах

Листинг 6.17. Программирование в символьных расчетах

Источник

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