Mathcad ошибка this value must be a vector

yeet

1-Newbie

‎Jan 09, 2013

09:59 AM

This value must be a vector


Hi,

I am receiving ‘This value must be a vector’ error eventhough the expression is vector already. Please see the attached snippet.

Thanks.

  • vector

  • All forum topics


  • Previous Topic

  • Next Topic

1 ACCEPTED SOLUTION

‎Jan 14, 2013

05:02 AM

Hi Yigit,

I think that the problem is caused by the square root function.

Capture.PNG

Complains that it must be a vector,

Using the vector-ise operator (<CTRL> -) (and also setting f = 10^12 ) gives

Capture1.PNG

Also added into the file are simple examples of the square root failing to calculate

Regards

Andy

6 REPLIES 6

‎Jan 09, 2013

11:16 AM

I used the Trace Error feature and it led to the offending variable. It is actually a nested array, not a vector.

‎Jan 12, 2013

06:04 PM

Hi Yigit,

I’m not sure what you want to achieve. Maybe attachment will help you.

mustbe_edit_MC15.xmcd.zip

‎Jan 14, 2013

05:02 AM

Hi Yigit,

I think that the problem is caused by the square root function.

Capture.PNG

Complains that it must be a vector,

Using the vector-ise operator (<CTRL> -) (and also setting f = 10^12 ) gives

Capture1.PNG

Also added into the file are simple examples of the square root failing to calculate

Regards

Andy

‎Jan 14, 2013

06:32 AM

I had figured it’s the square root function but I couldn’t figure out ‘why’ it causes the error. I had used the same function with the same notation without error in my previous sheets, this one threw this error. Weird behavior I suppose.

‎Jan 14, 2013

06:49 AM

As you may see from the previous attachment: square root seems to handle single column vector, but single row & matrix forms cause it to throw an error.

This discrepancy should probably be caonsidered as a bug, even though it can be corrected by vectorisation.

Regards

Andy

‎Jan 16, 2013

05:09 PM

A Westerman schrieb:

As you may see from the previous attachment: square root seems to handle single column vector, but single row & matrix forms cause it to throw an error.

This discrepancy should probably be caonsidered as a bug, even though it can be corrected by vectorisation.

This auto-vectorization of Mathcad when dealing with column vectors is also covered in this thread: http://communities.ptc.com/message/195025#195025

Not sure if I should call it a convenience or a discrepancy. I tend to the latter.

This subscript is too large (Индекс слишком велик). Верхний или нижний индекс превышает предельное значение 8 млн.

This system of equations has more unknowns than there are equations (Система 76

уравнений имеет больше неизвестных, чем уравнений). Эта сообщение иногда появляется в вычислительных блоках, имеющих меньше ограничений, чем уравнений. В таких случаях можно добавить фиктивное ограничение типа 1=1 или уменьшить число неизвестных, которые надо определить.

This value must be a matrix (Эта величина должна быть матрицей). Вы пытаетесь выполнить матричную операцию с использованием скалярной величины.

This value must be a vector. It can be neither a matrix nor a scalar (Эта величина должна быть вектором, но не скаляром и не матрицей). Некоторые операции совершаются только над векторами, например оператор векторной суммы.

This value must be an integer greater than 1 (Эта величина должна быть целым числом больше единицы).

This value must be an odd integer (Эта величина должна быть целым нечетным числом).

This value must be greater than or equal to 10.0^–16 (Эта величина должна быть больше или равна 10–16).

This value must be less than or equal to 10000 (Эта величина должна быть меньше или равна 10 000).

This value must be real. Its imaginary part must be zero (Эта величина должна быть действительным числом. Ее мнимая часть должна быть равна нулю). Например, верхние или нижние индексы, блоки решения дифференциальных уравнений, функции mod и angle.

This variable must be a range variable (Эта переменная должна быть дискретной переменной). В операторах суммирования, в итерационных процессах индексы должны определяться дискретной переменной. Убедитесь в том, что дискретная переменная определена выше выражения с ошибкой.

This variable or function is not defined above (Эта переменная или функция не определена выше). Проверьте значения всех величин в выражении с ошибкой. Часто это сообщение появляется, если есть ошибки в предыдущих выражениях, где определяется нужная величина.

This vector has the wrong number of elements (Этот вектор имеет неверное число элементов). Это сообщение часто появляется при использовании для преобразования Фурье функции fft, аргумент которой должен быть вектором, содержащим 2n элементов.

This vector must have fewer than five columns (Этот вектор должен иметь не более четырех столбцов). Первый аргумент функции loess должен иметь не более четырех столбцов.

This vector should have more elements (Этот вектор должен иметь больше элементов). Аргументы функций интерполяции должны иметь не менее двух элементов, аргументы функций преобразования Фурье — не менее четырех элементов.

Type «TOL=» to see what the Tolerance is set to (Напечатайте TOL, чтобы увидеть установку допустимой точности). Значение TOL должно быть больше 0 и меньше 1. Переопределите значение TOL, если нужно.

Underflow (Недопустимо малое число). Иногда при сложных расчетах промежуточный результат может быть слишком мал, чтобы представить его.

Value of subscript or superscript is too big (or too small) for this array (Величина нижнего или верхнего индекса слишком велика или слишком мала для этого массива). При вычислении выражения затребован несуществующий элемент массива. Индекс не может быть меньше, чем ORIGIN.

You are trying to use an array or a range as a scalar. Press F1 for help (Вы пытаетесь использовать массив или дискретную переменную как скаляр. Нажмите F1 для вызова помощи).

You must evaluate this operator symbolically. Press [Ctrl] [Period] (Вы должны оценить этот оператор символьно. Нажмите Ctrl+.). При использовании некоторых операторов, таких как неопределенный интеграл или вычисление предела, численная оценка невозможна. Надо выделить выражение и выбрать команду Simplify (Упростить) из меню Symbolics (Символьные вычисления).

You interrupted calculation. To resume, click here and choose Calculate from the Math menu (Вы прервали вычисления. Чтобы завершить процесс, щелкните здесь и выберите Calculate из меню Math). Если вы редактируете свой документ, во избежание длительных вычислений выключите автоматический режим вычислений.

Сообщения об ошибках в символьных вычислениях

Argument too Large (Аргумент слишком велик). Обычно это результат вычислений с плавающей точкой со значением больше, чем 107.

Discarding Large Result (Сброс большого результата). Ответ слишком велик для отображения в математической области. Можно поместить ответ в буфер обмена. Expecting Array or List (Ожидается массив или список). Операторы в упрощаемом выражении требуют векторных или матричных операндов.

Expression contains Nonsymbolic Operators (Выражение содержит несимвольные операторы). Применена символьная операция к выражению, содержащему

незаполненные места ввода оператора или переменной. 77 Floats not Handled (С плавающей точкой не поддерживается). Команда Factor была применена к выражению с десятичным числом.

Illegal Function Syntax (Недопустимый синтаксис функции). Символьный процессор не может интерпретировать выражение типа (f)(x).

Invalid Arguments (Недопустимые аргументы). Символьный процессор не может выполнить требуемую операцию для данных аргументов.

Invalid Range (Недопустимый интервал). Для поиска численного решения уравнения символьный процессор пытается вычислить одну из своих встроенных функций за пределами области ее определения.

No Answer Found; Stack Limit Reached (Ответа не найдено. Достигнут предел стека). Символьный процессор достиг предела в своих внутренних выражениях и не может произвести оценку выражения.

No Answer Found (Ответ не найден). Символьный процессор не смог найти решение уравнения.

No Closed Form Found (Не найдено замкнутой формы решения). Символьный процессор не смог найти интеграл, сумму или произведение в символьном виде. Syntax Error (Синтаксическая ошибка).

Таблица. Сообщения об ошибках

Ошибка

Перевод

Вероятная причина

Возможные пути устранения

Сообщения об ошибках в численных вычислениях

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

Аргументы в определениях функции должны быть именами

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

В списке аргументов должны быть правильно поименованы переменные, или список имен необходимо отделить запятыми

At least one limit must be infinity

По крайней мере один предел должен быть бесконечным

Когда для интегриро-
вания выбран алгоритм бесконечного предела, то по крайней мере один из пределов интеграла должен быть бесконечным

Тип бесконечности вводится нажатием сочетания клавиш <Ctrl>+<Shift>+<2>.

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

Can only evaluate an n-th order derivative when n=0,1..5.

Можно вычислить n-й порядок производной, только когда п=0,1..5

Порядок производной должен быть одним из следующих чисел: 0, 1, 2,. ..5.

Если Вы хотите посчитать производную более высокого порядка, то делайте это с помощью символьного дифференци-
рования

Can’t evaluate this function when its argument less than or equal to zero

Невозможно вычислить эту функцию, когда ее аргумент меньше или равен нулю

Такое сообщение может касаться XY- или полярных графиков, имеющих логарифмические оси, на которых или пределы, или некоторые из значений, не положительны

Отрицательные числа и ноль не могут быть расположены нигде на логарифмических осях. Смените тип осей графика или постройте его для других значений

Can’t converge to a solution

Не сходится к решению

Численный метод расходится (не может найти решения)

Убедитесь, что операция не применяется к функции в области непосредственной близости точки ее сингулярности (деления на ноль). Попробуйте поменять параметры численного метода (например начальное приближение).

Попробуйте увеличить константу TOL, т. е. осуществить поиск решения с худшей погрешностью.

Попробуйте поменять численный алгоритм, если это возможно (вызвав контекстное меню нажатием на месте ошибки правой кнопки мыши)

Can’t define the same variable more than once in the same expression

Невозможно определить ту же самую переменную более одного раза в одном и том же выражении

