Главная      Учебники - Разные     Лекции (разные) - часть 19

 

Поиск            

 

Лекция на тему "Взаимодействие математики и ит. История и перспектива" 4

 

             

Лекция на тему "Взаимодействие математики и ит. История и перспектива" 4

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Выпускная работа по
«Основам информационных технологий»

Магистрант

кафедры численных методов и программирования

Станкевич Алексей Александрович

Руководители:

д-р физ.-мат. наук Волков Михаил Васильевич,

ст. преподаватель Кожич Павел Павлович

Минск – 2008 г.

Оглавление

Оглавление.. 2

Список обозначений в выпускной работе.. 3

на тему "Взаимодействие математики и ИТ. История и перспектива". 4

Введение. 4

Глава 1. Обзор литературы.. 4

Глава 2. Методика исследования. 5

Глава 3. Основные результаты.. 5

3.1. Предыстория и история взаимоотношений ИТ и математики. 5

3.2. Основные сферы математики и ИТ. Взаимодействие в пересекающихся сферах. 7

Глава 4 Обсуждения результатов. 9

Заключение. 10

Список литературы к у.. 10

Предметный указатель к у.. 11

Интернет ресурсы в математической области исследования.. 12

Действующий личный сайт в WWW... 14

Граф научных интересов.. 15

Презентация магистерской диссертации.. 16

Список литературы к выпускной работе.. 17

Приложение 1. 18

Приложение 2. 21

Список обозначений в выпускной работе

ИТ — информационные технологии

Прото-ИТ — введенное автором обозначение состояния и развития идей ИТ до их оформления в самостоятельную область культуры

ПО — программное обеспечение

БПФ — быстрое преобразование Фурье

на тему "Взаимодействие математики и ИТ. История и перспектива"

Введение

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

В первой главе сделан обзор литературы затрагивающей рассмотренную тему.

В краткой второй главе указана методология исследования.

В третьей главе рассмотрены основные сферы деятельности математики и ИТ. Выявлены, на основе общих рассуждений и конкретных примеров связи между пересекающимися сферами.

В четвёртой главе проведён анализ структуры связей математики и ИТ, оценена эволюция характера их взаимоотношений, проанализированы возможные перспективы дальнейшей коэволюции.

Основные выводы резюмированы в заключении.

Глава 1. Обзор литературы

По вопросам применения ИТ в сфере прикладных задач математики полезно ознакомится с книгой Тюрина "Анализ данных на компьютере" [1]. Также полезными в данной области являются учебные пособия Дьяконова "MATLAB R2006/2007/2008 + Simulink 5/6/7. Основы применения"[2], Васильева "Mathematica. Практический курс с примерами решения прикладных задач"[3], Охорзина "Прикладная математика в системе MATHCAD"[4] по вопросам примени математического ПО. Проблемы применения параллельного инструментария ИТ в математике рассмотрены в книге Воеводина "Параллельные вычисления"[5].

Аспекты применение математики в технологиях программирования графики хорошо изложены в книге Энджела "Интерактивная компьютерная графика. Вводный курс на базе OpenGL"[6].

Демонстрационные материалы по способам применения визуализации информации как наглядных пособий при изучении математики можно найти на сайте " Математические этюды "[7].

Глава 2. Методика исследования.

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

Глава 3. Основные результаты

3.1. Предыстория и история взаимоотношений ИТ и математики.

