Концепция программно-методического продукта «Лабораторный практикум по вычислительной математике»
Вид материала | Практикум |
3Технические средства реализации практикума 3.4MathCAD (возможен вместо MATLAB) 3.5Распределение лаб между различными средствами В математическом пакете Лабораторная работа |
- А. М. Горького Кафедра алгебры и дискретной математики Щербакова В. А. Лабораторный, 418.72kb.
- Липатов Петр Иванович, учитель биологии; Липатова Людмила Николаевна, учитель биологии, 620.01kb.
- Стандарт по математике, примерные программы, авторские программы входят в состав обязательного, 147.44kb.
- Практикум по химии Анкудимова И. А., Гладышева, 2202.13kb.
- Стандарт по математике, примерные программы, авторские программы входят в состав обязательного, 144.4kb.
- Стандарт по математике, примерные программы, авторские программы входят в состав обязательного, 143.91kb.
- Учебно-методический комплекс дисциплины «лабораторный практикум по бухгалтерскому учету, 3221.38kb.
- Учебное пособие Санкт-Петербург 2000 удк 681, 344.56kb.
- Генезис развития теории и методики программно-методического обеспечения обучения, 145.89kb.
- Жигалов М. С., Мойсеяк М. Б. Лабораторный практикум по технохимическому контролю чайного, 572.07kb.
3Технические средства реализации практикума
[Данный раздел неинтересен для большинства участников проекта]
Ввиду недостаточного числа «идеально подходящих» участников проекта, необходимо использовать всех имеющихся людей и по максимуму использовать все имеющиеся у них наработки. Следует по возможности ничего не делать «с нуля»; а то, что «с нуля», следует делать наиболее экономным способом. Из этого следует, что необходимо использовать довольно разнообразные программные средства: два языка программирования (C++ и Java; а также Fortran для проверочных программ) и один математический пакет (MATLAB). Причины выбора этих инструментов указаны в подразделах этого раздела.
Примечание. В курсе «Нелинейных вычислительных процессов» будет использоваться язык программирования Fortran (на нем написаны все имеющиеся лабы; писать на Fortran дешевле, чем на C++, но практически невозможно писать графический интерфейс), а также математический пакет – прежде всего, для аналитического преобразования формул и для представления областей устойчивости, монотонности и n-ого порядка аппроксимации (имеются наработки в MathCAD, хотя логичнее тот же MATLAB).
3.1Java
Достоинства:
- На этом языке пишут все студенты базовой специализации при кафедре, причем есть и другие каналы поиска Java-программистов (которые уже привели к двум желающим участвовать в проекте, причем потенциальных кандидатов еще много).
- На этом языке имеется ряд прототипов (задача Коши для ОДУ, линейное и нелинейное уравнения теплопроводности).
- На этом языке у нас (у А.Евдокимова) имеются как собственные математические библиотеки (нелинейные АУ, ОДУ), так и библиотеки по графическому интерфейсу.
- Один и тот же код, написанный на Java, можно использовать как для Интернет-версии лабы (апплет), так и в рамках обычного приложения.
- В Java больше всех остальных языков развиты возможности по подключению к программе новых модулей («плагинов») – вплоть до редактирования собственного исходного кода с его компиляцией и загрузкой без перезапуска программы. Это позволяет не только реализовать механизм обновления программ, но и дать студентам возможность писать код для систем уравнений и (если потребуется) для численных методов.
- Программы на Java является межплатформенными, так что они без всяких изменений (даже без перекомпиляции) могут быть запущены под Linux.
- Для Java существуют хорошие свободные средства разработки, то есть не требуется покупка лицензии (вопрос лицензионной чистоты важен, так как планируется дальнейшая продажа практикума в другие вузы).
Недостатки:
- Большие требования по памяти (а также чуть меньшая скорость вычислений) мешают применению Java к вычислительно сложным задачам (на базе уравнений в частных производных).
- Число свободно распространяемых математических библиотек для Java меньше такого числа для Си и Fortran.
- На Java не пишут большинство студентов МФТИ (в курсе информатики используется язык Си, который ближе к С++, чем к Java).
3.2С++
Достоинства:
- На С++ написаны все те прототипы лаб, которые сейчас используются в практикуме.
- На С++ можно писать эффективно с вычислительной точки зрения.
- Имеется С++-код, прилагаемый к известному учебнику Numerical Receipts.
- На С++ относительно легко делать графический интерфейс.
Видимо, стоит использовать среду разработки Microsoft Visual Studio (Visual C++):
- Эта среда обычно используется студентами в курсе информатики для написания собственный программ (у МФТИ есть академическая лицензия от Microsoft, которую, правда, нельзя использовать для разработки коммерческих продуктов).
- Эту среду удобно использовать в практикуме для изменения вычислительных алгоритмов (если это потребуется).
Недостатки:
- Затруднительность портирования программ под Linux (в случае, если это потребуется), особенно в случае использования продукта Microsoft.
- Разработка на С++ дороже, так как требует очень высокой квалификации (как по причине сложности языка, так и по причине того, что легко допустить ошибку).
- Недостаток в данный момент на кафедре C++-программистов, за исключением высококвалифицированных ученых.
3.3МATLAB
Достоинства:
- Большинство экспертов признают, что среди 4 самых распространенных пакетов для вычислительных задач лучше всего подходит MATLAB (остальные пакеты либо более сильны в символьных вычислениях, либо имеют более наглядный пользовательский интерфейс, да и то последнее утверждение весьма спорно).
- MATLAB – самый распространенный пакет в практических приложениях, в т.ч. среди ученых, занимающихся мат. моделированием (лишь среди ученых-теоретиков более распространены Maple и Mathematica). Во многом, это благодаря существованию и постоянному пополнению плагинов к пакету (toolboxes), которые приспособлены к конкретным практическим задачам. Распространенность пакета важна для заинтересованности студентов в его изучении.
- MATLABу нет равных с точки зрения расширяемости и организации его файлов: в частности, достаточно сложная программа может выглядеть очень компактно и понятно, если правильно спроектировать вызываемые в ней функции.
- MATLAB имеет богатые возможности настройки разнообразных графиков.
- На MATLABе можно достаточно легко генерировать свой графический интерфейс, что делает его похожим на обычную (привычную пользователям) программу
- Версии MATLAB существуют под несколько платформ, поэтому практикум на основе этого пакета может быть использован под Linux.
Недостатки:
- Поиск показал отсутствие серьезных русскоязычных методических разработок по применению MATLAB именно к вычислительной математике (он иногда применяется лишь в простых курсах, где студенты используют готовые функции MATLAB, но не реализуют численные методы). Это, видимо, связано с тем, что MATLAB сложнее (чем MathCAD) для «рядового преподавателя», поэтому некому делать такие разработки. Впрочем, этот недостаток может оказаться достоинством, поскольку разрабатываемый практикум должен обладать существенной новизной.
- Первое знакомство с MATLABом происходит очень долго – вследствие его Unix-подобной ориентации на интерфейс командной строки.
- Пока не найдено ни одного специалиста по MATLAB на кафедре.
3.4MathCAD (возможен вместо MATLAB)
Достоинства и недостатки MathCAD противоположны тому, что написано для MATLAB:
Достоинства:
- Максимальная наглядность интерфейса (способствующая очень быстрому пониманию готовых документов MathCAD); в т.ч. запись формул в их естественном виде, неприменение имен функций для большинства математических операторов, в том числе при символьных вычислениях.
- Расположение кода численных методов рядом с их результатами, форматированными комментариями, аналитическими выкладками и т.п. (это способствует лучшему усвоению материала)
- Имеется большой задел по написанию учебных документов на MathCAD (часть их используется в курсе «Нелинейные вычислительные процессы» и в курсе «Применение компьютеров в научных исследованиях» на ФАКИ).
Недостатки:
- Трудоемкость написания сложных программ в MathCAD «с нуля» (людям, умеющим программировать, проще делать сложные задачи в любом другом пакете, хотя для простых задач MathCAD «экономичнее»).
- Затруднительность отладки программ в MathCAD.
- Относительно небольшой (по сравнению с другими пакетами) набор встроенных функций и возможностей научной визуализации.
- Невозможность использования лаб на основе MathCAD под ОС Linux.
3.5Распределение лаб между различными средствами
Программы на языке Java, а тем более программы в математических пакетах, требуют достаточно много вычислительных ресурсов, поэтому наиболее ресурсоемкие лабы по уравнениям в частных производных будут реализованы, в основном, на языке C++. Среди них много сложных тем, поэтому только некоторые их этих тем (наиболее простые) претендуют на повторение в виде указаний студентам по разработке программы «с нуля» (видимо, это одномерные линейные задачи: решение уравнения переноса явными методами, а также уравнения теплопроводности неявными методами с использованием прогонки). Что касается тем, сложных в программном смысле (например, требующих сложной, но стандартной визуализации), то здесь наиболее правильным выбором является готовая программа в математическом пакете (см. ниже).
Лабы на Java будут делаться с использованием общего «контейнера» учебных программ (обладающего достаточно большим количеством общих для разных лаб функций по визуализации, сохранению в файлы, сравнению расчетов, измерении скорости и др.). Как следствие, чем более похожими друг на друга (по структуре) будут лабы на Java – тем более просто будет устроен «контейнер» лаб (это не только сократит затраты на его разработку, но и сделает более понятным в использовании). Поэтому на Java будут реализованы те лабы, которые имеют много общего: это лабы, вычисляющие (непрерывные и сеточные) функции одной переменной и проводящие операции с ними.
В математическом пакете, конечно, можно делать абсолютно все лабы (даже требовательность к вычислительным ресурсам является не очень существенным фактором, поскольку мощность компьютеров сейчас вполне достаточна). Однако по рассмотренным выше причинам (см. раздел 2.2) все лабы делать в пакете не имеет смысла, поэтому следует выбирать те лабы, по отношению к которым либо пакет дает дополнительные возможности, либо обычная программа требует слишком больших трудозатрат. Большие трудозатраты требуются обычно на многомерную графику, в то время как стандартные функции мат. пакета реализуют такую графику без всяких проблем. Есть также возможности мат. пакетов, которые невозможно хорошо реализовать в обычных программах; к ним относятся, прежде всего, символьные вычисления, которые позволяют проводить аналитические выкладки (для дифференцирования исходной задачи, для решения уравнений аппроксимации численного метода и т.д.). На данный момент символьное дифференцирование и решение уравнений аппроксимации решено делать на Java, а от многомерной решенное отказаться, поэтому все лабы практикума будут делаться НЕ в математическом пакете (однако некоторые лабы будут дублироваться в мат. пакете с тем, чтобы заинтересованные студенты могли выбрать более перспективный «инструмент» выполнения лабы).
В нижеприведенной таблице зеленым цветом показаны ячейки, для которых рекомендуется разработка данной лабораторной работы на базе данного средства и методики. Неокрашенные непустые ячейки – это места, для которых это сделать удобно, если возникнет необходимость. Если в ячейке таблицы указано «проф.», будет использоваться «не слишком учебная» («профессиональная») программа; в остальных случаях («уч.») имеется четкий «учебный маршрут». Если в ячейке таблицы написано «ред.», это означает, что код программы будет редактироваться студентами (если «(ред.)» – может редактироваться).
Лабораторная работа | Приоритет | Применение программы | Написание программы | |||||
№ | Название | Java | C++ | Пакет | Язык (С/C++ или др.) | Пакет | ||
1 | Погрешности вычислений | средний | уч. | | | | | |
2 | СЛАУ. Спектр матриц | высокий | уч. | уч. (ред.) | уч. ред. | с нуля (но не спектр) | с нуля | |
3 | НАУ. Локализация корней | средний | уч. | уч. | уч. ред. | используя код СЛАУ | с нуля | |
4 | СНАУ. Поиск минимума | низкий | уч. | | уч. ред. | | с нуля | |
5 | Интерполяция | средний | уч. | уч. (ред.) | уч. | | | |
6 | Ср.-кв. приближение | низкий | уч. | уч. | уч. | | | |
7 | Дифференцирование | низкий | уч. | уч. | уч. | с нуля | | |
8 | Интегрирование | низкий | уч. | | уч. | (слишком легко?) | | |
9 | Зад. Коши для Нелин. СОДУ | оч. выс. | проф. | уч. | уч. | с нуля (нежест, явные) | | |
10 | Кр. задача для ОДУ и СОДУ | низ./выс | уч.? | уч.{лин.} | уч. | (используя ЗК, СНАУ) | | |
11 | Уравнение переноса, волновое уравнение | высокий | | уч. (ред.) | уч. ред. | с нуля (ур.переноса) | с нуля | |
12 | Линейное и нелинейное (uk) уравнения теплопроводности | высокий | | уч. (ред.) | уч. ред. | с нуля | с нуля | |
13 | Конв.-дифф. уравнение | низкий | | проф. | | | | |
14 | [2D ур. теплопроводности] | оч. низ. | | | | | | |
15 | Уравнение Пуассона | высокий | уч. | | уч. | | с нуля | |
| Итого лаб: | | 7 | 4 | 4 | | |
Концепция практикума по вычислительной математике. Версия 0.7