Вы пытаетесь вычислить одну и ту же переменную дважды в одном выражении

Пример подобной ошибки: если Вы создаете вектор с левой стороной а := и используете это же имя справа, то получите ошибку

Can’t determine what units the result of this operation should have

Невозможно определить, в каких единицах следует быть результату этой операции

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

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

Cant divide by zero

Деление на ноль невозможно

Где-то в программе или внутри численного метода возникло деление на ноль

Найдите место деления на ноль и устраните его

Попробуйте поменять параметры численного метода, константы точности или сам численный алгоритм

Could not find a solution

Невозможно найти решение

Численный метод расходится (не может найти решения)

См. «Can’t converge to a solution»

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 perform this operation on the entire array at once. Try using «vectorize» to perform it element by element

Невозможно представить эту операцию в целом массиве сразу. Попытайтесь использовать векторизацию, чтобы представить элемент за элементом

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

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

Can’t plot this many points

Невозможно начертить график с таким большим количеством точек

Попытка построения графика с числом точек, превосходящим возможное

Попробуйте сделать число точек меньше, чем 150 000

Can’t put a «:=» inside a solve block

Нельзя помещать «:=» внутрь вычислительного блока

Внутри вычислительного блока не должно быть формулировки присваивания. Он должен содержать только булевы выражения

Используйте панель с булевыми операторами

Can’t raise an expression having units to a complex power

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

Это выражение содержит единицы измерений, а Вы возводите его в комплексную степень

Выражение с единицами измерений можно возводить только в действительную степень. Для того чтобы возводить в комплексную степень выражение с единицами измерений, вначале переведите это выражение в UnitsOf (выражение) — единицы измерений будут отменены

Can’t solve a system having this many equations

Невозможно решить систему, имеющую так много уравнений

Mathcad не способен решить систему

См. определение термина «вычислительный блок » (гл. 8)

Can’t understand something in this data file

Невозможно что-то понять в файле данных

Файл, к которому Вы пытаетесь получить доступ при помощи READ или READ*, имеет дефект

Файл должен быть ASCII-текстом

Все строки файла должны иметь тот же номер значений, что используется в READ*

Если файл имеет требуемый формат, а это сообщение продолжает появляться, попробуйте удалить любую часть текста из файла

Can’t understand the name of this function

Невозможно понять имя этой функции

Такое сообщение может появиться, если в качестве имени функции используется, например, число 6(х)

Выражение должно соответствовать требованиям, предъявляемым в Mathcad к написанию имен функций

Can’t understand the way this range variable is defined

Невозможно понять определение ранжированной переменной

Определение ранжированной переменной неверно

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

Rvar := nl . .n2 Rvar := nl,n2 . .пЗ

Cant understand this number

Невозможно понять это число

Это выражение содержит символ или десятичную точку там, где это непозволительно

Вы увидите эту ошибку, например, если случайно запишете число так: .452.

Cant use a range variable in a solve block

Невозможно использовать ранжированную переменную в вычислительном блоке

Эта ошибка появится, если использовать область определения переменной в неподходящем месте

Придумайте алгоритм, не допускающий применения ранжированной переменной в вычислительном блоке

Cannot evaluate this accurately at one or more of the values you specified

Невозможно точно вычислить одно или более значений

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

Проверьте область определения функции

Cross product is defined only for vectors having exactly three elements

Векторное произведение определяется только для векторов, имеющих точно три элемента

Векторное произведение определяется только для векторов, имеющих точно три элемента

См. определение векторного произведения (гл. 9)

Can’t evaluate this expression. It may have resulted in an overflow or an infinite loop

Невозможно вычислить это выражение. Это может быть результатом переполнения или бесконечных циклов

Это функциональное определение может содержать слишком много вложенных функций. Или функция может быть константой в бесконечных циклах

Проверьте несколько итераций цикла

Degree of the polynomial must be between 1 and 99.

Степень полинома должна находиться в пределах между 1 и 99

Вектор, пропущенный через функцию поиска корней полинома, должен содержать по крайней мере 2 и не более 99 элементов

 

Dimensions must be >4

Размерность должна быть >4

Эта матрица должна иметь по крайней мере 4 ряда и 4 столбца

 

End of file

Коней; файла

Вы пытаетесь прочитать больше значений в файле данных, чем там имеется

Например, если файл данных имеет 10 значений, а записано выражение i : =1…100

xi : =READ* ( file) , то появится это сообщение

End points cannot be the same

Конечные точки не могут быть одинаковы

Это сообщение появляется при некорректном решении дифференциальных уравнений

Конечные точки интервала, на котором будет вычисляться решение, должны быть различны

Equation too large

Уравнение слишком большое

Это выражение слишком сложное для вычисления

Разбейте выражение на два или более простых

Floating point error

Ошибка вычислений с плавающей точкой

Функция вычисляется в точке, в которой это не разрешено

 

Found a singularity while evaluating this expression. You may be dividing by zero

Найдена сингулярность при вычислении этого выражения. Возможно, Вы делите на ноль

Вычисляется функция или выполняется операция с недопустимым значением

Например, это сообщение возникнет при попытке деления на ноль или обращения сингулярной матрицы; разберитесь, где это происходит

Found a number with a magnitude greater than 1СГ307

Найдено число, превышающее значение 10307

 

Попробуйте поменять параметры численного алгоритма или сам алгоритм

Illegal context. Press <F1> for help

Недопустимый контекст. Нажмите <F1>, чтобы получить помощь

Часто встречается при синтаксических ошибках

Проверьте синтаксис и порядок расположения формул в документе

Illegal dimensions

Недопустимые размерности

Матрица, на которую Вы ссылаетесь, не имеет достаточно строк или столбцов

Введите имя матрицы с клавиатуры и нажмите знак «=», чтобы проверить число ее строк и столбцов

Integer too large/ Integer too small

Целое число слишком большое/ слишком маленькое

Это число слишком велико/мало для работы с ним

Если Вы работаете со встроенными функциями, то щелкните на имени функции и вызовите подсказку с помощью <F1>

Invalid format

Недопустимый формат

Аргументы этой функции могут быть некорректны

Если Вы работаете со встроенными функциями, то щелкните на имени функции и вызовите подсказку с помощью <F1 >

Live symbolics not available

Символьные вычисления неприменимы

 

Си. гл. 5

Must be <= 10000

Это значение должно быть <=10000

 

 

Must be >= 10л-16

Это значение должно быть >=1<Г16

 

 

Must be string

Функция или оператор должен быть строковым аргументом

 

См. гл. 10

Must be between two lock regions

Должно быть между двумя запертыми областями

 

См. гл. 16.

Must be function

Этот аргумент должен быть функцией

 

 

Must be increasing

Значения вектора должны быть возрастающими

 

Введите с клавиатуры имя вектора и знак =, чтобы проверить его значения

Must be less than the number of data points

Должен быть меньше, чем число точек данных

Этот аргумент должен быть меньше, чем число точек имеющихся данных

 

Must be positive

Должен быть положительным

Невозможно вычислить эту функцию, когда ее значения меньше или равны нулю

Это сообщение может касаться построения XY- или полярных графиков с логарифмическими осями. Отрицательные числа или ноль не могут располагаться на логарифмических осях

Must be real

Должно быть действительным

Это значение должно быть действительным. Его мнимая часть должна быть нулем

Примером таких выражений могут служить нижний и верхний индексы, решения дифференциальных уравнений, углы

Must be real scalar

Должно быть действительным скаляром

Это значение не должно быть комплексным или мнимым

 

Must be real vector

Должно быть действительным вектором

Этот вектор не может иметь комплексные или мнимые элементы. Он должен также быть вектором-столбцом, а не строкой

 

Must be square

Должна быть квадратной

Эта ошибка выделяет неквадратную матрицу в той операции или функции, в которой ей следует быть квадратной

Например, матрица должна быть квадратной при обращении, возведении ее в степень, или в функциях eigenvals и eigenvec

No solution found

Не найдено решение

 

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

См. также «Can’t converge to a solution»

Not enough memory for this operation

Для этой операции недостаточно памяти

Не хватает памяти, чтобы завершить это вычисление

Попытайтесь освободить немного памяти путем уменьшения массива или матрицы (Mat head тратит около 8 байт памяти на каждый элемент матрицы), или удаления каких-либо больших побитовых отображений, массивов, матриц

Singular matrix

Сингулярная матрица

Эта матрица не может быть ни сингулярной, ни близкой к сингулярности

Матрица называется сингулярной, если ее определитель равен нулю. Матрица близка к сингулярной, если она имеет высокое число обусловленности (см. гл. 9)

The expression to the left of the equal sign cannot be defined

Выражение слева от знака равенства не может быть определено

В левой части находится что-то, что не является допустимым определяемым выражением

В левой части можно разместить одно из следующих определений:

— имя переменной;

— имя переменной с верхним или нижним индексом;

— явный вектор или матрицу;

— имя функции с аргументами: f(x,y)

Любые другие выражение не допустимы

The number of rows and/or columns in these arrays do not match

Число рядов и/или столбцов в этих массивах не согласовано

Попытка произвести матричные или векторные операции над массивами, размеры которых не совпадают

Например, сложение двух матриц разного размера недопустимо. Матричное умножение требует, чтобы число столбцов первой матрицы совпадало с числом строк второй (см, разд. 9. 1)

The units in this expression do not match

Размерности в этом выражении не согласованы

Это сообщение появится, если складываются два элемента разной размерности либо создана матрица, элементы которой имеют разную размерность, либо Вы пытаетесь решить систему уравнений для неизвестных переменных разной размерности

Проверьте использование размерных переменных

There is an extra comma in this expression

В выражении лишняя запятая

 

