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

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

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

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

По завершении работы цикла счетчик должен быть возвращен программой как результат ее работы.В коде функция checker будет иметь следующий вид:checker(i,j,field) :=free_position <— Оfor к e 0.. 7continueon error fieldil.jlfree_positionfree_position + 1 if field, . - 0free_positionОбратите внимание, как в коде функции checker учитывается, что вычисленные индексы могут соответствовать не существующей реально клетке. Для этого используетсяоператор on error. Как вы помните, выражение в левом маркере данного оператора проделывается тогда, когда выполнение выражения в правом маркере приводит к возникновению ошибки.

Если индексы не определяют конкретного элемента field, системазарегистрирует ошибку. При этом будет активизирован оператор continue и цикл перейдет к следующей итерации.Далее мы должны создать функцию, которая будет определять, в какую из свободных клеток нужно сделать ход с учетом правила Вансдорфа. Называться она будет optim_step.Параметры у нее будут следующие: индексы клетки, в которой находится конь, и матрица с информацией о предыдущих ходах фигуры. Алгоритм функции optim_step несложен.1. Запускаем цикл, перебирающий все варианты хода.2. Перейдя к очередному варианту хода, вычисляем индексы и проверяем, соответствуют ли они существующей и непосещенной еще клетке.

Если необходимые условия не выполняются, переходим сразу на следующую итерацию.3. Если клетка существует и свободна, вычисляем ее «рейтинг» посредством созданной ранее функции checker. Далее сравниваем полученное значение со значениемпеременной min_res, в которой хранится наименьший рейтинг из определенных напредыдущих шагах (изначально min_res необходимо присвоить значение, заведомо превосходящее наибольший из возможных рейтингов, то есть 8). Если рейтингклетки оказывается меньше значения min_res, данную переменную следует переопределить, присвоив ей его значение.

Также при этом в переменную best_step необходимо занести индекс вектора, описывающего данный ход.4. В качестве результата работы функции нужно возвратить переменную best_step,хранящую индекс вектора вложенного вектора step, который соответствует ходув клетку, из которой можно сделать наименьшее число ходов.4.9. Пример программирования: решение задачи Эйлера о ходе коня* 165На языке программирования функция optim_step может быть реализована следующимобразом:optim_step(i,j, field) :=min_res <— 10for keO.,7continueon error field. .,il,jlres <- checker(il,jl,field)continueif field.

-, = 0otherwise(beststep <r- к minres <- res) if res < min_resbest_stepНаписанные выше функции лишь вспомогательные. Непосредственно маршрут будетопределять функция solver. У нее будет три параметра: размерность матрицы, которуюнужно обойти, и индексы клетки, с которой необходимо начать движение. Алгоритмфункции solver будет следующим.1. Сначала, используя созданную еще для рекурсивного алгоритма функцию chess_field,создаем описывающую поле матрицу field.

Далее переопределяем значение элемента field, соответствующего клетке, с которой начинается обход, с 0 на 1.222. Запускаем цикл из п -1 итераций, где п — размерность матрицы (не п , так как первый ход делается вручную).3. На каждой итерации осуществляем один шаг вперед. Для этого с помощью функции optim_step определяем, в каком векторе вложенного вектора step находятсясмещения, описывающие нужный ход. Зная смещения, легко найти индексы клетки. Ход в нее должен заключаться в том, что значение соответствующего ей элемента матрицы field должно переопределяться с 0 на номер данного хода.4.

В качестве результата работы функции возвращаем матрицу field, содержащую маршрут обхода поля.Код функции solver:solver(n,i_first,j_first) :=field <- chess_field (n)field c , . c t <- 1i_first,j_nrst(i <- i_first j <- jfirst)for k e 2 .

