Главная » Просмотр файлов » Гурский Д., Турбина Е. - Вычисления в MathCad 12

Гурский Д., Турбина Е. - Вычисления в MathCad 12 (1077322), страница 36

Файл №1077322 Гурский Д., Турбина Е. - Вычисления в MathCad 12 (Гурский Д., Турбина Е. - Вычисления в MathCad 12) 36 страницаГурский Д., Турбина Е. - Вычисления в MathCad 12 (1077322) страница 362018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 36)

ПрограммированиеОднако избежать подобных ситуаций все же можно. Для этого следует использоватьспециальный оператор обхода ошибки on error (вводится также сочетанием Ctrl+«'»):i on error iДанный оператор по своему синтаксису полностью соответствует условному оператору if. В правый его маркер следует ввести величину или выражение, ошибка в вычислении которого должна быть зарегистрирована. В левом маркере следует прописатьусловие, которое должно быть выполнено при возникновении ошибочной ситуации.В лучшем случае таким образом можно исправить или обойти возникшую проблемуТак, при численном решении уравнения, если приближение оказывается в окрестности экстремума и возникает ошибка при делении на производную, можно, используяоператор on error, не допустить остановки работы алгоритма из-за такой незначительной трудности.

Для этого нужно просто прибавить к значению приближения небольшую величину (данное условие прописывается в левом маркере оператора ошибки, а в правый соответственно заносится сама расчетная формула). Это, с одной стороны, ничегоне изменит в эффективности определения результата, с другой — позволит предельнопросто разрешить трудную ситуацию.Пример 4.19. Создание функции численного решения уравненийс использованием оператора on errorNev(f,xO,TOL) :=D(x) <- - f ( x )dx(n<-0whilef(x) := x - sin(x)-x+ 1x^xO)f/x^l>TOLNev(f, 1,0.0001) =-0.77246.-5x <- x + 0.0001 on errornxfl[-0.77246)=-2.18x 10n, 4— xn+1-° D ( x .)n <- n + 1В некоторых случаях (когда причина сбоя точно известна) оператор ошибки можетбыть заменен условным оператором.

Так, условие обхода проблемной ситуации в примере 4.19 можно задать и как:ifx)х <-х +0.0001 ifnn^4В тех случаях, когда разрешить возникшую проблему невозможно, следует ограничиться выводом сообщения, раскрывающего причину остановки программы. Сделатьэто можно очень просто, присвоив переменной, значение которой выводится как ответ,соответствующую текстовую строку.4.6. Поиск ошибок в программах* 151Пример 4.20.

Вывод сообщения об ошибкеТ(х) := "can't devide by zero"on error2x -lТ(тс)= 0.113T(0.3) = -1.099T(l) = "can't devide by zero"Обратите внимание, как интересно задана функция в примере 4.20: оператор on errorвозвращает значение самого выражения в том случае, если в нем нет ошибки.Если вас не устраивает форма сообщения в виде текстовой строки, то его можно вывести в принятой в Mathcad форме, то есть в виде желтой всплывающей подсказки. Дляэтого нужно использовать специальную функцию error(«S»), где S — текст сообщения(рис.

4.2).Т(х) := error(" can't devide by zero!!! ")on errorx2-lТ(я) = 0.113T(0.3) =-1.099| can't devide by zero!!! |Рис. 4.2. Использование функции error4.6. Поиск ошибок в программахДо тех пор пока вы не приобретете достаточно опыта, ваши программы вряд ли будутработать с первого же запуска. Почти наверняка они будут содержать множество ошибок и незамеченных опечаток. Конечно, большинство из них может быть легко найдено, но если вы сталкиваетесь с ошибкой такого типа впервые, определить ее расположение будет непросто. Особенно это касается больших программ, запутаться в которыхочень и очень легко даже опытному программисту.В универсальных языках программирования высокого уровня ошибки обычно находитсама система при процедуре, называемой компиляцией.

В Mathcad подобной процедуры нет, однако возможность быстро и легко определять ошибки в синтаксисе алгоритма имеется.Рассмотрим конкретную ошибочную ситуацию (рис. 4.3): при попытке использованияпрограммы, вычисляющей интеграл по методу трапеций, система выдает сообщениеThis variable is undefined (Эта переменная не определена). При проверке всех используемых в программе переменных они оказываются заданными верно. В чем же реальнаяпричина сбоя? У авторов этой книги, столкнувшихся с данной проблемой при написании раздела об интегрировании, самостоятельно найти ошибку не получилось. Если неполучится и у вас, то стоит обратиться за помощью к системе.