Запятые должны использоваться для того, чтобы отделять:

аргументы в функции

первые два элемента области в определении интервала

выражения в графике элементы во входной таблице нижние индексы в матрице

Любые другие применения запятой приводят к ошибке. Например, запись 4,000 неправильная, а запись 4000 — правильная

This expression is incomplete. You must fill in the placeholders

Это выражение неполное. Необходимо добавить содержимое в место-заполнители

Не заполнены указанные местоза-полнители

Необходимо дописать числа или выражения в указанные местозаполнители

This expression is incomplete. You must provide an operator

Это выражение неполное. Необходимо вставить оператор

Не заполнены местозаполнители оператора или пустое пространство между двумя операндами

Это могло произойти при удалении оператора, проверьте правильность ввода выражения

This function has too many arguments

Эта функция имеет слишком много аргументов

Выделенное выражение содержит функцию с числом аргументов большим, нежели требуется

Проверьте правильность применения функции

This function is undefined at one or more of the points you specified

Эта функция не определена для одной или более точек

Попытка вычисления оператора или функции с неподходящими значениями

Например, -3′- выдаст ошибку, 1п(0), т. к. факториал не определен для отрицательного числа, а логарифм для нуля

This function needs more arguments

Этой функции не хватает аргументов

Выделенное выражение содержит функцию с меньшим, нежели требуется, числом аргументов

Для встроенных функций щелкните мышью на имени функции и воспользуйтесь подсказкой <F1>, чтобы проверить правильность числа и типа аргументов; для функции пользователя проверьте ее определение

This operation can only be performed on a function

Эта операция может быть произведена только над функцией

Этот аргумент должен быть функцией

Для встроенных функций щелкните мышью на имени функции и воспользуйтесь подсказкой <F1 >

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

Эта операция может быть произведена только над строкой

Используемая функция или оператор требуют представления в виде строки. Например строковые функции обычно требуют по крайней мере одного строкового аргумента

 

This subscript is too large

Этот нижний индекс слишком велик

Попытка использовать верхний или нижний индекс, который превышает ограничения

 

This value must be a matrix

Это значение должно быть матрицей

Попытка произвести матричную операцию не над матрицей

 

This value must be a vector. It can be neither a matrix nor a scalar

Это значение должно быть вектором. Оно не может быть ни матрицей, ни скаляром

Это сообщение маркирует матрицу или скаляр в операциях, которые требуют вектора (одностолбцового массива). Например суммирование элементов вектора

 

This value must be an integer greater than 1

Это значение должно быть целым числом, превосходящим 1

Это значение должно быть >1

При использовании встроенных функций щелкните мышью на имени функции и нажмите клавишу <F1>

This variable or function is not defined above

Эта переменная или функция не определена выше

Имя неопределенной функции будет помечено красным цветом

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

Underflow

Потеря значимости (исчезновение значащих разрядов)

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

 

Value of subscript or superscript is too big (or too small) for this array

Значение нижнего или верхнего индекса слишком велико (или слишком мало) для этого массива

Это выражение использует нижний или верхний индекс, который относится к несуществующему элементу массива

 

This is not a scalar. Press <F1 > for help

Это не скаляр. Нажмите клавишу <F1>, чтобы получить помощь

Использован вектор или выражение с интервалами, или какой-то другой тип выражения, где требуется применение скаляра

 

You have one solve block inside another. Every «Given» must have a matching «Find» or «Min-err».

Один вычислительный блок содержится внутри другого. Каждому ключевому слову Given должно сопоставляться Find или Minerr

Указаны два ключевых слова Given подряд без Find или Minerr посередине. Вычислительный блок не может иметь внутри себя другой вычислительный блок

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

You interrupted calculation. To resume, click here and choose «Calculate» from the «Math» menu

Вычисления прерваны. Для того чтобы продолжить, щелкните здесь и выберите пункт Calculate меню Math

 

Вычисления прерваны нажатием клавиши <Esc>. Для того чтобы пересчитать выделенное уравнение, наведите на него курсор и воспользуйтесь меню Math / Calculate (Математика/ Вычислить)

Сообщение об ошибках в символьных вычислениях

Argument too large (Integer too large in context, Object too large)

Аргумент слишком велик

Обычно это результат вычисления выражения с плавающей точкой со значением большим, чем около 10×10 миллиардов

 

Discarding large result

Сброс большого результата

Ответ слишком велик для отображения его в отформати-
рованной математической области

Можно разместить ответ в буфере обмена

Expecting array or list

Ожидается массив или список

Операторы в упрощаемом или вычисляемом выражении требуют векторных или матричных операндов

 

Expression contains non-symbolic operators

Выражение содержит несимвольные операторы

Применена символьная операция к выражению, содержащему местоза-полнители оператора или переменной

 

Floats not handled

С плавающей запятой не поддерживается

Команда Factor была применена к выражению с десятичным числом

 

Illegal function syntax

Недопустимый синтаксис функции

Символьный процессор не может интерпретировать выражение, подобное (f)(x)

 

Invalid arguments

Недопустимые аргументы

Символьный процессор не может выполнить требуемую операцию для данных аргументов

Это сообщение появится, если, например, применить скалярную функцию к массиву без использования оператора векторизации и выбрать команду Symbolics / Simplify (Символика / Упростить)

Invalid range

Недопустимый интервал

Для поиска численного решения уравнения символьный процессор пытается вычислить одну из своих встроенных функций за пределами области ее определения

 

No answer found; stack limit reached

Ответа не найдено

Символьный процессор достиг предела своих возможностей без вычисления или упрощения, которое затребовал пользователь

 

No answer found

Ответа не найдено

Символьный процессор не смог найти точного решения уравнения

 

No closed form found for

Не найдено замкнутой формы для

Символьный процессор не смог найти интеграл или сумму, или произведение в замкнутой форме

 

Syntax error

Синтаксическая ошибка

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

 

amine&&

I want to draw my function of two variable so that the graph gives me Z values between -5 and 5. I used this code

[X,Y,Z] = meshgrid(0:.2:1, 0:.2:1, -5:.2:5);

Z = arrayfun(@mFunction, X, Y);

surf(X,Y,Z)

but i get the following error :

Error using surf (line 57)

While setting the ‘XData’ property of Surface:

Value must be a vector or 2D array of numeric type

Thanks!

Accepted Answer

Stephen23

The problem is how you are calling meshgrid, because calling it with three input arguments causes the outputs to be 3D arrays, not 2D arrays. So the solution is to simply call it like this:

[X,Y] = meshgrid(0:.2:1, 0:.2:1);

and the rest of your code will work fine.

Debugging for Beginners

This bug is easy to find: The error message tells you that the inputs to surf must be 2D arrays, but that they are not. So lets start by having a look at those arrays:

>> [X,Y,Z] = meshgrid(0:.2:1, 0:.2:1, -5:.2:5);

>> size(X)

ans =

6 6 51

Does 6x6x51 look like a 2D array to you? No, clearly the 51 on the third dimensions makes it a 3D array. Why is it a 3D array? Lets actually read the documentation for meshgrid: it clearly states that for three inputs « [X,Y,Z] = meshgrid(xgv,ygv,zgv) produces three-dimensional coordinate arrays.» Now we know why the arrays are 3D: because you called meshgrid with three inputs. The documentation also tells us how to make 2D arrays, but I am sure you can figure this out yourself.


More Answers (1)

Hamid Reza N.D

Hi. i wana draw my function of three variable. this is my code and i got those Errors. what shloud i do?

>> Q=[1 2 3;4 5 6;7 8 9];

>> S=[0;1;2];

>> u1=linspace(-10,10,20);

>> u2=linspace(-10,10,20);

>> u3=linspace(-10,10,20);

>> [U1,U2,U3]=meshgrid(u1,u2,u3);

>> L=1/2*(Q(1,1)*U1.^2+(Q(1,2)+Q(1,3)+Q(2,1)+Q(2,3)+Q(3,1)+Q(3,2))*U1.*U2.*U3+Q(2,2)*U2.^2+Q(3,3)*U3.^2)+S(1)*U1+S(2)*U2+S(3)*U3;

>> meshc(U1,U2,U3,L)

Error using matlab.graphics.chart.primitive.Surface/set

Value must be a vector or 2D array of numeric type

Error in matlab.graphics.chart.internal.ctorHelper (line 8)

set(obj, pvpairs{:});

Error in matlab.graphics.chart.primitive.Surface

Error in mesh (line 143)