. n 2next_step <-optim_step(i,j,field)^Г i <r- i + (stepV ^nextstepA,field. . < - ki.Jfieldj <- j + (step^ 1Vnextstep/.166 •Глава 4. ПрограммированиеГотово. Проверяем эффективность созданной программы для матрицы 8x8 в случаеиспользования в качестве начальных двух разных клеток:f55 64 13 32 47 28 11 3014 33 54 57 12 31 48 2763 56 61 46 53 50 29 1034 15 58 51 60 43 26 49solver(8,4,0) =solver(8,3,3) =1 62 45 42 19 52 9 4016 35 20 59 44 41 6 2521 2 37 18 23 4 39 81^36 17 22 3 38 7 24 5 у27 30 17 34 45 64 15 36>18 33 28 57 16 35 44 6129 26 31 46 63 60 37 1432 19 58 1 56 47 62 4325 2 55 52 59 42 13 3820 51 22 41 48 53 10 73 24 49 54 58 39 1250 21 4 23 40 11 69Правило Вансдорфа доказало, что его не зря помнят уже почти 200 лет.

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

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

Смысл этого действия заключается в том, что при наличииклеток с одинаковым рейтингом ход делается именно в ту, которая соответствует верному маршруту. Всего вариантов организации ходов в иерархию 8!=40 320. Если запастись терпением, всегда можно найти такую последовательность ходов, при которой правило Вансдорфа будет работать безупречно.Глава 5.Комплексные числаОдним из крупных достоинств системы Mathcad является наличие полной поддержкиработы с комплексными числами в их традиционной форме представления (калькуляторы и электронные таблицы обычно рассматривают комплексные числа как пару действительных). Более того, комплексные числа — это основной тип чисел в Mathcad.Большинство математических операций программа по умолчанию проводит именно надкомплексными числами.

К примеру, при аналитическом и численном решении уравнений определяются как действительные, так и мнимые корни. Функция комплексногопеременного может быть легко проинтегрирована. Большинство встроенных функциймогут принимать как действительные, так и комплексные аргументы. Многие встроенные функции сами могут возвращать комплексные значения при определенных величинах аргументов. Например, логарифм отрицательного числа в Mathcad существует и равен соответствующему комплексному числу.Пример 5 . 1 . Комплексные числа в расчетах различных типовMathcad позволяет найти квадратный корень и логарифм отрицательного числа:-2 = 1.414iln(-10) = 2.303+ 3.142iПри аналитическом и численном решении уравнений могут быть получены комплексные корни.Аналитическое решение:2х + 1 = 0 solve,х —>Численное решение:х:=2 + iroot1,зфНПри проведении математических операций следует всегда помнить, что для большинства из нихимеют смысл и комплексные операнды.

Поэтому, получив, например, мнимое значение интеграла, не удивляйтесь, а тщательно проверьте правильность определения пределов.168Глава 5. Комплексные числаln(x)1 112. 22d x simplify —> -2-е + 2 - i - e + 2-е -тг- еln(x)dx= 7.062+ 3.297iПредельно внимательным нужно быть и в случае некоторых арифметических операций. Так, абсолютно идентичные с алгебраической точки зрения записи кубическогокорня из отрицательного числа, в виде степени 1/3 и специального значка, в Mathcadразличаются принципиально: в первом случае число рассматривается как комплексное, во втором — как действительное. В результате для их подсчета реализуются различные алгоритмы, что приводит к получению несхожих ответов.11[(-3) = -1.442(-3) 3 = 0.721- 1.249iБольшим достоинством Mathcad является то, что комплексное число может быть нетолько непосредственно получено при вычислениях, но и быть использовано в нихв качестве переменной или параметра. Эффективность расчета при этом совершенноне снизится.ln(3-i+l) = 1.151+ 1.249iesm— | = 1.426-0.45i8-x,-1-i+ edx —> -eВведение комплексного числа в Mathcad имеет некоторые особенности.• Проще всего можно ввести мнимую единицу, использовав соответствующую кнопку панели Calculator (Калькулятор).• Чтобы задать мнимую единицу с клавиатуры, нельзя просто нажать клавишу I, таккак при этом она будет воспринята системой как неизвестная переменная.

Для корректного задания мнимой единицы сначала введите цифру 1 и лишь затем i (ноне 1-i).)•В западной научной литературе иногда принято обозначать мнимую единицу не какi, а как j . В Mathcad имеется возможность замены символа мнимой единицы с помощью параметра Imaginary Value (Мнимая единица) на вкладке Display Options (Параметры отображения) окна Result Format (Формат результата), вызываемого изменю Format (Формат). Однако изменения, произведенные описанным параметром,коснутся лишь выражений ответа. Для задания же исходных данных с мнимым числом в виде буквы j нужно просто непосредственно ввести его с клавиатуры.Пример 5.2.

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

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

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

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