В качестве предыстории взаимоотношений следует рассмотреть период от зарождения математики (2-3 тыс. до Р.Х.) до появления первых реально работающих компьютеров (50-е годы ХХ века). То есть фактически в этот период существовала лишь математика, а ИТ были представлены лишь некоторыми неосознанными идеями, которые применялись в жизнедеятельности человека. Примером идей будущих ИТ можно назвать структурирование поданного материала: начиная от списков кодексов древних библиотек, системы разновеликих инициалов средневековых книг, системы оглавления и содержания нового времени, сложно-структурированной индексации представленной в различных справочниках и энциклопедиях начала ХХ века. Также одна из основных идей будущих ИТ полиморфности представления одной и той же информации была представлена в предыстории: это совместное размещении словесных и графических описаний, символьная запись формул и законов. Базисной идеей ИТ также является распространение информации (причём по возможности системное): начиная от древней почты, далее создание обществ переписывавшихся по данной проблеме (то есть формирование академий: французской, лондонского королевского общества и т.д.), и, наконец, системы светских и научных периодических изданий. Из представленных примеров видно, что математика уже взаимодействовала с прото-ИТ: например числовая нумерация глав, текстовое и чертёжное представления родившиеся в геометрии, научная переписка математиков и т.п. Вместе с тем следует отметить, что все означенные аспекты прото-ИТ не воспринимались как единое целое, и решались стихийно походу возникновения прикладных проблем. Также следует отметить, что внутри самой математики развивалось одно очень важное направления сказавшееся решительным образом на самом появлении ИТ: методы упрощения одинаковых расчётов. Усложнявшееся математика для своих приложений требовала всё большего объёма числовых расчётов, которые отнимали много времени у людей, причём в основном людей, которые могли использовать это время творчески, а не рутинно. Именно для облегчения работы в этих приложениях, математика в содружестве с техникой, а затем и с естественной наукой создавала ряд инструментов для облегчения вычислений: абак, счётные машинки и арифмометры, логарифмическая линейка и т.п. Также примерно пред зарождением ИТ и вместе с ним, сформировалась математическая теория информации.

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

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

Следующим толчком к ускорению темпов развития ИТ было появления портативных компьютеров, и вызванная этим доместификация (приручение) [по Ф.Д. Дайсону, 8] цифровых и высоких технологий. Компьютер всё более стал применяться не как вычислительная машина, а как прибор, выдающий информацию под разным видами, а также источник развлечений. Особо надо отметить в этом процессе возникновение компьютерных игр, возникшие как явно не целевое использование, на данный момент они фактически стали основным экономическим двигателем технологического обновления парка машин и совершенствования технологий. Ведь не секрет, что большинству офисных приложений может прекрасно удовлетворить компьютер класса Pentium II-III, все новейшие разработки как то — многоядерный процессор и т.п. используются в персональных компьютерах преимущественно для улучшения качества развлечений.

Острый спрос на универсальную информацию породил многочисленные исследования, на способы её кодирования, а затем на сжатие этой информации. Причем для сжатия информации применяется высоко-сложные области высшей математики, так к примеру всем известные форматы JPEG и MPEG основаны на Фурье- и вейвлетпреобразованиях. Также запросы ИТ потребовали интенсификации таких областей прикладной математики как: распознавание образов, нечёткая логика, нейросети и т.п.

Новым революционным прорывом для ИТ явились создание локальных, а затем глобальных сетей, Internet. Скорость обмена различного рода данными резко возросла, появились доселе не виданные возможности, в том числе и для математики. Так, например, с помощью систем добровольных распределенных вычислений [9] рассчитываются формулы белков, идёт поиск вакцины против СПИДа и др. В то же время, сетевые технологии потребовали и новые математические модели для своей работы.

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

3.2. Основные сферы математики и ИТ. Взаимодействие в пересекающихся сферах.

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

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

Таким образом, можно выделить следующие пересекающиеся сферы математики и ИТ:

1. Обработка информации (в первую очередь численные методы) и прикладные задачи математики. Исторически первый сложившийся тип взаимодействия. Математика сформировала запросы, и нашла пути их решения, ставшие в дальнейшем основой ИТ. В свою очередь новые возможности ИТ перенесли акценты в численных методах. Так сначала благодаря ИТ в решении дифференциальных уравнений одношаговые методы стали превалировать над многошаговыми (которые были основными в докомпьютерную эпоху) [10], затем появились различные сплайнметоды, БПФ, а сейчас интенсивно развиваются методы параллельных вычислений [5]. Исторически первыми для реализации запросов прикладной математики и физики были созданы языки программирования высокого уровня. Наиболее ранним и направленным на математику является язык Fortran, но и другие языки поддерживают широкие математические возможности. Так в приложении 1 представлен авторский код по реализации интерполирующих сплайнов 7 степени на языке C++. Но языки программирования требуют высокой специальной подготовки, поэтому они перестали удовлетворять запросам большинства математиков, не все из которых были способны запрограммировать, качественно приложение с элементами визуализации. Поэтому возникаю специализированные математические приложения, такие как: Matlab, MathCAD, Mathematica [2, 3 , 4]

2. Прикладные задачи математики и визуализация информации. Применение уже известных математических методов и разработка новых. Позволила совершить прорыв в области визуализации информации. В качестве конкретных примеров применения математики можно назвать технологии DirectX, OpenGL [6]. Также примером применения современной абстрактной математики можно назвать трехмерный графический редактор 3DsMax. Современные ИТ трудно представить без уже упомянутых технологий сжатия графических, видео и звуковых данных JPEG и MPEG, которые имеют глубокие математические основания.

3. Визуализация информации и педагогическая задача математики. Высокоразвитые технологии визуализации позволили сделать наглядными многочисленные примеры из самых разнообразных отраслей математики [7]. Примером можно назвать фракталы. Всё это позволяет резко повысить постижение учащимися и студентами различных математических направлений, в том числе и абстрактных, а, следовательно, повысить эффективность самой математики.

4. Передача и хранение информации и научно-исследовательская задача математики. Математика, как и любая высокоразвитая наука нуждается в высокоэффективном и быстром обмене научной информации, и надежном и структурированном хранение её. Современные ИТ позволяют решать эти задачи более эффективно, чем прото-ИТ методы.

5. Передача, поиск информации и прикладные задачи математики. Для современных ИТ остро встал вопрос об эффективном поиске информации. Решение этой задача было произведено за счёт создание эффективным методов индексирования, которые опираются на прикладную математику. Примером эффективного средства индексирования в Интернете является известная система Google.

Глава 4 Обсуждения результатов

Рассмотренные в третьей главе факты и проведенный там же предварительный анализ позволяют сделать следующие выводы:

1. Взаимоотношение ИТ и математики была всегда, даже в период прото-ИТ. Математика оказала решающую роль в создании ИТ и является одним из фундаментов в технологическом развитии ИТ, как поставщик новых методов обработки, визуализации и поиска информации.

2. В свою очередь ИТ технологи оказали существенное влияние на математику. Особенно в области прикладных задач математики, они позволили снять рутинную нагрузку с математиков в области численных методов и предложили мощный инструментарий для решения такого рода задач. Кроме того, ИТ сами породили несколько прикладных математических проблем, а именно: проблему эффективного сжатия информации, и распознавание образов.

3. ИТ позволили улучшить эффективность связей между сферами применения математики. В свою очередь именно математика придаёт необходимое абстрактное единство для рассмотрения многих теоретических и прикладных проблем ИТ.

4. Хоть изначально ИТ и возникли во многом как математическое приложение, они развились в самостоятельную, пусть и связанную с математикой дисциплину. Эта диалектическая связь между математикой и ИТ является эффективным базисом для взаимообогащения и коэволюции обеих дисциплин.

Заключение

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

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

Список литературы к у

1. Тюрин, Ю. Н. Анализ данных на компьютере. / Ю. Н. Тюрин, А. А. Макаров – М.: ИНФРА-М, 2003. – 544 с.

2. Дьяконов, В. П. MATLAB R2006/2007/2008 + Simulink 5/6/7. Основы применения, 2-е изд., перераб. и доп. / В. П. Дьяконов – М.: Солон-пресс, 2008. – 800 с.

3. Васильев, А.Н. Mathematica. Практический курс с примерами решения прикладных задач / А. Н. Васильев – М.: Корона-Принт, 2008. – 448 с.

4. Охорзин, В. А. Прикладная математика в системе MATHCAD / В. А. Охорзин – М.: Лань, 2008.

5. Воеводин, В. В. Параллельные вычисления / В. В. Воеводин, Вл. В. Воеводин – СПб.: БХВ-Петербург, 2002.- 608 с.

6. Энджел, Эдвард Интерактивная компьютерная графика. Вводный курс на базе OpenGL 2-е изд / Э. Энджел. – М.: Вильямс, 2001.

7. Математические этюды [Электронный ресурс]. – 2005. – Режим доступа: http://www.etudes.ru/. – Дата доступа: 22.12.08.

8. Дайсон, Ф. Д. Сделайте мне слонопотама. / Ф. Д. Дайсон // Химия и жизнь. – 2007. – №1. – С. 13-15, перевод А. В. Хачояна по материалам журнала "New Scientist" 2006, февраль, №2538

9. Кулабухов, А. А вместе мы — сила. / SoftKey.info: Статьи - А вместе мы — сила [Электронный ресурс]. – 2008. – Режим доступа: http://www.softkey.info/reviews/review.php?ID=302. – Дата доступа: 22.12.08.

10. Крылов, В. И. Вычислительные методы, том II / В. И. Крылов, В. В. Бобков, П. И. Монастырный – М.: главная редакция физико-математической литературы изд-ва "Наука", 1977. – 400 с.

Предметный указатель к у


возникновение ИТ, 8

доместификация ИТ, 8

история взаимоотношений ИТ и математики, 7

коэволюция, 12

пересекающиеся сферы математики и ИТ, 10

полиморфность видов информации 9

предыстория взаимотношений ИТ и математики, 7

прото-ИТ 12

сферы ИТ 9

сферы математики 9


Интернет ресурсы в математической области исследования

http://www.google.com

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

http://www.vak.org.by

Сайт Высшей аттестационной комиссии Республики Беларусь. Тут размещены материалы, касающиеся подготовки научных кадров, присуждения ученых степеней и званий, краткие паспорта специальностей и программы-минимумы кандидатских экзаменов по специальности; в разделе «Каталог файлов» представлены доступные для скачивания файлы нормативных документов с приложениями и шаблоны регистрационных документов. Организован поиск по сайту и в сети Интернет.

http://www.exponenta.ru – сайт для математиков, которые только начинают изучение математики, продолжают учиться или углубляют свои знания – этот сайт полезен всем. Здесь можно найти электронные книги, статьи по популярным математическим пакетам, ознакомиться с примерами их применения, получит новую информацию. Если вы пользователь одного из математических пакетов, вы можете обсудить свои проблемы на форуме, посвящённом ему.

http://lib.mexmat.ru – в этом разделе вы увидите аннотации на различные книги, журналы и статьи. Существуют форумы по разным естественным дисциплинам, в том числе и по математике. На форуме можно обсудить имеющиеся у вас проблемы, посмотреть ссылки на литературу по интересующей теме. На сайте постоянно появляются свежие новости из мира науки.

http://www.mathnet.ru – общероссийский математический портал, предоставляющий российским и зарубежным математикам различные возможности в поиске информации о математической жизни в России.

http://mathworld.wolfram.com – сайт с большим количеством математических ресурсов и примерами в пакете Mathematica.

http://planetmath.org – большая математическая энциклопедия.

http://arxiv.org - автоматический электронный архив статей по математике и физике.

http://elibrary.ru – научная электронная библиотека. Один из наиболее полезных источников информации. Теперь совсем необязательно выходить из дому, чтобы прочитать новую книжку, ведь ее можно найти на этом сайте.

Действующий личный сайт в WWW

http://at.tut.by/harald_zealot/ основной адрес

http://harald83.narod.ru/ зеркало с адресной книгой

Граф научных интересов

Магистранта Станкевича А.А. механико-математический факультет

Специальность математика

Смежные

специальности

01.01.01

математический анализ

1. Тео­рия функ­ций дей­стви­тель­ного и ком­пле­ксно­го пе­ре­мен­но­го, обо­бщен­ные функ­ции.

2. Спе­ци­аль­ные функ­ции и инте­граль­ные пре­обра­зо­ва­ния.

3. Тео­рия при­бли­же­ний и ме­то­ды чис­лен­но­го ана­ли­за.

4. Гар­мо­ни­че­ский ана­лиз.

01.01.02

дифференциальные уравнения

Обоснование числен­ных ме­тодов реше­ния диф­фе­рен­циаль­ных, ин­те­граль­ных, ин­те­гро-диф­фе­рен­циаль­ных, функ­цио­наль­но-дифференциальных и дифференциально-опе­ра­то­рных урав­не­ний.

Основная

специальность

01.01.07

вычислительная математика

1. Теория приближенных методов и численных ал­горитмов решения задач алгебры, дифференци­альных и интегральных уравнений, других задач линейного и нелинейного анализа.

2. Численные методы и алгоритмы решения при­кладных задач, возника­ющих при математиче­ском моделировании естественнонаучных, научно-технических, проблем.

Сопутствующая

специальность

01.04.05

оптика

Нелинейная оптика. Оп­ти­ка ла­зер­ных сред. Не­ли­нейная и ла­зер­ная спек­тро­ско­пия. Ко­ге­рен­тное из­лу­чение и го­ло­гра­фия. Не­линей­ная ди­на­мика оптиче­ских сис­тем.

Презентация магистерской диссертации

Онлайн версии презентации

http://at.tut.by/harald_zealot/prznt.zip

http://harald83.narod.ru/prznt.ppt

Также есть на компакт-диске.

Распечатку слайдов смотрите в приложении 2

Список литературы к выпускной работе

1. Тюрин Ю.Н., Макаров А.А. Анализ данных на компьютере. М.: ИНФРА-М, 2003. – 544 с.

2. Дьяконов, В. П. MATLAB R2006/2007/2008 + Simulink 5/6/7. Основы применения, 2-е изд., перераб. и доп. / В. П. Дьяконов – М.: Солон-пресс, 2008. – 800 с.

3. Сайт Высшей аттестационной комиссии Республики Беларусь. – Режим доступа: http://vac.org.by. – Дата доступа: 22.12.2008.

Приложение 1

Пример кода математической программы на языке C++

//////////////////////////////////////////////

//

//Aliaksiej Piotr Stankievicx 2008

//

//fajl apisvaje klas segment i splajn (dvuchzviazny spis segmientaux)

//

/////////////////////////////////////////////

#include <iostream.h>

#include <iomanip.h>

#include <fstream.h>

#include <math.h>

#include <cstdlib>

#include "matrix.h"

const double cPB[8][8]={1,0,0,0,0,0,0,0, //'const prodBase' konstanta utrymlivaje vytvarajucxuju bazu dla segmentaux

0,1,0,0,0,0,0,0,

0,0,0.5,0,0,0,0,0,

0,0,0,1.0/6,0,0,0,0,

-35,-20,-5,-4.0/6,35,-15,2.5,-1.0/6,

84,45,10,1,-84,39,-7,0.5,

-70,-36,-7.5,-2.0/3,70,-34,6.5,-0.5,

20,10,2,1.0/6,-20,10,-2,1.0/6};

matrix PB(cPB,8,8);//pieratvarennie canstanty PB u typ matrix apisany ux matrix.h

array plnprd(array A, array B);//palinamianalnaje pamnazxennie palinomy pradstayleny massivami;

array plnpow(double X,int mpow);//stvarennie masiva stupiniej X da 'mpow' uklucxna;

double plnigl01(array A);//integravannie palinoma u mizxach ad 0 da 1

matrix plndif(matrix A);//diferencavannie niekalkich palinomaux zapisanych slupkami u matrycu

matrix svior(matrix A);//vylicxenni "sviortki" matrycy (integrala palinaminalnaha pieramnazxennia slupkoux)

matrix svior(matrix A, unsigned long int lCl, unsigned long int rCl);//vylicxenni "sviortki" matrycy (integrala palinaminalnaha pieramnazxennia slupkoux), ale nie usich slupkoux, a ad 'lCl' da 'rCl'

void qsrt (array &v,array &cov, int l, int r);//chutkaja sarcirouka masiva 'v', i adnacxasova tyjazx pierastanouxki u 'cov'

void qsrt (array &v, int l, int r);//chutkaja sarcirouka masiva 'v'

void nr(array &ms, double X,unsigned long int &low,unsigned long int &hgh);//znachodzic' nizxni i vierchni blizxajsxi elem k 'X'

inline double pwr(double X,int p){double pw=1.0;for(int i=0;i<abs(p);i++)pw*=X;return p<0?(1.0/pw):pw;}

matrix PBd1=plndif(PB);//vytvorcxaja baza 1 vytvornaj

matrix PBd2=plndif(PBd1);//vytvorcxaja baza 1 vytvornaj

matrix PBd3=plndif(PBd2);//vytvorcxaja baza 1 vytvornaj

matrix SB=svior(PB);//"sviortka Base" "sviortka" levaj palovy PB, element vykarystouxvajemyj dla minimizacyii kvadrataux uchilennia

//matrix rSB=svior(PB,4,7);//"sviortka Base" "sviortka" pravaj palovy PB, element vykarystouxvajemyj dla minimizacyii kvadrataux uchilennia

matrix SBd1=svior(PBd1);//"sviortka Base" "sviortka" levaj palovy PB, element vykarystouxvajemyj dla minimizacyii kvadrataux uchilennia

//matrix rSBd1=svior(PBd1,4,7);//"sviortka Base" "sviortka" pravaj palovy PB, element vykarystouxvajemyj dla minimizacyii kvadrataux uchilennia

matrix SBd2=svior(PBd2);//"sviortka Base" "sviortka" levaj palovy PB, element vykarystouxvajemyj dla minimizacyii kvadrataux uchilennia

//matrix rSBd2=svior(PBd2,4,7);//"sviortka Base" "sviortka" pravaj palovy PB, element vykarystouxvajemyj dla minimizacyii kvadrataux uchilennia

matrix SBd3=svior(PBd3);//"sviortka Base" "sviortka" levaj palovy PB, element vykarystouxvajemyj dla minimizacyii kvadrataux uchilennia

//matrix rSBd3=svior(PBd3,4,7);//"sviortka Base" "sviortka" pravaj palovy PB, element vykarystouxvajemyj dla minimizacyii kvadrataux uchilennia

void print(matrix A);

class segment{//klas segmenta splajna

array Pln;//'Polynom' matryca [8] jakaja utrymlivaje palinom uzxo z ulikam kancavych kropak i unutranaha masxtaba

array LFs;//'Left Functions' matryca [4] jakaja utrymlivaje funkcyju i vytvornyja ux levaj kropcy

array RFs;//'Right Functions' matryca [4] jakaja utrymlivaje funkcyju i vytvornyja ux pravaj kropcy

double LP;//'Left Point' levaja kropka

double RP;//'Right Point' pravaja kropka

double scale;//unutrany massxtab segmentu

segment* ll;//'left link' spasylka na segment, jaki znachodzicca z lieva

segment* rl;//'right link' spasylka na segment, jaki znachodicca z prava

public:

segment();//kanstruktar pa zmouxcxanni

segment(const segment &Seg);//kanstruktar kapijavannia

segment(double Lpn, array Lf, double Rpn, array Rg);//kanstruktar na padstavie dvuch kropak (Lpn i Rpn), a taksama zadannie znacxenia funkcyi i vytvornych u hetych kropkach, funkcyii i vytvory pradstavleny ksxtaltam "array"

segment(double Lpn, array Lf, double Rpn, array Rg, int q);//kanstruktar z pramoj pieradacxaj!!! na padstavie dvuch kropak (Lpn i Rpn), a taksama zadannie znacxenia funkcyi i vytvornych u hetych kropkach, funkcyii i vytvory pradstavleny ksxtaltam "array"

segment(double Lpn, double L0, double L1, double L2, double L3, double Rpn, double R0, double R1, double R2, double R3);//kanstruktar na padstavie dvuch kropak (Lpn i Rpn), a taksama zadannie znacxenia funkcyi i vytvornych u hetych kropkach, funkcyii i vytvory pradstavleny pieralicxenniem asobnych znacxenniaux ksxtalta "double"

~segment(){ll=NULL;rl=NULL; }//destruktar

segment operator=(segment Seg);//apieratar prysvajvannia

friend segment operator+(segment Seg1, segment Seg2);//summa dvuch segmentaux, segmenty pavinny miec adnolkavyja pravuju i lievuju kropku

friend segment operator-(segment Seg1, segment Seg2);//roznica dvuch segmentaux, segmenty pavinny miec adnolkavyja pravuju i lievuju kropku

friend segment operator-(segment Seg1);//admauxlennie segmienta

friend segment operator*(double a,segment Seg1);//pamnazxennie na skalar

friend segment operator*(segment Seg1,double a);//pamnazxennie na skalar

friend segment* operator>>(segment &Seg,int i);//apieratar atrymannia pakazalnika sdvinutaga na 'i' pazicyj u PRAVY bok, u jakasci paramietra pieradajaecca SPASYLXKA!

friend segment* operator<<(segment &Seg,int i);//apieratar atrymannia pakazalnika sdvinutaga na 'i' pazicyj u LEVY bok, u jakasci paramietra pieradajaecca SPASYLXKA!

friend void concat(segment &Seg1, segment &Seg2){if(Seg1.RP==Seg2.LP){ Seg1.rl=&Seg2; Seg2.ll=&Seg1;}}//apieratar concatenacyi dvuch siegmientaux, kali pieradajucca pakazalniki na segment, jany pavinny bydyc' razaiminovany napr "concat((*pA),B)" pA pakazalnik na segmient, B segment

friend bool operator==(segment Seg1, segment Seg2);//apieratar parauxnanni dvuch segmentaux

void print();//razdrukavannie segmenta

///////

friend class spline;

friend spline operator+(spline &Spl1,spline &Spl2);//apieratar padsumavannia, itohavyj splajn miescicca na abjadnanni voblasci aznacxennia abodvuch splajnaux

friend spline operator-(spline &Spl1,spline &Spl2);//apieratar roznicy, itohavyj splajn miescicca na abjadnanni voblasci aznacxennia abodvuch splajnaux

friend spline operator*(double a, spline &Spl);//apieratar pamnazxennia na skalar

friend spline operator*(spline &Spl, double a);//apieratar pamnazxennia na skalar

friend spline operator*(spline &Spl1,spline &Spl2);//apieratar pieramnazxennia splajnaux, itohavyj splajn miescicca na pierakryzxavanni voblasci aznacxennia abodvuch splajnaux

friend spline difirencate(spline &Spl);//diferencuje splajn;

friend spline integrate(spline &Spl);//integruje splajn, const =0

friend double integral(spline &Spl);//integral u naturalnych miezxach (ad tLP da tRP)

friend double integral(spline &Spl, double a, double b);//integral ad 'a' da 'b'

};