hh = matlab.graphics.chart.primitive.Surface(‘XData’,x,’YData’,y,’ZData’,z,’CData’,c,…

Error in meshc (line 58)

hm = mesh(cax, x, y, z, c);

See Also

Categories

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

An Error Occurred

Unable to complete the action because of changes made to the page. Reload the page to see its updated state.

Mathcad значение должно быть скалярным или вектором

Некоторые из операторов Mathcad имеют особые значения в применении к векторам и матрицам. Например, символ умножения означает просто умножение, когда применяется к двум числам, но он же означает скалярное произведение, когда применяется к векторам, и умножение матриц — когда применяется к матрицам.

Таблица описывает векторные и матричные операторы Mathcad. Многие из этих операторов доступны из палитры символов. Обратите внимание, что операторы, которые ожидают в качестве аргумента вектор, всегда ожидают вектор-столбец, а не вектор-строку.

Чтобы заменить вектор-строку на вектор-столбец, используйте оператор транспонирования [Ctrl]1.

Операторы, не перечисленные в этой таблице, не будут работать для векторов и матриц. При попытке использовать такой оператор с вектором или матрицей Mathcad будет отмечать это сообщением об ошибке “неверная операция с массивом”, или “нескалярная величина”. Можно, однако, использовать оператор векторизации, чтобы выполнить любую скалярную операцию или функцию поэлементно на векторе или матрице. См. раздел “Выполнение параллельных вычислений” ниже в этой главе. Рисунок 9 показывает использование некоторых векторных и матричных операций.

Рисунок 9: Векторные и матричные операции.

В следующей таблице

  • A и B представляют массивы (векторы или матрицы).
  • u и v представляют векторы.
  • M представляет квадратную матрицу.
  • и представляют отдельные элементы векторов u и v.
  • z представляет скаляр.
  • m и n представляют целые числа.

Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter

Значение должно быть скаляром, MathCad.

В примере, как работать с Маткадом, всё работает (изображение 1):

Когда я делаю тоже самое, появляется ошибка, что значения не является скаляром:

Как исправить? Помогите, пожалуйста.

Оно может быть скаляром, только если размеры матриц A и B совпадают.

Решение системы линейных уравнений — это ВСЕГДА вектор. Скаляром оно быть не может по определению.

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

Маткад ошибка значение должно быть скалярным

Маткад ошибка значение должно быть скалярным

БАЗОВЫЕ ОПЕРАЦИИ.
РАНЖИРОВАННЫЕ ПЕРЕМЕННЫЕ. ФУНКЦИИ. ГРАФИКИ
МАССИВЫ

1 Запуск. Формульные и текстовые области

Запуск Mathcad: Start / All Programs / Mathsoft Apps / Mathcad (Пуск / Все программы / Mathsoft Apps / Mathcad).

Документ Mathcad просматривается, интерпретируется и выполняется слева направо и сверху вниз и может включать три вида областей:

Для ввода математических символов: View / Toolbars / Math (Вид / Панели инструментов / Математическая).

Каждое математическое выражение набирается в отдельной формульной области. Одна формула – одна область!

Перемещение курсора — клавиша Пробел. Изменение направления уголка — клавиша Insert (Ins).

«:=» — «присвоить» — задать выражение (число или формулу)

«=» — «вычислить» подсчитать и вывести значение выражения.

Для вставки в документ текстовой области выполняют Insert / Text Region (Вставка / Область текста), либо просто нажимают в формульной области Пробел. Текстовая область имеет рамку с маркерами, позволяющими изменять ее размеры, и курсор в виде вертикальной линии красного цвета.

2 Ранжированные переменные. Функции. Графики

В Mathcad существует тип переменных, принимающих не одно, а множество значений. Такие переменные носят название ранжированных или дискретных. Ранжированная переменная – переменная, которая принимает ряд значений при каждом ее использовании, причем каждое значение отличается от соседнего на постоянную величину, называемую шагом.

Ранжированная переменная общего вида определяется выражением:

Имя := x1, x2 .. xn

Здесь Имя – задаваемое пользователем имя ранжированной переменной;
x1 – первое значение ранжированной переменной;
x2 – второе значение ранжированной переменной (x2 = x1 + Dx — первое значение плюс шаг);
xn – последнее значение ранжированной переменной.
Значения x1 и x2 разделяются запятой, двоеточие представляет собой единый оператор, указывающий на изменение переменной в заданных пределах. Он вводится с клавиатуры клавишей «;» или выбирается с палитры математических инструментов Matrix (Векторы и матрицы) (кнопка — Range Variable).

Например, если переменная изменяется в интервале с шагом , то она задается в виде

Шаг изменения значений ранжированной переменной в явном виде обычно не задается, он определяется как x2 – x1.

Функции в системе Mathcad можно условно разделить на две группы: встроенные и функции пользователя. Встроенные функции изначально заданы в системе разработчиками. Имя функции вводится с клавиатуры, обычно в нижнем регистре. Полный перечень встроенных функций можно получить, выполнив команду Function (Функция) главного меню Insert (Вставка), или нажав на кнопку панели инструментов. При этом появляется окно, где справа перечислены возможные категории функций, а слева – список функций из выделенной категории.

Среди наиболее часто используемых функций можно указать:

  • sin(z) — синус z (z задается в радианах);
  • cos(z) — косинус z;
  • tan(z) — тангенс z;
  • cot(z) — котангенс z;
  • exp(z) – экспоненциальная функция, значение е (основание натурального логарифма) в степени z;
  • ln(z) – натуральный логарифм z;
  • log(z) – десятичный логарифм числа z;
  • log(z, b) – логарифм числа z по основанию b;
  • acos(z) – арккосинус z;
  • acot(z) – арккотангенс z;
  • asin(z) – арксинус z;
  • atan(z) – арктангенс z.

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

Имя(список аргументов) := Выражение

Сначала задается имя функции, в круглых скобках указывается список аргументов функции (перечень используемых переменных), разделяемых запятыми. Затем вводится оператор присваивания. Справа от него записывается выражение, содержащее доступные системе операторы, операнды и функции с аргументами, указанными в списке аргументов.

Обращение к функции осуществляется по ее имени с подстановкой на место аргументов констант, переменных, определенных до обращения к функции, и выражений.

Основные виды графиков и инструменты для работы с ними находятся на палитре математических инструментов Graph (График).

Для построения графика функции одной переменной в декартовой системе координат в Mathcad:

  1. определяется функция пользователя;
  2. задается ранжированная переменная на некотором диапазоне с мелким шагом;
  3. вставляется шаблон двумерного графика X-Y Plot;
  4. в знакоместо по оси абсцисс записывается имя переменной, а в знакоместо по оси ординат — функция или имя ранее определенной функции;
  5. производится щелчок левой клавишей мыши вне области графика.

Примечание — Для построения в одной координатной плоскости графиков двух и более функций их имена или определяющие выражения перечисляются в знакоместе по оси ординат через запятую.

Массив в пакете Mathcad – это совокупность конечного числа упорядоченных пронумерованных элементов, которая может иметь уникальное имя. Обычно используют одномерные (векторы) и двумерные (матрицы) массивы, содержащие числовые, символьные или строковые данные.

Порядковый номер элемента называется индексом. Местоположение элемента в массиве задается одним индексом для вектора и двумя – для матрицы. Номер первого элемента массива определяется значением системной переменной ORIGIN. По умолчанию ORIGIN = 0 и может принимать только целые значения. Изменение значения этой системной переменной осуществляется последовательностью команд Math / Options… / Built-In Variables / Array Origin (ORIGIN) (Математика / Параметры / Встроенные переменные / Начальный индекс массивов) или переопределением в документе, например:

Существует несколько способов создания массивов.

1-й способ. Использование панели Matrix (Матрицы).

Сначала набирается имя массива и оператор присваивания, например, . Далее на панели Math (Математика) выбираем кнопку Matrix (Матриц):

Далее указываем количество ее строк m (Rows) и столбцов n (Columns) матрицы. Для векторов один из этих параметров должен быть равен 1. При m = 1 получим вектор-строку, а при n = 1 – вектор-столбец.

На месте курсора появится шаблон, в знакоместа которого вводятся значения элементов массива:

2-й способ. Использование ранжированной переменной.

Целочисленные ранжированные переменные используются для задания индексов и позволяют создавать массивы в следующем порядке:

  1. определяется системная переменная ORIGIN;
  2. задается ранжированная переменная (переменные) для нумерации элементов;
  3. индексированной переменной присваиваются значения элементов массива через запятую или в виде явной формулы.

Обращаться к отдельным элементам вектора или матрицы можно, используя нижний индекс, принимающий только целочисленные значения. Для ввода нижнего индекса после имени вектора или матрицы нажимается клавиша «[» (прямая открывающая скобка) либо используется пиктограмма с палитры математических инструментов Matrix. Для элемента матрицы указываются через запятую два индекса, обозначающих номер строки и номер столбца соответственно.

Для работы с векторами и матрицами система Mathcad имеет ряд специальных операторов и команд (представленных в таблице 1), используя которые не следует забывать об общих правилах матричного исчисления.

Таблица 1 – Команды палитры инструментов Matrix (Матрица)

Задача 44319 Не могу понять в чём ошибка. Приложение

УСЛОВИЕ:

Не могу понять в чём ошибка. Приложение пишет, что значение должно быть скалярным. Это MathCad 15.0. Что нужно сделать, чтобы исправить ошибку?

РЕШЕНИЕ ОТ slava191 ✪ ЛУЧШЕЕ РЕШЕНИЕ

Возможно нужно взять аргументы sin в круглые скобки sin(Pix^2)

Возможно, также, что mathcad не знает что такое Pi и перед всей конструкцией надо написать Pi:=3,14

Добавил vk140758054 , просмотры: ☺ 48 ⌚ 2020-02-17 11:10:37. информатика 1k класс

Решения пользователей

Написать комментарий

В прошедшем году страна имела следующие показатели, ден. ед.: ВНП — 500; чистые инвестиции частного сектора — 75; государственные закупки — 80; потребление домашних хозяйств — 250; поступление в государственный бюджет прямых налогов — 30; косвенных — 20; субвенции предпринимателям — 25; экспорт — 150; импорт — 110.
Определить:
а) располагаемый доход домашних хозяйств;
б) амортизационный фонд (D);
в) состояние государственного бюджета.

а) Определим величину НД на основе данных о его использовании
у = 250 + 75 + 80 + 150 – 110 = 445.

Поскольку прямые налоги составляют 30 ден. ед., то располагаемый доход:
yv = 445 – 30 = 415.

б) Амортизационный фонд (D) соответствует разности (ВНП— ЧНП). В свою очередь ЧНП = 445 + 20 – 25 = 440.
Следовательно, D = 500 – 440 = 60.

в) Состояние госбюджета характеризуется разностью между государственными расходами и поступлениями в бюджет
δ= (80 + 25) – (30 + 20) = 55.
ТОЛЬКО ПОДСТАВЬ СВОИ ЦИФРЫ.

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

Важным является также то, что каждое окончание всегда является элементом какого-либо набора окончаний, которые именно в противопоставлении друг другу реализуют свое значение. Рассмотрим словосочетания большой победой и большой столовой. У прилагательного и существительного в словосочетании большой победой окончания разные, хотя внешне они совпадают и оба имеют значение ед.ч., Т.п. Дело в том, что каждое из этих окончаний противопоставлено разным единицам, является элементом разных наборов окончаний. Окончание ‑ой в большой противопоставлено другим окончаниям прилагательных, а -ой в победой противопоставлено другим окончаниям существительных первого склонения. Окончания прилагательного и существительного в словосочетании большой столовой считаются одинаковыми: хотя слово столовая является существительным, его окончания типичны для прилагательных[ii]. Оно сохранило часть набора окончаний прилагательного: имеет такие же окончания, как прилагательное в сочетании столовая комната.

С учетом сказанного выше можно выделить такие группы словоформ с одинаковыми окончаниями[iii]:

1. каша, семья, борода — окончания существительных 1 склонения в единственном числе, в И.п.;

2. кальций, стол, патриций — нулевые окончания существительных 2 склонения мужского рода в единственном числе, в И.п.;

3. море, сражение — окончания существительных 2 склонения среднего рода в единственном числе, в И.п.;

4. морей, людей — окончания существительных во множественном числе, в Р.п.;

5. синий, бледнолицый, большой, рабочий, нищий, заведующий – окончания прилагательных в мужском роде, в единственном числе, в И.п.;

6. большая, столовая, синяя — окончания прилагательных в женском роде, в единственном числе, в И.п.;

7. последние, красивые — окончания прилагательных во множественном числе, в И.п.

Приписав окончаниям указанные грамматические значения, мы получили 7 групп. Вне группы (если считать, что в группе должно быть больше одного элемента) оказались словоформы синей (окончание прилагательного в женском роде, в единственном числе, в Т. п.) и революцией (окончание существительного 1 склонения в единственном числе, в Т. п.).

Заметим, что при другом выборе значений из числа омонимичных можно получить другое разбиение на группы.

Маткад ошибка значение должно быть скалярным

A «Find» or
«Minerr» must
be preceded
by a matching
«Given»

Find или Minerr
должны предва-
ряться ключе-
вым словам

Эта ошибка выде-
ляет функцию Find
или Minerr при их
несогласованности

Каждый вычислительный блок,
который заканчивается функцией
Find или Minerr, должен начи-
наться с ключевого слова Given

All evaluations
resulted in
either an error
or a complex
result

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

MathCAD не может
начертить некото-
рые точки, потому
что не существует
действительных
значений для их
нанесения
на график

Это сообщение может появиться,
если имеется ошибка или все
значения комплексные

Arguments in
function
definitions
must be names

Аргументы
в определениях
функции
должны быть
именами

Выделенное опре-
деление функции
содержит непра-
вильный перечень
аргументов

В списке аргументов должны быть
правильно поименованы пере-
менные, или список имен необхо-
димо отделить запятыми

At least one
limit must
be infinity

По крайней
мере один пре-
дел должен
быть бесконеч-
ным

Когда для интегри-
рования выбран
алгоритм бесконеч-
ного предела, то по
крайней мере один
из пределов инте-
грала должен быть
бесконечным

Тип бесконечности вводится на-
жатием сочетания клавиш
+ + .

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

Can only
evaluate an nth
order derivative
when n=0,1..5.

Можно вычис-
лить n-й поря-
док производ-
ной, только
когда п=0,1—5

Порядок производ-
ной должен быть
одним из следую-
щих чисел: 0, 1,
2,. ..5.

Если вы хотите посчитать произ-
водную более высокого порядка,
то делайте это с помощью сим-
вольного дифференцирования

Can’t evaluate
this function
when its
argument less
than or equal
to zero

Невозможно
вычислить эту
функцию, когда
ее аргумент
меньше или
равен нулю

Такое сообщение
может касаться
XY- или полярных
графиков, имеющих
логарифмические
оси, на которых или
пределы, или неко-
торые из значений,
не положительны

Отрицательные числа и ноль не
могут быть расположены нигде на
логарифмических осях. Смените
тип осей графика или постройте
его для других значений

Can’t converge
to a solution

Не сходится
к решению

Численный метод
расходится
(не может найти
решения)

Убедитесь, что операция не при-
меняется к функции в области
непосредственной близости точки
ее сингулярности (деления на
ноль).

Попробуйте поменять параметры
численного метода (например,
начальное приближение).

Попробуйте увеличить константу
TOL, т. е. осуществить поиск ре-
шения с худшей погрешностью.

Попробуйте поменять численный
алгоритм, если это возможно
(вызвав контекстное меню нажа-
тием на месте ошибки правой
кнопки мыши)

Can’t define
the same
variable more
than once in
the same
expression

Невозможно
определить ту
же самую пере-
менную более
одного раза в
одном и том же
выражении

Вы пытаетесь вы-
числить одну и ту
же переменную
дважды в одном
выражении

Пример подобной ошибки: если
вы создаете вектор с левой сто-
роной а := и используете это же
имя справа, то получите ошибку

Can’t
determine what
units the result
of this
operation
should have

Невозможно
определить, в
каких единицах
следует быть
результату этой
операции

Вы возвели выра-
жение, содержащее
единицы измере-
ния, в степень, яв-
ляющуюся пере-
менной в неких
пределах или век-
тором. В результате
невозможно опре-
делить размерность
результата

Если выражение включает в себя
единицы измерений, то можно
возводить его только в действи-
тельную фиксированную степень

Маткад ошибка значение должно быть скалярным

MathCAD — это просто! Часть 27. Программирование и ошибки: вместе веселее!

Что ж, хотя мы уже немало всего успели обсудить насчет программирования в такой замечательной математической среде, как 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.

Как видите, ошибок в программах действительно бояться не следует. Это вполне нормальная составляющая процесса программирования, неизбежно проявляющаяся в каждом из результатов этого процесса. Тем не менее, с ошибками можно и нужно бороться, и с большинством из них это можно производить с весьма высокой вероятностью достижения успеха. Хотя, конечно же, встречаются и такие ошибки, с которыми трудно будет разобраться даже тому, кто на программировании, что называется, собаку съел. Но все-таки они встречаются не так уж часто. Так что в программировании, если вы хотите избежать мучений, связанных с поиском ошибок, очень важна ваша внимательность. Если вы будете достаточно внимательны при написании программы, то риск допустить ошибку будет сравнительно невелик. Впрочем, это правило применимо не только к программированию.

Обработка ошибок.

Система MathCAD предоставляет пользователю некоторый контроль над ошибками, которые могут возникнуть при вычислении выражений или при выполнении программ. Для этой цели служит оператор on error, который можно вставить с помощью одноименной кнопки панели Programming . В поле ввода справа следует ввести выражение или программу, которые необходимо вычислить (известно, что это выражение может содержать ошибку при определенных значениях входных параметров). В поле ввода слева следует ввести выражение, которое будет выполнено вместо правого выражения, если при выполнении последнего возникнет ошибка. Пример: Если аргументу функции присвоено нулевое значение, то в программе возникает ошибка — деление на нуль. Но за счет оператора on error сообщение не выводится, а функции в этой точке присваивается значение, указанное слева от оператора on error — значение машинной бесконечности.

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

Конечно, если программа содержит только простейшие математические операции, то никаких ошибок, кроме деления на нуль или превышения наибольшего допустимого числа в ней возникнуть не может. В таких программах оператор on error используется редко. Но для более сложных программ, которые содержат функции решения дифференциальных уравнений, аппроксимации или другие сложные функции MathCAD, использование on error может избавить от многих трудностей.

https://amdy.su/wp-admin/options-general.php?page=ad-inserter.php#tab-8

Иногда может возникнуть ситуация обратная той, которая была описана выше, т.е. необходимо, чтобы при определенных условиях результатом выражения было сообщение об ошибке, хотя в действительности при этом не возникает ни одной стандартной ошибки MathCAD. Для таких случаев в MathCAD предусмотрена встроенная функция error. В качестве аргумента этой функции нужно в кавычках указать текст сообщения об ошибке, который должен быть выведен. Таким образом, если необходимо, чтобы программа возвращала ошибку при определенном условии, то следует использовать конструкцию вида: error («текст ошибки») if (условие).

Для того, чтобы иметь возможность нормально вводить текст на русском языке в аргумент функции error (а также во все другие функции со строками), следует изменить шрифт, который используется во встроенном стиле Constant. Для того чтобы этот стиль правильно отображал русские буквы, установите курсор на любом числе или строковом выражении в формульном блоке. При этом в поле на панели инструментов Formatting, отображающем текущий стиль, должно быть написано — Constant. Теперь выберите из раскрывающегося списка шрифтов шрифт, поддерживающий кириллицу.

1. Вычислить функцию sin(x) с точностью е.

2. Даны массивы А(5) и В(5). Получить массив С, в который записаны сначала элементы

массива А в порядке возрастания, а затем элементы массива В порядке убывания

3. По введенным значениям коэффициентов А, В, С определить корни квадратного уравнения

4. Дан массив натуральных чисел В(10). Определить, есть ли в нем 4 последовательных числа (например, 1, 2, 3, 4, и т.п.). Напечатать такие группы чисел.

1. Какая панель служит для вставки программного кода в документ MathCAD? Можно ли операторы программирования набрать с клавиатуры?

2. С какой команды начинается создание программного блока? Как с ее помощью можно создавать разветвленный программный блок?