Для этого щелкните правой кнопкой мыши на функции, в которой возникла ошибка. При этом откроется ееконтекстное меню, в котором следует выбрать команду, расположенную в его верхнейстроке, Trace Error (Поиск ошибки). Если вы это сделаете, то откроется специальная одноименная панель, содержащая различные параметры поиска ошибки.1 5 2 •:• Глава 4.

ПрограммированиеInt(f,a,b,n) :=» * !=*.-.)for i e 1.. n^h+a)+fl(l-l).h+a]jIn.t(f,0,w,| This variable is undefined. |S<- S + sРис. 4.З. Ошибочная ситуацияПанель Trace Error (Поиск ошибки) (рис. 4.4) содержит несколько кнопок.Trace Error1« First< PreviousРис. 4 .

4 . Панель Trace ErrorLJ First (Первая). Если нажать эту кнопку, то тот фрагмент программы, который вызываетошибку, будет выделен курсором (рис. 4.5). В нашем случае будет выделен сомножитель h в первом выражении в цикле for. Проанализировав, где именно в выделенном выражении может быть ошибка, обнаруживаем, что между h и скобкой с полусуммой функций нет знака умножения. А это означает, что h рассматривается какфункция со значением аргумента, равным величине в скобках. Однако, так как h неявляется функцией одного переменного, запись такая некорректна, что приводитк появлению сообщения об ошибке.

Кстати, с учетом того, что знаки умножения ноумолчанию в Mathcad не отображаются, найти ошибку такого рода очень сложно.Tiace ErrorМех» >Last » 1| illegal function value!Рис. 4 . 5 . В программе найдена ошибка•Previous (Предыдущая). Так как влияние ошибки распространяется иногда уровнями (например, при неправильном задании индекса), бывает нужным произвестиисправления в разных фрагментах программы. Чтобы подняться на уровень выше,и используется данная команда.• Next (Следующая).

Команда, идентичная предыдущей по функциям, но противопо. ложная по направлению.4.7. Символьное вычисление программ * 1 5 3•Last (Последняя). Команда помещает курсор на последний уровень распространения ошибки.• Close (Закрыть). Команда служит для сворачивания окна Trace Error (Поиск ошибки).Использовать панель Trace Error (Поиск ошибки) можно не только в случае программ,но и везде, где есть последовательность выполнения каких-то действий.Объективно говоря, производить отладку программ Mathcad довольно сложно.

ПанельTrace Error (Поиск ошибки) и всплывающие сообщения могут помочь лишь тогда, когдадопущена синтаксическая ошибка. Если же ошибка имеется в самом алгоритме, то система ее, естественно, не обнаружит. Как же действовать в подобном случае? В первуюочередь нужно внимательно проанализировать код алгоритма. Вполне вероятно, чтопричина сбоя — это обычная описка. Если же ничего явно неверного в коде обнаружено не будет, программу следует исследовать в работе.

Для этого обычно нужно проверять, как меняются переменные, когда срабатывают условия, или сколько итерацийделают циклы. Полученную информацию необходимо записывать в вектор, которыйдолжен быть возвращен как результат работы программы.4.7. Символьное вычисление программАналогично большинству операторов и встроенных функций, программы Mathcadмогут быть просчитаны как численно, так и символьно.

Однако аналитический расчеталгоритмов пользователя не согласован с операторами on error и return, поэтому он может быть произведен лишь в случае программ, в коде которых данных операторов нет.Также символьно невозможно рассчитывать рекурсивные алгоритмы. В качестве примера аналитически просчитываемой программы можно привести создание функции,находящей ряд Фурье для произвольной функции.Пример 4.21. Символьное вычисление программ•2-яFur(f,n):= s «-2-яf(t) dtОm<- 1while m < ns <- s + —яiff(t)cos(mt) dtcos(mt) +f(t)sin(n>t) dt-sin(m-t)я Jnm+f(t):=t+ яFur(f,2) -» 2-яcos(t) + 3-sin(t)яcos(t) + 3-sin(t)яsin(2t)212Fur(f,4) ->• 2-я1212sin(2-t)cos(3t) + sin(3t)9-яsin(4-t)4154 •Глава 4.

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

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

При вызове функции, вызывающей другую функцию, создается два объектаактивации: первая функция «ждет», пока выполнится вторая, и лишь затем выполняется сама. Никаких принципиальных различий от того, вызовет ли функция своеопределение или определение другой функции, нет: в любом случае будет создано дваобъекта активации.Классическим примером рекурсивной функции, приводимым практически в любойкниге по программированию, является функция, вычисляющая факториал числа(п!=1-2-3'...(п-2)-(п~1)'П). Не будем нарушать традицию и мы (см.

Характеристики

Тип файла
PDF-файл
Размер
47,8 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6384
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее