close

Вход

Забыли?

вход по аккаунту

?

FreeBASIC16

код для вставкиСкачать
Пособие для начинающих программировать на языке высокого уровня FreeBASIC. Работа состоит из нескольких глав. В главе 16 "Функции комплексной переменной" – продолжение пособия, которое будет интересно для учащихся школ, студентов институтов, а такж
 1
Евгений Рыжов, инженер
Программирование на языке FreeBASIC
пособие для начинающих
Пособие для начинающих программировать на языке высокого уровня FreeBASIC.
Работа состоит из нескольких глав. В главе 16 "Функции комплексной переменной" –
продолжен
ие пособия, которое будет интересно для учащихся школ, студентов
институтов, а также преподавателей.
Фрагмент 16. Функции комплексной переменной
30 декабря 2012 года Президент России Владимир Путин
подписал закон об образовании. В документе прописывают
ся нормы по всем уровням образования, включая дошкольное, начальное, среднее, высшее и дополнительное. Госдума приняла закон в третьем чтении 21 декабря, Совет Федерации одобрил его 26 декабря. Вслед за Путиным, премьер
-
министр Дмитрий Медведев
поспешил об
судить с правительством новый "драйвер развития страны". Конечно, кабинет министров одобрил программу развития образования в России до 2020 и принял к сведению пожелания премьер
-
2
министра сделать акцент в школьном образовании на математику, с целью построен
ия "высокотехнологичной экономики". "Акцент будет сделан на развитие математического образования, как основу для создания высокотехнологичной экономики", -
сказал Медведев. По его мнению, это наше конкурентное преимущество и эта тема в отличие от других на
учных направлений у нас развита
.
Шерлок Холмс и Ватсон отправились в путешествие на воздушном шаре и заблудились. Тогда они снизились и спросили случайного прохожего:
—
Сэр, вы не подскажите нам, где мы находимся?
Тот немного подумал и ответил:
—
На возд
ушном шаре.
—
Да
-
а, —
заметил Холмс, обращаясь к Ватсону, —
я уверен, что этот человек —
математик.
—
Я как всегда потрясен вашей проницательностью, Холмс, —
поразился Ватсон. —
Но как вы пришли к такому выводу?
—
Это элементарно, Ватсон. Я пришел к такому
заключению по трем причинам. Во
-
первых, прежде чем дать ответ, этот человек подумал. Во
-
вторых, дал ответ совершенно правильный. И, в
-
третьих, совершенно бесполезный.
На закончившейся 28 июля в Колумбии 54
-
й Международной олимпиаде по математике
(IM
O, International Mathematical Olympiad, проводится с 1959) Российская команда получила четыре золотых и две серебряных медали
и заняла четвертое общекомандное место. Золотые медали получили Андрей Волгин из Москвы, Лев Шабанов из Ангарска, Егор Воронецкий из Петрозаводска и Дмитрий Крачун из Санкт
-
Петербурга. Серебряные медали получили петербуржцы Даниил Клюев и Будимир Баев. Отметим, что все три представителя Санкт
-
Петербурга –
ученики Физико
-
математического лицея №239 (получил свой статус в 1990, в 1994 п
о результатам конкурса в рамках программы "Обновление гуманитарного образования в России" лицей был отмечен грантом Фонда Сороса, математическое общество США признало школу одной из десяти лучших в Содружестве Независимых Государств). В неофициальном коман
дном зачете соревнования команда России заняла четвертую строчку, набрав 187 баллов. Первое место досталось Китаю, получившему 208 баллов, второе —
Южной Корее с 204 баллами, а третье —
Соединенным Штатам Америки (190 баллов).
Наверное, занятие математико
й в школе стало немного "элитарным"...
3
Содержание
1.
Вместо введения.
1.1.
Виктор Николаевич Тростников.
1.2.
Александр Александрович Зиновьев.
1.3.
Игорь Ростиславович Шафаревич.
1.4.
Перепись населения 1913 года.
2.
Традиционная "художественная г
алерея".
3.
Почтовый ящик и рекомендуемая литература.
4.
Комплексные числа, переменные, функции.
4.1.
О комплексной арифметике.
4.2.
Примеры программ.
4.2.1.
Основные арифметические операции.
4.2.2.
Алгебраические функции комплексного аргумента.
4.2.
3.
Вычисление корней n
-
ой степени комплексного числа.
4.2.4.
Возведение комплексного числа в комплексную степень.
4.2.5.
Гиперболические и тригонометрические функции.
5.
Библиотека поддержки комплексных вычислений.
5.1.
Предварительные сведения.
5.2.
Пример использования библиотеки программ.
5.3.
Тестовая программа.
1.
Вместо введения.
Некоторые утверждают, что в наше время математика, подобно искусству, подмечает явления в реальной жизни, объединяет аналогичные события, процессы и факты, обобщ
ает их. Но самое близкое духу нашего времени высказывание сделал выдающийся математик современности академик Андрей Николаевич Колмогоров
(1903 –
1987): "Математика
-
это то, посредством чего люди управляют природой и собой". Но это было сказано в XX веке, когда можно было говорить не только о математизации науки, но и о математизации жизни. Одно осталось незыблемым: "Математика —
это язык науки, на котором передаётся мировой человеческий опыт".
4
Давайте бросим беглый взгляд на оценки "социального" состояния
общества трех математиков
, наших соотечественников...
1.1.
Виктор Николаевич Тростников.
Тростников Виктор Николаевич (род. 1928) -
окончил университет как физик, в 1970 стал кандидатом философских наук и доцентом математики. В 1980 за участие в скан
дальном альманахе Василия Аксёнова "Метрополь" был уволен с работы и пошёл в сторожа. В 1983, узнав о начале восстановления московского Данилова монастыря, пришёл к архимандриту Евлогию проситься на работу. "А кто вы по профессии?" -
спросил наместник мона
стыря. -
"Математик". -
"А, значит, человек без специальности. Хорошо, берём вас чернорабочим".
В настоящее время В.Н.Тростников -
профессор по кафедре богословия. Много сотрудничает с периодической прессой, предоставляет большие культурологические ста
тьи, его книги "Православная цивилизация", "Россия земная и небесная", "Трактат о любви. Духовные таинства" имеют фундаментальное значение... В 2012 году вышла в свет книга "Всмотрись –
и увидишь"
(Москва, 2012. 254 с.) -
очередная книга
-
размышление Виктор
а Николаевича раскрывает еще несколько секретов мироустройства. В частности, в ней впервые дается полная научная расшифровка библейского повествования о сотворении мира –
отдельно по каждому из шести "дней" и, как через все его творчество, через нее проход
ят раздумья об историческом предназначении России. Книга легко читается, доступна для понимания школьникам и более чем достойна для обсуждения в кругу семьи
.
"Разделение русских людей на западников и почвенников -
феномен вневременной и внепространственны
й, оно было всегда и всегда будет. Консенсуса тут мы не дождёмся, ибо это разделение между двумя разными типами сознания. Но никакой равноправности здесь нет: Россия всю свою тысячу лет держалась на духе почвенничества, т.е. на любви к Родине и служению От
ечеству".
5
1.2.
Александр Александрович Зиновьев.
Зиновьев Александр Александрович (1922 —
2006) —
российский советский логик, выдающийся социолог. Зиновьев участвовал в Великой Отечественной войне в качестве боевого летчика и закончил ее в 1945 в Берлин
е, 1946 -
1954 -
студент, а затем аспирант философского факультета Московского Государственного университета имени М.В. Ломоносова. В 1960 Зиновьев защитил докторскую диссертацию по математике и затем по социологии. Обе защиты были закрытыми, а диссертации
засекречены. Под его руководством была создана первая в Советском Союзе компьютерная система, позволявшая моделировать страну в целом по всем важнейшим параметрам. В 1976 году произошло событие, обозначившее новое направление интеллектуальных усилий А.А.
Зиновьева и круто изменившее его жизнь. Он неожиданно для всех выступил с книгой "Зияющие высоты", представлявшей собой выполненное в художественной форме критическое исследование некоторых сторон советского социального строя; все понимали, что за жизнью и
нравами вымышленного Ибанска подразумевалось совсем невымышленное общество. С 1978 начинается эмигрантская жизнь Зиновьева, которая продлилась 21 год. Все эти годы он жил в Мюнхене, занимаясь научным и литературным трудом. В 1999 выдвигался в Госдуму по с
писку Российского Общенародного Союза, но не был зарегистрирован, так как вернулся в Россию незадолго до этого. Членство в академиях: Действительный член Финской академии наук (1974), Действительный член Итальянской академии наук (1978), Действительный чле
н Баварской академии изящных искусств (1984), Член Российской академии социальных наук, Вице
-
президент Академии российской словесности, Член Международной академии наук Евразии...
Фрагмент интервью Зиновьева А.А. 24.11.2003. Манекину Р.В.
на портале "К
ирилл и Мефодий".
KM:
Как вы оцениваете действия по реставрации "Великой России", предпринимаемые командой Путина?
АЗ:
Совершенно бесполезные усилия. Если страна пошла в ложном направлении, то, чем успешнее она идет, тем оказывается ближе к гибели и полном
у исчезновению.
6
KM:
Каковы, на ваш взгляд, перспективы развития России в ближайшее столетие?
АЗ:
Это очень общий вопрос. Никаких обнадеживающих перспектив в истории России я не вижу. Считаю, что России нанесли смертельный удар в конце прошлого –
начале нын
ешнего столетия. Сейчас ее направили на путь деградации и, в конечном счете, полного исчезновения -
избытия из человеческой истории.
KM:
Вы –
известный советолог, скажите, с вашей точки зрения, Советский Союз –
это хорошо, или плохо?
АЗ:
Прежде всего, я уч
еный. И, как ученый, не употребляю слов "хорошо" или "плохо". Моя цель –
объективная оценка исторической и социальной действительности. Исходя из этого, я могу сказать, что советская государственность была вершиной эволюции русской идеи -
вершиной, по дост
ижении которой начался спад. Советский период российской истории был естественным продолжением многовековой истории России. Всё лучшее, чего достиг русский народ на протяжении своей истории, в советский перио
д было сохранено и приумножено.
1.3.
Игорь Ро
стиславович Шафаревич.
Шафаревич Игорь Ростиславович (род. 1923), в 1958 (в возрасте 35 лет) избран членом
-
корреспондентом АН СССР по отделению физико
-
математических наук. Лауреат Ленинской премии (1959), в 1991 избран академиком РАН по Секции математики
, механики, информатики (математика). Иностранный член Национальной академии деи Линчеи (Италия), германской академии естествоиспытателей "Леопольдина", член Лондонского Королевского общества, Национальной академии наук США. Почётный доктор университета Па
риж XI (Орсэ).
В 1982 опубликовал за рубежом и в самиздате эссе "Русофобия"
. В этой работе использовал идеи французского националистического историка начала XX века Огюстена Кошена, который разработал идею о "малом народе" —
антинациональной элите, нав
язавшей "большому народу" свои идеи и теории. По Шафаревичу, российское воплощение феномена "малого народа" сыграло большую роль в отечественных 7
революциях. Опубликование эссе привело к превращению автора в персону нон
-
грата среди части демократической инт
еллигенции.
"Конечно, в теперешнем положении России, вообще звучит горькой иронией -
говорить о каких
-
то русских силах. Но надо надеяться на то, что всеми пережитыми катастрофами русский народ все же не убит, а только сбит с ног и постепенно приходит в се
бя".
Шафаревич И.Р. "Трехтысячелетняя загадка"
Здесь нельзя не сказать о роли интеллигенции в жизни страны
. Ниже фрагмент интервью Максима Карловича Кантора (род. 1957, Москва) российского художника и писателя:
...так кто она, интеллигенция, сегодня? Нех
орошие люди, которые продались за банкет на церемониях вручения премий?
...этот термин мы используем не по назначению. Когда
-
то в России образовался слой людей, не обязательно интеллектуалов, но склонных к гуманитарному образу жизни, во многом разночинцев,
близких к народу, которые получили название "интеллигенция". Их миссией была защита униженных и оскорбленных, внедрение либеральных идей, образования и просвещения в крепостное общество... Когда произошел новый виток современного феодализма в сегодняшней России и появились новые кланы богатых людей, то интеллигент ситуативно оказался в роли обслуги богатых. Что было бы по меркам русской интеллигенции неприлично.
1.4.
Перепись населения 1913 года.
Теперь бросим беглый взгляд на прошлое столетней давнос
ти... В Советском Союзе было принято сопоставлять достижения социалистического хозяйства с показателями 1913, последнего мирного года исчезнувшей Империи (при Петре I в 1721 Россия была провозглашена Империей): на столько
-
то больше стали производить чугуна
, стали, молока, яиц... Прошло сто лет —
время подвести итоги и ответить на вопрос: можно ли было уже тогда услышать гулкое эхо и отвратить надвигающуюся катастрофу?
К началу XX века территория России выросла до 22,2 млн. кв.км. В административном отношен
ии страна была разделена на 97 губерний, по 10
—
15 уездов каждая. По данным переписи 1897, население России составляло около 126 млн. человек, к 1913 оно увеличилось до 165 млн. человек. Но вот одна любопытная "интегральная" характеристика "лапотной" России
(уровень жизни): число нерабочих (воскресных и праздничных) дней в году в России составляло 100
–
110 у рабочих, 140 у крестьян (в западных странах –
65, в Англии –
только 55). Социальное страхование рабочих в России было введено к 1912 (раньше Запада), был
и и другие законы по охране труда, о которых 27
-
й американский президент Уильям Тафт
п
ублично заявил: "Ваш Император создал такое совершенное рабочее законодательство, каким ни одно демократическое государство похвастаться не может".
Темпы экономического и культурного развития, структурные изменения в народном хозяйстве России к 1913 году казались столь впечатляющими, что 8
председатель синдикальной палаты парижских биржевых маклеров Морис Вернайль
, приезжавший летом 1913 года в Петербург для выяснения условий предоставления России очередного займа, предсказывал неизбежный, как ему казалось, в течение ближайших 30 лет громадный подъем российской промышленности, который можно будет сравнивать с колоссальными сдвигами в экономике США в последней трети XIX века. С ним фактически солидаризировался французский экономический обозреватель Эдмон Тэри
,
также знакомившийся по заданию своего правительства с состоянием российской экономики. Его заключение, сделанное в книге "Россия в 1914 году. Экономический обзор", гласило: "...Экономическое и финансовое положение России в настоящий момент превосходно, ..
.от правительства зависит сделать его еще лучше". Более того, он предупреждал: "Если у большинства европейских народов дела пойдут таким же образом между 1912 и 1950 годами, как они шли между 1900 и 1912, то к середине настоящего столетия Россия будет доми
нировать в Европе как в политическом, так и в экономическом и финансовом отношении".
Правительство прилагало большие усилия к преодолению тяжелого недуга российского общества -
низкого уровня грамотности: расходы по министерству народного просвещения возр
осли с 1900 почти в 5 раз, составив в 1913 году 14,6% бюджетных расходов. При этом Николай II всегда подчеркивал необходимость опережающего развития техники и технического образования...
Достижения российской техники в военный и послевоенный период, быстро
е приращение "военно
-
технического потенциала" были бы невозможны, если бы за два десятилетия, предшествовавшие большой войне в Российской империи не был бы создан соответствующий "образовательный потенциал".
Достаточно назвать такие всемирно известные име
на, как Менделеев, Лобачевский, Павлов, Сеченов, Мечников, Тимирязев, Пирогов, Склифосовский, изобретатель радио Попов, изобретатель в области электротехники Лодыгин... Впоследствии попавшие в эмиграцию русские ученые и инженеры высоко ценились во всех стр
анах и прославились там множеством достижений мирового значения, например, В.К. Зворыкин (телевидение), И.И. Сикорский (вертолет), В.Н. Ипатьев (высокооктановый бензин), П.А. Сорокин (социология) и даже К.М. Веригин (создал "Шанель №5"). Для дальнейшего ра
звития науки в стране огромное значение имело то, что за последнее десятилетие перед Великой Октябрьской социалистической революцией уровень науки был очень высок -
к 1913 году Российская империя была полна великих проектов и квалифицированных кадров —
вел
икая советская наука и инженерия родились именно тогда, хватило еще и на блестящую эмиграцию.
9
2.
Традиционная "художественная галерея".
Сегодня познакомимся с Алексеем Егоровичем Егоровым... В достойной жизни нашего замечательного художника Алексея Ег
оровича Егорова (1776
-
1851) много интереснейших фактов. Современники (и не только в России, но и в Италии) при жизни художника дали высшую оценку его таланта, назвав "русским Рафаэлем" (приведенные картины подтверждают, что прозвище вполне обоснованно).
С
овсем ребенком он был подобран казаками в калмыкской степи и отдан... в Воспитательный дом в Москве —
редкий пример гуманного отношения победителей к побежденному. Заложенный в парнишке талант дает мощный побег гениального рисовальщика и живописца (такое в
озможно лишь на благодатной почве). И потому ребенка Алексея уже в 1782 году переводят в Воспитательное училище при Академии художеств. А после окончания Академии —
поездка в Италию, где он поражает, а иногда и смущает своим талантом итальянских художников
. Сам Папа Пий VII уговаривает его остаться в Италии придворным живописцем. Однако Алексей Егоров возвращается в Россию, где его ждет слава, напряженная работа живописца и преподавателя (среди его учеников Ф.А. Бруни, К.П. Брюллов, А.А. Иванов и др.), засл
уженные награды и звания. Он типичный представитель русского высокого классицизма, пишет портреты, принимает самое активное участие в росписях церквей и соборов в Петербурге и его пригородах, Грузии, Польше. Но именно написание образов для церквей в Петерб
урге и Царском Селе вызвали недовольство большого знатока церковной живописи. К сожалению, этим знатоком оказался император Николай I. Последовало отстранение А.Е.Егорова, несмотря на защиту художника Советом Академии художеств, от преподавательской работы
. Впрочем, к художнику за советом по
-
прежнему обращались даже светила отечественной живописи.
О
дной из лучших картин художника
считается картина Алексея Егорова "Истязание Спасителя" (1814)
, х
олст, масло, 260 x 207 см
, Государственный Русский музей (Санкт
-
Петербург)
. В 1814 картина экспонировалась на выставке в Императорской Академии художеств, в 1820 по инициативе президента Академии А.Н.Оленина куплена у художника. С 1850 экспонировалась в залах русской школы живописи Императорского Эрмитажа.
В брошюре к
артина представлена на следующей странице...
10
Алексе
й
Егоров "Истязание Спасителя"
11
3.
Почтовый ящик и рекомендуемая литература.
3.1.
Почтовый ящик.
Интересное письмо прислал читатель "СМ", смысл его в следующем:
"Брошюры написаны, пожалуй, для сту
дентов, а не для школьников -
несколько сложновато. Кроме того, они скорее по вычислительной математике, чем по программированию"...
Читатель, конечно, как и всегда –
прав!
Исходя из названия "Программирование на языке FreeBASIC" в брошюрах речь должна ид
ти, прежде всего, о языке программирования (или о свойствах компилятора). Однако заметим, что интегральная производительность системы "человек
—
компьютер"
зависит от двух независимых показателей: производительности компьютера (а это и реализация языка прогр
аммирования) и продуктивности мозга (а это и способность воспринимать программы). Первая быстро растет, вторая, наоборот, все больше отстает от растущих требований и нередко превращается в основной тормоз повышения эффективности организаций. Чтобы увеличит
ь умственную производительность человека нужно найти удачную форму подачи материала по принципу "взглянул —
и сразу стало ясно"
, а здесь, пожалуй, необходим элемент "натаскивания" -
решение учебных задач: обучение навыкам алгоритмизации, программирования и
автоформализации знаний. Понятно, что иностранцу, изучающему русский язык, необходимо усвоить огромное количество теоретического и практического материала. Но если от него требуется постоянное зазубривание правил, лексики, синтаксических конструкций, то у
учащегося возникают трудности в коммуникативной сфере (в нашем случае -
"человек
—
компьютер"). Выход один -
разнообразить занятия игровыми заданиями: если проходите тему "Ресторан" -
то тащите учащегося в ресторан, даже если он стесняется и сопротивляются.
..
Признаюсь, я благодарен читателю "СМ", а это -
Саня Менщиков, за "постановку" проблемы и помощь при ее решении применительно к теме настоящей брошюры (см. раздел 5 "Библиотека поддержки комплексных вычислений").
12
3.2.
Рекомендуемая литература.
1. К
олягин Ю.М., Ткачева М.В., Федорова Н.Е., Шабунин М.И.
Алгебра и начала математического анализа. Учебник для 11 класса. М., Просвещение, 2010. 336 с.
Учебник знакомит читателей с математическим анализом, комплексными числами, элементами статистики и теории
вероятностей. В учебнике есть раздел, содержащий упражнения по всему курсу. Исторические справки знакомят учащихся с историей развития математики. Содержание изложено на трех уровнях сложности: базовом, продвинутом и углубленном.
2. Корн Г., Корн Г.
Спра
вочник по математике для научных работников и инженеров.
М., Наука, 1974, 832 с.
Справочник содержит сведения по следующим разделам: высшая алгебра, аналитическая и дифференциальная геометрия, математический анализ, векторный и тензорный анализ, криволиней
ные координаты, функции комплексного переменного, операционное исчисление, дифференциальные уравнения обыкновенные и с частными производными, вариационное исчисление, матрицы, линейные векторные пространства, операторы и теория представлений, интегральные уравнения, краевые задачи, теория вероятностей и математическая статистика, численные методы анализа, специальные функции.
3. Привалов И.И.
Введение в теорию функций комплексного переменного. Изд. 13
-
е. М.: Наука, 1984. 432 с.
Кинга является одним из стар
ейших и хорошо себя зарекомендовавших учебников для высших учебных заведений по теории функций комплексного переменного.
4. Сидоров Ю.В., Федорюк М.В., Шабанин и М.И.
Лекции по теории функций комплексного переменного. М., Наука, 1989. 480 с.
Изложены осно
вы теории функции комплексного переменного. Наряду с традиционными разделами курса в книге подробно рассмотрены многозначные аналитические функции и элементарные асимптотические методы. Кроме того, в ней рассмотрены аналитическая теория обыкновенных линейн
ых дифференциальных уравнении второго порядка, задачи Дирихле для уравнения Пуассона на плоскости, некоторые физические задачи теории поля, операционное исчисление.
13
4.
Комплексные числа, переменные, функции.
Не занимайтесь комплексными числами после к
омплексного обеда!
Александр Емелин
Для освоения комплексных чисел не требуется каких
-
то специальных знаний из курса высшей математики, материал доступен даже школьнику. Достаточно уметь выполнять основные алгебраические действия с "обычными" числа, и нем
ного владеть тригонометрией.
4.1.
О комплексной арифметике.
Предметом арифметики является понятие числа в развитии представлений о нём (натуральные, целые и рациональные, действительные, комплексные числа) и его свойствах. В арифметике рассматриваются
измерения, вычислительные операции (сложение, вычитание, умножение, деление) и приёмы вычислений. Причиной возникновения арифметики стала практическая потребность в счёте, простейших измерениях и вычислениях. Наука развивалась вместе с усложнением задач, требующих решения.
Большой вклад в развитие арифметики внесли греческие математики, в частности философы
-
пифагорейцы, пытавшиеся с помощью чисел постичь и описать все закономерности мира.
История развития понятия "число" уходит корнями в древние времена. Древнегреческие математики только натуральные числа считали "настоящими". В Древнем Египте и Древнем Вавилоне во втором тысячелетии до н.э. при решении практических задач использовались дроби. В III веке до н.э. китайские математики ввели понятие отрицател
ьного числа, а в III веке н.э. Диофант уже пользовался правилами действий с отрицательными числами. В VII веке н.э. индийские математики придавали наглядный образ отрицательным числам, сравнивая их с долгами. В VIII веке ученые знали, что у положительного числа существует два квадратных корня: один —
положительное число, другой —
отрицательное, но считали, что из отрицательных чисел нельзя извлекать квадратный корень. Потребность в извлечении квадратного корня из отрицательного числа возникла в XVI в. в свя
зи с решениями уравнений.
Те операции, которые приходится рассматривать в математике, можно разделить на два класса: прямые и обратные.
Так, действию сложения соответствует обратное действие —
вычитание, умножению —
деление, возведению в целую положительн
ую степень —
извлечение корня. Производя действие сложения над двумя любыми целыми положительными числами, в результате получим всегда число также целое положительное; другими словами, отправляясь от натурального ряда чисел, мы с помощью прямого действия с
ложения не выходим за пределы этого ряда. Обратное действие —
вычитание —
выводит нас за пределы совокупности натуральных чисел и становится всегда выполнимым лишь после присоединения к натуральному ряду нуля и целых отрицательных чисел. Следующее обратное
действие
—
деление —
требует для своей выполнимости дальнейшего обобщения понятия числа, которое совершается путем введения дробных чисел. Совокупность чисел целых и дробных, называемых 14
рациональными числами, будет замкнутой по отношению к первым четырем ос
новным действиям алгебры: сложению, вычитанию, умножению и делению, т.е. при выполнении любого из этих действий над двумя любыми рациональными числами (кроме деления на нуль) в результате получаем элемент той же совокупности —
число рациональное.
Если нат
уральные числа возникли в процессе счета, рациональные —
из потребности оперировать частями целого, то вещественные числа предназначены для измерения непрерывных величин. Таким образом, расширение запаса рассматриваемых чисел привело к множеству вещественн
ых чисел, которое помимо чисел рациональных включает также другие элементы, называемые иррациональными числами.
Иррациональное число —
это вещественное число, которое не является рациональным, то есть не может быть представлено в виде дроби m/n, где m и n
—
целые числа, причем n <> 0. Первое доказательство существования иррациональных чисел обычно приписывается Гиппасу из Метапонта (ок. 500 гг. до н. э.), пифагорейцу, который нашёл это доказательство, изучая длины сторон пентаграммы. Во времена пифагорейце
в считалось, что существует единая единица длины, достаточно малая и неделимая, которая целое число раз входит в любой отрезок. Однако Гиппас обосновал, что не существует единой единицы длины, поскольку предположение о её существовании приводит к противоре
чию. Он показал, что если гипотенуза равнобедренного прямоугольного треугольника содержит целое число единичных отрезков, то это число должно быть одновременно и четным, и нечетным.
Поле вещественных чисел постоянно служило в математике источником обобщен
ий, причём в различных практически важных направлениях. Комплексные числа (устар. Мнимые числа) —
расширение поля вещественных чисел. Первоначально обнаружены в результате формального решения некоторых квадратных уравнений, в которых квадрат корня уравнени
я должен быть отрицательным. В дальнейшем обнаружено, что применение комплексных чисел позволяет удобно и компактно сформулировать многие математические модели, применяемые в математической физике и в естественных науках —
электротехнике, гидродинамике, ка
ртографии, квантовой механике, теории колебаний, теории хаоса и многих других.
Одним из главных достижений математики XVI века было решение уравнений третьей и четвертой степеней. История этого открытия весьма незаурядна: она напоминает увлекательный рома
н и не лишена интриги. Главные герои этой истории —
два незаурядных ученых, две выдающиеся личности —
Кардано и Тарталья.
Впервые, по
-
видимому, мнимые величины появились в известном труде "Великое искусство, или об алгебраических правилах" Джероламо Карда
но ("Artis magnae", 1545). Главное содержание "Artis magnae" заключается в решении уравнений 3
-
й степени, которое было открыто около 1520 Сципионом дель Ферро (Ferro) и о котором Кардану сообщил Николай Тарталья (Tartaglia). Впрочем, Кардано в этой книге с
делал и многое другое важное для алгебры. Джероламо Кардано (Hieronymus Cardanus; 1501 —
1576)
—
итальянский математик, инженер, философ, медик и астролог. В его честь названы открытые Сципионом дель Ферро формулы решения кубического уравнения (Кардано был их первым публикатором), карданов подвес и карданный вал.
15
Кардано изучал медицину и в 1524 получил диплом врача в Падуе. Однако любопытство заставило его начать изучение астрологии и математики. Так начался неспокойный период его жизни, в котором сочет
ались преподавание математики и занятия астрологией. Эксцентричный Джироламо Кардано —
игрок и забияка эпохи Возрождения, первым решивший кубическое уравнение.
О жизни Тартальи (его настоящее имя —
Никколо Фонтана) мы знаем немного. Никколо Тарта
лья (Niccolo Fontana Tartaglia, 1499 —
1557)
—
итальянский математик. Известно, что он родился в Брешии, в 1512, во время взятия Брешии французами, когда он с матерью спасался в соборе, получил рану в нижнюю часть лица, вследствие которой произношение его стало неправильным. Поэтому товарищи прозвали его заикой (tartaglia) и прозвище это сделалось его фамилией. Никколо был еще совсем маленьким, когда его отец умер, не оставив наследства. Из
-
за недостатка средств Тарталья с ранних лет начал учиться самостоят
ельно. Он сам выучился читать, писать и "размышлять о трудах умерших".
В первом сочинении "Nuova scienza" (1537) Тарталья впервые рассматривает вопрос о траектории выпущенного снаряда, причём утверждает, что траектория эта на всём её протяжении есть крив
ая линия, между тем как до него учили, что траектория снаряда состоит из двух прямых, соединённых кривой линией; тут же он показывает, что наибольшая дальность полёта соответствует углу в 45°. Кроме того, в этой книге рассматриваются различные вопросы об и
змерении поверхности полей.
Арифметическая (стандартная) модель комплексных чисел как пар вещественных чисел была построена Уильямом Гамильтоном (1837); это доказало непротиворечивость их свойств.
16
Сэр Уильям Роуэн Гамильтон (William Rowan Hamilton; 180
5 —
1865)
—
выдающийся ирландский математик, механик и физик XIX века. В 11 лет он прочитал латинский перевод "Начал" Евклида, в 13 лет прочитал "Универсальную арифметику" Ньютона, в 16 лет —
большую часть "Математических начал натуральной философии" Ньюто
на, в 17 лет —
изучил "Небесную механику" Лапласа. Гамильтон был величайшим математиком из всех, когда
-
либо рожденных Ирландией. Он был блестящим лингвистом, математическим гением и алкоголиком, нацарапавшим свое величайшее открытие на каменной кладке мост
а...
Для нас "главными соглашениями" о комплексных числах будут следующие:
Если есть пара действительных чисел: 2 (абсцисса) и 5 (ордината), то на плоскости это точка. Эти числа порождают число нового рода, комплексное число, условно обозначаемое 2 + 5·
i. При этом длина вектора, изображающего комплексное число, называется модулем комплексного числа. Модуль любого комплексного числа, не равного нулю, есть положительное число. Угол между осью абсцисс и вектором, изображающим комплексное число a + b·i, назы
вается аргументом комплексного числа. Каждое не равное нулю комплексное число имеет бесчисленное множество аргументов, отличающихся друг от друга на целое число полных оборотов.
Понятия "модуль" и "аргумент"
комплексного числа ввел французский математик Д
'Аламбер (1717
—
1783), а сами термины были введены в обиход после широкого их использования в своих работах швейцарским математиком Ж. Арганом (1768
—
1822) и французским математиком О. Коши (1789
—
1857)...
Использование комплексных чисел делает модели Реальн
ого Мира (а именно с ними имеет дело математика) более обозримыми и осязаемыми. Конечно, мы говорим о "земных" приложениях математики, например о точном определении высоты 50
-
этажного дома (замечание профессора математики Мориса Клайна). Разумеется, опыт и
экспериментирование играют определенную роль в исследовании природы человеком, (во многих областях знания их вклад незначителен). Еще в XVII веке Блез Паскаль горько сетовал на беспомощность человека. Ныне созданное нашими усилиями всемогущее оружие —
мат
ематика —
позволяет познавать многое в окружающем нас реальном мире и овладевать им, например, структуру и свойства Вселенной. Зачем постоянно увеличивать размерность физического пространства, если можно попробовать применить в моделях комплексное время?
Отличительной особенностью современной космологии является переход на неевклидовую геометрию и признание сложной топологической структуры вселенной с дополнительными временными и пространственными измерениями. Идею высших пространтсвенно
-
временных размерно
стей предложил Т.Калуцой
в 1921 году в рамках 17
разработки единой теории поля, а первым, кто применил представления о многомерности времени к явлениям физического мира, стал А.Эддингтон
.
Артур Стэнли Эддингтон (Arthur Stanley Eddington; 1882 —
1944)
—
анг
лийский астрофизик. Его книга:
Эддингтон А.С. Теория относительности. Л.
-
М., 1934. 508 с.
до настоящего времени остается одним из лучших и серьезных изложений теории относительности. Написанная глубоким знатоком дела, имеющим ряд самостоятельных исследован
ий по различным специальным вопросам релятивистской механики и обладающим к тому же большим литературным талантом, книга Эддингтона в чрезвычайно компактной и изящной форме дает весь необходимый материал для основательного овладения теорией относительности
.
Уникальная теория шестимерного мира пространства и времени была создана Робертом Бартини
(она получила название "мир Бартини"). В противоположность традиционной модели с 4 измерениями (три измерения пространства и одно времени), этот мир построен на шес
ти ортогональных осях. По утверждению сторонников этой теории, все физические константы, которые Бартини аналитически (а не эмпирическим путем, как это было сделано для всех известных констант) вычислил для этого мира, совпадают с физическими константами н
ашего реального мира. "Прошлое, настоящее и будущее —
одно и то же. В этом смысле время похоже на дорогу: она не исчезает после того, как мы прошли по ней и не возникает сию секунду, открываясь за поворотом".
4.2.
Примеры программ.
Рассматриваемые ниж
е программы написаны на языке FreeBASIC и охватывают следующие разделы:
Основные арифметические операции.
Алгебраические функции комплексного аргумента.
Вычисление корней n
-
ой степени комплексного числа.
Возведение комплексного числа в комплексную степень
.
Гиперболические и тригонометрические функции комплексного аргумента.
4.2.1.
Основные арифметические операции.
Ниже приведен текст программы на языке FreeBASIC, иллюстрирующей реализацию основных арифметических операций над комплексными числами:
18
CADD
–
сложение чисел;
CSUB –
вычитание чисел;
CMUL –
умножение чисел;
CDIF –
деление чисел.
Программ
а
написана по мотивам главы III "Комплексный анализ" уже знакомого читателям пособия:
Гринчишин Я.Т. Алгоритмы и программы на Бейсике. М., 1988. 160 с.
Пособи
е содержит стандартные программы по некоторым разделам алгебры, теории чисел и математического анализа, написанные на языке программирования Бейсик и ориентированные на вычислительные процессы. Книга предназначена для студентов физико
-
математических специа
льностей педагогических институтов.
' P R O G R A M "Complex1"
' 04.06.2013
'
-------------------------------------------------------------
' Арифметические операции над комплексными числами
'
------
-------------------------------------------------------
'
#Lang "FB" ' режим совместимости с FreeBASIC
' Основной модуль программы
Dim As Single XRe, XIm, YRe, YIm, ZRe, ZIm
Dim As Single T1, T2
Open Cons For Output As #2
'Open "Complex.res" For Out
put As #2
Print #2,: Print #2, " Arithmetic on complex numbers":_
Print #2,
XRe = -
2.0: XIm = 6.0 ' первый аргумент
YRe = 3.0: YIm = -
4.0 ' второй аргумент
ZRe = XRe + YRe ' ZRe = 1.0
ZIm = XIm + YIm ' ZIm = 2.0
Print #2, Using " O
pr CADD: ZRe = ##.###### ZIm = ##.######";_
ZRe; ZIm
ZRe = XRe -
YRe ' ZRe = -
5.0
ZIm = XIm -
YIm ' ZIm = 10.0
Print #2, Using " Opr CSUB: ZRe = ##.###### ZIm = ##.######";_
ZRe; ZIm
XRe = 2.0: XIm =
5.0 ' первый
аргумент
YRe = -
2.0: YIm = 1.0 ' второй аргумент
ZRe = XRe*YRe -
XIm*YIm ' ZRe = -
8.0
ZIm = XRe*YIm + XIm*YRe ' ZIm = -
9.0
Print #2, Using " Opr CMUL: ZRe = ##.###### ZIm = ##.######";_
ZRe; ZIm
XRe = -
2.0: XIm = 6.0 ' первы
й
аргумент
YRe = 3.0: YIm = -
4.0 ' второй аргумент
If YRe <> 0 Or YIm <> 0 Then
If Abs(YRe) < Abs(YIm) Then
T1 = YRe/YIm: T2 = YIm + T1*YRe
ZRe = (XRe*T1 + XIm)/T2: ZIm = (XIm*T1 -
XRe)/T2
19
Else
T1 = YIm/YRe: T2 = YRe + T1*YIm
ZRe = (XRe + XIm*T1)/T2: ZIm = (XIm -
XRe*T1)/T2
EndIf
Print #2, Using " Opr CDIF: ZRe = ##.###### ZIm = ##.######"; ZRe; ZIm
Else
Print #2, " Error: Divisor is zero"
EndIf
Close #2
Sleep
Результат выполнения программы не вызывает вопросов:
Ac
tions with Complex numbers
Opr CADD: ZRe = 1.000000 ZIm = 2.000000
Opr CSUB: ZRe = -
5.000000 ZIm = 10.000000
Opr CMUL: ZRe = -
9.000000 ZIm = -
8.000000
Opr CDIF: ZRe = -
1.200000 ZIm = 0.400000
4.2.2.
Алгебраические функции комплексного аргумен
та.
В программу "Complex2.bas" включены подпрограммы:
CMOD()
-
Вычисление модуля комплексного числа.
CARG()
-
Вычисление аргумента комплексного числа.
CEXP()
-
Вычисление показательной функции комплексного числа.
CLOG()
-
Вычисление натурального логариф
ма комплексного числа.
В программу не включена подпрограмма вычисления корня целой степени из комплексного числа. О ней речь пойдет ниже.
' P R O G R A M "Complex2"
' 05.06.2013
'
---------------------
----------------------------------------
' Алгебраические функции комплексной переменной
'
-------------------------------------------------------------
'
#Lang "FB" ' режим совместимости с FreeBASIC
' Определение константы, доступной для всех мо
дулей
Const Pi As Single = 3.141592653589793238
' Вычисление модуля комплексного числа.
Declare Function CMOD(XR As Single, XI As Single) As Single
' Вычисление аргумента комплексного числа.
Declare Function CARG(XR As Single, XI As Single) As Single
' Вычисление показательной функции комплексного числа.
Declare Sub CEXP(XR As Single, XI As Single, ByRef YR As Single, ByRef YI As Single)
' Вычисление натурального логарифма комплексного числа.
20
Declare Sub CLOG(XR As Single, XI As Single, ByRef YR As Sing
le, ByRef YI As Single)
'
' Основной модуль программы
' Алгебраические функции комплексной переменной
Dim As Single XR, XI, YR, YI, RES
Dim As Integer N, I
Open Cons For Output As #2
'Open "Complex.res" For Output As #2
Print #2,
Print #2, " Algebraic f
unctions of a Complex Variable": Print #2,
' действительная и мнимая части аргумента
XR = -
8.0: XI = 6.0
Print #2, " Original Value of the Complex Number:"
Print #2, Using " Re(X)= ###.####### Im(X)= ###.#######"; XR; XI
RES = CMOD(XR, XI) ' обращение
к функции1
Print #2,
Print #2, " Module calculation of Complex number":
Print #2, Using " CMOD = ###.#######"; RES
RES = CARG(XR, XI) ' обращение
к
функции
Print #2,
Print #2, " Argument calculation of Complex number":
Print #2, Using " CARG = ###.##
#####"; RES
Print #2,
Print #2, " Exponential function Calculator"
CEXP(XR, XI, YR, YI)
Print #2, Using " Re CEXP(Z) = ###.######## Im CEXP(Z) = ###.########"; YR; YI
Print #2,
Print #2, " Natural Logarithm function Calculator"
CLOG(XR, XI, YR, YI)
Pri
nt #2, Using " Re CLOG(Z) = ###.######## Im CLOG(Z) = ###.########"; YR; YI
Close #2
Sleep
'
' Подпрограмма вычисления модуля комплексного числа
Function CMOD(XR As Single, XI As Single) As Single
Dim As Single ZERO, ONE, XR1, XI1
ZERO = 0.0: ONE = 1.0
XR1 = ABS(XR)
XI1 = ABS(XI)
IF XI1 <= XR1 Then GoTo L10
CMOD = XI1*Sqr(ONE+(XR1/XI1)^2)
GoTo L30
L10: IF XI1 <> ZERO Then GoTo L20
CMOD = XR1
GoTo L30
L20: CMOD = XR1*Sqr(ONE+(XI1/XR1)^2)
L30:
21
End Function
'
' Подпрограмма вычисления аргумента комплексног
о числа
Function CARG(XR As Single, XI As Single) As Single
If XR > 0 Then CARG = Atn(XI/XR): GoTo M1
If XR < 0 And XI >= 0 Then CARG = Pi + Atn(XI/XR): GoTo M1
If XR < 0 And XI < 0 Then CARG = -
Pi + Atn(XI/XR): GoTo M1
If XR = 0 And XI > 0 Then CARG = Pi/
2: GoTo M1
If XR = 0 And XI < 0 Then CARG = -
Pi/2: GoTo M1
M1:
End Function
'
' Подпрограмма вычисления показательной функции комплексного числа.
Sub CEXP(XR As Single, XI As Single, ByRef YR As Single, ByRef YI As Single)
YR = Exp(XR)*Cos(XI): YI = Exp(X
R)*Sin(XI)
End Sub
'
' Подпрограмма вычисления натурального логарифма комплексного числа.
Sub CLOG(XR As Single, XI As Single, ByRef YR As Single, ByRef YI As Single)
YR = Log(CMOD(XR, XI))
YI = CARG(XR, XI)
End Sub
Результат
выполнения
программы
:
Alg
ebraic functions of a Complex Variable
Original Value of the Complex Number:
Re(X)= -
8.0000000 Im(X)= 6.0000000
Module calculation of Complex number
CMOD = 10.0000000
Argument calculation of Complex number
CARG = 2.4980917
Exponential function Calculator
Re CEXP(Z) = 0.00032210 Im CEXP(Z) = -
0.00009373
Natural Logarithm function Calculator
Re CLOG(Z) = 2.30258512 Im CLOG(Z) = 2.49809170
4.2.3.
Вычисление корней n
-
ой степени комплексного числа.
В программу "
Complex
3.
b
as
" включены две подпрограммы для вычисления корней n
-
ой степени комплексных чисел:
CSQR
()
–
подп
рограмма
, полученная ординарн
ой
переработк
ой
программы 53б из справочника: Библиотека алгоритмов 51б
-
100б. Под ред. М.И.Агеева. 1976.
22
PA
09
R
()
–
подпрограмма,
полученная переводом программы из Библиотек
и
численного анализа НИВЦ МГУ
, в которой используется подпрограмма PA02R
()
для вычисление модуля комплексного числа
(заменена на CMOD
())
.
Параметры программы:
XR, XI -
действительная и мнимая части заданного ко
мплексного числа
;
NSN
–
номер исследуемой подпрограммы;
MDS -
среднее значение модуля комплексного числа
;
N
–
степень вычисляемого корня (
N
>= 2)
MD
(
N
), AR
(
N
)
–
массивы значений модулей и аргументов.
' P R O G R A M "Complex3"
' 06.06.2013
'
-------------------------------------------------------------
' Вычисление корней n
-
ой степени комплексного числа
'
-------------------------------------------------------------
'
' Функции CMOD() и CARG() взяты из программы Complex2
.
'
#Lang "FB" ' режим совместимости с FreeBASIC
' Определение константы, доступной для всех модулей
Const Pi As Single = 3.141592653589793238
' Вычисление модуля комплексного числа.
Declare Function CMOD(XR As Single, XI As Si
ngle) As Single
' Вычисление аргумента комплексного числа.
Declare Function CARG(XR As Single, XI As Single) As Single
' Вычисление корня n
-
ой степени комплексного числа.
Declare Sub CSQR(XR As Single, XI As Single, N As Integer, YR() As Single, YI() As Single)
' Вычисление корня n
-
ой степени комплексного числа.
Declare Sub PA09R(XR As Single, XI As Single, N As Integer, YR() As Single, YI() As Single)
'
' Основной модуль программы
'
Dim As Single XR, XI, XRI, XII
Dim As Integer N, I, NSN, MNSN
MNSN = 2
' рассматриваются две подпрограммы
Dim As String SubName(MNSN) ' имена
подпрограмм
SubName(1) = "CSQR": SubName(2) = "PA09R"
N = 5 ' показатель
степени
корня
Dim As Single YR1(N), YI1(N), MD(N), AR(N), MDS
Open Cons For Output As #2
'Open "Complex.res
" For Output As #2
Print #2,
Print #2, " Calculate Root of the Natural Degree of the Complex Number": Print #2,
' принятое значение комплексного аргумента
XR = -
8.0: XI = 6.0
Print #2, " Real and Imaginary parts of a Complex Number:"
23
Print #2, Using " Re(X)= ###.####### Im(X)= ###.#######"; XR; XI
Print #2,
Print #2, " Calculated Module and Argument of a Complex Number":
Print #2, Using " CMOD = ###.####### CARG = ###.#######"; CMOD(XR, XI); CARG(XR, XI)
Print #2,
'
For NSN = 1 To MNSN
' вычисление значений корней комплексного числа
MDS = 0
Print #2,
Print #2, " Calculated values of the Roots in the subroutine "; SubName(NSN)
If NSN = 1 Then CSQR(XR, XI, N, YR1(), YI1()) ' подпрограмма
1
If NSN = 2 Then PA09R(XR, XI, N, YR1(), YI1()) ' подпрограмма
2
Print #2, " I YR YI"
For I = 1 To N
Print #2, Using " ## ###.######## ###.########"; I; YR1(I); YI1(I)
Next I
Print #2,
' проверка вычисленных значений корней
Print #2,: Print #2, " Check the calculated values in the subroutine "; S
ubName(NSN)
Print #2, " I MD AR"
For I = 1 To N
XRI = YR1(I): XII = YI1(I)
MD(I) = CMOD(XRI, XII)
MDS = MDS + MD(I)
AR(I) = CARG(XRI, XII)
Print #2, Using " ## ###.######## ###.########"; I; MD(I); AR(I)
Next I
MDS = MDS/N
Print #2, Usi
ng "MDS= ###.######## MDS^N= ###.########"; MDS; MDS^N ' дает
10.00000024!
Print #2,
Next NSN
Close #2
Sleep
'
' Подпрограмма вычисления модуля комплексного числа
Function CMOD(XR As Single, XI As Single) As Single
Dim As Single ZERO, ONE, XR1, XI1
ZERO
= 0.0: ONE = 1.0
XR1 = ABS(XR)
XI1 = ABS(XI)
IF XI1 <= XR1 Then GoTo L10
24
CMOD = XI1*Sqr(ONE+(XR1/XI1)^2)
GoTo L30
L10: IF XI1 <> ZERO Then GoTo L20
CMOD = XR1
GoTo L30
L20: CMOD = XR1*Sqr(ONE+(XI1/XR1)^2)
L30:
End Function
'
' Подпрограмма вычисления арг
умента комплексного числа
Function CARG(XR As Single, XI As Single) As Single
If XR > 0 Then CARG = Atn(XI/XR): GoTo M1
If XR < 0 And XI >= 0 Then CARG = Pi + Atn(XI/XR): GoTo M1
If XR < 0 And XI < 0 Then CARG = -
Pi + Atn(XI/XR): GoTo M1
If XR = 0 And XI >
0 Then CARG = Pi/2: GoTo M1
If XR = 0 And XI < 0 Then CARG = -
Pi/2: GoTo M1
M1:
End Function
'
' Подпрограмма вычисления корня n
-
ой степени комплексного числа
Sub CSQR(XR As Single, XI As Single, N As Integer, YR() As Single, YI() As Single)
Dim As Singl
e S, M, T, C
Dim As Integer I
M = 1/N: S = (XR*XR + XI*XI)^(M/2)
If XR = 0 Then T = Sgn(XI)*Pi/2
If XR > 0 Then T = Atn(XI/XR)
If XR < 0 Then T = Pi + Atn(XI/XR): If XI < 0 Then T = T -
2*Pi
T = T*M: C = 2*Pi*M
For I = 1 To N
YR(I) = S*Cos(T): YI(I) = S*Si
n(T): T = T + C
Next I
End Sub
'
' Подпрограмма вычисления корня n
-
ой степени комплексного числа
Sub PA09R(XR As Single, XI As Single, N As Integer, YR() As Single, YI() As Single)
Dim As Integer K
Dim As Single SYS001, SYS003, SYS005, ONE, ZERO
Dim As Si
ngle ODN, TETA, TETAN, R1, R2, TPN, R
SYS001 = Pi ' Pi
SYS003 = 2*Pi ' 2*Pi
SYS005 = Pi/2 ' Pi/2
ONE = 1.0: ZERO = 0.0 ' константы
ODN = ONE/N
R = CMOD(XR,XI)^ODN
If XR > ZERO Then GoTo L10
If XR < ZERO Then GoTo L20
TETA = SY
S005
25
If XI < ZERO Then TETA = -
TETA
GoTo L30
L10: TETA = Tan(XI/XR)
GoTo L30
L20: TETA = Tan(XI/XR)+SYS001
L30: TETAN = TETA*ODN
TPN = SYS003*ODN
R1 = Cos(TPN)
R2 = Sin(TPN)
YR(1) = Cos(TETAN)
YI(1) = Sin(TETAN)
For K = 2 To N
YR(K) = YR(K
-
1)*R1
-
YI(K
-
1)*R2
YI(K) = YI(K
-
1)*R1+YR(K
-
1)*R2
Next K
For K = 1 To N
YR(K) = YR(K)*R
YI(K) = YI(K)*R
Next K
End Sub
Результат
выполнения
программы
:
Calculate Root of the Natural Degree of the Complex Number
Real and Imaginary parts of a Complex Number:
Re(X)= -
8.
0000000 Im(X)= 6.0000000
Calculated Module and Argument of a Complex Number
CMOD = 10.0000000 CARG = 2.4980917
Calculated values of the Roots in the subroutine CSQR
I YR YI
1 1.39116454 0.75930738
2 -
0.29225072 1.55771506
3 -
1.57178545 0.20341340
4 -
0.67916632 -
1.43199849
5 1.15203762 -
1.08843744
Check the calculated values in the subroutine CSQR
I MD AR
1 1.58489323 0.49961835
2 1.58489323 1.75625551
3 1.58489323 3.01289248
4 1.58489323 -
2.01365614
5 1.58489335 -
0.75701886
MDS= 1.58489323 MDS^N= 10.00000108
Calculated values of the roots in the subroutine PA09R
I YR YI
1 1.43258226 0.67793405
2 -
0.20206121 1.57195985
3 -
1.55746293 0.29359078
4 -
0.76050407 -
1.39051068
5 1.08744538 -
1.15297389
26
Check the calculated values in the subroutine PA09R
I MD AR
1 1.58489323 0.44199929
2 1.58489323 1.69863629
3 1.58489311 2.95527339
4 1.58489323 -
2.07127523
5 1.58489311 -
0.81463814
MDS= 1.58489323 MDS^N= 10.00000108
Обратите внимание: в обоих случаях модули практически совпадают, а значения аргументов заметно разнятся...
4.2.4.
Возведение комплексного числа в комплексную степень.
Странное дело, но возведение комплексного числа в комплексную степень представляет некоторое затруднение для начинающих программистов. Например, на весьма приличном сайте:
http://dxdy.ru/topi
c22558.html
"Научный форум dxdy" (Математика, Физика, Computer Science, LaTeX, Механика и Техника, Химия, Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки) в теме "Помогите решить / разобраться (М)"
участник беседы "bullvinkle" со
здал тему:
"Возведения комплексного числа в степень (тоже комплексную)" и написал:
Объясните, пожалуйста, как возводить комплексное число в комплексную степень.
В методичке не написано, в книге Пантелеева тоже нет, и гуглом пользовался. Везде написано толь
ко как в натуральную степень возводить.
Допустим, пример такой: (1+2i)^(3+4i).
Участник беседы "Brukvalub" ответил:
Можно так: (a+bi)^(c+di) = exp((c+di)*Ln(a+bi)).
Ниже приведена программа на языке FreeBASIC, реализующая это разумное предложение в самом примитивном варианте, без учета замечания участника "terminator
-
II" о многозначности комплексный логарифм
. Уверен, что читателям будет полезно посетить эту тему и написать "настоящую" программу!
В программе "
Complex
4.
bas
" осуществляется пошаговый вывод ре
зультатов вычислений. Это необходимо для сравнения с программой "
Complex
6.
bas
", использующей "Библиотеку поддержки комплексных вычислений".
' P R O G R A M "Complex4"
' 06.06.2013
'
-------------------
------------------------------------------
' Возведение комплексного числа в комплексную степень
'
-------------------------------------------------------------
' Здесь используются подпрограммы из программы Complex2.bas
#Lang "FB" ' режим совмес
тимости с FreeBASIC
' Определение константы, доступной для всех модулей
Const Pi As Single = 3.141592653589793238
27
' Вычисление модуля комплексного числа.
Declare Function CMOD(XR As Single, XI As Single) As Single
' Вычисление аргумента комплексного чис
ла.
Declare Function CARG(XR As Single, XI As Single) As Single
' Вычисление показательной функции комплексного числа.
Declare Sub CEXP(XR As Single, XI As Single, ByRef YR As Single, ByRef YI As Single)
' Вычисление натурального логарифма комплексного ч
исла.
Declare Sub CLOG(XR As Single, XI As Single, ByRef YR As Single, ByRef YI As Single)
'
' Основной модуль программы
'
Dim As Single ReX1, ImX1, ReX2, ImX2, ReY1, ImY1, ReY2, ImY2, ReY3, ImY3
Open Cons For Output As #2
'Open "Complex.res" For Output A
s #2
Print #2,
Print #2, " Construction of a complex Number in a comprehensive Degree": Print #2,
' заданные исходные данные
ReX1 = 1.0: ImX1 = 2.0 ' complex base
ReX2 = 3.0: ImX2 = 4.0 ' complex exponent
' (ReX1 + ImX1)^(ReX2 + ImX2) = CEXP((ReX2 + ImX2
)*CLOG(ReX1 + ImX1))
Print #2,
Print #2, " The specified initial Data:"
Print #2, Using " Re(X1)= ###.####### Im(X1)= ###.#######"; ReX1; ImX1
Print #2, Using " Re(X2)= ###.####### Im(X2)= ###.#######"; ReX2; ImX2
Print #2,
Print #2, " Natural Logari
thm Y1 = CLOG(X1):"
CLOG(ReX1, ImX1, ReY1, ImY1)
Print #2, Using " ReY1 = ###.######## ImY1 = ###.########"; ReY1; ImY1
Print #2,
Print #2, " Multiplication X2*CLOG(X1):"
'Y2 = X2*Y1
ReY2 = ReX2*ReY1 -
ImX2*ImY1
ImY2 = ReX2*ImY1 + ImX2*ReY1
Print #2, Us
ing " ReY2 = ###.######## ImY2 = ###.########"; ReY2; ImY2
Print #2,
Print #2, " Exponential CEXP(X2*CLOG(X1)):"
'Y3 = CEXP(Y2)
CEXP(ReY2, ImY2, ReY3, ImY3)
Print #2, Using " ReY3 = ###.######## ImY3 = ###.########"; ReY3; ImY3
Close #2
Sleep
'
28
' Под
программа вычисления модуля комплексного числа
Function CMOD(XR As Single, XI As Single) As Single
Dim As Single ZERO, ONE, XR1, XI1
ZERO = 0.0: ONE = 1.0
XR1 = ABS(XR)
XI1 = ABS(XI)
IF XI1 <= XR1 Then GoTo L10
CMOD = XI1*Sqr(ONE+(XR1/XI1)^2)
GoTo L30
L10:
IF XI1 <> ZERO Then GoTo L20
CMOD = XR1
GoTo L30
L20: CMOD = XR1*Sqr(ONE+(XI1/XR1)^2)
L30:
End Function
'
' Подпрограмма вычисления аргумента комплексного числа
Function CARG(XR As Single, XI As Single) As Single
If XR > 0 Then CARG = Atn(XI/XR): GoTo M1
If XR < 0 And XI >= 0 Then CARG = Pi + Atn(XI/XR): GoTo M1
If XR < 0 And XI < 0 Then CARG = -
Pi + Atn(XI/XR): GoTo M1
If XR = 0 And XI > 0 Then CARG = Pi/2: GoTo M1
If XR = 0 And XI < 0 Then CARG = -
Pi/2: GoTo M1
M1:
End Function
'
' Подпрограмма вычисле
ния показательной функции комплексного числа.
Sub CEXP(XR As Single, XI As Single, ByRef YR As Single, ByRef YI As Single)
YR = Exp(XR)*Cos(XI): YI = Exp(XR)*Sin(XI)
End Sub
'
' Подпрограмма вычисления натурального логарифма комплексного числа.
Sub CLOG(X
R As Single, XI As Single, ByRef YR As Single, ByRef YI As Single)
YR = Log(CMOD(XR, XI))
YI = CARG(XR, XI)
End Sub
Результат
выполнения
программы
:
Construction of a complex Number in a comprehensive Degree
The specified initial Data:
Re(X1)= 1.000
0000 Im(X1)= 2.0000000
Re(X2)= 3.0000000 Im(X2)= 4.0000000
Natural Logarithm Y1 = CLOG(X1):
ReY1 = 0.80471897 ImY1 = 1.10714877
Multiplication X2*CLOG(X1):
ReY2 = -
2.01443815 ImY2 = 6.54032230
Exponential CEXP(X2*CLOG(X1)):
ReY3 = 0.12900956 ImY3 = 0.03392413
29
Результаты вычисления вполне предсказуемые...
4.2.5.
Гиперболические и тригонометрические функции
комплексного аргумента.
Вы этом разделе используются "идеи" программ, представленных в уже знакомом читателям спр
авочнике:
Дьяконов В.П. Справочник по алгоритмам и программам на языке бейсик для персональных ЭВМ. М., 1989. 240 с.
Стр. 54: Глава 3. Алгоритмы и программы элементарных вычислений.
Здесь тоже необходимо помнить, что модуль комплексного числа определен од
нозначно, а аргумент —
с точностью до слагаемого, кратного 2Pi.
Конечно, существую формулы, позволяющие вычислять тригонометрические функции комплексного аргумента непосредственно, однако на практике удобнее использовать связь между тригонометрическими и г
иперболическими функциями комплексного переменного. Это учтено в программе "
Complex
5.
bas
". Заметим, что для комплексных значений аргумента уже нельзя более утверждать, что
:
| sin
(Z)
| <= 1 и
| cos
(Z)
| <= 1
,
например
, sin
(
i
)
= +1.1752011936438i, cos
(
i
)
= 1
.54308063481.
' P R O G R A M "Complex5"
' 07.06.2013
'
-------------------------------------------------------------
' Гиперболические и тригонометрические функции
'
-------------------------------
------------------------------
' Дьяконов В.П. Справочник по алгоритмам и программам
' на языке бейсик для персональных ЭВМ. М., 1989. 240 с.
' Стр. 54: Глава 3. Алгоритмы и программы элементарных...
' #Lang "FB" ' режим совместимости с FreeBASI
C
' Вычисление показательной функции комплексного числа.
Declare Sub CEXP(XR As Single, XI As Single, ByRef YR As Single, ByRef YI As Single)
' Вычисление гиперболического синуса комплексного числа.
Declare Sub CHSN(XR As Single, XI As Single, ByRef YR A
s Single, ByRef YI As Single)
' Вычисление гиперболического косинуса комплексного числа.
Declare Sub CHCS(XR As Single, XI As Single, ByRef YR As Single, ByRef YI As Single)
' Вычисление гиперболического тангенса комплексного числа.
Declare Sub CHTN(XR A
s Single, XI As Single, ByRef YR As Single, ByRef YI As Single)
' Вычисление тригонометрического синуса комплексного числа.
Declare Sub CSIN(XR As Single, XI As Single, ByRef YR As Single, ByRef YI As Single)
' Вычисление тригонометрического косинуса ком
плексного числа.
Declare Sub CCOS(XR As Single, XI As Single, ByRef YR As Single, ByRef YI As Single)
30
' Вычисление тригонометрического тангенса комплексного числа.
Declare Sub CTAN(XR As Single, XI As Single, ByRef YR As Single, ByRef YI As Single)
'
' О
сновной модуль программы
'
Dim As Single XR, XI, XR2, XI2, YR, YI, YR2, YI2, HSN, HCS, HSN2, HCS2, G
Open Cons For Output As #2
'Open "Complex.res" For Output As #2
Print #2,
Print #2, " Hyperbolic and Trigonometric functions of a complex variable"
' дей
ствительная и мнимая части заданного аргумента
XR = 3.0: XI = 2.0
Print #2, " Value of a Complex Variable:"
Print #2, Using " Re(Z) =###.######## Im(Z) =###.########"; XR; XI
Print #2,
' Гиперболические функции комплексной переменной
Print #2, " Hyperbolic functions of a real variable:"
Print #2,
'
'
Программа
3.24.
HSN = (Exp(XR) -
Exp(
-
XR))/2
HCS = (Exp(XR) + Exp(
-
XR))/2
Print #2, " Function evaluation CHSN(Z)"
YR = HSN*Cos(XI): YI = HCS*Sin(XI)
Print #2, Using " ReCHSN(Z)=###.######## ImCHSN(
Z)=###.########"; YR; YI
Print #2,
'
'
Программа
3.25.
Print #2, " Function evaluation CHCS(Z)"
YR = HCS*Cos(XI): YI = HSN*Sin(XI)
Print #2, Using " ReCHCS(Z)=###.######## ImCHCS(Z)=###.########"; YR; YI
Print #2,
'
'
Программа
3.26.
Print #2, " Function
evaluation CHTN(Z)"
XR2 = 2*XR: XI2 = 2*XI
HSN2 = (Exp(XR2) -
Exp(
-
XR2))/2
HCS2 = (Exp(XR2) + Exp(
-
XR2))/2
G = HCS2+Cos(XI2)
YR = HSN2/G: YI = Sin(XI2)/G
Print #2, Using " ReCHTN(Z)=###.######## ImCHTN(Z)=###.########"; YR; YI
Print #2,
'
' Тригонометр
ические функции комплексной переменной
31
Print #2, " Trigonometric functions of a complex variable:": Print #2,
'
'
Программа
3.18.
' Вычисление тригонометрического синуса комплексного числа.
Print #2, " Function evaluation CSIN(Z)"
HSN = (Exp(XI) -
Exp(
-
XI
))/2
HCS = (Exp(XI) + Exp(
-
XI))/2
YR = Sin(XR)*HCS: YI = Cos(XR)*HSN
Print #2, Using " ReCSIN(Z)=###.######## ImCSIN(Z)=###.########"; YR; YI
Print #2,
'
'
Программа
3.19.
' Вычисление тригонометрического косинуса комплексного числа.
Print #2, " Functio
n evaluation CCOS(Z)"
YR = Cos(XR)*HCS: YI = -
Sin(XR)*HSN
Print #2, Using " ReCCOS(Z)=###.######## ImCCOS(Z)=###.########"; YR; YI
Print #2,
'
'Программа 3.20.
' Вычисление тригонометрического тангенса комплексного числа.
Print #2, " Function evaluatio
n CTAN(Z)"
CTAN(XR, XI, YR, YI) ' вызов подпрограммы
Print #2, Using " ReCTAN(Z)=###.######## ImCTAN(Z)=###.########"; YR; YI
Print #2,
Close #2
Sleep
'
' Вычисление тригонометрического тангенса комплексного числа.
Sub CTAN(XR As Single, XI As Single,
ByRef YR As Single, ByRef YI As Single)
Dim As Single XR2, XI2, YR2, YI2, HSN2, HCS2, G
XR2 = -
XI: XI2 = XR
XR2 = 2*XR2: XI2 = 2*XI2
HSN2 = (Exp(XR2) -
Exp(
-
XR2))/2
HCS2 = (Exp(XR2) + Exp(
-
XR2))/2
G = HCS2+Cos(XI2)
YR2 = HSN2/G: YI2 = Sin(XI2)/G
YR = YI2:
YI = -
YR2
End Sub
'
' Подпрограмма вычисления показательной функции комплексного числа.
Sub CEXP(XR As Single, XI As Single, ByRef YR As Single, ByRef YI As Single)
YR = Exp(XR)*Cos(XI): YI = Exp(XR)*Sin(XI)
End Sub
Результат выполнения программы:
32
Hy
perbolic and Trigonometric functions of a complex variable
Value of a Complex Variable:
Re(Z) = 3.00000000 Im(Z) = 2.00000000
Hyperbolic functions of a real variable:
Function evaluation CHSN(Z)
ReCHSN(Z)= -
4.16890669 ImCHSN(Z)= 9.15449
905
Function evaluation CHCS(Z)
ReCHCS(Z)= -
4.18962574 ImCHCS(Z)= 9.10922813
Function evaluation CHTN(Z)
ReCHTN(Z)= 1.00323856 ImCHTN(Z)= -
0.00376403
Trigonometric functions of a complex variable:
Function evaluation CSIN(Z)
ReCSIN(Z)= 0.
53092104 ImCSIN(Z)= -
3.59056449
Function evaluation CCOS(Z)
ReCCOS(Z)= -
3.72454548 ImCCOS(Z)= -
0.51182258
Function evaluation CTAN(Z)
ReCTAN(Z)= -
0.00988438 ImCTAN(Z)= 0.96538585
33
5.
Библиотека поддержки комплексных вычислений.
...и почему
-
то сразу вспомнился старый, добрый FORTRAN
—
довольно жестко стандартизированный язык программирования, а потому легко переносимый на различные платформы. FORTRAN также как и многие другие языки, например, ADA, ALGOL, C, MODULA является "типизированным" я
зыком. Типизация берет начало от практических вопросов архитектуры компьютеров, реализации компилятора и модели языка. Прежде всего, язык программирования является типизированным, если спецификация каждой операции включает в себя типы данных, которые могут
быть аргументами этой операции, и запрещает применение этой операции ко всем остальным типам данных. Попытка выполнить операцию над запрещенными типами данных приводит к ошибке (для языков с безопасной типизацией) или к неопределенному поведению (для проч
их языков). Кроме того эта типизация носит статический характер, т.е. все проверки типов данных выполняются на этапе компиляции, а не на этапе выполнения программы, а типы данных ассоциируются с переменными, а не с их конкретными значениями.
Теперь вам по
нятно из
-
за чего уже неоднократно, например, в брошюре "Фрагмент 6. Линейная алгебра" призывал читателей скачать из сети и полистать замечательную книжку с примерами на Фортране: Форсайт Дж., Малькольм М., Моулер К., Машинные методы математических вычислен
ий. М., Мир, 1980, 280 с. Программы на Фортране из этой книжки без особого труда "перекладываются" на язык FreeBASIC. Но есть и "небольшая заминка" –
имею ввиду используемые в программах типы данных. Например, в распространенном среди студентов и школьнико
в MS
-
Фортране данные могут относятся к одному из шести базовых типов:
целый (INTEGER);
вещественный обычной точности (REAL);
в
ещественный двойной точности (DOUBLE);
комплексный (COMPLEX);
логический (LOGICAL);
символьный (CHARACTER);
и если отсутствие в яз
ыке FreeBASIC типа "логический" почти не вызывает затруднений, то отсутствие типа "комплексный" зачастую приводит к весьма продолжительной отладке программ при переносе на язык FreeBASIC.
5.1.
Предварительные сведения.
Большинство существующих библиоте
к и API написанных на языке C можно использовать при работе компилятора FreeBASIC без создания специальных "обёрток" и вспомогательных средств, например:
GTK+ 2.0: кросплатформенная библиотека для создания графического интерфейса (более 1МБ заголовков, вкл
ючая поддержку Glade, libart и glGtk);
GSL -
GNU Scientific library: комплексные числа, векторы и матрицы, быстрые преобразования Фурье, линейная алгебра, статистика, сортировка, дифференциальные уравнения, и тысяча других под
-
библиотеки с
математическими подпрограммами;
34
GMP -
GNU Multiple Precision Arithmetic Library: известна как самая быстрая библиотеки для работы с числами произвольной длины;
SDL -
Simple DirectMedia Layer: мультимедиа
-
библиотека для работы с аудио, вводом пользовательских данных, 3D
-
и
2D
-
графикой;
и многие другие.
..
Конечно, заманчивым в нашем случае представляется использование специализированной библиотеки GSL:
http://ru.wikipedia.org/wiki/GSL
GNU Scientific Library (или GSL) это библиотека, написанная на языке программирования C дл
я численных вычислений в прикладной математике и науке. GSL является частью проекта GNU и распространяется на условиях лицензии GPL. Много добрых слов об этой библиотеки сказано на сайте:
http://www.gnu.org/software/gsl/
там же доступно Справочное руководс
тво по GSL...
Не исключается возможность использования "Стандартной библиотеки Си":
http://ru.wikipedia.org/wiki/Стандартная_библиотека_языка_Си
Стандартной библиотекой языка Си (также известная как libc, crt) называется часть стандарта ANSI C, посвященна
я заголовочным файлам и библиотечным подпрограммам. Является описанием реализации общих операций, таких как обработка ввода/вывода и строк, в языке программирования Си. Стандартная библиотека языка Си —
это описание программного интерфейса, а не настоящая библиотека, пригодная для использования в процессе компиляции. Имя и характеристики каждой функции указываются в файле, именуемом заголовочным файлом, но текущая реализация функций описана отдельно в библиотечном файле.
Посмотрите на досуге
современный ст
андарт языка программирования Си именуемый как "C99" и определенный в стандарте ISO/IEC 9899:1999/Cor 3:2007 от 2007
-
11
-
15. В C99 было добавлено несколько новых возможностей, многие из которых уже были реализованы в качестве расширения в некоторых компилят
орах. Прежде всего, это отсутствующие типы данных (дополнительные расширенные целые типы, явный логический тип данных, а также комплексный тип для представления комплексных чисел).
Упомянутый в разделе 3.1. "Почтовый ящик" читатель "СМ" -
Саня Менщиков пр
едложил использовать надежную статическую библиотеку "Комплексные числа и функции"
, созданную подразделением информатики и химии французского государственного университета Лиможа. Это стало очень удачным предложением, так как делать "резкий поворот" в испо
льзовании программного обеспечения было уже поздно...
http://sourceforge.net/
Проект "
SourceForge
"
это попытка сделать успешными проекты с открытым кодом.
Отсюда возможен переход к странице:
http://sourceforge.net/projects/fbmath/
/ Home / Browse / Mathem
atics / FBMath /
Разработчик
Jean Debord (http://jean_debord.users.sourceforge.net/)
Здесь к загрузке предлагается реализация FBMat055 от 2010
-
08
-
27,
но если посмотреть полный список реализаций:
http://sourceforge.net/projects/fbmath/files/fbmath/
35
то после
дней реализацией будет FBMat062 от 2013
-
07
-
01:
http://sourceforge.net/projects/fbmath/files/fbmath/0.62/
Аналогичную информацию можно получить на сайте:
http://fbmath.sourceforge.net/
FBMath: Project Web Hosting -
Open Source Software.
SourceForge.net явля
ется крупнейшим в мире хостингом для проектов с открытым исходным кодом.
http://www.unilim.fr/pages_perso/jean.debord/tpmath/tpmath.htm
Р
екоменд
ую
скачать оттуда архив:
fbcomplex.zip (166 k) -
Complex numbers and functions.
После разархивирования получаем
:
11.01.2012 <DIR> contrib
5
863 gauss_jordan.bas
8
011 matrix.bas
1
984 newton.bas
18.01.2012 <DIR> demo
6
090 mandel.bas
1
695 polderiv.bas
1
386 polder
iv1.bas
4
293 testcomp.bas
17.01.2012 20
997 fbcomplex.bas
31.12.2011 8
563 fbcomplex.bi
18.01.2012 156
491 fbcomplex.pdf
17.01.2012 20
594 libfbcomplex.a
и
использ
уем из
него
без
изменений
заголовоч
ный
файл
fbcomplex
.
bi
, а
вместо
файла
библиотеки
libfbcomplex
.
a
взять
для
работы
перекомпилированный
файл
fbcomplex
.
bas
...
Перекомпиляция выполняется компилятором FreeBASIC version 0.24.0. (он указан в брошюрке "Фрагмент 1. Первые шаги к успеху.") так, ка
к это указано в брошюре.
Из
каталога
C:
\
Program Files
\
FreeBASIC
запускается интерпретатору командной строки open
-
console.exe
Для этого необходимо внизу экрана слева нажать кнопку "Пуск" -
> "Выполнить", далее в открывшемся окошке нажать кнопку "Обзор", мани
пулируя курсором выбрать из каталога компилятора
Содержимое
папки
C:
\
Program Files
\
FreeBASIC
20.08.2012 1
417
216 fbc.exe
20.08.2012 28
672 open
-
console.exe
17.01.2012 20
997 fbcomplex.bas
программу open
-
console.exe и запустит
ь ее нажатием кнопку "ОК". После запуска на экране монитора откроется черное "консольное окно".
Команда:
...
\
Compilier
\
fbc.exe fbcomplex.bas -
r -
c -
s console<CR>
создает в том же каталоге файлы:
25.07.2013 85
864 fbcomplex
.
asm
25.07.2013 19
381 fbcomplex
.
o
...
\
Compilier
\
fbc.exe fbcomplex.bas -
lib libfbcomplex.a <CR>
при выполнении это
й
команды создается файл статической библиотеки
25.07.2013 20
686 libfbcomplex.a
и стираются ранее созданные файлы fbcomplex.asm и fbcomplex.o –
они не нужны!
36
В каталог \
demo
\
включены следующие программы:
Программа testcomp
проверяет правильность сложных функций. Это немного модифицированная Pascal
-
программа, содержащая массив из 20 комплексных чисел.
Программы polderiv
и polderiv1
предназначен
ы для проверки вычисления полинома и ее производных метолом Горнера.
Программа mandel
использует участки Мандельброта или Жюлиа для итерации формулы z` = z^p + c, где p является положительным вещественным показателем степени.
5.2.
Пример использования б
иблиотеки программ.
Приведенная ниже программа "
Complex
6.
bas
" полностью повторяет программу "
Complex
4.
bas
", но использует библиотеку.
' P R O G R A M "Complex6"
' 06.07.2013
'
-------------------------
------------------------------------
' Возведение комплексного числа в комплексную степень
'
-------------------------------------------------------------
'
#Lang "FB" ' режим совместимости с FreeBASIC
#Include "fbcomplex.bi"
'
' Основной модуль программы
'
Dim As Single ReX1, ImX1, ReX2, ImX2, ReY1, ImY1, ReY2, ImY2, ReY3, ImY3
Dim As Complex X1, X2, Y1, Y2, Y3
Open Cons For Output As #2
'Open "Complex.res" For Output As #2
Print #2,
Print #2, " Construction of a complex Number in a comprehensiv
e Degree": Print #2,
' заданные исходные данные
ReX1 = 1.0: ImX1 = 2.0 ' complex base
ReX2 = 3.0: ImX2 = 4.0 ' complex exponent
Print #2, " The specified initial Data:"
Print #2, Using " Re(X1)= ###.####### Im(X1)= ###.#######"; ReX1; ImX1
Print #2, Us
ing " Re(X2)= ###.####### Im(X2)= ###.#######"; ReX2; ImX2
Print #2,
X1 = Cmplx(ReX1, ImX1)
X2 = Cmplx(ReX2, ImX2)
' прямое выполнение операции X1^X2 Print #2, " Complex Number in a Comprehensive Degree:"
Y3 = X1^X2 ' это вычисляется верно!
ReY3 = CR
eal(Y3)
ImY3 = CImag(Y3)
37
Print #2, Using " ReY3 = ###.######## ImY3 = ###.########"; ReY3; ImY3
Print #2,
' вычисление по формуле X1^X2 = CEXP((X2)*CLOG(X1)) Print #2, " Natural Logarithm Y1 = CLOG(X1):"
Y1 = CLOG(X1)
ReY1 = CReal(Y1)
ImY1 = CImag(Y1)
Print #2, Using " ReY1 = ###.######## ImY1 = ###.########"; ReY1; ImY1
Print #2,
Print #2, " Multiplication X2*CLOG(X1):"
Y2 = X2*Y1
ReY2 = CReal(Y2)
ImY2 = CImag(Y2)
Print #2, Using " ReY2 = ###.######## ImY2 = ###.########"; ReY2; ImY2
Print #2,
Pr
int #2, " Exponential CEXP(X2*CLOG(X1)):"
Y3 = CEXP(Y2)
ReY3 = CReal(Y3)
ImY3 = CImag(Y3)
Print #2, Using " ReY3 = ###.######## ImY3 = ###.########"; ReY3; ImY3
Close #2
Sleep
Результат
выполнения
программы
:
Construction of a complex Number in a com
prehensive Degree
The specified initial Data:
Re(X1)= 1.0000000 Im(X1)= 2.0000000
Re(X2)= 3.0000000 Im(X2)= 4.0000000
Complex Number in a Comprehensive Degree:
ReY3 = 0.12900959 ImY3 = 0.03392409
Natural Logarithm Y1 = CLOG(X1):
ReY1 = 0.80471897 ImY1 = 1.10714877
Multiplication X2*CLOG(X1):
ReY2 = -
2.01443791 ImY2 = 6.54032183
Exponential CEXP(X2*CLOG(X1)):
ReY3 = 0.12900959 ImY3 = 0.03392409
Очевидно хорошее совпадение результатов!
5.3.
Тестовая прогр
амма.
Ниже приведена (с минимальными изменениями) тестовая программа "testcomp.bas", которая находится в каталоге \
demo
\
архива "fbcomplex.zip".
38
' P R O G R A M "TestComp"
' 18.01.2012
'
------------
-------------------------------------------------
' Демонстрационная программа для библиотеки FBComplex
'
-------------------------------------------------------------
'
#Lang "FB" ' режим совместимости с FreeBASIC
#Include "fbcomplex.bi" '
указание заголовочного файла
' разделяемый массив исходных данных
Dim Shared As Complex A(1 To 20) = { _
( 0.0, 0.0),( 0.5, 0.5),(
-
0.5, 0.5),(
-
0.5, -
0.5), _
( 0.5, -
0.5),( 1.0, 0.0),( 1.0, 1.0),( 0.0, 1.0), _
(
-
1.0, 1.0),(
-
1.0, 0.0),(
-
1.0, -
1.0),
( 0.0, -
1.0), _
( 1.0, -
1.0),( 5.0, 0.0),( 5.0, 3.0),( 0.0, 3.0), _
(
-
5.0, 3.0),(
-
5.0, 0.0),( 5.0, -
3.0),( 0.0, -
3.0) }
Dim As Integer I
' вызываемые подпрограммы
Sub Pause
Print
Print "Press a key to continue ..."
Do : Loop Until InKey <> ""
Print
End Sub
'
Sub TestConv
Dim As Integer K
Print "Complex number definition/conversion/output:"
Print
Print " z rectangular z polar"
Print " -----------------------
---------------------
----------
"
For K
= 1 To 20
CPrint A(K), "####.####"
CPrintPolar A(K), " ####.####"
Next K
Pause
End Sub
'
Sub TestArith
Dim As Complex Z1 = (1, 1), Z2 = (SQR(3), -
1)
Print "Complex arithmetic: +, -
, *, /, ^"
Print
Print "Let z1 = "; : CPrint Z1, "####.
####" : Print Print " z2 = "; : CPrint Z2, "####.####" : Print
Print
Print "z1 + z2 = "; : CPrint Z1 + Z2, "####.####" : Print
Print "z1 -
z2 = "; : CPrint Z1 -
Z2, "####.####" : Print
Print "z1 * z2 = "; : CPrint Z1 * Z2, "####.####" : Prin
t
Print "z1 / z2 = "; : CPrint Z1 / Z2, "####.####" : Print
Print "z1 ^ z2 = "; : CPrint Z1 ^ Z2, "####.####" : Print
Pause
End Sub
39
Sub TestFunc(ByVal Index As Integer)
Dim As Integer K
Dim As Complex C = (0.5, 0.5), C1 = 1 / C, Z, Z1
Print Space
(15); "z"; Space(17);
' Перебор
всех
функцй
Select Case Index
Case 1: Print " Ln(z) Exp(Ln(z)) "
Case 2: Print " ArcSin(z) Sin(ArcSin(z)) "
Case 3: Print " ArcCos(z) Cos(ArcCos(z)) "
Ca
se 4: Print " ArcTan(z) Tan(ArcTan(z)) "
Case 5: Print " ArcSinh(z) Sinh(ArcSinh(z))"
Case 6: Print " ArcCosh(z) Cosh(ArcCosh(z))"
Case 7: Print " ArcTanh(z) Tanh(ArcTanh(z))"
Case 8: Pr
int "z^c, c=0.5+0.5*i (z^c)^(1/c) "
Case 9: Print " Ln(Gamma(z)) Gamma(z) "
End Select
Print " -----------------------
-----------------------
";
Print " -----------------------
"
For K = 1 To 20 Print Using
"##"; K;
CPrint A(K), "####.####"
If ((Index = 1) And (K = 1)) _ ' CLog(0)
Or ((Index = 4) And (K = 8 Or K = 12)
) _ ' CATan(+/
-
i)
Or ((Index = 7) And (K = 6 Or K = 10)) _ ' CATanh(+/
-
1)
Or ((Index = 9) And (K = 1 Or K = 10 Or K = 18)) _ ' Gamma(integer <= 0)
Then
Print " undefined"
Continue For
End If
' перребор всех функций
Select Case Index
Case 1: Z = CLog(A(K)) : Z1 = CExp(Z)
Case 2: Z = CASin(
A(K)) : Z1 = CSin(Z) Case 3: Z = CACos(A(K)) : Z1 = CCos(Z)
Case 4: Z = CATan(A(K)) : Z1 = CTan(Z) Case 5: Z = CASinh(A(K)) : Z1 = CSinh(Z) Case 6: Z = CACosh(A(K)) : Z1 = CCosh(Z)
Case 7: Z = CATanh(A(K)) : Z1 = CT
anh(Z) Case 8: Z = A(K) ^ C : Z1 = Z ^ C1 Case 9: Z = CLnGamma(A(K)) : Z1 = CExp(Z) End Select CPrint Z, "####.####"
CPrint Z1, "####.####"
Print
Next K
Pause
End Sub
40
'
Sub TestRoot
' Computes the 3 cubic roots of -
1+i
Dim As Complex A = (
-
1, 1), Z, Z1
Dim As Integer K
Print "The 3 cube roots of (
-
1+i)"
Print
Print Space(12); "z"; Space(22); "z^(1/3)"; Space(16); "[z^(1/3)]^3"
Print " -----------------------
-----------------------
";
Print " --------------
---------
"
For K = 0 To 2
Z = CRoot(A, K, 3)
Z1 = Z^3
CPrint A, "####.####"
CPrint Z, "####.####"
CPrint Z1, "####.####"
Print
Next K
Pause
End Sub
'
' Основной модуль программы
' Поочередный вызов тес
т
овых подпрограмм:
TestConv
Tes
tArith
For I = 1 To 9
TestFunc I
Next I
TestRoot
Попробуйте, вам должно понравиться!
41
Как всегда расстаюсь не без сожаления
-
материал этой брошюры
требует более детального, как минимум –
тщательного, рассмотрения. Но, к
ак любит говорить моя хорошая з
накомая: "
небрежность в подаче материала почти всегда возбуждает интерес к теме
"
! Будем надеяться, что это так (хотя знакомая имела ввиду совсем другой случай).
При этом конечно (с учетом описанной выше библиотеки) не должны быть забыты такие важные для и
нженеров вопросы:
аппроксимация функции рядом Фурье
-
Лагерра;
прямое и обратное преобразования Лапласа.
Пожалуйста, не ругайте автора за то, что "вводная часть" опять получилась слишком большой по отношению к "основной части" и очень мало сказано про комп
илятор FreeBASIC
–
интеллигентный человек всегда найдет надежный источник информации...
Надеюсь также на обсуждение относительно нового высокоуровневого языка программирования общего назначения Python. Про него уже "слагают песни"
...
Но сегодня лимит вр
емени и объема брошюры исчерпан!
На этом позвольте закруглиться.
До новых встреч!
Пишите: eugene_r@mail.ru
Документ
Категория
Информатика
Просмотров
365
Размер файла
991 Кб
Теги
программа, функции, freebasic, комплексные, числа
1/--страниц
Пожаловаться на содержимое документа