3. Что такое определение программного блока? Обращение к программному блоку?

4. Что такое глобальные и локальные переменные для программного блока? Что может содержать последняя строка программного блока?

5. Как работает оператор if в программном блоке? Приведите пример.

6. Создание цикла с параметром в программном блоке. Приведите пример.

7. Создание цикла while в программном блоке. Приведите пример.

8. Для чего служат операторы break, continue в программном блоке? Приведите примеры.

9. Как работает оператор return в программном блоке? Приведите пример.

10. Как осуществляется обработка ошибок в программном блоке? Приведите пример.

Сообщения об ошибках

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

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

Вложенные блоки — ключевое слово Given использовано дважды в строке без последующих Find или Minerr. Mathcad не разрешает вложенные блоки решения уравнений, хотя можно определить функции через блоки решения уравнений и затем использовать их в других блоках решения уравнений. См. главу «Решение уравнений»;

Диапазон недопустим — попытка использования дискретного аргумента внутри блока решения уравнений. Чтобы решать систему уравнений для многих значений параметров, см. раздел «Как лучше искать корни» на стр.353;

Дисбаланс скобок (unmatched parenthesis) — вы ввели или пытались вычислить выражение, содержащее левую скобку без соответствующей ей правой. Исправьте выражение, удалив левую скобку или поставив в нужном месте правую;

Длинное выражение в символах — результат символьного преобразования настолько длинен, что не может быть помещен в рабочий документ;

Длинный входной список (list too long) — введено слишком много элементов в списке, разделенном запятыми. Это может произойти при попытке вывести на график больше выражений, чем допускается Mathcad, или при попытке создать таблицу с более чем пятьюдесятью элементами;

Должен быть диапазон (must be range) — что-либо, не являющееся дискретным аргументом, использовано в месте, где он требуется, например, в качестве индекса для суммирования. Индекс для суммирования располагается под знаком суммы и должен быть предварительно определен как дискретный аргумент;

Должна быть квадратной — это сообщение об ошибке отмечает неквадратную матрицу в операции, в которой требуется квадратная, например, при вычислении детерминанта, обращении или возведении матрицы в степень;

Должно быть безразмерным (must be dimensionless) — указанное выражение имеет размерность, хотя ситуация требует, чтобы оно было безразмерным. Единицы измерения нельзя использовать для аргументов некоторых функций (например, cos и In) или в показателе степени. Например, выражение co5 (lL) является недопустимым;

Должно быть вектором (must be vector) — это сообщение отмечает скаляр или матрицу в операции, требующей векторный аргумент;

Должно быть вещественным (must be real) — мнимое или комплекснозначное выражение использовано там, где Mathcad требует вещественнозначное выражение. Например, Mathcad требует вещественнозначные аргументы для некоторых встроенных функций и вещественнозначные индексы;

Должно быть возрастающим (must be increasing) — вектор, элементы которого не расположены в порядке строгого возрастания, использован в качестве аргумента одной из функций Ispline, pspline, cspline, interp, linterp и hist. Первый аргумент этих функций должен быть вектором со строго возрастающими элементами. (При этом следует помнить о том, что, если ORIGIN есть О, Mathcad включает в число элементов вектора элемент с нулевым индексом, и если он не определен явно, его значение полагается равным нулю);

Должно быть массивом (must be array) — попытка выполнить операцию, которую можно выполнять только на массиве, со скаляром. Например, можно увидеть это сообщение об ошибке при попытке транспонировать число, поскольку в таком контексте операция транспонирования не имеет смысла;

Должно быть многомерным массивом — следует использовать матрицу, имеющую более чем одну строку либо более чем один столбец;

Должно быть ненулевым (must be nonzero) — попытка вычислить встроенную функцию от нуля, хотя для нуля она не определена;

Должно быть положительным (must be positive) — это сообщение отмечает чертеж, в котором одна из границ по оси, использующей логарифмический масштаб, равна нулю или отрицательна. Mathcad может выводить на график вдоль логарифмической оси только положительные значения;

Должно быть скаляром (must be scalar) — векторное или матричное выражение использовано там, где требуется скаляр, например в качестве аргумента функции identity;

Должно быть трехмерным вектором (must be 3-vector) — попытка найти векторное произведение от операндов, не являющихся трехмерными векторами. Векторное произведение определено только для векторов с тремя элементами;

Должно быть целым (must be integer) — использовано нецелое выражение там, где требуется целое, например как аргумент функции identity или как индекс, нижний или верхний. (Хотя можно определять дискретные аргументы с дробными значениями, например х: =1, 1.1 .10 — их нельзя использовать как нижние индексы);

Допустим только один массив (only one array allowed) — попытка ввести более чем один массив в поле ввода для карты линий уровня. Mathcad в этом случае допускает не более чем один массив, поскольку карта линий уровня может представлять не более чем одну функцию одновременно;

Дублирование (duplicate) — попытка определить одну переменную дважды в одном определении. Это сообщение появляется, когда вы создаете вектор по левую сторону определения и используете одно имя в этом векторе дважды;

Индекс вне границ (index out of bounds) — это сообщение помечает индекс, ссылающийся на несуществующее значение массива. Такое сообщение можно видеть при использовании отрицательного верхнего или нижнего индекса (или индекса, меньшего, чем ORIGIN, если ORIGIN > 0) либо при использовании верхнего или нижнего индекса для ссылки на элемент массива с номером, большим, чем возможно согласно определению в документе;

Мало нижних индексов (too few subscripts) — для матрицы использован один нижний индекс. Указание на элементы матрицы возможно при помощи двух нижних индексов, разделяемых запятой;

Не может быть определено (cannot be denned) — слева от символа определения (: =) помещено неопределяемое выражение. Mathcad допускает следующие виды выражений слева от символа определения:

Простое имя переменной: х

Имя переменной с нижним индексом: х;

Имя переменной с верхним индексом: x <l>

Матрица имен переменных, порожденная нажатием [Ctri] M. Матрица может содержать лишь простые имена переменных или имена переменных с нижними индексами

Имя функции с аргументами: j (x, у)

Использование других видов выражений некорректно. Если нужно вычислить результат вместо определения переменной, следует поставить знак равенства (=) вместо нажатия двоеточия;

Не содержит верхних индексов (cannot take subscript) — верхний индекс использован не для матрицы, а для чего-то другого;

Не содержит нижних индексов (cannot take subscript) — нижний индекс использован не для вектора или матрицы, а для чего-то другого;

Не является именем (not a name) — число или другая комбинация символов использованы там, где Mathcad требует имя, например как второй аргумент функции root. Примеры того, что не является именем: / (X)) (функция), 3 (число), х + 2 (выражение);

Неверная операция с массивом (illegal array operation) — ‘попытка применить к вектору или матрице функцию или оператор, которые требуют скалярные аргументы. Например, это сообщение можно видеть при попытке применения функции синус к квадратному корню из матрицы Если же нужно применить оператор или функцию к каждому элементу матрицы, используйте оператор векторизации, как описано в главе «Векторы и матрицы»;

Неверное имя функции (illegal function name) — использовано выражение, которое Mathcad интерпретирует как функцию, но имя функции неверно. Это сообщение появится, например, в случае использования числа как имени функции: 6 (х). Чаще всего оно возникает, если пропущен оператор типа *, что заставляет Mathcad интерпретировать скобки в выражении как признак функции, а не как группирование операций;

Неверное употребление ORIGIN (illegal ORIGIN) — ORIGIN определен через нецелое значение или значение с величиной, большей 16 000 000. Это сообщение отмечает первое использование индекса после неверного употребления ORIGIN;

Неверный контекст (illegal context) — оператор или функция использованы в контексте, запрещаемом Mathcad. Например, это сообщение можно видеть в следующих случаях:

точка с запятой использована где-либо вне корректного определения диапазона. (Точка с запятой в этом случае выводится на экран как многоточие) Можно использовать точку с запятой только в определении диапазона для дискретного аргумента функции WRITE или APPEND использованы где-либо вне левой стороны определения. Эти функции не могут применяться в выражениях или в правой части определения имя существующей функции использовано как имя переменной или имя существующей переменной использовано как имя функции;

Неверный множитель (illegal factor) — в поле ввода единиц в конце выражения, возвращающего численный результат, введено неверное выражение. Допустимы вещественные ненулевые скалярные значения;

Неверный порядок (invalid order) — отмечает попытку вычислить производную с указанным порядом, который не является целым числом от 0 до 5 включительно;

Неверный размер вектора (wrong size vector) — это сообщение указывает на функцию преобразования Фурье, аргумент которой имеет число элементов, отличное от допустимого, fft требует в качестве аргумента вектор с количеством элементов 2°, где п — целое число, большее 1. ifft требует вектор с 1+2″ элементами, где n — целое число, большее 0. Если ORIGIN равен нулю, Mathcad автоматически включает элемент с нулевым индексом как компоненту вектора-аргумента;

Некорректная точность аппроксимации (illegal tolerance) — это сообщение отмечает выражение, использующее TOL интеграл, или вхождения Root, Find или Minerr, для которых TOL 3> 1 или TOL <^ 0. Для устранения этой ошибки нужно где-либо выше отмеченного выражения установить значение TOL между нулем и единицей;

Неопределенная размерность — выражение с единицами измерения возводится в степень, включающую дискретный аргумент или вектор. Mathcad не может определить размерность результата, который будет изменяться в зависимости от показателя степени. Если выражение имеет размерность, его можно возводить только в степень с фиксированным вещественным показателем;