///////////////////

class spline{

segment *Prim, *Last;//pakazalniki na piersxy, aposxni i biahucxy siegmient

double tLP, tRP;//"the left point" and "the right point" :), :) -- krajniaja levaja i pravyja kropki

public:

spline();//pusty kanstructar

spline(const spline &Spl);//kanstruktar kapijavannia

spline(double lftPn, double rghPn, unsigned long int quant);//kanstruktar stvarennie rauxnamierna setki z segmientaux, ad 'lftPn' da 'rghPn', kol'kasc segmientaux 'quant'

spline(double lftPn, double rghPn, matrix Funcs);//kanstruktar splajna na padstavie raunamierna razmierkavanych ad 'lftPn' da 'rghPn', u kropkach inicyalizujucca funkcyja i vytvornyja, pamier Funks m x(n=4), kolkasc' segmentaux u splajnie m-1

spline(array Xi, matrix Funcs);//kanstruktar splajana na padstavie setki kropak 'Xi', u kropkach inicyalizujucca funkcyja i vytvornyja, pamier Funks m x(n<=4), kolkasc' segmentaux u splajnie m-1, pamier 'Xi' i kolkasc' radkoux u Funks pavinna supadac'

~spline();//destruktar

spline operator=(spline &Spl);//apieratar prysvajvannia

friend spline operator+(spline &Spl1,spline &Spl2);//apieratar padsumavannia, itohavyj splajn miescicca na abjadnanni voblasci aznacxennia abodvuch splajnaux

friend spline operator-(spline &Spl1,spline &Spl2);//apieratar roznicy, itohavyj splajn miescicca na abjadnanni voblasci aznacxennia abodvuch splajnaux

friend spline operator-(spline &Spl);//apieratar unarnaha minusa

friend spline operator*(double a, spline &Spl);//apieratar pamnazxennia na skalar

friend spline operator*(spline &Spl, double a);//apieratar pamnazxennia na skalar

friend spline operator*(spline &Spl1,spline &Spl2);//apieratar pieramnazxennia splajnaux, itohavyj splajn miescicca na pierakryzxavanni voblasci aznacxennia abodvuch splajnaux

friend spline difirencate(spline &Spl);//diferencuje splajn;

friend spline integrate(spline &Spl);//integruje splajn, const =0

friend double integral(spline &Spl);//integral u naturalnych miezxach (ad tLP da tRP)

friend double integral(spline &Spl, double a, double b);//integral ad 'a' da 'b'

void print();

double calc(double x);//vylicxennie splajna ux kropcy x, kali za intervalam splajana viartaje 0.0;

void interpolateF(array Xi,array FuncsXi);//interpolatija cxystaja

void interpolateH(array Xi, array FuncsXi, array Xkey);//interpolacija z apraksimacyjaj

void aproximate(array Xi, array FuncsXi, array Xkey);//aproksimacyja;

void draw(ofstream &out);

private:

void delete_lstSgm();//vydalennie aposxniaha segmientu

};

