русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Численные методы и программирование


Дата добавления: 2015-01-16; просмотров: 2517; Нарушение авторских прав


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

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

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



Среди книг, объединяющих изложение вычислительных алгоритмов с их реализацией в компьютерных программах, следует отметить «Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра» Уилкинсона и Райнша (М.: Машиностроение, 1976), охватывающий широкий класс алгоритмов решения систем линейных алгебраических уравнений, псевдообращения матриц, вычисления собственных значений и собственных векторов с исследованием области применения, подробным описанием вычислительных процедур и их АЛГОЛ-программ с оценкой точности, результатами тестирования, внимательным отношением к проблемам экономии памяти и скорости сходимости алгоритмов.

Язык ФОРТРАН представлен наиболее обширным списком пособий по численным методам:

· Плис А.И., Сливина Н.А. Лабораторный практикум по высшей математике. – М.: Высшая школа, 1983.

· Шуп Т. Решение инженерных задач на ЭВМ. Практическое руководство. – М.: Мир, 1982.

· Мак-Кракен Д., Дорн У. Численные методы и программирование на Фортране. – М.: Мир, 1977.

· Форсайт Дж., Малькольм М., Моулер К. Машинные методы математических вычислений. – М.: Мир, 1980.

Вычислительные алгоритмы с реализацией на языке БЕЙСИК приведены в «Справочнике по алгоритмам и программам на языке Бейсик для персональных ЭВМ» В.П. Дьяконова (М.: Наука, 1987) и в книге Я.Т. Гринчиши­на, В.И. Ефимова, А.Н. Ломаковича «Алгоритмы и программы на Бейсике» (М.: Просвещение, 1988).

Изложение алгоритмов вычислений с программами на языке ПАСКАЛЬ приведены в книге А.Е. Мудрова «Численные методы для ПЭВМ на языках БЕЙСИК, ФОРТРАН и ПАСКАЛЬ» (Томск: Раско, 1991).

Все известные авторам пособия по численным методам и их программной реализации базируются на процедурной методологии программирования и либо на отмирающих языках программирования (АЛГОЛ, ФОРТРАН), либо на учебных языках типа БЕЙСИК, ПАСКАЛЬ. Создание и использование в учебном процессе непрофессиональных учебных языков следует отнести к «детскому возрасту» компьютерного программирования, когда эта работа представлялась непостижимо сложной и недоступной для понимания большинством пользователей. Сегодня мы уже знаем, что для создания эффективных компьютерных программ недостаточно владения лексикой алгоритмического языка – необходим еще минимум знаний по архитектуре аппаратного обеспечения используемого компьютера, возможностях операционной системы и взаимодействию с ней языкового транслятора; набор этих знаний вполне доступен для освоения пользователю средних способностей, а использование учебных суррогатов алгоритмических языков (особенно на национальным языковом базисе типа известного русскоязычного школьного учебного языка) приносит больше вреда, чем пользы. Да собственно и такой первоначально учебный язык как ПАСКАЛЬ, пытаясь в эволюции своего развития достичь возможностей простого, лаконичного профессионального языка Си, перестал быть учебным, хотя и не стал профессиональным по удобству и возможностям, сохранив, тем не менее «учебное» многословие и громоздкость конструкций.

Численные методы – основа инженерного и научного программирования, решающего задачи создания и исследования математических моделей процессов, протекающих в объектах различной природы: финансовых потоков и ресурсов в экономике страны или отдельного предприятия, воздушных потоков в атмосфере, изменения напряжений в строительных конструкциях под действием внешних сил, траекторий движения летательных аппаратов, движения электронов на атомных орбитах под воздействием внешних электромагнитных полей, взаимодействия популяций видов в растительном и животном мире и т. п. Математические модели различных процессов принято представлять в общем случае в виде систем интегро-дифференциальных уравнений с обыкновенными или частными производными; разработка методов и программ для решения таких уравнений представляет собой основной комплекс задач инженерного и научного программирования, а, следовательно, и численного анализа в целом.

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

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

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

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

В больших алгоритмических языках (АDА, PL) предусматриваются сложные математические типы вроде матриц, но широко используемые малые языки высокого уровня (Си, Паскаль) не содержат этих возможностей и с точки зрения учебного курса по численным методам это хорошо, так как дает возможность глубоко изучить вычислительные алгоритмы, доводя их до программной реализации с сопутствующим вылавливанием алгоритмических ошибок.

Наиболее удобным инструментом для создания классов математических объектов является объектно-ориентирован­ное программирование и его поддержка в языке С++. Этот язык дает возможность варьировать методы создания математических объектов путем определения в классе необходимого количества конструкторов, осуществить переопределение стандартных операций для вновь созданных классов, использовать мощный механизм одиночного и множественного наследования свойств базовых классов в производных классах, создавать параметризованные классы и функции с подстановкой типов параметров в процессе конструирования соответствующих объектов. Последовательное наращивание иерархии математических типов на базе уже созданных позволяет существенно снизить трудоемкость программирования за счет исключения повторяющихся последовательностей действий и избежать внесения в программы новых ошибок.

Нам неизвестны пособия с систематическим изложением методов вычислений на базе объектно-ориентированно­го подхода в программной реализации на языке С++. Отчасти это объясняется известным консерватизмом нашей системы образования, ориентированной традиционно на использование Паскаля, а отчасти тем, что специалисты по программированию достаточно высокого профессионального уровня редко работают в наших учебных заведениях. Но уже сейчас во многих средних и высших учебных заведениях осуществляется преподавание языка С и С++ и предлагаемая работа может, по нашему мнению, оказать положительное влияние на эффективность учебного процесса в области вычислительной математики.



<== предыдущая лекция | следующая лекция ==>
Приближенные вычисления | Особенности машинных вычислений


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.291 сек.