Не определено (undefindet) — показанное в негативном изображении имя функции или переменной не определено. Чтобы его определить, введите имя переменной с последующим двоеточием (:) и выражение или число, ее определяющее. Это сообщение часто означает, что для определения переменной использован знак равенства (=) вместо двоеточия. Для создания определения следует использовать двоеточие. Если используется знак равенства, Mathcad считает, что нужно вычислить значение переменной. Это сообщение также появляется при некорректном использовании переменной в глобальном определении. Если переменная используется в правой части глобального определения, она должна быть определена глобально выше него. Если используется локально определенная переменная или переменная, глобальное определение которой находится ниже места ее использования, Mathcad отмечает, что переменная не определена. Сообщение «не определено» часто указывает на то, что где-то выше в рабочем документе содержится ошибка. Если определение некорректно, то ниже в документе любые выражения, зависящие от этого определения, показываются в негативном изображении;

Неправильный диапазон (illegal range) — дискретный аргумент определен неправильно. При определении диапазона следует использовать одну из следующих форм записи:

Rval: =nl. п2 Rval: =nl, n2. п2

Это набирается нажатием клавиш Rval: nl; n2 и Rval: nl,n2; n2 соответственно. В определении диапазона допустимо использовать максимум одну запятую и одну точку с запятой. Если используется вторая форма записи, величина п2 должна лежать между значениями п и п3, но не равняться п;

Нескалярная величина (no scalar value) — вектор или выражение, содержащее дискретный аргумент, используются там, где требуется скалярная величина. Например, можно увидеть это сообщение при попытке ввести равенство вида х: = /, если / — дискретный аргумент. Нельзя определить один дискретный аргумент через другой непосредственно, для этого следует использовать выражения, подобные xi. Данная ошибка часто возникает при построении графиков, если ввести в поле ввода имя вектора х вместо xi;

Несовместимые единицы (incompatible units) — отмечает выражение, в котором складываются, вычитаются или выполняются иные операции с выражениями, имеющими различную размерность. Например, это сообщение об ошибке можно видеть при попытке:

сложить или вычесть два выражения, имеющие различную размерность, например 3 кг + 5 сек

создать вектор, матрицу или таблицу, в которой не все элементы имеют одинаковую размерность

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

Несовпадение размеров массивов (array size mismatch) — попытка произвести операцию с векторами или матрицами, размеры которых не подходят для этой операции. Многие операции требуют, чтобы их векторные аргументы были одного размера, например произведение или функции linterp и со/г. Сложение и вычитание векторов и матриц тоже требуют соответствия размерности. Умножение матриц требует, чтобы количество столбцов первой матрицы совпадало с количеством строк второй;

Нет соответствующего Given (no matching Given) — это сообщение указывает на функции Find или Minerr без соответствующего им слова Given. Каждый блок решения уравнений, начинающийся со слова Given, должен оканчиваться словом Find или Minerr;

Неуместная запятая (misplased comma) — запятая использована там, где ее не должно быть. Можно использовать запятую в одном из следующих случаев:

для разделения аргументов функций

для разделения первых двух элементов диапазона в определении дискретного аргумента

для разделения величин, откладываемых на чертеже вдоль одной оси

для разделения элементов в таблице ввода

для разделения нижних индексов элемента матрицы.

Использование запятой для любых других целей в Mathcad недопустимо;

Особенность — попытка вычислить функцию или выполнить операцию с недопустимым значением. Например, это сообщение можно видеть при делении на ноль или попытке обратить вырожденную матрицу (с нулевым определителем);

Отсутствует сходимость — Mathcad не способен вычислить результат интегрирования, дифференцирования, функции root, Find или Minerr с требуемой точностью. Для дополнительной информации см. описания соответствующих операторов и функций;

Ошибка в блоке (error in solve block) — можно видеть это сообщение при вычислении пользовательской функции, выражаемой через блок решения уравнений, содержащий ошибку. Для устранения данной ошибки устраните ошибку в блоке решения уравнений. (Если использовать блок решения уравнений непосредственно, не определяя через него функцию, можно получить детализированное диагностическое сообщение);

Ошибка в константе (error in constant) — Mathcad интерпретирует указанное выражение как некорректную константу. Mathcad воспринимает все начинающееся с цифры как константу. Если ввести цифру и непосредственно за ней несколько букв, Mathcad интерпретирует это как некорректную константу. Полный список всех возможных корректных форм констант приведен в разделе «Окончания чисел» приложения;

Ошибка в списке (error in list) — указанная функция содержит некорректный список аргументов. Правильное определение функции начинается таким образом:

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

Ошибка области определения (domain error) — попытка вычислить значение функции, имеющей аргумент, выходящий за область определения. Например, попытка вычислить 1п (0).

Ошибка файла (file error) — система столкнулась с ошибкой при чтении файла с помощью функции READ или READPRN. См. главу «Файлы данных», где описаны допустимые форматы файлов данных;

Переполнение стека определений (definition stack overflow) — использовано слишком мнот о вложенных функций;

Переполнение стека (stack overflow^ — вычисление выражения привело к переполнение внутреннего стека Mathcad. Это может быть результа ‘ом слишком сложного выражения или рекурсивного с пределения функции;

Переполнение (overflow) — попытка вычислить выражение, которое превосходит наибольшее число, которое может быть представлено Mathcad (примерно 10 307 ). Это может случиться не только когда велик сам по себе конечный результат, но и в случае превышения этого предела любым промежуточным результатом;

Потеряны значащие цифры (significance lost) — это сообщение отмечает попытку вывести функцию от величины, которая лежит за пределами диапазона, где зна чение функции может быть вычислено точно. Например, оно появится при попытке вычислить sin (10 100 ). Поскольку величина sin (IQi 00 ) зависит от совершенно определенных цифр числа IQi 00 , то любое значение, которое Mathcad сможет вернуть, не будет иметь значащих цифр. Вместо возвращения результата, точность которого не обоснована, Mathcad выдает данное сообщение;

Прервано (interrupted) — вы прервали Mathcad нажатием клавиши [Esc] при выполнении вычислений. Для пересчета помеченного выражения щелкните мышью на выражении и нажмите [F9] ;

Пропущенный знак операции (missing operator) — в выражении или уравнении пропущен один из знаков операции;

Пропущенный операнд (missing operand) — в выражении пропущен один из операндов. Например, это сообщение можно видеть при вводе знака плюс без ввода слагаемых и последующем нажатии знака равенства. Mathcad показывает поле ввода (маленький прямоугольник) на месте пропущенного операнда;

Размерность в невещественной степени — выражение с единицами измерений возведено в комплекснознач-ную или мнимую степень. Если выражение имеет размерность, оно может быть возведено только в вещест-веннозначную степень, иначе Mathcad не может определить единицы, в которых выражен результат;

Решение не найдено (did not find solution) — Mathcad не нашел решения системы уравнений. Чтобы блок решения уравнений выдал в качестве решения приближающий результат, используйте функцию Minerr вместо функции Find. Подробнее см. главу «Решение уравнений»;

Слишком большое выражение (equation too large) — для вычисления в Mathcad введено слишком большое выражение. Разделите выражение на два или более подвыражений;

Слишком большой нижний индекс (subscript too large) — попытка использовать нижний индекс, превышающий пределы, допускаемые Mathcad;

Слишком велико, чтобы отобразить (too large to display) — попытка вывести вектор или матрицу размера больше, чем допускается Mathcad;

Слишком мало аргументов (too few arguments) — указанное выражение содержит функцию со слишком малым количеством аргументов. Для встроенных функций число аргументов фиксировано; см. главу «Встроенные функции». Для функций пользователя число параметров зависит от определения, сделанного в рабочем документе;

Слишком мало ограничений (too few constraints) — это сообщение указывает на Find или Given с количеством ограничений, меньшим числа переменных. Добавьте несущественные ограничения или уменьшите число переменных, относительно которых ищется решение. Подробнее см. главу «Решение уравнений»;

Слишком мало элементов (too few elements) — это сообщение указывает на преобразование Фурье, кубический сплайн или функцию линейной интерполяции, применяемую для вектора со слишком малым количеством компонентов. Преобразование Фурье и обратное к нему требуют как минимум четыре элемента вектора;

Слишком много аргументов (too many arguments) — указанное выражение содержит функцию со слишком малым количеством аргументов. Для встроенных функций число аргументов фиксировано; см. главу «Встроенные функции». Для функций пользователя число параметров зависит от определения, сделанного в рабочем документе;

Слишком много индексов (too many subscripts) — использовано два или более нижних индекса для вектора либо три или более индекса для матрицы;

Слишком много ограничений (too many constraints) — в блоке решения уравнений используются более пятидесяти ограничений;

Слишком много точек (too many points) — попытка вывести на график точек больше, чем Mathcad может обработать для одного графика;

Слишком много файлов — открыто слишком много файлов с использованием таких функций доступа к файлам, как WRITEPRN, READPRN, или других функций этого типа. Одновременно таким образом может быть открыто не более 30 файлов. Выберите команду Присоединить к файлу из меню Файл, введите имя од ной из используемых файловых переменных и нажмите «Отсоединить»;

Только символьный оператор — попытка получить численный результат у выражения, которое должно быть вычислено только символьно. Некоторые операторы должны вычисляться только символьно, как описано в главе 17 «Символьные вычисления»;

Файл не найден (file not found) — система не нашла файла данных, указанного в качестве параметра для функции READ или READPRN, либо для импорта в графическую область.

Значение должно быть скаляром или матрицей маткад как исправить

Cendrillon, X в этом случае должно быть матрицей, а не списком. Задайте Х не как функцию, а как вектор. Для этого k используйте в качестве нижнего индекса для Х. При вычислении mean указывать k не надо.

2049 / 1437 / 730

Так тоже не работает, я пробовала

2049 / 1437 / 730

Я понимаю, но сделать так не могу. Скажите на какие кнопки жать? Выглядит-то у меня так же, а не работает

2049 / 1437 / 730

вы что разницу не видите,в определении среднего значения индекс k ставить не надо…

При чем тут среднее?

2049 / 1437 / 730

научитесь правильно ставить индексы в Prime 3.1

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

Сообщение от Cendrillon

Скажите на какие кнопки жать?

2049 / 1437 / 730

А что если я скажу вам, что так и делаю и никак иначе?

2049 / 1437 / 730

вот вам файл,там индекс надо ставить через клаву,а не так как показал

Вот за это спасибо))