void print(matrix A){

for(unsigned long int i=0;i<A.m;i++){

for(unsigned long int j=0;j<A.n;j++){

cout<<setprecision(1)<<setw(6)<<A.M[i].V[j]<<'\t';

}

cout<<'\n';

}

cout<<'\n';

}

array plnprd(array A, array B){//palinamianalnaje pamnazxennie; palinomy pradstayleny massivami

array C;

C.n=A.n+B.n;C.V=new double[C.n];

for(unsigned long int i=0;i<C.n;i++)C.V[i]=0.0;

for(i=0;i<A.n;i++)

for(unsigned long int j=0;j<B.n;j++)C.V[i+j]+=A.V[i]*B.V[j];

return C;

}

array plnpow(double X,int mpow){//stvarennie masiva stupiniej X da 'mpow' uklucxna

array tmp(mpow+1);

double pw=1.0;

for(unsigned int i=0;i<tmp.n;i++){

tmp.V[i]=pw;

pw=pw*X;

}

return tmp;

}

double plnigl01(array A){//integravannie palinoma u miezxach ad 0 da 1

double cum=0.0;

for(unsigned long int i=0;i<A.n;i++)cum+=A.V[i]/((double)i+1.0);

return cum;

}

matrix plndif(matrix A){//diferencavannie niekalkich palinomaux zapisanych slupkami u matrycu

matrix B;

B.m=A.m -1;B.n=A.n;

B.M=new array[B.m];

for(unsigned long int i=0;i<B.m;i++)B.M[i](B.n);

for(i=0;i<B.m;i++)

for(unsigned long int j=0;j<B.n;j++)

B.M[i].V[j]=((double)i+1.0)*A.M[i+1].V[j];

return B;

}

matrix svior(matrix A){//vylicxenni "sviortki" matrycy (integrala palinaminalnaha pieramnazxennia slupkoux)

matrix B;

B.m=A.n;B.n=A.n;

B.M=new array[B.m];

for(unsigned long int i=0;i<B.m;i++)B.M[i](B.n);

for(i=0;i<B.m;i++)

for(unsigned long int j=0;j<B.n;j++)

B.M[i].V[j]=plnigl01(plnprd(vector(A,i),vector(A,j)));

return B;

}

matrix svior(matrix A, unsigned long int lCl, unsigned long int rCl){//vylicxenni "sviortki" matrycy (integrala palinaminalnaha pieramnazxennia slupkoux), ale nie usich slupkoux, a ad 'lCl' da 'rCl'

matrix B;

B.m=rCl-lCl+1;B.n=B.m;

B.M=new array[B.m];

for(unsigned long int i=0;i<B.m;i++)B.M[i](B.n);

for(i=0;i<B.m;i++)

for(unsigned long int j=0;j<B.n;j++)

B.M[i].V[j]=plnigl01(plnprd(vector(A,lCl+i),vector(A,lCl+j)));

return B;

}

Приложение 2

Распечатка сладов презентации