recursive definition mathcad что это
Exponenta.ru
Образовательный математический сайт
Проблемы с рекурсией в MathCAD
Модератор: Admin
Проблемы с рекурсией в MathCAD
Сообщение Gintonic » Ср мар 30, 2005 11:34 pm
Приветствую всех участников и гостей форума!)
Моя проблема заключается в следующем:
Я создал алгоритм, обоабатывающий некую матрицу и делающий при этом n-ое количество итераций(рекурсивных вызовов), где n растет пропорционально размеру входной матрицы. Через 1,5 часа после тестирования алгоритма(!) Matchcad выдает сообщение о том, что, видите ли, превышено число рекурсий или оно infinite! ))
А теперь внимание, вопрос )):
где в маткаде стоит ограничитель, отлавливающий число итераций и рекурсий и как его поменять, если это вообще возможно?
И еще одно. Вопрос для тех, кто много программирует в Маткад: в мануале написано, что если использовть вместо рекурсии циклы(loops), то программа будет выполняться «more faster». )) На сколько, все-таки, быстрее будет итерация по сравнению с рекурсией? Критическое ли это значение, чтобы начать переписывать всю программу с использованием циклов?
Сообщение uni » Чт мар 31, 2005 10:42 am
> где в маткаде стоит ограничитель, отлавливающий число итераций и рекурсий
Я тут попытался поискать и пока не нашёл, но вроде бы глубину эту можно посмотреть следующим образом. См. картинку ниже для Mathcad 12.
Сообщение uni » Чт мар 31, 2005 10:45 am
Для Mathcad 11. Чтобы не вылететь из программы без сохранения данных можно попробовать использовать onerror().
Сообщение VFO » Чт мар 31, 2005 1:52 pm
Сообщение uni » Чт мар 31, 2005 3:10 pm
To VFO. Судя по справке, приведённое вами решение здесь не поможет, т.к. эти новые индексы решают проблему одинаковых имён функций так как это сделано в языке с++, например. Т.е. вводя пространства имён, а не для управления рекурсиями.
В этом примере мы просто вводим новую функцию пользователя, определяя её через функцию стандартной библиотеки. Но это, как мне кажется, не имеет отношения к поставленному вопросу. Здесь мы как раз избавляемся от рекурсии.
Мне лично показанные мной примеры кажутся немного странными, точнее их результаты. Как мне кажется глубина рекурсии слишком мала, т.е. всего получилось 100 вызовов функции в первом примере. Что-то тут не так.
Сообщение VFO » Чт мар 31, 2005 3:26 pm
Сообщение uni » Чт мар 31, 2005 4:11 pm
По-моему, (это чисто моё мнение) применение стилей это некий нестандартный трюк и не более того. Я сам люблю такими пользоваться.
> Проблема одинаковых имён функций и переменных в Mathcad давно решена
Function definitions are always recursive. If you define sin(x):= sin(x*?/180), then evaluate sin(90), Mathcad will enter an infinite loop, because the function sin on the right-hand-side of the equation is taken to be a recursive reference to the function sin on the left side. You can either choose different names for functions on either side of a definition, or use the namespace feature to clarify which version of a function you mean.
А по существу вопроса, какие есть соображения? Наверное этот вопрос надо на главном форуме задать, там вроде бы члены команды фирмы разработчика дают советы и отвечают на вопросы.
Сообщение uni » Чт мар 31, 2005 5:19 pm
> Это лично ваше решение или это «побочный эффект» некоторый, а может быть некое нововведение?
Сообщение VFO » Чт мар 31, 2005 7:38 pm
Сообщение uni » Чт мар 31, 2005 8:14 pm
Понятно. Вот краткая запись картинок сверху.
Обратное преобразование Лапласа передаточной функции
Вложения
123.rar (11.6 Кб, 22 просмотров) |
Выполнить преобразование Лапласа передаточной функции
Столкнулся с проблемой. Я по структурной схеме получил уравнение состояния, выхода.
Не получается взять обратное преобразование Лапласа от функции
Не понимаю, в чем проблема. Пробовал также взять от t, не получается.
Прямое и обратное преобразование Лапласа дробностепенной функции
Доброго времени суток. Мне нужно выполнить преобразование Лапласа функции.
Вложения
PID1.rar (27.9 Кб, 15 просмотров) |
Добавлено через 49 минут
Спасибо за помощь. Вопрос снят, нашел способ как посчитать значение инт. кв. критерия качества прямо в Матлаб.
Обратное преобразование Лапласа
Почему MathCad14 у меня неверно делает обратное преобразование Лапласа
Обратное преобразование Лапласа
Добрый вечер! Прошу Вашей помощи, форумчане. Имеется уравнение движения системы. 4 звена, для.
Обратное преобразование Лапласа
Доброго времени суток! Стоит задача выполнить обратное преобразование Лапаласа передаточной функции.
Обратное преобразование лапласа
Делаю кр по теории автоматического регулирования. Нужно изобразить переходный процесс, для чего.
Сообщения об ошибках в Mathcad
Таблица П4.1. Сообщения об ошибках
Возможные пути устранения
Сообщения об ошибках в численных вычислениях
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
По крайней мере один предел должен быть бесконечным
Когда для интегриро-
вания выбран алгоритм бесконечного предела, то по крайней мере один из пределов интеграла должен быть бесконечным
Для изменения алгоритма, использующего бесконечный предел, или для вычисления какого-либо другого интеграла щелкните на интеграле правой кнопкой мыши и измените алгоритм с помощью контекстного меню
Can only evaluate an n-th order derivative when n=0,1..5.
Можно вычислить n-й порядок производной, только когда п=0,1..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
Невозможно понять определение ранжированной переменной
Определение ранжированной переменной неверно
Вводя область определения ранжированной переменной, необходимо использовать один из следующих видов:
Cant understand this number
Невозможно понять это число
Это выражение содержит символ или десятичную точку там, где это непозволительно
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 столбца
Вы пытаетесь прочитать больше значений в файле данных, чем там имеется
Например, если файл данных имеет 10 значений, а записано выражение i : =1. 100
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 for help
Часто встречается при синтаксических ошибках
Проверьте синтаксис и порядок расположения формул в документе
Матрица, на которую Вы ссылаетесь, не имеет достаточно строк или столбцов
Введите имя матрицы с клавиатуры и нажмите знак «=», чтобы проверить число ее строк и столбцов
Integer too large/ Integer too small
Целое число слишком большое/ слишком маленькое
Это число слишком велико/мало для работы с ним
Если Вы работаете со встроенными функциями, то щелкните на имени функции и вызовите подсказку с помощью
Аргументы этой функции могут быть некорректны
Если Вы работаете со встроенными функциями, то щелкните на имени функции и вызовите подсказку с помощью
Live symbolics not available
Символьные вычисления неприменимы
См. также «Can’t converge to a solution»
Not enough memory for this operation
Для этой операции недостаточно памяти
Не хватает памяти, чтобы завершить это вычисление
Попытайтесь освободить немного памяти путем уменьшения массива или матрицы (Mat head тратит около 8 байт памяти на каждый элемент матрицы), или удаления каких-либо больших побитовых отображений, массивов, матриц
Эта матрица не может быть ни сингулярной, ни близкой к сингулярности
Матрица называется сингулярной, если ее определитель равен нулю. Матрица близка к сингулярной, если она имеет высокое число обусловленности (см. гл. 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
Эта функция не определена для одной или более точек
Попытка вычисления оператора или функции с неподходящими значениями
This function needs more arguments
Этой функции не хватает аргументов
Выделенное выражение содержит функцию с меньшим, нежели требуется, числом аргументов
This operation can only be performed on a function
Эта операция может быть произведена только над функцией
Этот аргумент должен быть функцией
Для встроенных функций щелкните мышью на имени функции и воспользуйтесь подсказкой
This operation can only be performed on an array. It can’t be performed on a number
Эта операция может быть произведена только над массивом. Она не может быть произведена над числом
Например, это сообщение появится, если переменная верхнего индекса определена как скаляр. Поскольку переменная верхнего индекса представляет собой столбец матрицы, то ее следует определять как вектор
Для поверхностных или контурных графиков массив данных должен иметь, по крайней мере, два ряда и два столбца
This operation can only be performed on a number or an array
Эта операция может быть произведена только над числом или массивом
Используемая функция или оператор требуют представления в виде константы, матрицы или вектора
This operation can only be performed on a string
Эта операция может быть произведена только над строкой
Используемая функция или оператор требуют представления в виде строки. Например строковые функции обычно требуют по крайней мере одного строкового аргумента
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
При использовании встроенных функций щелкните мышью на имени функции и нажмите клавишу
This variable or function is not defined above
Эта переменная или функция не определена выше
Имя неопределенной функции будет помечено красным цветом
Удостоверьтесь, что эта функция или переменнуя определена выше. Это сообщение появится, если переменная некорректно используется в глобальном определении. Эта ошибка часто свидетельствует о том, что другое уравнение выше в документе является ошибкой. В этом случае все выражения, использующие выражение с ошибкой, будут помечены красным цветом
Потеря значимости (исчезновение значащих разрядов)
Из-за ограничений, присущих представлению чисел на компьютере, числа, которые слишком малы, не могут быть представлены. Это сообщение появляется, когда выражение включает такое число. Иногда, особенно в сложных вычислениях, промежуточный результат будет слишком мал, и вся разрядная сетка заполнится нулями
Value of subscript or superscript is too big (or too small) for this array
Значение нижнего или верхнего индекса слишком велико (или слишком мало) для этого массива
Это выражение использует нижний или верхний индекс, который относится к несуществующему элементу массива
This is not a scalar. Press for help
Использован вектор или выражение с интервалами, или какой-то другой тип выражения, где требуется применение скаляра
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
Сообщение об ошибках в символьных вычислениях
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)
Символьный процессор не может выполнить требуемую операцию для данных аргументов
Это сообщение появится, если, например, применить скалярную функцию к массиву без использования оператора векторизации и выбрать команду Symbolics / Simplify (Символика / Упростить)
Для поиска численного решения уравнения символьный процессор пытается вычислить одну из своих встроенных функций за пределами области ее определения
No answer found; stack limit reached
Символьный процессор достиг предела своих возможностей без вычисления или упрощения, которое затребовал пользователь
Символьный процессор не смог найти точного решения уравнения
No closed form found for
Не найдено замкнутой формы для
Символьный процессор не смог найти интеграл или сумму, или произведение в замкнутой форме
Обычно результат применения символьной операции в неподходящих или некорректных выражениях. Символьные вычисления выражений с размерностями также приведут к появлению этого сообщения