2049 / 1437 / 730

Если кто-то столкнется с такой же проблемой, то матрицу надо создавать так: Операторы -> раздел «Векторы и матрицы» -> «Индекс матрицы» и дальше можно написать индекс.

Сообщения без ответов | Активные темы

Заголовок сообщения: MathCad 5.0.0.0 Значение должно быть скаляром или вектором

Добавлено: 16 сен 2019, 19:00

Зарегистрирован:
16 сен 2019, 18:57
Сообщений: 1
Cпасибо сказано: 0
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутации Уменьшить очки репутации

Нужно определить функцию f(x) и вычислить ее значение.Не пойму в чем дело…Изображение

в форуме MathCad

22 дек 2020, 12:34

в форуме MathCad

28 окт 2017, 09:57

в форуме Алгебра

01 июл 2019, 21:24

в форуме Комбинаторика и Теория вероятностей

12 янв 2019, 23:41

в форуме MathCad

25 июл 2015, 10:57

в форуме Линейная и Абстрактная алгебра

18 авг 2014, 09:23

в форуме Линейная и Абстрактная алгебра

27 авг 2018, 17:44

в форуме Аналитическая геометрия и Векторная алгебра

07 ноя 2017, 20:22

в форуме Механика

10 дек 2022, 11:59

в форуме Аналитическая геометрия и Векторная алгебра

18 сен 2014, 23:02

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group

Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru

Русская поддержка phpBB

RUSS1A Сообщения: 11 Зарегистрирован: Ср фев 15, 2012 10:55 pm

Значение должно быть скалярным

Маткад выдает ошибку при вычислении цикла: значение должно быть скалярным. Скриншот прилагаю. Прошу помочь советом. Спасибо

Изображение

RUSS1A Сообщения: 11 Зарегистрирован: Ср фев 15, 2012 10:55 pm

Сообщение RUSS1A » Чт фев 16, 2012 7:17 am

то же не считает:

This array index is invalid for this array

Изображение

RUSS1A Сообщения: 11 Зарегистрирован: Ср фев 15, 2012 10:55 pm

Сообщение RUSS1A » Чт фев 16, 2012 12:38 pm

В файле пример 1 и пример 2, ниже просто пробы пера — смотреть не надо.

VSI Сообщения: 305 Зарегистрирован: Вт мар 15, 2005 6:40 pm Откуда: Мариуполь

Сообщение VSI » Чт фев 16, 2012 7:27 pm

RUSS1A писал(а): В файле пример 1 и пример 2, ниже просто пробы пера — смотреть не надо.

По Вашему первому примеру:

Изображение

RUSS1A Сообщения: 11 Зарегистрирован: Ср фев 15, 2012 10:55 pm

Сообщение RUSS1A » Чт фев 16, 2012 9:57 pm

VSI, Спасибо, с первым примером разобрался: понял в чем была ошибка.

Второй пример я доработал с учетом исправлений в первом. Результат какой-то выводится, но не тот, что должен быть. Справа от программы написал решение при i=0. Решение не может быть равным 0;0, как выдает маткад. В чем же косяк?

Файл маткада прикладываю.

Изображение

RUSS1A Сообщения: 11 Зарегистрирован: Ср фев 15, 2012 10:55 pm

Сообщение RUSS1A » Пт фев 17, 2012 3:09 pm

все, разобрался. нули для «x» и «y» получаются из-за того, что цикл вайл не выполняется, а выше я эти переменные не задаю — они берутся по умолчанию «0».

Графики функций в MathСad

Очень просто построить график для этой функции, используя вычисление значения y для разных значений х. Для этой задачи в Mathcad используются переменные диапазоны.

Переменные диапазоны

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

Первая переменная приобретает значения от 0 до 3 при шаге 1. Вторая переменная имеет для первой позиции значение 3, для второй 6 и имеет границу 13. Первая переменная-диапазон задается как математическая область с использованием оператора [..].

Для того, чтобы ввести такое выражение, нужно на клавиатуре набрать [i:0..3]. Для определения второй переменной, нужно выполнить два шага.

1. Наберите на клавиатуре [j:3,], после запятой появится место для заполнения.

2. Наберите второе значение и верхнюю границу.

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

Использование параметров также доступно в переменной-диапазоне. Дальнейший пример показывает, как параметр может изменить длину переменной-диапазона.

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

При использовании переменной-диапазона как индекса массива, необходимо иметь ввиду, что все элементы переменной должны быть либо натуральными числами, либо нулем.

Нельзя переменную-диапазон получить по индексу. Если вы попробуете это совершить, то появится ошибка «Значение должно быть вектором»:

Что такое «вектор» в программе, мы обговорим в следующих уроках.

Наша функция

Мы найдем значение нашей функции для шести значений переменной-диапазона:

В ряду от 0 до 5 есть шесть значений. Присвоим переменной х эти значения с помощью подстрочного индекса.

Можно проверить значения индексов при помощи выражений:

Теперь может проверить значения функции

Для проверки всех значений нужно ввести [x=] и [y=].

Первый график

Теперь, когда мы знаем значения для x и y, то мы можем отобразить их на графике. Для этого зайдите во вкладку Графики -> Вставить график -> График XY.

Вы увидите, что в месте, которое вы обозначили, появятся оси и место для заполнения значения. Введите значение у.

Перейдите к месту для заполнения внизу и введите значение х. После чего нажмите [Enter]. Вы увидите график.

Элементы графика

Элементы графика отмечены на схеме внизу. Это:

  • Оси Х и Y
  • Легенды для осей
  • Фон графика
  • Линия графика
  • Метки на осях
  • Значения на метках.

Изменить размеры области, где помещен график можно так же, как и размер другой области. Чтобы выбрать график, нужно щелкнуть на нем мышкой с нажатой при этом клавишей [Ctrl]. Если вы подведете мышку к правому нижнему углу, то курсор изменится на двойную стрелку. Вы можете зажать мышку и потянуть для изменения размеров. Также вы можете перемещать оси графика. Наведите мышь на любую из осей и потяните в нужную сторону. Для изменения цветового фона графика нужно выбрать его во вкладке График -> Фон графика. Тип фона выберите прозрачным.

Так как мы брали для расчетов только несколько точек, то график вышел ломаным. В этом случае может иметь смысл вывод одних лишь точек. Для этого нужно в вкладке Графики -> Стили -> Символ выбрать символ круга. На линии отобразятся точки.

Выберите Стиль линии -> (нет) и линия графика пропадет. Так как символы достаточно мелкие, то придется увеличить размер кривой. При этом символы также вырастут в размере. Также можно изменить цвет кривой, сделайте его красным.

Сейчас посмотрите на метки и обозначения, которые есть возле них. Проведи медленно мышкой по этим меткам вдоль оси Y. Значения первой, второй и последней метки будут изменять размер в сторону больше, когда вы наведете на них. Первое и последнее из этих значений обозначают границы вывода графика. Изменяя второе значение, вы можете менять чисто меток на оси. Попробуйте изменить значение на второй метке на оси Y на 5, а на оси Х на 1.

Теперь выделите график нажатие мыши и во вкладке График -> Оси и выберите Выражение оси. Легенда будет исчезать, если вы нажмете в любую область вне графика и появляться снова, когда вы будете выбирать график. На нижеприведенном рисунке легенду заменяют две математические области с y и х.

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

Быстрое построение графика

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

Вводим функцию, график которой нам нужно построить.

Вставим далее график XY. Введите в первый заполнитель [y(x)], а во второй [x]. Теперь нажмите в любое место за пределами графика. Диапазон х поставьте в диапазоне от -10 до 10. Значения y примутся автоматически.

Резюме
  1. Переменная-диапазон — это комплекс значения. Переменные-диапазоны, которые используются в качестве индексов массива, должны иметь значения натуральных чисел или нуля.
  2. Все переменные-диапазоны должны иметь значение, шаг и верхнюю границу.
  3. Переменные-диапазоны с шагом 1 нужно вводить в порядке: имя переменной, оператор присваивания, начальное значение, две точки, верхняя границы, которая является последним значением).
  4. Если нужно ввести диапазон в другим шагом, отличным от 1, то сначала вводится два первых значения через запятую, а потом верхняя граница после двух точек.

График набора точек:

  1. Выберите количество точек, которые должны отобразиться на графике.
  2. Создайте переменную-диапазон, где укажите значения от нудя до нужной границы.
  3. Выполните определение для значения x. Для этого используйте имя переменной-диапазона в качестве подстрочного индекса.
  4. Проведите вычисление значений функции.
  5. Для вставки графика зайдите в Графики -> Вставить график -> График XY.
  6. Задайте имена переменных (в нашем примере x и y) в местозаполнителях.
  7. Нажмите в любое место вне области графика для его построения.

Для того, чтобы быстро построить график функции y(x) нужно:

Понравилась статья? Поделить с друзьями:
  • Mathcad все расчеты привели или к ошибке
  • Masteropc ошибка opcenum exe
  • Mathcad 15 неустранимая ошибка приложения relaunchusingcreateprocess
  • Mathcad 15 выдает ошибку
  • Mathcad 14 ошибка при запуске