Автор: Дьяконов В.П.
Теги: вычислительная математика численный анализ математика программирование эвм компьютерные технологии микро эвм язык программирования бейсик
ISBN: 5-02-014530-0
Год: 1989
В. П. Дьяконов
СПРАВОЧНИК
по алгоритмам
и программам
на языке бейсик
для персональных
ЭВМ W
в. п. дьяконов
СПРАВОЧНИК
по алгоритмам
и программам
на языке бейсик
для персональных
ЭВМ
МОСКВА «НАУКА»
ГЛАВНАЯ РЕДАКЦИЯ
ФИЗИКО-МАТЕМАТИЧЕСКОЙ ЛИТЕРАТУРЫ
1989
ББК 22.18
ДЭЗ
УДК 519.6(083)
Дьяконов В. П. Справочник по алгоритмам и программам на языке бейсик для персональных
ЭВМ: Справочник.— М.: Наука. Гл. ред. физ.-мат. лит., 1989.— 240 с.— ISBN 5-02-014530-0.
Даны краткие сведения о современных отечественных и зарубежных микроЭВМ индивидуального
пользования. Описаны основные версии бейсика, наиболее распространенного языка программирования
персональных ЭВМ (ПЭВМ), отечественных микро- и миниЭВМ (Электроника-60, Электроника-
ДЗ-28, Искра-226, диалоговых вычислительных комплексов ДВК-1, ДВК-2 и др.). Изложены основы
программирования на бейсике. Основное внимание уделено общему математическому, алгоритми-
ческому и программному обеспечению расчетов на ПЭВМ. В справочник включена обширная
библиотека прикладных программ на бейсике (более 300 программ), обеспечивающих реализацию основ-
ных численных методов, вычисление большинства специальных функций и решение ряда практи-
ческих задач в различных областях науки и техники.
Для инженеров, научно-технических работников и студентов втузов.
Библиогр. 43 назв.
Рецензент доктор технических наук С. В. Черемных
ДЬЯКОНОВ Владимир Павлович
СПРАВОЧНИК ПО АЛГОРИТМАМ И ПРОГРАММАМ НА ЯЗЫКЕ БЕЙСИК
ДЛЯ ПЕРСОНАЛЬНЫХ ЭВМ
Редактор Л. Г. Силкова
Художественный редактор Г. М. Коровина
Технический редактор С. Я. Шкляр. Корректоры Е. Ю. Рычагова, М. Л. Медведская
ИБ № 32350
Подписано к-печати 23.12.88. Т-23076. Формат 70X 100/16. Бумага книжно-журнальная. Гарнитура
литературная. Печать офсетная. Усл. печ. л. 19,5. Усл. кр.-отт. 39,33. Уч.-изд. л. 25,16. Допечатка тиража
100 000 экз. Заказ 1274. Цена 1 р. 40 к.
Ордена Трудового Красного Знамени издательство «Наука».
Главная редакция физико-математической литературы.
117071 Москва В-71, Ленинский проспект, 15.
Ленинградская типография № 2 головное предприятие ордена Трудового Красного Знамени Ленинград-
ского объединения «Техническая книга» им. Евгении Соколовой Союзполиграфпрома при Государ-
ственном комитете СССР по делам издательств, полиграфии и книжной торговли.
198052, Ленинград, Л-52, Измайловский проспект, 29.
п 1702070000-021 ло
д ----------------- 48-87
053(02)-89
ISBN 5-02-014530-0
© Издательство «Наука».
Главная редакция
физико-математической
литературы, 1987
ОГЛАВЛЕНИЕ
Предисловие................................................................. 5
Как пользоваться справочником............................................... 7
Глава 1. Основные характеристики и возможности персональных ЭВМ ... 9
§ 1.1. Современные типы персональных ЭВМ и их возможности.............. 9
§ 1.2. . Карманные персональные ЭВМ (Pocket Computers).................11
§ 1.3. Персональные ЭВМ среднего класса (Home Computers)...............13
§ 1.4. Профессиональные ЭВМ и вычислительные микросистемы индивидуаль-
s ного пользования . ..............................................16
§ 1.5. Периферийное оборудование персональных ЭВМ......................19
Глава 2. Бейсик — основной язык программирования персональных ЭВМ 21
§ 2.1. Алфавит и основные операторы языка бейсик ......................21
§ 2.2. Модификации языка бейсик........................................27
§ 2.3. Арифметические и алгебраические операции, работа в режиме каль-
кулятора . . . . *......................................................41
§2.4. Элементарное программирование на языке бейсик................ . 43
§ 2.5. Специальные вопросы программирования на языке бейсик............48
§ 2.6. Перевод программ с одной версии языка бейсик на другую..........51
Глава 3. Алгоритмы и программы элементарных вычислений 54
§ 3.1. Операции с действительными числами 54
§ 3.2. Операции и функции с комплексными числами и переменными . • • 56
§ ’3.3. Вычисление степенных многочленов и дробно-рациональных функций 61
§ 3.4. Вычисление ортогональных многочленов 63
§ 3.5. Операции с матрицами 65
§ 3.6. Вычисление факториалов и комбинаторика 70
§ 3.7. Преобразования координат и векторный анализ 71
Глава 4. Алгоритмы и программы реализации основных численных методов . . . 75
.§ 4.1. Решение систем линейных уравнений 75
§ 4.2. Интерполяция и экстраполяция . . ’ 78
§ 4.3. Решение нелинейных и трансцендентных уравнений 86
§ 4.4. Решение систем нелинейных уравнений 91
§ 4.5.. Решение алгебраических уравнений с действительными и комплексными
коэффициентами 93
• § 4.6. Поиск экстремумов функций одной и множества переменных 96
§ 4.7. Численное дифференцирование и вычисление коэффициентов чувстви-
тельности 100
§ 4.8. Вычисление определенных интегралов 104
§ 4.9. Вычисление определенных интегралов специального вида 108
§ 4.10. Решение систем дифференциальных уравнений 111
§ 4.11. Гармонический синтез 116
§ 4.12. Вычисление собственных значений и векторов матриц 117
Глава 5. Спектральный, статистический, корреляционный и регрессионный анализ 122
§5.1. Спектральный анализ на основе дискретного преобразования Фурье . .122
§ 5.2. ‘Специальные виды спектрального анализа............................128
§ 5.3. Статистический анализ и подготовка гистограмм......................133
§ 5.4. Реализация метода Монте-Карло......................................136
§ 5.5. Корреляционный анализ.............................................137
§ 5.6. Регрессионный анализ (приближение функций по методу наименьших
квадратов)...................................................... 138
§ 5.7. Сглаживание данных эксперимента....................................144
1
3
Глава 6. Вычисление специальных функций.................................... 147
§ 6.1. Методы вычисления специальных функций...............................147
§ 6.2. Интегральные показательные функции................................. 147
§ 6.3. Интегральные синус и косинус........................................148
§ 6.4. Гамма-функции (включая неполные)....................................149
§ 6.5. Функции Бесселя (включая модифицированные)..........................151
§ 6.6. Функции Эйри........................................................153
§ 6.7. Интегралы Френеля................................................. 153
§ 6.8. Эллиптические интегралы.......................г.....................154
§ 6.9. Функции Струве, Ангера и Вебера.....................................155
§ 6.10. Гипергеометрические функции........................................156
§ 6.11. Дилогарифм....................................................... 156
§ 6.12. Функции Кельвина...................................................157
§6.13. Функции Дебая и Зиверта............................................157
§ 6.14. Интеграл вероятности и родственные ему функции.....................157
§ 6.15. Некоторые статистические функции...................................159
Глава 7. Прикладные программы технических и экономических расчетов .... 162
§ 7.1. Типовые электротехнические расчеты..................................162
§ 7.2. Расчет индуктивных элементов........................................166
§ 7.3. Расчет емкостных элементов и конденсаторов..........................171
§7.4. Расчет линий передачи и задержки....................................174
§ 7.5. Расчет усилителей...................................................180
§ 7.6. Расчет активных фильтров.......................................... 186
§ 7.7. Расчет нелинейных и ключевых электронных устройств..................207
§ 7.8. Расчеты в механике и термодинамике ................................ 215
§ 7.9. Финансово-экономические расчеты.....................................217
Приложение 1. Подготовка к работе системы подготовки программ на базе
микроЭВМ Электроника-ДЗ-28 ................................................ 220
Приложение 2. Номера ошибок и их содержание для систем подготовки
программ на базе микроЭВМ Электроника-ДЗ-28 ............................... 221
Приложение 3. Подготовка ПЭВМ FX-702P к работе................................ 222
Приложение 4. Номера ошибок и их содержание для ПЭВМ FX-702P . . . 223
Приложение 5. Программная реализация некоторых численных методов
частного применения........................................................ 223
§ П5.1. Построение полинома по его действительным корням...................223
§ П5.2. Обращение матрицы, вычисление определителя и решение систем линей-
ных уравнений с разными векторами свободных членов..................... 224
§ П5.3. Решение системы линейных уравнений методом отражения........ 225
§ П5.4. Решение системы линейных уравнений методом простых итераций . . . 225
§ П5.5. Решение системы линейных уравнений методом Зейделя...........226
§ П5.6. Решение системы линейных уравнений с переопределенной матрицей . 226
§ П5.7. Приближенное вычисление нормального решения системы линейных
уравнений с вырожденной матрицей........................................227
§ П5.8. Решение системы нелинейных уравнений Методом простых итераций . . 228
§ П5.9. Вычисление спектра реакции нелинейной системы с аналитически
заданной передаточной характеристикой на гармоническое воздействие . 228
§ П5.10 . Регрессия для 16 видов парных зависимостей у(х).................228
§ П5.11 . Сплайн-аппроксимация, интерполяция и экстраполяция...............231
§ П5.12 . Пакет программ с матричными операторами.........................232
§ П5.13 . Приближение функций по Чебышеву.................................234
Список литературы ............................................................ 237
Предметный указатель...........................................................239
ПРЕДИСЛОВИЕ
Прогресс в экономике, промышленности, науке и технике, в сфере образования сейчас
во многом зависит от массового внедрения вычислительной техники. Не случайно задача
повышения «компьютерной грамотности» населения стала государственной • и политической
задачей. Ее решение возможно благодаря интенсивному развитию нового поколения
вычислительных средств — микроЭВМ индивидуального пользования или персональных ЭВМ
(ПЭВМ).
Уже сейчас у нас в стране в пользовании находятся многие десятки тысяч таких
ЭВМ — от настольных отечественных вычислительных микросистем индивидуального пользо-
вания (на базе микроЭВМ Электроника-60, Электроника-ДЗ-28, Электроника-ТЗ-59, Искра-226
и др.) и диалоговых вычислительных комплексов (ДВК-1, ДВК-2, ДВК-3) до зарубежных кар-
манных компьютеров (Pocket Computers FX-702P, PC-1211, PC-1500 и др.). Осваивается
производство дешевых и массовых домашних компьютеров (Home Computers) типа Агат, Элек-
троника-БК-0010 и др.
Однако пока даже существующий парк таких ЭВМ используется недостаточно эффективно.
Главная причина этого в том, что пользователями ПЭВМ являются в основном непрофессионалы
в области вычислительной техники и вычислительной математики. Они слабо знакомы
с эксплуатацией ЭВМ, языками и основами их программирования, разнообразными численными
методами. Литературы, где все эти вопросы, с учетом специфики персонального использования
ПЭВМ, рассматривались бы одновременно, пока практически нет. Многие ПЭВМ поставляются
пользователям с весьма краткими (и рассчитанными на профессионалов) описаниями, часто
без библиотек прикладных программ. В результате ПЭВМ нередко превращается в «черный
ящик» на столе пользователя, таинственные возможности которого остаются нераскрытыми.
Справочник ориентирован на отмеченную выше обширную категорию пользователей ПЭВМ.
При его подготовке учтена специфика нынешнего этапа применения ПЭВМ в СССР, т. е. исполь-
зование ПЭВМ главным образом для автоматизации решения рутинных научно-технических,
статистических и экономических задач. Поэтому, а также с учетом ограниченного объема
справочника в нем мало внимания уделено игровым задачам, применению ПЭВМ в быту,
решению сложных информационных задач (обработка графиков, редактирование текстов
и т. д.). Описание таких применений должно быть предметом специальной литературы.
По построению справочник похож на ранее изданную книгу автора [10], посвященную
расчетам на программируемых микрокалькуляторах (ПМК). Более того, сохранена значи-
тельная часть контрольных примеров [10]. Это, по мнению автора, облегчит массовой
категории пользователей ПМК освоение новой, гораздо более мощной вычислительной
техники — ПЭВМ.
В справочнике кратко описаны основные типы отечественных и зарубежных ПЭВМ, их
периферийное оборудование и основной язык программирования — бейсик (BASIC) . Рассмотрен
ряд типовых версий бейсика, от простых до расширенных, содержащих команды обработки
символьных переменных, косвенной адресации и построения графиков. Даны основы програм-
мирования на бейсике и перевода программ с одной версии бейсика на другую.
Основное вниманием справочнике уделено описанию общего прикладного математического,
алгоритмического и программного обеспечения ПЭВМ, рассчитанного прежде всего на научно-
технические и статистические расчеты. По сравнению с [10] существенно расширено
5
описание алгоритмов и увеличена сложность решаемых задач. Так, в справочнике описаны
универсальные программы для решения систем линейных и дифференциальных уравнений
(в том числе с автоматическим выбором шага интегрирования), численного интегрирования
с заданной точностью, вычисления всех корней полиномов с действительными и комплексными
коэффициентами и т. д. Существенно расширен круг вычисляемых специальных функций.
В последней главе дан ряд прикладных программ для решения задач в некоторых
конкретных областях науки и техники. Разумеется, эти программы не исчерпывают решения всего
многообразия таких задач. При использовании всех возможностей персональных ЭВМ на них
можно решать сложные научно-технические задачи, вплоть до проектирования космических
аппаратов [29].
Справочник ориентирован на научно-технических работников, инженеров, техников и
студентов вузов и техникумов. Поскольку подобное справочное руководство подготовлено
впервые, автор отдает себе отчет в том, что книга не лишена недостатков, и с благодарностью
примет советы и замечания по ее содержанию. Автор выражает глубокую благодарность
рецензенту доктору технических наук, профессору С. В. Черемных, кандидату технических наук,
доценту Т. А. Самойловой, Т. А. Калаевой и всем коллегам, оказавшим помощь автору
в подготовке программ и рукописи. Пожелания по книге следует направлять по адресу:
117071 Москва В-71, Ленинский просп., 15. Главная редакция физико-математической литера-
туры издательства «Наука».
В. /7. Дьяконов
КАК ПОЛЬЗОВАТЬСЯ СПРАВОЧНИКОМ
1. Приведенные в справочнике программы даны на версии языка бейсик умеренной слож-
ности, применяемой в массовых отечественных системах подготовки программ на базе настольной
микроЭВМ Электроника-ДЗ-28. Они* легко переводятся на версии бейсика, применяемые
в диалоговых вычислительных_комплексах ДВК-1, ДВК-2 и ДВК-3, микроЭВМ Электроника-60,
Искра-226 и др. Для перевода программ рекомендуется изучить материал гл. 2 и описание версии
языка бейсик, применяемой в ПЭВМ, которой располагает пользователь.
2. Программы содержат детальный диалог с пользователем, который легко воспринимается
при чтении листинга (текста) программы. В первой строке листинга дается подробное наиме-
нование программы. Порядок использования программы указывается комментариями, выводи-
мыми на экран дисплея. Поэтому в поясняющем тексте подробное описание правил использова-
ния каждой программы не приводится.
3. Все программы рассчитаны на вывод результатов вычислений на экран терминала
(дисплея) в экспоненциальной форме, как правило, с одним знаком до десятичной точки
и девятью — после нее. Для вывода результатов на печать принтером и изменения формата
в программу следует включить команды вида PRINT# 1 ... (на место многоточия записываются
символы, задающие формат печати).
4. Программы даны в виде распечатки листингов, что исключает возникновение типограф-
ских ошибок. Однако после ввода программ в ЭВМ нужно тщательно проверить их как по кон-
трольным примерам, так и тестам пользователя, учитывающим специфику решаемых задач
и области применения выбранных численных методов.
5. Между буквенными обозначениями в тексте описания и в программе могут быть легко
интерпретируемые различия. Например, буква е в программе может обозначаться как Е,
строчная буква т — как прописная М и т. д. Эти различия обусловлены тем, что в бейсике
используются только прописные латинские (а в комментариях и русские) буквы. В отдельных
случаях (но не всегда) эти различия оговорены. Как правило, смысл обозначений поясняется
комментариями в программах.
6. Следует помнить, особенно при использовании программ, реализующих итерационные
методы, что заданная погрешность вычислений е относится к погрешности метода, но не к при-
меняемым исходным формулам! Например, приближенные формулы для инженерного расчета
индуктивности или емкости могут иметь погрешность, существенно превосходящую 8. Оценка
погрешности приближенных и эмпирических формул в ряде случаев не дается, поскольку она
входит в сферу профессиональных познаний пользователя.
7. При проведении важных вычислений рекомендуется внимательно разобраться с алго-
ритмом вычислений и применяемой программой. Следует помнить, что скрытые и неожиданно
выявляющиеся ошибки могут быть даже в тщательно отлаженных программах, выдержавших
испытания контрольными тестами. Лучший путь исключения таких ошибок заключается в
применении программ, полностью понятных пользователю. Естественность и простота записи
математических выражений и логических условий на бейсике существенно облегчает разбор
программ и способствует осмысленному их применению.
7
/ 8. В справочнике описаны полностью законченные программы. Однако, удалив строки
программ, содержащие операторы ввода исходных данных и вывода результатов, большинство
программ можно использовать в качестве подпрограмм в сложных расчетах. Разумеется,
при этом может потребоваться изменение номеров строк и адресов.
9. Материал справочника ориентирован на решение расчетных (математических, инже-
нерных и др.) задач общего характера. Поэтому основное внимание уделено алгоритми-
ческой ясности программ. В программах по возможности использованы операторы, встре-
чающиеся во всех версиях языка программирования бейсик. Применение некоторых опера-
торов, например DEF FN, FN, ON и др., сознательно ограничено, так как в ряде версий языка
бейсик они отсутствуют и могут быть заменены другими операторами. Эти меры направлены
на придание программам большей универсальности и на облегчение перевода программ
на другие версии бейсика.
10. Наиболее совершенные версии языка бейсик обладают обширными дополнительными
возможностями: обработка текстов, графика, средства создания машинных фильмов, звуко-
вые эффекты и т. д. Однако в реализациях этих возможностей у различных версий языка
бейсик имеется много принципиальных отличий. Их описание, как отмечалось в предисловии,
выводит за рамки данной книги. Однако пользователи ПЭВМ могут легко дополнить описан-
ные в справочнике программы выводом графиков, заданием звуковых эффектов и другими
возможностями.
11. Математические выражения и формулы в справочнике даны в окончательном виде
без выводов. Читатель, желающий подробно разобраться с математическим обоснованием
описанных в справочнике алгоритмов и программ может воспользоваться специальной лите-
ратурой, включая приведенную в списке литературы справочника.
ГЛАВА 1
ОСНОВНЫЕ ХАРАКТЕРИСТИКИ И ВОЗМОЖНОСТИ
ПЕРСОНАЛЬНЫХ ЭВМ
§ 1.1. Современные типы
персональных ЭВМ и их
возможности
Персональные ЭВМ (ПЭВМ) являются
новым перспективным классом вычислитель-
ных средств, ориентированных на использо-^1
вание их одним пользователем. Применение
персональных ЭВМ обеспечивает децентра-
лизацию вычислительных процессов, резкое
сокращение стоимости машинного времени,
повышение удобства эксплуатации и привлече-
ние к работе на ЭВМ обширного круга
пользователей, неспециалистов в области
вычислительной техники и программирования.
Это достигается простотой работы с ПЭВМ,
имеющей характер диалога с пользователем.
Карманные персональные ЭВМ (класса
Pocket Computers) представляют собой сверх-
миниатюрные ЭВМ на микросхемах большой
степени интеграции (БИС), ориентированные
на решение достаточно сложных расчетных
и относительно простых информационных
задач.
Домашние персональные ЭВМ (класса
Home Computers) предназначены для решения
расчетных и информационных задач средней
сложности, прежде всего относящихся к быту:
ведение семейного бюджета, сложные и
«интеллектуальные» игры (шахматы, посадка
космических кораблей на планеты и т. д.),
обучение различным дисциплинам, демон-
страция компьютерных слайдов, учебные рас-
четы и т. д.
Профессиональные персональные ЭВМ
ориентированы на решение сложных расчет-
ных и информационных задач различными
профессиональными работниками (матема-
тиками, физиками, программистами, эко-
номистами и т. д.) в различных, в том числе
комфортных, условиях как на работе, так
и дома.
Основные свойства персональных ЭВМ
(ПЭВМу. ПЭВМ должны обладать следующей
совокупностью свойств:
— ориентацией на эксплуатацию одним
пользователем, как правило, неспециалистом в
области вычислительной техники;
— низкой стоимостью (за рубежом от 50
до 5 000 дол.), обеспечивающей возможность
приобретения за счет личных средств поль-
зователя либо средств небольших организа-
ций и учреждений;
— простотой конструкции и высокой
надежностью, малыми габаритами и массой,
обеспечивающими размещение ПЭВМ на
части письменного или рабочего стола;
— работой с обширным периферийным
оборудованием (см. § 1.5), включающим
устройства внешнец памяти, алфавитно-
цифровые и графические Печатающие устрой-
ств^ ЧРпринтер&О* и др.;
— программированием хотя бы на одном
языке высокого уровня, например бейсике;
— обеспечением общения с пользователем
в режиме диалога, в ходе которого ПЭВМ и
пользователь обмениваются вопросами и отве-
тами на обычном языке (в письменной, а у
наиболее совершенных ЭВМ и в устной
форме);
— ориентацией на решение широкого
круга как сугубо вычислительных и расчетных
задач, так и информационных.
Вычислительные микросистемы индиви-
дуального пользования строятся на основе
ПЭВМ или настольных микроЭВМ, осна-
щенных периферийным оборудованием (как
минимум дисплеем, накопителем информации
на магнитных дисках или ленте и принтером).
Структура вычислительной микросистемы
индивидуального пользования дана на рис. 1.1.
Отметим назначение ее узлов.
Шина данных и адресов представляет
собой обычный или плоский многожильный
кабель, связывающий узлы системы. Через эту
шину ЭВМ обменивается с другими узлами
цифровыми данными и адресами, по которым
эти данные должны поступать.
Центральный процессор (ЦП) — устрой-
ство, выполняющее основные логические и
арифметические операции. Обычно ЦП ПЭВМ
строится на одном или нескольких микро-
процессорах (МП) с разрядностью (т. е.
числом двоичных разрядов) данных от 4 до 32.
В состав ЦП входят также арифметико-логи-
ческое устройство управления (УУ) и спе-
циальные устройства связи ЦП с периферий-
ным оборудованием через общую шину.
Клавишный пульт — устройство для ввода
данных и программ в ПЭВМ, по внешнему
виду напоминающие пульт пишущей машинки.
Интерфейс клавиатуры — аппаратурные и
программные средства сопряжения ЦП с кла-
вишным пультом.
Таймер — устройство для формирования
временных последовательностей, задающих
порядок работы ПЭВМ.
9
Рис. 1.1. Структура вычислительной микросистемы на основе персональной ЭВМ
Оперативное запоминающее устройство
(ОЗУ) — набор БИС (больших интегральных
схем), обеспечивающих хранение и временное
запоминание цифровой информации. ОЗУ
ПЭВМ обычно содержит отделение для хра-
нения информации (одна или несколько стра-
ниц), отображаемой дисплеем (ОЗУ дисплея).
Постоянное запоминающее устройство
(ПЗУ) служит для постоянного хранения
микропрограмм выполнения основных опера-
ций ПЭВМ на машинно-ориентированном
языке. Обычно ПЗУ содержит и программу-
интерпретатор (или транслятор) для програм-
мирования ПЭВМ на языке высокого уровня,
например бейсике.
Накопитель на магнитном диске (НМД) —
устройство для магнитной записи цифровой
информации на носитель в виде диска с
ферромагнитным покрытием и считывания ее
с диска. НМД дополняет ПЗУ ПЭВМ, причем
на нем может храниться информация, вводи-
мая пользователем (массивы данных и про-
граммы).
Контроллер дискдвого накопителя
(КНМД) — устройство сопряжения ЦП с
НМД и контроля работы НМД.
Накопитель на магнитной ленте (НМЛ) —
обычный бытовой или специализированный
кассетный магнитофон для записи цифровой
информации на магнитную ленту. Функции
НМЛ аналогичны функциям НМД.
Контроллер накопителя на магнитной ленте
(КНМЛ) — устройство сопряжения ЦП с
НМЛ и контроля его работы.
Дисплей — устройство отображения алфа-
витно-цифровой и графической информации.
Дисплей обеспечивает контроль вводимой
информации, выдачу промежуточных и итого-
вых результатов работы ПЭВМ, а также
контроль информации хода вычислений. Он
является основным элементом ПЭВМ, обеспе-
чивающим эффективный диалог с пользо-
вателем.
Принтер — устройство печати алфавитно-
цифровой (иногда и графической) инфор-
мации.
10
Параллельный интерфейс — аппаратурные
и программные средства сопряжения ПЭВМ
с периферийным, оборудованием, воспри-
нимающим информацию в виде параллельного
кода (например, принтером).
Акустический модем (AM) устройство
двухстороннего обмена информацией между
телефонной сетью и ПЭВМ с преобразованием
информации в высокочастотные звуковые
посылки. AM используется для связи ПЭВМ
с вычислительными и информационными
центрами. i
Последовательный интерфейс — средства
сопряжения ПЭВМ с периферийным оборудо-
ванием, воспринимающим информацию в виде
последовательного кода (например, AM).
ч Графопостроитель (ГП) — устройство для
построения графиков и рисунков с высо-
кой разрешающей способностью (иногда
функции ГП выполняет универсальный
принтер).
Планшет для ввода графической инфор-
мации — устройство, обеспечивающее пре-
образование координат точек графика в элек-
трические сигналы, вводимые в ПЭВМ. Иногда
его функции выполняет дисплей, снабженный
световым пером-датчиком.
Перечисленные узлы полностью входят в
состав только наиболее дорогих и сложных
ПЭВМ. Более подробные данные о составе
ПЭВМ и характеристиках их узлов приведены
ниже.
Функциональные возможности ПЭВМ. Об-
ласти применения ПЭВМ весьма обширны.
ПЭВМ могут вести научно-технические, инже-
нерные, экономические и статистические рас-
четы, облегчают подготовку программ для
больших ЭВМ, позволяют решать различные
информационные задачи (обработка текстов и
графиков, демонстрация подвижных рисунков
и иллюстраций к различным дисциплинам,
изучаемым пользователем, связь с крупными
информационными и вычислительными цент-
рами и представление пользователю имею-
щихся в них информационных материалов
и т. д.). ПЭВМ могут выполнять функции
ЭВМ, управляющих различными приборами:
от телевизора, телефона, магнитофона и сти-
ральной машины до сложных контрольно-
измерительных комплексов и научного обору-
дования.
В будущем ПЭВМ приведут к рево-
люционным изменениям в информационном
обеспечении общества и станут столь же при-
вычным предметом обихода, как телевизор,
радиоприемник или магнитофон.
Основные характеристики ПЭВМ: объем
памяти ОЗУ и ПЗУ, скорость счета, языки
программирования, габариты и масса, состав
периферийного оборудования.
Объем памяти ОЗУ и ПЗУ измеряется в
килобайтах (1 кбайт =1024 байт, 1 байт =
= 8 бит, бит — двоичная единица). Простые
ПЭВМ имеют объем памяти ПЗУ и ОЗУ 84-
4-16 кбайт. У более сложных объем памяти
ОЗУ достигает 1284-512 кбайт, а объем памя-
ти ПЗУ за счет внешних носителей наращива-
ется до 0,24-20 Мбайт (1 Мбайт» 106 байт).
Скорость счета ПЭВМ характеризует число
операций в единицу времени. Поскольку видов
операций очень много, этот параметр указы-
вается редко. Специалисты судят о скорости
счета по примененному в ПЭВМ микропроцес-
сору и тактовой частоте его работы (от 0,5 до
10 МГц).
Пользователей ПЭВМ в первую очередь
интересуют функциональные и эксплуатацион-
ные возможности ПЭВМ: класс решаемых
задач, габариты и масса, состав периферий-
ного оборудования. Приведенные ниже дан-
ные ориентированы на пользователей ПЭВМ,
а не на их разработчиков.
§ 1.2. Карманные персональные
ЭВМ (Pocket Corrtputers)
Как отмечалось, карманные ПЭВМ класса
Pocket Computers представляют собой сверх-
миниатюрные ЭВМ, выполненные на одной или
нескольких БИС. Обычно они снабжены
жидкокристаллическим мозаичным индикато-
тором (дисплеем), позволяющим отображать
одну или несколько строк текстовых и цифро-
вых данных. Типовые данные ряда ПЭВМ класса
Pocket Computers даны в табл. 1.1. В таблицах
будут использованы следующие сокращения:
КМ — кассетный магнитофон, П — принтер,
ГП — графопостроитель, AM — акустический
модем, Д — дисплей, ТД — телевизор-дис-
плей, ГД — графический дисплей, Т — тай-
мер, НМД — накопитель на магнитном диске,
НМЛ — накопитель на магнитной ленте,
ТП — термопринтер, прочерк (—) —- отсут-
ствующий в описании технический параметр.
Одна из простейших ПЭВМ этого класса
PC-1211 (рис. 1.2) имеет клавишный пульт,
обеспечивающий побуквенный набор команд
языка бейсик (см. гл. 2) [20]. По своим
возможностям эта ПЭВМ сопоставима с про-
Характеристики некоторых карманных ПЭВМ класса Pocket Computers
Таблица 1.1
Характеристика Тип ПЭВМ
РС-1210 РС-1211 PC-1500 FX-702P НР-71В
Фирма и страна-изготови- тель Sharp (Япония) Sharp (Япония) Sharp (Япония) Casio (Япония) Hewlett Packard (США)
Емкость ПЗУ, кбайт — 8 16 — 64 4-256
Емкость ОЗУ, кбайт 1 2 3,54-16 17,54-16
Максимальное число шагов программы 400 4004-Ю24 — 1680 -
Максимальное число пере- менных 40 178 — 226 —
Число строк/знаков дисплея 1/24 1/24 1/26 1/20 1/22
Потребляемая мощность, мВт 0,011 0,013 г — 0,01 —
Габариты, мм 175X71X15 175X71X15 195X86X22,5 165X82X17 190X98X13
Масса, г 163 170 375 176 340
Периферийные устройства П КМ, П КМ, П, ГП, AM КМ, П КМ, П, ГП, AM, ТД и др.
Язык программирования Бейсик Бейсик Бейсик Бейсик Бейсик
11
DEG RUN „ SHARP
900-C=vU*A+B*B):PRINT C* IHj PC-1211 L^-TOCKET COMPUTER
CA/BREAK А < > _
[оВД fol Iw| -POWER ГП # Ль У 0 0 0 It 1 J m Tl |shft| LZ. |~р] 30 3 0 3 0 ——i Г——I
[7 0 rn Г~д~1 ГП ГП пл пп пл г 3 ГН Hl ] ГП |ёх^ Г+1 Гь
[j 0 И ш и по и Гм] Isrcl | ... JRESER ENTER | ЕЕ
VABLEKEK?
Рис. 1.2. Внешний вид простейшей., ПЭВДЦк л асе a Pocket Computers PC-1211
граммируемым микрокалькулятором высокого
класса [10]. Однако,/благодаря программи-
рованию на языке бейсик, ПЭВМ PC-1211
обеспечивает проведение вычислений в режиме
диалога с пользователем.
ПЭВМ FX-702P выполняет функции слож-
ного непрограммируемого и программируемого
микрокалькуляторов для научных и статисти-
ческих расчетов и ПЭВМ класса Pocket
Computers с расширенной версией языка бей-
сик, содержащей свыше 160 команд. Пульт
этой ПЭВМ (рис. 1.3) содержит 65 клавиш
[43]. Все клавиши имеют двойное или тройное
управление (оно обеспечивается с помощью
префиксных клавиш F1 и F2). Наиболее
распространенные команды (операторы) бей-
сика могут вводиться нажатием всего двух
клавиш — префиксной и основной с символом
нужной команды. Данные о языке бейсик
этой ПЭВМ приведены в § 2.2.
ПЭВМ класса Pocket Computers обычно
имеют автономное питание от батареек,
потребляют ничтожно малую мощность.
Питание для ПЭВМ FX-702P осуществляется
от двух литиевых дисковых батарей CR 2032
с напряжением 3 В и емкостью 0,16 А-ч, потре-
бляемая от них мощность не более 0,01 Вт.
При нормальной эксплуатации комплекта
батарей хватает на 2 года (240 часов непре-
рывной работы). Предусмотрено автомати-
ческое выключение ПЭВМ через 8 мин, если на
ней не ведется работа. Однако при выключении
ОЗУ остается подключенным к источнику
питания, что обеспечивает долговременную
память программ и данных.
В ПЭВМ FX-702P можно вводить до 10
различных программ. Объем памяти этой
ПЭВМ составляет 26 переменных (регистров
памяти) и 1 680 шагов (каждый оператор бей-
сика занимает 1 шаг). Число переменных
можно увеличить до 226 путем сокращения
числа шагов программы до 80. Это обеспе-
чивает формирование одномерных массивов до
200 переменных или двух двумерных массивов
10X10 переменных. Совместно с принтером и
бытовым кассетным магнитофоном ПЭВМ
Рис. 1.3. Внешний вид ПЭВМ FX-702P (1 —регулятор контраста, 2 — дисплей, 3 — префиксные
клавиши, 4 — разъем интерфейса, 5 — клавиши функциональные, 6 — выключатель питания, 7 —
клавиша продолжения работы, 8 — клавиша ввода, 9 — цифровые клавиши)
12
FX-702P образует простейшую вычислитель-
ную микросистему (рис. 1.4), ориентированную
на автоматизацию научных, инженерных, ста-
тистических и экономических расчетов умерен-
ной сложности. Скорость счета ПЭВМ
FX-702P в 254-30 раз превосходит скорость
счета программируемых микрокалькуляторов
Электроника-Б3-34 [10].
Рис. 1.4. Вычислительная микросистема на базе
ПЭВМ FX-702P
МикроЭВМ FX-702P имеет удобные сред-
ства редактирования программ: замену и
вставку любого символа, просмотр текста
программ (листинга) построчно и в бегущем
режиме, трассировку программ (режим
TRACE) и др. Бейсик хранится в ПЗУ и вво-
дится автоматически при включении машины.
Дисплей отображает 20 знаков в формате
матрицы каждого знака 5X7, всего в строку
можно включить 62 знака.
Характеристики ПЭВМ класса Pocket
Computers непрерывно улучшаются. Неко-
торые модели таких ПЭВМ имеют вычисли-
тельные мощности, сравнимые с миниЭВМ
70-х годов.
Например, ПЭВМ НР-71В фирмы Hewlett
Packard (см. табл. 1.1) имеет объем ПЗУ
с внешними блоками до 320 кбайт, а ОЗУ —
до 33,5 кбайт [17]. Эта микроЭВМ через
интерфейс HP-IL может подключаться к
30 внешним устройствам. В их числе: телевизор
или дисплей, отображающий одновременно
24 строки по 80 знаков, накопители информа-
ции на магнитной ленте и магнитных картах,
принтер, акустические модемы, графопостро-
итель и др.
Большой объем ПЗУ (64 кбайт в минималь-
ном варианте) обеспечивает реализацию рас-
ширенной версии бейсика, имеющей до 240
команд. Внешние ПЗУ могут содержать
обширные библиотеки программ и банки
данных пользователя, ориентированные на
решение различных сложных профессиональ-
ных задач.
Для данного класса ПЭВМ характерен
калькуляторный режим работы, обеспечиваю-
щий возможность проведения ряда расчетов
без программирования, а также проверку
исполнения отдельных команд.
§ 1.3. Персональные ЭВМ среднего
класса (Home Computers)
ПЭВМ класса Ноте Computers обычно
рассчитаны на подключение к бытовому кас-
сетному магнитофону (накопителю) и телеви-
зору (или дисплею). Они выполняются чаще
всего в виде небольшого клавишного пульта
с расположением клавиш, как у пишущей
машинки. Такое решение обеспечивает резкое
удешевление ПЭВМ (например, стоимость
модели ПЭВМ ZX-81 английской фирмы Sin-
clair Radions Ltd. в 1983 г. составила 50 дол.,
что сделало ее дальнейшее производство
нерентабельным).
Характеристики ряда простейших зару-
бежных ПЭВМ класса Home Computers даны
в табл. 1.2. Эти ПЭВМ рассчитаны на работу
с черно-белым телевизором и обеспечивают
формирование алфавитно-цифровых знаков и
графиков. Лишь одна из этих ПЭВМ —
НР-75 содержит встроенный дисплей на одну
строку и накопитель информации на магнит-
ных картах.
Из отечественных ПЭВМ к данному классу
относится бытовая персональная микроЭВМ
Электроника-БК-0010 (бытовой компьютер).
Эта ПЭВМ рассчитана на использование в
качестве домашнего информационного центра,
позволяющего проводить различные расчеты,
создавать каталоги, справочники и словари,
учебные программы, предоставлять пользо-
вателю игры и т. д.
ПЭВМ Электроника-БК-0010 выполнена на
базе однокристального 16-разрядного микро-
процессора К1801ВМ1 и имеет емкость ОЗУ
32 кбайт, в том числе ОЗУ пользователя 16
или 28 кбайт. Емкость ПЗУ 32 кбайт, а
емкость ОЗУ экранной памяти 16 или 4 кбайт.
ПЭВМ подключается к стандартному быто-
вому телевизору и кассетному магнитофону.
На экран телевизора выводится 25 строк (одна
служебная). При матрице знаков 8 X 8 в строке
размещается 64 символа, а при матрице
16X8 — 32. Питание -для ПЭВМ осущест-
вляется от сети (220 В). ПЭВМ потребляет
мощность не более 20 Вт. Ее размеры
370 X 180X70 мм, масса не более 4 кг. Пульт
ПЭВМ имеет 92 клавиши.
Графическая информация у ПЭВМ Элек-
троника-БК-0010 отображается в формате
512X256 точек при двух градациях яркости и
256X256 точек при четырех градациях.
Запись программ и данных на кассетный
магнитофон происходит со скоростью 1200 бит/с.
На стандартную кассету МК-60 можно запи-
сать информацию с объемом до 256 кбайт.
Программируется ПЭВМ Электроника-БК-
0010 на языках фокал (упрощенный язык,
похожий на бейсик), бейсик и ассемблер
(система команд, как у микроЭВМ Электро-
ника-60). В первый год серийного производ-
ства (1985 г.) цена ПЭВМ Электроника-
БК-0010 составила 540 р. [19].
Новое поколение ПЭВМ класса Ноте
Computers (см. табл. 1.3) рассчитано на
сопряжение с цветным дисплеем или телеви-
зором. При этом ПЭВМ обеспечивают полу-
чение высококачественных многоцветных изо-
13
Таблица 1.2
Характеристики простейших персональных ЭВМ класса Home Computers
Характеристика Тип ЭВМ
ZX-80 ZX-81 НР-75 РВ-700
Фирма и страна-изготови- тель Sinclair Radions Ltd. (Великобри- тания) Sinclair Radions Ltd. (Великобри- тания) Hewlett Packard (США) Casio (Япония)
Разрядность микропроцес- сора < 8 8 8 8
Емкость ПЗУ, кбайт 32 32 48-+-16 .25
Емкость ОЗУ, кбайт 1 2 16-+-8 4-+-16
Число строк/знаков дисплея Внешний 24/32 Внешний 24/32 1/32 4/20
Габариты, мм 299X178X51 299X178X51 — 200X85X20
Масса, кг 0,34 0,34 0,75
Периферийные устройства ТД, П, НМЛ ТД, П. НМЛ НМЛ, AM, П НМЛ, п
Язык программирования Бейсик Бейсик Бейсик Бейсик
} В качестве дисплея
применяется телевизор.
Т а б л й" ц а 1.3
Характеристики некоторых зарубежных ПЭВМ класса Home Computers, сопрягаемых с цветным
дисплеем (телевизором)
Характеристика Тип ЭВМ
ZX- Spectrum BBC- Micro А VIC-20 ATARI-400 TI-99/4A TRS- Colour
Емкость ОЗУ, кбайт стандарт- ное/макс и мальное 16/48 16/32 5/29 16/16 16/48 16/32
Число цветов общее 8 8' 16 16 16 9
Емкость ОЗУ,( кбайт (для дис- плея) 9 3 — 7 14 10
Число цветов, выводимых одно- временно 8 4 16 4 16 ‘ 8
Режим мерцания Есть Есть Нет Нет Нет Нет
Подстройка яркости Есть Нет Нет Есть Нет Нет
Установка графического режи- Есть Есть Есть Нет Есть Нет
ма пользователем
Полный на&ор кода -ASG-И Есть Есть Нет Нет Нет Нет
Экран дисплея (строки/столбцы) 24X32 25X40 23X24 24X40 24X29 16X32
Автоповтор на всех клавишах Есть Есть Нет Есть Есть Нет
Графика повышенной разре- шающей способности Есть Есть Нет Есть Нет Есть
Язык программирования Бейсик, Бейсик Бейсик Бейсик Бейсик Бейсик
паскаль
14
Сражений, позволяют строить графики и
рисунки е высокой разрешающей способ-
ностью, выводить различную текстовую и
цифровую информацию в виде сложных много-
цветных таблиц и т. д.
Одной из наиболее распространенных мо-
делей таких ПЭВМ является микроЭВМ ZX-
Spectrum английской фирмы Sinclair Radions
Ltd. [11]. Клавишный пульт ZX-Spectrum
(рис. 1.5), имеющий размеры 233Х144Х
ХЗО мм, обеспечивает ввод большинства
на одном гибком микродиске 100 кбайт. Сред-
нее время доступа 3—5 с.
У новой модели ПЭВМ ZX-Spectrum +
число клавиш пульта увеличено до 58,
что позволило реализовать ряд дополнитель-
ных текстовых и графических операторов и
использовать новую расширенную версию
языка бейсик. Емкость ОЗУ увеличена до 41,5
кбайт у основной модификации ПЭВМ.
Накопитель на кассете с бесконечным рулоном
ленты обеспечивает емкость внешнего ПЗУ до
ZX-SPECTRUM BLUE REB MAGENTA GREEN CYAN YELLOW WHITE L EDIT CAPS LOCK TRUE VIDEO INV. VIDEO < V Д > GRAPHICS ] black! DELETE
1 ? 2 a Z 0 04 4? in CD 7 ° 6 9 > 0—
DEF FN FN SIN COS LINE TAN OPEN INT CLOSE RND MOVE STRS ERASE CHR? POINT CAT FORMAT CODE PEEK TAB
Q<’= 4PLOT DRAW E> = REM R < RUN T > RAND Y AND 3ETURH u OR IF [ AT INPUT врокЕ p " PRINT
ASN READ ACS ATN VERIFY MERGE C RESTORE BATA SGN ABC SQR ] IN OUT © VAL LEN USR
astof M NEto q N01 SAVE pSTEf Dll* > 1 F T0 FOR 1 I pTHEt gG0TI J H * GOSH J - В LOAI ^LIST ЧГт ENTER
L I N \ -C J- CIRCLE EXP LPRINT LLIST BIN VAL? IN KEY? 1 SCREEN? ATTR
CAPS SHIFT ^COPY XI CLEAF c ? CONT V z CLS В * BORDER N ’ NEXT м • PAUSE ' SYMBOL SHIFT BREAK SPACE
E JEEP INK PAPER FLASH BRIGHT OVER INVERSE
Рис. 1.5. Внешний вид ПЭВМ ZX-Spectrum класса Home Computers
команд расширенной версии бейсика нажа-
тием одной-двух клавиш. Благодаря много-
кратному использованию клавиш (с помощью
префиксных клавиш) общее число их сни-
жено до 40. Помимо стандартных команд
бейсика пульт обеспечивает ввод до 37 графи-
ческих символов и 22 кодов управления цветом.
В пульт вмонтирован звуковой сигнализатор,
дающий до 130 полутонов звука. Емкость ПЗУ
16 кбайт. При отображении графики в 8 цветах
матрица экрана содержит 256X 176 точек (при
отображении алфавитно-цифровой информа-
ции формируется 24 строки с 32 символами
в каждой). Клавишный пульт обеспечивает
ввод полного набора символов по стандарт-
ному коду ASC-II.
Для ПЭВМ ZX-Spectrum разработаны спе-
циальные малогабаритные принтер и накопи-
тель на диске. Принтер обеспечивает печать на
рулоне бумаги шириной 10 см со скоростью
50 символов/с. По команде СОРУ принтер
копирует сложные изображения с экрана теле-
визора (например, шахматную доску с фигу-
рами).
Данная ПЭВМ может подключаться к
кассетному магнитофону и обеспечивает ско-
рость записи до 1500 бит/с. При этом данные
или программы, занимающие объем ОЗУ 16
кбайт, записываются (и вводятся в ПЭВМ) за
время 100 с. Миниатюрный дисковый накопи-
тель обеспечивает скорость записи и считы-
вания до 16 кбайт/с при объеме информации
85 кбайт на одну кассету. Загрузка программ
емкостью 48 кбайт обеспечивается им за 9 с.
Как видно из табл. 1.3, различия у характе-
ристик ПЭВМ класса Home Computers до-
вольно несущественные. Все ЭВМ этого класса
обеспечивают повышенные (в сравнении
с микроЭВМ класса Pocket Computers)
возможности в решении информационных
задач, позволяющие использовать их в часы
досуга (игры, просмотр компьютерных слай-
дов и т. д.). В то же время набор операторов
для проведения математических и научно-
технических вычислений у них ограничен —
в лучшем случае он содержит операторы
вычисления тригонометрических и обратных
тригонометрических функций, натурального
логарифма, экспоненциальной функции, квад-
ратного корня и возведения в степень. В этом
отношении некоторые типы ПЭВМ класса
Pocket Computers (например, описанная выше
модель FX-702P) значительно превосходят
ПЭВМ класса Home Computers.
В последнее время появилось много моде-
лей так называемых «портфельных» ЭВМ.
Обычно они снабжены жидкокристаллическим
многострочным индикатором, например 24 стро-
ки по 80 символов в каждой. Эти ПЭВМ зани-
мают промежуточное .положение между до-
машними и профессиональными ПЭВМ. В то
же время ПЭВМ этого типа имеют большой
объем ОЗУ (до 512 Кбайт.) и развитые сред-
ства графики.
15
§ 1.4. Профессиональные ПЭВМ
и вычислительные микросистемы
индивидуального пользования
Профессиональные ПЭВМ рассчитаны на
индивидуальное использование их профес-
сиональными пользователями (математиками,
программистами, учеными и инженерами, кон-
структорами, экономистами и т. д.). Обычно
такие ПЭВМ предоставляются пользователям
организациями и учреждениями, в которых они
работают. Стоимость, размеры и масса про-
фессиональных ПЭВМ могут заметно пре-
вышать таковые для ПЭВМ класса Pocket
Computers и Home Computers. В то же время
возможности этих машин должны быть до-
вольно большими — лучшие типы профес-
сиональных ПЭВМ не уступают по основным
параметрам (объему памяти, скорости счета
и номенклатуре периферийного оборудования)
большим ЭВМ.
В табл. 1.4 приведены характеристики ряда
зарубежных профессиональных ПЭВМ. Одной
из первых моделей таких ПЭВМ следует
считать модель НР-85 фирмы Hewlett Packard
(США) [33]. В корпус средних размеров
заключены собственно ЭВМ, дисплей, принтер,
таймер и кассетный накопитель. Все эти узлы
потребляют от сети мощность менее 25 Вт,
поэтому хороший тепловой режим работы
ПЭВМ Достигается без принудительной венти-
ляции, что полностью исключает шум при
работе. Термопечатающее устройство этой
ПЭВМ обеспечивает скорость печати
64 знака/с (две строки по 32 символа) с матри-
цей 5x7.
Накопитель на магнитной ленте НР-85
имеет емкость памяти 210 кбайт при записи
данных и 195 кбайт при записи программ, ско-
рость записи и считывания 25,4 см/с, скорость
поиска данных 152 см/с, время перемотки
ленты 29 с, вероятность ошибки не более
1 XI О8. В НМЛ используются кассеты раз-
мерами 63,5 X 82,5X 12,7 см. В НР-85 встроены
кварцевые часы, три программируемых тай-
мера с временем выдержки от 1 до 9999999 с
и звуковой сигнализатор. Дисплей этой ЭВМ
может отображать одновременно алфавитно-
цифровую и графическую информацию (в од-
ном цвете). Предусмотрена память дисплея на
64 строки.
ПЭВМ НР-87 имеет емкость ОЗУ 16 кбайт,
которая может наращиваться дополнительно
Таблица 1.4
Характеристики некоторых зарубежных профессиональных ПЭВМ и вычислительных микросистем
Характеристика Тип ЭВМ
НР-85 TRS-80 Apple-Il PCjr Professional Formula-1
Страна-изготовитель США США США США США Япония
Емкость ОЗУ, мин/макс., кбайт 16/32 8/32 64/1000 - 64/128 256 64
Емкость ПЗУ мин/макс., кбайт 32/200 32 16 64 800 4/68
Число клавиш пульта 92 56 165 знаков 62 91 91
Размер ЭЛТ дисплея по диагонали, см 127 Дисплей жидкокри- сталличе- ский 230 или 305 300 (цветной) 140
Матрица экрана при графике 256X192 240X64 — 640X200 1024X240 —
Число строк/столбцов 16/32 8/20 24/80 24/80 24/80 24/132 24/80
Встроенные устройства д, п, Т, НМЛ, ПЗУ Д, Т, ПЗУ НМД, ПЗУ Т, ПЗУ, AM, Т д, т, пзу Д, П, Т, НМД (2 XI Мбайт, 2X0,7 Мбайт)
Периферийные устрой- ства ПЗУ НМЛ, П д.п Д,П, НМД НМД ПЗУ
Габариты, мм 158Х419Х Х452 220X300X Х50 380 X 397 X Х157 — 610Х375Х Х165 424X255X212
Масса, кг 9,06 1,6 И 16 15
Основные языки про- граммирования Бейсик Бейсик Бейсик, паскаль, фортран и др. Бейсик, паскаль, фортран и др. Бейсик, фортран Бейсик, фортран, паскаль и др.
16
г
на 32 кбайт. Емкость ПЗУ этой ПЭВМ
достигает 0,5 Мбайт (в стандартном варианте
32 кбайт). В ЭВМ встроен дисплей на
ЭЛТ с большим диаметром по диагонали
(260 мм), обеспечивающий получение графи-
ческих изображений с повышенной разрешаю-
щей способностью. Эта ЭВМ способна решать
задачи линейного программирования с 200
переменными, системы линейных уравнений с
порядком до 80 и т. д.
Портативная (в виде небольшого чемо-
данчика) ПЭВМ TRS-80 предназначена для
руководителей и специалистов, часто бываю-
щих в командировках. Дисплей у этой ПЭВМ
жидкокристаллический (8 строк по 20 знаков).
В ПЗУ TRS-80 зашито пять программ: интер-
претатор расширенной версии бейсика (с гра-
фикой), обработка текстов, составление пла-
нов и расписаний, записная (адресная) книга
и программа связи через телефонную сеть.
ПЭВМ имеет ряд интерфейсов для связи с кас-
сетным магнитофоном, принтером и др.
Одной из наиболее распространенных
ПЭВМ (их выпуск в США достиг 600 000 в
год) является модель Apple-II (см. табл. 1.4) и
ее модификация Apple-lie фирмы Apple Com-
puter Inc. В последнее время по объему
выпуска с этими моделями конкурируют
ПЭВМ IBM PC фирмы IBM (США). Эти
ПЭВМ выполнены в виде малогабаритных
вычислительных микросистем (процессор, кла-
вишный пульт, дисплей, принтер и другие
узлы). Модель PCjr имеет беспроводный кла-
вишный пульт. Связь пульта с процессором
осуществляется с помощью инфракрасного
светового излучения. Модели PC фирмы IBM
обладают программной совместимостью.
Большой емкостью ОЗУ (256 кбайт) и ПЗУ
(до 5 Мбайт при расширении) отличается
модель Professional (США). В нее встроен
дисплей с необычно большой ЭЛТ (300 мм по
диагонали), обеспечивающий получение мно-
гоцветных (4 095 градаций цвета) изображе-
ний с большой разрешающей способностью
(матрица 1 024x240 элементов). Расширение
ПЗУ достигается подключением накопителя на
жестких (Винчестерских) дисках, имеющих
емкость 5 Мбайт.
К моноблочной профессиональной ПЭВМ
относится модель Formula-1 (Япония), ориен-
тированная на проведение сложных вычисле-
ний. В эту ПЭВМ встроено два накопителя на
гибких дисках (2X1 Мбайт и 2X0,7 Мбайт,
запись двусторонняя), термопечатающее уст-
ройство и дисплей. Машина может выполнять
функции программатора ЗУ, вставляемых в
колодку на ее передней панели. Термопринтер
обеспечивает печать со скоростью 0,8 строк/с
(в одной строке 80 знаков). Машина имеет
мощное программное обеспечение, в частно-
сти может программироваться на 25 языках
высокого уровня, включая 5 расширенных вер-
сий бейсика, паскаль, фортран, кобол и др.
Принципиально новые средства общения с
пользователем заложены в ПЭВМ Lisa и
Macintosh фирмы Apple Computer Inc.
(США). Эти ПЭВМ имеют два характерных
признака: немерцающий цветной дисплей, ко-
торый может работать в режиме полиэкрана
(т?е. давать несколько не зависящих друг от
друга изображений в специальных окнах),
и устройство (контроллер) для перемещения
маркера (курсора) дисплея типа «мышь».
С последней особенностью связана принци-
пиально иная процедура общения этих ПЭВМ
с пользователем, чем у всех известных ранее
ПЭВМ.
«Мышь» представляет собой небольшую
коробочку, которую можно перемещать в
любых направлениях по гладкой поверхности,
например стола. В ней расположены датчики
перемещений, с помощью которых можно фор-
мировать на экране дисплея сложные кривые
либо указывать на отдельные фрагменты изо-
бражений. Клавишный пульт ПЭВМ Lisa и
Macintosh заметно упрощен — в нем нет функ-
циональных клавиш. Команды ЭВМ отобра-
жаются на дисплее наглядными изобразитель-
ными средствами (их совокупность образует
«меню» команд). Для ввода любой команды
(«блюда») достаточно подвести курсор к
нужному рисунку и нажать специальную
клавишу «мыши», вводящую команду в дей-
ствие. Подобный подход к общению с ПЭВМ
и ее программированию делает эти машины
несовместимыми с ранее перечисленными
моделями. Тем не менее он считается весьма
перспективным, ибо облегчает диалог с пользо-
вателем, впервые работающим на ПЭВМ.
Отметим некоторые технические характе-
ристики ПЭВМ Macintosh: емкость ОЗУ
128 кбайт, ПЗУ 64 кбайт, размер ЭЛТ дисплея
23 см по диагонали, число точек 512X342,
встроенный накопитель на гибких дисках
малого диаметра (0=89 мм фирмы Sony
(Япония)) имеет емкость 0,4 Мбайт, интер-
фейс ПЭВМ обеспечивает передачу данных по
шине Apple Bus со скоростью 192 кбайт/с,
масса 9 кг, объем 20 дм\ ПЭВМ использует
32-разрядный микропроцессор 68 000 фирмы
Motorolla.
Из разработок отечественных ПЭВМ к дан-
ному классу можно отнести модель ПЭВМ
Агат [14]. Ее характеристики: размер корпуса
500 X 350 X 180 мм, масса 9 кг, имеет откидной
клавишный пульт с 59 клавишами. ПЭВМ Агат
построена на 8-разрядном микропроцессоре,
имеет ПЗУ емкостью 32 кбайт и ОЗУ емкостью
64, 128 и 256 кбайт. С помощью внешнего
телевизора отображается 32X32 или 64X32
символов либо черно-белая графика с матри-
цей экрана 256X256 ячеек. При отображении
восьмицветных изображений матрица со-
ставляет 128X128 точек, а шестнадцатицвет-
ных— 64X64. Данные и программы могут
записываться на обычный кассетный магнито-
фон (емкость 125 кбайт) или на НМД типа
ЕС-5088 или ЕС-5089 (емкость 250 кбайт для
двух НМД). Потребляемая ПЭВМ Агат
мощность 60 Вт.
Некоторые модели отечественных микро-
ЭВМ из-за относительно больших размеров,
массы .и стоимости можно условно отнести к
ПЭВМ, поскольку они отвечают главному кри-
терию таких вычислительных средств — пре-
доставлению ресурсов в индивидуальном
порядке. Подобные ЭВМ вместе с перифе-
рийным оборудованием образуют вычисли-
17
тельные микросистемы индивидуального поль-
зования. В табл. 1.5 приведены краткие
характеристики ряда отечественных вычисли-
тельных микросистем индивидуального поль-
зования [27].
Массовое применение нашли вычислитель-
ные микросистемы на базе одноплатной
микроЭВМ Электроника-С60, первые образцы
которой программировались на упрощенной
версии бейсика. В настоящее время для них
используется расширенная версия бейсика
дисковой операционной системы Рафос, в
состав которой входят команды для работы
и операций с символьными переменными.
Эта версия бейсика совместима с применяемой
в миниЭВМ серии СМ (бейсик-плюс [28]).
Для проведения научно-технических и дру-
гих расчетов широко применяются системы
подготовки программ (СПП) на базе специа-
лизированного вычислительного и управляю-
щего устройства Электроника-ДЗ-28. Они
имеют расширенную версию бейсика, причем
расширение произведено в сторону увеличения
числа операторов для вычисления математи-
ческих функций. Все программы в справочнике
даны на этой версии бейсика и могут легко
переводиться на другие его версии.
В последние гады освоено массовое про-
изводство диалоговых вычислительных ком-
плексов ДВК-1 и ДВК-2, построенных на
основе одноплатной микроЭВМ Электроника-
НЦ-80-20 и дисплея 15 ИЭ-00-013-01
(клавиатура его показана на рис. 1.6).
Этот дисплей применяется и в СПП на базе
микроЭВМ Электроника-ДЗ-28. В комплекс
ДВК.-1 входят только упомянутые устройства.
Комплексы ДВК-2 дополнительно укомплекто-
ваны накопителем на гибком диске ГМД-
7012 и термопринтером.
Последние модели ДВК (ДВК-3 или Элек-
троника-НЦ-80-20/3 [27]) имеют обширное
периферийное оборудование. Емкость ОЗУ
64 кбайт, ПЗУ — 8 кбайт. Накопитель на
гибком диске Электроника-6021 имеет емкость
440 кбайт (40 дорожек с 14 секторами, время
перемещения головки с одной дорожки на дру-
гую 15 мс, время подвода головки 50 мс).
ДВК-3 имеют быстродействие 500-103 опера-
ций/с, программируются на языках бейсик,
фортран, паскаль. Ассемблер этих микроЭВМ
имеет систему команд, принятую для микро-
ЭВМ Электроника-СбО. В комплексы входят
принтеры (DZM-180, Д-100, PRT-80 или
СМ-6310), графопостроитель и другие пери-
ферийные устройства. ,
В значительной мере требованиям к про-
фессиональным ПЭВМ отвечают микроЭВМ
серийного производства Искра-226. ЦП этой
ЭВМ с быстродействием 2-106 микрокоманд/с
и разрядностью 8/16 имеет обращение к ОЗУ
Таблица 1.5
Характеристики некоторых отечественных вычислительных микросистем индивидуального поль-
зования
Характеристика Тцп системы или микроЭВМ
Электроника Искра-226
ТЗ-29 ТЗ-29М ДЗ-28 НМС *) ОН 00.1
Общая емкость ОЗУ, кбайт 64 288 16—128 56 112—176
Емкость ОЗУ пользователя, кбайт 32 256 — 48 64—128
Хранение программы-интер- претатора В ПЗУ В ПЗУ На магнит- ной ленте В ПЗУ В ПЗУ и на диске
Среднее быстродействие процессора, тыс. оп/с 100 600 • __ 400 800
О^щая масса оборудова- ния, кг 117 120 85 116 166
Общая потребляемая мощ- ность, Вт 700 1000 500 800 2000
Язык программирования Бейсик Бейсик Бейсик Бейсик Бейсик, паскаль
Встроенные устройства НМЛ НМЛ НМЛ Д Д
Периферийные устройства д, тп, п д, тп, П Д, ТП,П, НМД, ГП ТП, НМД, ГП, ГД П, НМД, НМЛ ГД
*) В тексте диалоговый вычислительный комплекс Электроника НМС 01100.1 на основе дисплея
15 ИЭ-00-013-01 и одноплатной микроЭВМ Электроника НМС 11100.1 обозначен как ДВК. Масса ДВК
без периферийных устройств 36 кг, потребляемая мощность 275 Вт:
18
[JPeeucTpfcJ Q □
Латинский. Нижний Печать Дуплекс
Линия Редактирование СДВ
Передача
api|ci|arz| |прд|прм|прс|
пч|дуп|лин|
STRESS
7 8 9
4 5 6
1 2 3
)
Рис. 1.6. Клавишный пульт дисплея 15 ИЭ-00-013-01, применяемого в диалоговых вычислительных
комплексах ДВК-1, ДВК-2 и в системах подготовки программ на базе микроЭВМ Электроника-ДЗ-28
емкостью 64 кбайт и ПЗУ 48 кбайт (основной
вариант). Встроенный алфавитно-цифровой и
графический дисплей на ЭЛТ с размером 31 см
по диагонали отображает 24 строки по 80
символов или 256X560 точек графиков. К нему
может подключаться внешнее видеоконтроли-
рующее устройство ВК40В60. Кассетный нако-
питель Искра-005-33 имеет емкость 80 кбайт,
скорость обмена 200 байт/с и среднее время
доступа 180 с. Внешние накопители (НМД
и НМЛ) увеличивают емкость ОЗУ на 5 и
10 Мбайт. ЭВМ может комплектоваться
графопостроителем и принтером со скоростью
печати до 180 знак/с. Вычислительные
микросистемы на базе микроЭВМ Искра-226
выпускаются в нескольких модификациях.
Приведенные в табл. 1.5 вычислительные
микросистемы не обеспечивают возможности
получения цветных графических изображений.
В настоящее время завершена разработка
профессиональной отечественной ПЭВМ, ана-
логичной описанной выше модели Professional
(США) и обеспечивающей получение цветных
графических изображений с высокой разре-
шающей способностью.
Профессиональные ПЭВМ и вычислитель-
ные микросистемы могут программироваться
на многих языках: бейсик, фортран, паскаль,
алгол и др. Однако наиболее распространен
бейсик, обеспечивающий возможность работы
на этих системах пользователей, не являющих-
ся специалистами по программированию.
§ 1.5. Периферийное
оборудование персональных ЭВМ
Ниже даны краткие сведения о типовом
периферийном оборудовании ПЭВМ, рассчи-
танные на лиц, занятых их эксплуатацией.
ч Одним из важнейших узлов ПЭВМ являет-
ся дисплей — устройство на основе электрон-
но-лучевой трубки, обеспечивающее отображе-
ние алфавитно-цифровой и графической
информации. В качестве дисплея ПЭВМ
класса Home Computers обычно используются
бытовые телевизоры. В состав ПЭВМ входит
адаптер, преобразующий сигналы ПЭВМ в
высокочастотные сигналы, принимаемые теле-
визором по одному из телевизионных каналов.
Весьма нежелательно совпадение номера этого
канала с номером канала местной телевизион-
ной станции, поскольку при этом возможны
взаимные помехи — ПЭВМ может создавать
помехи другим телевизорам, а местная стан-
ция — искажать прием сигналов с ПЭВМ.
Качество изображения можно значительно по-
высить, подключив выход ПЭВМ ко входу
видеосигналов телевизора (т. е. минуя пре-
образование видеосигнала в высокочастотный
сигнал).
Сложные ПЭВМ могут комплектоваться
специальными дисплеями и мониторами, обес-
печивающими высокое качество изображения
(монитором обычно называют дисплей с кла-
вишным пультом).
Другим распространенным устройством
для подключения к ПЭВМ является кассетный
магнитофон. Хотя многие ПЭВМ некритичны
к качеству магнитофона, целесообразно при-
менять магнитофоны класса не ниже третьего.
Магнитофоны более высокого класса и спе-
циальные кассетные накопители информации
обычно имеют электромагниты управления
лентопротяжным механизмом. Они обеспечи-
вают возможность автоматического включения
и выключения магнитофона в ходе ввода
программ в ПЭВМ и их вывода на магнитофон.
Для подключения магнитофона к ПЭВМ
используется специальный адаптер, содержа-
щий интерфейс сопряжения (иногда этот
интерфейс входит в ПЭВМ). Основной недо-
статок кассетного магнитофона — значитель-
ное время поиска нужной информации, что
связано с медленной протяжкой магнитной
ленты.
19
К массовым периферийным устройствам
профессиональных ПЭВМ относятся накопи-
тели информации на вращающихся магнитных
дисках. Они бывают двух типов: со сменными
гибкими дисками и жесткими (Винчестер-
скими). В основном в ПЭВМ применяются
диски малого диаметра (0 = 133 мм). Запись
блоком магнитных головок производится на
одну или обе стороны диска, покрытого фер-
ромагнитным материалом. На каждой стороне
диска имеется несколько десятков дорожек
записи, каждая из которых разбита на
секторы. При записи и считывании информа-
ции пользователь задает в виде специальных
кодов сторону диска, номер дорожки и номер
сектора, переключение дорожек производится
быстро. Емкость одного диска лежит в преде-
лах от 0,2 до 50-4-100 Мбайт (большие
цифры — для жестких дисков с диаметром
203 мм). Скорость обмена данными весьма
высока — до 0,1254- 10 Мбайт/с, что является
большим достоинством НМД по сравнению с
накопителями на магнитной ленте. В последнее
время наблюдается тенденция перехода к
малогабаритным НМД с диаметрами дисков
76, 82,5, 85 мм и меньше.
Помимо накопителей информации на стан-
дартных кассетах с магнитной лентой и маг-
нитных дисках в некоторых ПЭВМ применяют-
ся специальные типы накопителей: на микро-
кассетах (уменьшенный вариант обычной
кассеты), кассетах типа Catridge с бесконеч-
ным рулоном ленты, свернутой в кольцо,
и на магнитных картах. Однако широкого
распространения такие накопители не полу-
чили. В перспективе возможно оснащение
ПЭВМ накопителями информации на опти-
ческих дисках с лазерной записью и счи-
тыванием.
Из другого периферийного оборудования
следует отметить принтеры — устройства для
печати алфавитно-цифровой, а иногда и гра-
фической информации. Принтеры подклю-
чаются к ПЭВМ через интерфейс (обычно
с передачей информации в параллельном
коде). Скорость печати принтеров для ПЭВМ
составляет от нескольких десятков до несколь-
ких сотен знаков в секунду. Наиболее распро-
странены мозаичные принтеры, обеспечиваю-
щие точечную печать знаков с матрицей 5x7
элементов. Однако качество такой печати не
считается достаточно высоким. Поэтому
находят применение и принтеры, работающие
по типу пишущей машинки. Высокое качество
печати в сочетании с высокой скоростью имеют
принтеры с шаровой печатающей головкой.
У них знаки распределены по поверхности
шара и нужный знак выбирается поворотом
печатающей головки. Принтеры, разом печа-
тающие целую строку, применяются в основ-
ном в больших ЭВМ.
Для высококачественного документиро-
вания графической информации применяются
графопостроители. Имеются графопострои-
тели с числом перьев до 6—12, обеспечиваю-
щие построение многоцветных графиков с
высокой разрешающей способностью (до
0,1 мм и выше) и большой точностью задания
координат (погрешность до 0,24-1 %). Ско-
рость построения графиков лежит в пределах
от 2 до 50 см/с.
Преобразование координат точки (или
точек графика) в цифровой код обеспечивают
специальные планшеты. С этой целью при-
меняются и устройства типа «мышь», содер-
жащие поворотные датчики, реагирующие на
перемещение «мыши» по гладкой поверхности.
Погрешность преобразования для таких
устройств составляет обычно доли процента.
Для связи ПЭВМ с внешними накопи-
телями информации через телефонную сеть
служат акустические модемы: специальные
микрофоны и излучатели, работающие на
высоких звуковых и ультразвуковых частотах.
Акустические модемы могут применяться в
виде отдельных блоков или встраиваться в
корпус ПЭВМ. Тогда в акустическом модеме
закрепляется трубка телефонного аппарата,
что обеспечивает акустический контакт с
ПЭВМ.
ГЛАВА 2
БЕЙСИК — ОСНОВНОЙ ЯЗЫК ПЕРСОНАЛЬНЫХ ЭВМ
§2.1. Алфавит и основные опера-
торы языка бейсик
Назначение языка бейсик (BASIC). Наиме-
нование BASIC является сокращением англий-
ских слов «Beginner All-purpose. Symbolic
Instruction Code», что в переводе означает
«многоцелевой язык символических команд
для начинающих». BASIC был задуман раз-
работчиками как язык, доступный для усвое-
ния студентами гуманитарных вузов. Однако
простота грамматики и синтаксиса, его схо-
жесть с фортраном привели к широкому рас-
пространению бейсика в практике математи-
ческих и научно-технических расчетов.
Бейсик — язык интерпретирующий. Работа
на бейсике организуется с помощью специаль-
ной программы-интерпретатора, которая запи-
сана в ПЗУ или загружается в ОЗУ с внеш-
него накопителя — магнитной ленты или
диска. Эта программа переводит каждый опе-
ратор бейсик-программы на машинно-ориенти-
рованный язык конкретной ЭВМ.
Бейсик —• язык высокого уровня. Многие
версии бейсика имеют непринципиальные
отличия в основных операторах. Поэтому воз-
можен простой перевод программ с одной
версии бейсика на другую. Однако не следует
преуменьшать и различия между разными
версиями. Так, простые версии бейсика имеют
всего 30—40 операторов, тогда как у сложных
их число достигает нескольких сотен. При
переводе программ следует учитывать раз-
личия в записи отдельных операторов, в их
наборе и правилах синтаксиса. Различия в вер-
сиях бейсика усугублялись использованием его
для программирования наиболее массовых
видов ЭВМ — ПЭВМ, число типов которых
составляет многие тысячи.
Бейсик — язык диалоговый. Это означает,
что программными средствами на бейсике
можно организовать диалоговый режим
работы ПЭВМ с пользователем. При этом
ПЭВМ сообщает пользователю о том, какими
возможностями она обладает, как ею пользо-
ваться, в каком порядке должна выполняться
данная конкретная программа и т. д. Диалог
задается пользователем и в его программах.
Алфавит бейсика содержит 26 прописных
латинских букв, цифры от 0 до 9, точку,
запятую, кавычки, знаки арифметических опе-
раций ( + , —, /, * (умножение) и “I (возве-
дение в степень)), знаки отношения двух вели-
чин (> , <, = ), скобки и другие спе-
циальные знаки. Версии бейсика для отечест-
венных микроЭВМ имеют в алфавите и
русские буквы.
Переменные бейсика делятся на 4 типа.
1. Простые переменные, обозначаемые ла-
тинскими буквами, например А, В, С, ..X,
Y, Z.
2. Простые переменные, обозначаемые ла-
тинскими буквами с одной цифрой после них,
например Al, D2, ..., Z9.
3. Индексированные переменные одномер-
ных массивов вида А (а), В (а),..., Z (а), где
а — число, простая переменная или ариф-
метическое выражение.
4. Индексированные переменные двумер-
ных массивов вида А (а, 0), В (а, р), ...
..., Z(a, Р), где аир — числа, простые пере-
менные или арифметические выражения.
Максимальные значения аир зависят от
объема ОЗУ (обычно 256).
Примеры. Х(8)—переменная одно-
мерного массива X с номером 8, Y (2,3) —
переменная двумерного массива, стоящая
в третьей строке и четвертом столбце (нуме-
рация строк и столбцов начинается с 0),
Z (I, J*K) — переменная двумерного мас-
сива, номер строки которой задается значе-
нием целой части переменной I, а номер столб-
ца — значением целой части произведения
J*K.
Числа могут вводиться в программу в
качестве вещественных констант либо вво-
диться с пульта для задания числовых значе-
ний переменных. Числа задаются в естествен-
ном виде с разделительной точкой, а не запя-
той. Нуль перечеркивается наклонной чертой,
что позволяет отличить его от буквы О
Порядок числа указывается после буквы Е,
например число 1,234 можно ввести в виде
1.234; .1234Е1; 123.4Е-2 и т. д. Перед
мантиссой или порядком могут стоять знаки+
и —-, обычно знак + опускается. Например,
число —0,000097 записывается в виде
-0.000097; —.000097; —97Е—6; —9.7Е — 05
и т. д. Первый нуль мантиссы обычно можно
не вводить. Максимальный порядок чисел
зависит от типа ЭВМ и лежит в пределах от
30 до 252.
Операторы бейсика — допустимые пред-
писания, предназначенные для задания ЭВМ
операций обработки информации. Операторы
записываются в виде слов или предложений
21
большими латинскими буквами без пробелов
в словах (у некоторых ПЭВМ пробелы игно-
рируются) . Существуют также служебные опе-
раторы (директивы), исполняемые сразу после
их ввода с пульта (некоторые из них могут
выполняться и по программе).
Программа на бейсике есть последователь-
ность операторов, записанных по определен-
ным правилам и обеспечивающих решение
заданной задачи на ЭВМ. В бейсике операторы
записываются построчно. В одной строке
может быть один оператор или несколько, раз-
деленных специальным знаком (двоеточием :
или наклонной чертой \). Строки должны
иметь последовательную нумерацию. Реко-
мендуется задавать номера строк с про-
пусками, например 5, 10, 15, 20 и т. д. или
10, 20, 30 и т. д. Это позволит при необ-
ходимости вставить между ними новые строки.
Максимальный номер строки зависит от
типа ПЭВМ.
Таблица 2.1
Символы арифметических операций бейсика
Символ Пример Операция. Приоритет операции
"1 А~1В Возведение в Первый
степень
* А*В Умножение В горой
/ А/В Деление Второй
ч- А+В Сложение Третий
А-В Вычитание Т ретий
Символы арифметических операций бей-
сика даны в табл. 2.1. Там же отмечен при-
оритет операций, т. е. порядок их выполнения
при вычислении уарифметических выраже-
ний. Приоритет может быть изменен вводом
скобок.
Операторы задания массивов DIM и СОМ.
Одномерные и двумерные массивы занимают
в ОЗУ ЭВМ определенную область памяти,
обозначаемую как DIM или СОМ. Чтобы в эту
область не попали другие данные, перед вво-
дом и использованием массивов нужно заре-
зервировать для них место. Это делается с
помощью операторов DIM и СОМ, после кото-
рых указываются переменная и скобки с указа-
нием размеров массива. Так, полный оператор
DIM А (9) резервирует в памяти место для
одномерного массива А из 10 переменных от
А(0) до А(9). Оператор DIM С (5, 6) резерви-
рует место под двумерный массив С, содер-
жащий шесть строк и семь столбцов (включая
нулевые).
Для обозначения размерности массивов
можно использовать арифметические выраже-
ния (причем их дробная часть отбрасывается),
а также числовые значения переменных.
Например, оператор DIM R (I*N, К) резерви-
рует область памяти DIM под двумерный
массив R с максимальным номером строки,
равным целой части произведения I*N и
максимальным номером столбца, равным
целой части числового значения перемен-
ной К.
Операторы выполнения математических z
функций на бейсике приведены в табл. 2.2.
Аргумент функции должен заключаться в
скобки. Им могут быть числа, переменные
и арифметические выражения, например:
SIN(30) — синус угла в 30 градусов,
SIN(Z) —синус угла, заданного аргумен-
том в виде числового значения переменной Z,
EXP£SQR(2))—значение числа е^—
=ехр V2-
Аргумент и значение функций не должны
выходить за пределы определения функции и
за пределы разрядной сетки ЭВМ, иначе будет
индицироваться ошибка. Вычисление функции
имеет приоритет перед арифметическими опе-
рациями.
Исполняемые по программе основные опе-
раторы версии бейсика для микроЭВМ
Электроника-60, Электроника-ДЗ-28 даны в
табл. 2.3. Рассмотрим их более детально.
Оператор LET (от слова letter — буква)
служит для присвоения буквенным перемен-
ным, указанным слева от знака равенства,
числового значения константы, переменной
или арифметического выражения, записанных
справа от знака равенства.
Оператор DATA (от слова data — данные)
служит для ввода в память ЭВМ определенной
последовательности чисел. Они даются спис-
ком с разделительными запятыми.
Т а б л и ца 2.2
Операторы вычисления математических функций версии бейсика микроЭВМ Электроника-60
Запись оператора Запись функции Наименование функции Запись оператора Запись функции Наименование функции
SIN(X) COS(X) ATN(X) sin x cos X arctg x Синус X Косинус X Арктангенс X RND (х) rnd х Генерация случайных чисел со значением от 0 до 1
SQR(X) EXP(X) ex = exp x Корень квадратный из X Экспонента X SGN(X) sign х Сигнум-функция (4-1 при л> 0, 0 при х = 0 и — 1 при х<0)
LOG(X) In X Натуральный лога- рифм X FNa(X) — Функция, заданная пользователем
ABS(X) INT(X) abs x int x Абсолютное значе- ние X Целая часть X EXF(X) Внешняя функция
22
Таблица 2.3
Основные операторы языка бейсик
Операторы Примеры записи Пояснения
LET LET A = 2 LET X = Y LET Z = a Переменной А присваивается значение 2 Переменной X присваивается значение переменной Y Переменной Z присваивается значение арифметического выражения a
DIM COM DIM AJ5) COM A(I,J) DIM A(a,L) Задание одномерного массива А из шести переменных А(0), А( 1), ...» А(5) Задание двумерного массива с макси- мальным номером строки I и столбца J Задание двумерного массива с макси- мальным номером строки, равным целой части арифметического выражения а, и столбца с максимальным номером, определяемым численным значением пе- ременной L
DATA DATA 1, 2, 3, 4 Ввод чисел I, 2, 3, 4
READ READ А, В, C, D Присвоение переменным А, В, С и 1D численных значений, заданных операто- ром DATA
RESTORE RESTORE Поворот стека данных
INPUT INPUT A INPUT 'A = 'A INPUT А, В, C Ввод значения А с пульта после появле- ния знака ? Ввод значения А после печати поясне- ния А=... Ввод значений А, В и С, разделенных запятыми
PRINT PRINT 2 PRINT А, В, C PRINT 'A = 'A PRINT T = 'a Печать числа 2 Печать численных значений переменных А, В и С Печать численного значения А после комментария А — Печать численного значения арифмети- ческого выражения а после коммента- рия F =
GOTO GOTO n Безусловный переход к строке с номером п
IF ... THEN IF ... GOTO IF.a r p THEN n IF a r p GOTO n ‘IF a r p THEN у Условный переход к строке п, если справедливо отношение г (табл. 2.4) Выполнение операций у» если справед- ливо отношение г
FOR ... TO ... STEP ... NEXT FOR a = 0 TO у STEP 6 NEXT a FOR a = p TO y NEXT a Организация цикла с управляющей пере- менной а, меняющейся от начального значения р до конечного у с шагом 6 (Р, у и 6 - числа, значения переменных или арифметических выражений) Организация цикла с шагом 6=4-1
GOSUB GOSUB n Обращение к подпрограмме, начинаю- щейся со строки п
RETURN RETURN Возврат из подпрограммы
23
Таблица 2.3 (продолжение)
Операторы Примеры записи Пояснения
REM (REMARK) REM 'КОММЕНТАРИЙ' Печать комментария при выводе листинга программы
STOP STOP Остановка вычислений в любом месте программы
END END Конец программы и останов в конце программы
DEF FN<V> (параметр) —a DEF FN Y(X)=SIN (X)/X Задание функции а пользователя; в при- мере Y (X) — sin х/х
Оператор READ (read — читать) служит
для чтения чисел из блока данных DATA
и присвоения переменным своего списка4’
численных значений.
Пример. В следующей программе чис-
ленные значения переменных будут такими:
A = l; В = 2; С = 3; D = 4 и Е2=-5-10-8.
10 DATA Ь2/3,4,-5Е-8
20 READ A/B>C,D
30 READ Е2
Оператор RESTORE (от слова restore —
возвращать) служит для поворота стека дан-
ных, который формируется в ОЗУ ЭВМ опера-
тором DATA (стек можно уподобить обойме
револьвера, если числа отождествлять с пат-
ронами). Этот оператор необходим, если,
например, одно из чисел в списке DATA нужно
присвоить разным переменным.
10 DATA 1/2/3/4/-5Е-8
20 READ A,B>C/D,E2
30 RESTORE
48 READ F/L/L
В приведенной программе вначале пере-*
менным стека оператора READ в строке 20
присваиваются отмеченные выше численные
значения. Затем оператор RESTORE в строке
30 обеспечивает поворот (возврат) стека. В ре-
зультате переменной F присваивается значе-
ние 1, а переменной L—сначала значение 2,
а затем 3.
Оператор INPUT (input — ввод) служит
для ввода чисел с пульта по запросу ЭВМ.
Он сопровождается печатью знака вопроса (?)
или комментария, заключенного в апострофы
(или кавычки), после слова INPUT, а также
для присвоения числовых значений списку
переменных.
Примеры.
1) 10 INPUT А
Печатается знак вопроса, и ЭВМ ждет
число, значение которого (после ввода) будет
присвоено переменной А.
2) 20 INPUT А, В, С, D
Печатается знак вопроса, после чего надо
ввести четыре числа, разделяя их запятыми.
3) 30 INPUT' ВВЕДИТЕ ЧИСЛО УРАВ-
НЕНИЙ N='N
24
Печатается запрос ВВЕДИТЕ ЧИСЛО
УРАВНЕНИЙ N = , после которого надо
ввести значение N.
4) 10 INPUT' ВВЕДИТЕ А, В', А, В
Печатается указание ВВЕДИТЕ А, В,
после чего следует ввести значения А и В,
разделив их запятой.
У некоторых микроЭВМ, например Элек-
троника-60, встречаются версии бейсика, у
которых применение комментария после опе-
ратора INPUT не предусмотрено. В этом слу-
чае для вывода комментария используется
оператор PRINT (см. ниже).
Оператор PRINT (от слова print — печать)
служит для задания вида печати (специаль-
ным знаком после него), печати комментариев,
заключенных в апострофы (или кавычки),
печати числовых значений констант, перемен-
ных и арифметических выражений, входящих в
список этого оператора.
Примеры.
1) 50 PRINT 125, 98, 36
Печатаются числа 125 98 36.
2) 50 PRINT А, В, С
Печатаются числовые значения перемен-
ных А, В, С. Так, если А = 125, В = 98 и С = 36,
то печать имеет вид, аналогичный приведен-
ному выше.
3) 50 PRINT' ЧИСЛЕННОЕ ИНТЕГРИ-
РОВАНИЕ'
Печатается комментарий ЧИСЛЕННОЕ
ИНТЕГРИРОВАНИЕ
4) 100 PRINT 'А = 'А2
Печатаются комментарии и значение пере-
менной А2. Если А2= 125, печатается А= 125.
5) 60 PRINT 'F = 'SQR (А*В + С)
Печатается F—a, где а — числовое зна-
чение арифметического выражения VAB+~C\
6) 70 PRINT
Печатается пустая строка (т. е. пробелы).
Если в списке оператора PRINT в качестве
разделителя используется запятая, то каждое
число (см. примеры 1) и 2)) печатается в
соответствующей зоне одной строки: Послед-
няя разделяется обычно на пять зон печати.
Если чисел больше пяти, то последующие
печатаются с новой строки, и т. д. Для боле^
плотной печати в качестве разделителя можнс
использовать знак ; (точка с запятой).
Тогда очередное число будет следовать за
предыдущим^ минимальным пробелом.
Тип печатающего устройства указывается
специальными знаками после оператора
PRINT: Например, для системы подготовки
программ на базе микроЭВМ Электроника-
ДЗ-28 оператор PRINT после включения сис-
темы обеспечивает вывод комментариев и
чисел только на дисплей. Для печати принте-
ром после оператора PRINT следует поставить
знак #1, а для обратного переключения
индикации на дисплей — знак
Пример.
10 PRINT#©'ВЫЧИСЛЕНИЕ ЭКСПОНЕНТЫ*
20 INPUT X
30 PRINT#!’Xя*X/* ЕХР<Х>==* ЕХР<Х)
40 END
В этом примере на экран дисплея будет
выведено сообщение ВЫЧИСЛЕНИЕ ЭКС-
ПОНЕНТЫ, а значения X и ЕХР(Х) будут
напечатаны принтером. Таким образом, перво-
начально'введенный знак #=0 или #1 сохра-
няется до замены его другим, повторять этот
знак в последующих операторах PRINT не
нужно.
Формат печати чисел также может указы-
ваться специальным знаком в составе опера-
тора PRINT. Так, для упомянутой выше
системы возможны следующие форматы:
!Fni7T2l — выводится знак числа, гц цифр
до десятичной точки, десятичная точка, п2
цифр после десятичной точки, символ по-
рядка Е, знак порядка и две значащие цифры
порядка;
!п1.п2! — выводится-знак числа, П\ цифр до
десятичной точки, десятичная точка и п2 цифр
после нее (если число не умещается в формате,
выводится столько символов, сколько позиций
отведено на печать);
!Е! — число выводится в форме с плаваю-
щей запятой и содержит знак числа, точку,
12 цифр мантиссы, символ порядка Е, знак
порядка и две цифры порядка.
При начальном включении системы уста-
навливается формат !F 1.9!. При смене
формата новый формат запоминается и дей-
ствует до замены его другим.
Внимание! Синтаксис и вид операторов
IJ4PUT и PRINT у разных моделей ПЭВМ
могут иметь некоторые различия. Например,
комментарии могут вводиться в кавычках или
апострофах, различны символы установки
формата и типа печати. Поэтому общее зна-
комство с этими операторами следует завер-
шить уточнением формы их записи для каждой
конкретной ПЭВМ
Оператор GOTO п (от слов go to — идти к)
обеспечивает безусловный переход к строке
с номером п. В программе
10 INPUT*Xя*X
20 LETY«SIN<X)
25 PRINT*Vя* Y
30 GOTO 10
после ввода X и вычисления Y = sinX опе-
ратор GOTO 10 в строке 30 обеспечивает пе-
реход к строке 10, т. е. к вводу нового
значения X по оператору INPUT. Таким
образом, программа зацикливается.
Операторы IF и THEN (if — еслр, then —
тогда) служат для организации условных
переходов. Общая форма их записи (вместо
слова THEN возможно GOTO).
IF а г р THEN п (или у)
IF а г р GOTO п
где а, р и у — арифметические выражения,
п — номер строки, г — символ отношения аир
(условия перехода) (табл. 2.4). Вместо аир
могут стоять переменные и числа. Если пред-
писанное отношение выполняется, происходит
Таблица 2.4
Символы отношения г для операторов IF...THEN
Символ бейсика Матема- .тический символ Пример записи оператора Значение символа
— = А = В Равно
А< Меньше
< = А< = В Меньше или равно
А> > В Больше
= > А = > в Больше или равно
< > А< > в Не равно
переход к строке с адресом п (или выполняют-
ся арифметические операции в выражении у).
В противном случае выполняется последую-
щая за операторами IF ... THEN часть про-
граммы.
Пример.
10 INPUT*Xя*X
20 IF Хя0 THEN 50
30 LETF=SIN<X)ZX
40 PRINT ’F«*Fl GOTO 10
50 LETF=1-’GOTO 40
В приведенной программе вычисляется
функция F = sinx/x. При х = 0 получаем
неопределенность вида 0/0, а поскольку деле-
ние на 0 машина не производит, нужно этот
случай исключить. Для этого в строке 20 зна-
чение х сравнивается с нулем. Если х=0,
происходит переход к строке 50, где перемен-
ной F присваивается известное значение 1.
Операторы организации циклов FOR ... ТО
и STEP образуют цикл по схеме
FOR а = р ТО у STEP 6
(тело цикла)
NEXT а
Эта запись означает следующее: для (for)
переменной а, имеющей начальное значение р
и меняющейся до (to) конечного значения у
с шагом (step) б обеспечивается выполнение
цикла, завершаемого оператором NEXT а
(следующий). Если а достигает значения у,
25
происходи! выполнение следующего за циклом
оператора. Переменная а должна быть про-
стой, а р, у и 6 могут быть числами, пере-
менными , или значениями арифметических
выражений. Отсутствие в цикле оператора
STEP автоматически придаст величине б зна-
чение б=-|-1. Примеры применения операто-
ров организации циклов даны в § 2.4.
Оператор обращения к подпрограмме
GOSUB п (от слов go subroutine — идти к
подпрограмме) обеспечивает переход к выпол-
нению подпрограммы, начинающейся со
строки п. Подпрограммы применяются в том
случае, когда нужно неоднократно выполнить
одну и ту же группу операторов.
Оператор возврата из подпрограммы
RETURN (return — возвращение) обеспе-
чивает возврат из подпрограммы после ее
выполнения к оператору, следующему за обра-
щением GOSUB п. Оператор RETURN ста-
вится в конце подпрограммы.
Циклы и подпрограммы могут быть вло-
женными друг в друга (более подробно см.
§ 2.4).
Оператор программных комментариев
REMARK (или сокращенно REM, от слова
remark — комментировать). Этот оператор
служит для ввода в программу пояснений —
комментариев, заключенных в апострофы или
кавычки (или без них). Эт» комментарии вы-
водятся на печать только при выводе листинга
программы.
Применение комментариев делает сложные
программы более наглядными.
Оператор останова STOP используется для
остановки вычислений в любом месте про-
граммы. Обычно при этом ПЭВМ выдает
комментарий с указанием, в какой строке
произошел останов, например:
ОСТАНОВ В СТРОКЕ 100
ГОТОВ
, ' Оператор окончания программы END слу-
жит для фиксации конца программы, что
необходимо, например, при записи программы
на магнитную ленту ил'и диск. Если этот
оператор поместить в середине программы,
будет записана только ее часть — до опера-
тора END. Оператор END также обеспечивает
останов вычислений.
Оператор задания функций пользовате-
ля— DEF FN (переменная) (параметр) =а.
где а — собственно функция. Например,
выражение DEF EN Y(X) = SIN(X)/X за-
дает функцию Y (X) = SIN (X)/X, которую
можно использовать как обычную стандарт-
ную функцию.
Служебные операторы бейсика приведены
в табл. 2.5. Вместо оператора стирания
DELETE (от слова delete — уничтожать)
часто используется оператор CLEAR (clear —
стирать). Оператор SAVE записи программы
на носитель и операторы загрузки программы
в ЭВМ с носителя (OLD или LOAD) часто
дополняются указаниями на тип носителя
(перфолента, магнитофонная кассета, магнит-
ный диск и т. д.) и на место записи или
считывания (номер дорожки, сектора и т. д.).
Полный вид этих операторов у различных
ПЭВМ может иметь некоторые непринци-
пиальные различия. Приведенные ниже при-
меры относятся к работе с системой подготовки
программ на базе микроЭВМ Электроника-
ДЗ-28.
При записи текста программы на магнит-
ную ленту интерпретатор формирует так
называемый программный файл, состоящий из
заголовка, записи строк программы и закры-
вающей файл записи. Для записи программы
используется оператор SAVE (хранить).
Примеры. 4
SAVE 50, 150 — записываются строки от 50
до 150 безымянной программы;
SAVE 'СТАТИСТИКА' — записывается
вся программа с именем СТАТИСТИКА;
SAVE — записываются все строки (от 1
до 7 999) программ, имеющихся в ОЗУ;
SAVE END — служебная запись, озна-
чающая конец ленты.
Чтение программных файлов с магнитной
ленты и их загрузка в ОЗУ производится
оператором LOAD (загрузить).
Примеры.
LOAD 'а' НС1, НС2 — в ОЗУ загружают-
ся строки программы с именем а от НС1
до НС2;
LOAD 'СТАТИСТИКА' — загружается
вся программа с именем СТАТИСТИКА.
Следует отметить, что имя программ рас-
познается только по шести начальным сим-
волам, включая пробелы. Если имя файла
Таблица 2.5
Служебные операторы бейсика
Запись оператора Действие оператора
DELETE п Стирание строки с номером п
DELETE т, п Стирание строк с номерами от т до п,
LIST Вывод листинга (текста) всей программы
LIST /t Вывод листинга строки с номером п
LIST m, ri Вывод листинга части программы (строки от т до п)
OLD или LOAD Загрузка программы с носителя
RUN Пуск программы (вычислений)
SAVE Запись программы на носитель
СКЛ/Р Остановка программы с печатью знака ~1
скл/и Стирание вводимой строки
ЗБ ; Забой (стирание) одного символа
26
не задано, при выполнении оператора SAVE
произойдет загрузка очередного файла.
Для записи на магнитную ленту блока
данных применяется оператор DATA SAVE
с последующим списком блока. Например,
оператор DATA SAVE В(3), SIN (X-f-Y) ♦
Z, С обеспечивает запись на ленте значений
переменной В(3) одномерного массива В,
выражения Z * SIN (Х-|-Y), переменной С.
Блоки могут объединяться в файлы дан-
ных, которые начинаются с оператора (за-
головка) DATA SAVE OPEN и заканчи-
ваются оператором DATA SAVE END.
После заголовка может указываться имя
файла, заключенное в апострофы.
Чтение с магнитной ленты блока данных
с присвоением их переменным производится
оператором DATA LOAD со списком пере-
менных, разделенных запятыми. Оператор
DATA LOAD 'а' обеспечивает поиск на маг-
нитной ленте файла с именем а. Для про-
пуска некоторого числа блоков или файлов
используется оператор SKIP (перепрыгнуть),
после которого указывается это число, на-
пример, оператор SKIP 2 обеспечивает про-
пуск двух блоков данных, а оператор
SKIP 3 — пропуск трех файлов данных. Пе-
ремотка ленты в начало производится опе-
ратором REWIND (перемотать).
Операторы SAVE и LOAD могут исполь-
зоваться также при работе с дисковым
накопителем. При этом после них указыва-
ются: номер дисковода (=#=1), номер диска
(О или 1 при двухдисковом дисководе),
номер дорожки диска и номер сектора.
.§ 2.2. Модификации языка бейсик
Бейсик имеет десятки модификаций, рас-
смотреть которые в одной книге едва ли воз-
можно. Это и нецелесообразно, поскольку
достаточно ознакомиться с несколькими ха-
рактерными версиями бейсика, начиная с
простых (§2.1) и кончая расширенными,
описанными ниже.
Версия бейсика систем подготовки про-
грамм (СПП) на базе микроЭВМ Электро-
ника-ДЗ-28 содержит ряд дополнительных
операторов, приведенных в табл. 2.6. Прежде
всего они расширяют набор используемых
математических функций.
Оператор PRINT TAB а обеспечивает
перемещение места печати (или индикации)
в строке на позицию с номером, задаваемым
целой частью арифметического выражения,
числа или переменной а. Этот оператор
используется для табуляции табличных дан-
ных и печати простых графиков (см. § 2.5).
Оператор CALL (вызов) служит для вы-
зова внешней подпрограммы с номером п.
Внешняя подпрограмма должна завершаться
оператором RTS (код 0511). Внешние про-
граммы загружаются в начале диалога
и могут писаться в кодах, что существенно
ускоряет вычисления.
Оператор ON (по) обеспечивает безуслов-
ный переход (ветвление) по адресу, заданному
целой частью арифметического выражения,
числа или переменной а (косвенная адре-
сация).
Версия бейсика микроЭВМ FX-702P класса
Pocket Computers содержит практически все
операторы описанных выше версий. Допол-
нительные операторы этой версии приведены
в табл. 2.7. Они наглядно иллюстрируют
большие функциональные возможности, ко-
торыми могут обладать даже сверхминиатюр-
ные ЭВМ класса Pocket Computers.
В состав этой версии входит ряд допол-
нительных операторов вычисления матема-
тических функций: ! (факториала), FRAC
(выделения дробной части чисел), DEG
и DMS (преобразования углов), RPC и PRC
Дополнительные операторы расширенной версии языка бейсик
для системы подготовки программ на базе микроЭВМ Электроника-ДЗ-28
Таблица 2.6
Оператор Функция Пояснение
DEG(X) X+- 180Х/Л Перевод угла из радиан в градусы
RAD(X) X+- nX/180 Перевод угла из градусов в радианы
TAN(X) tgx Вычисление тангенса
ASN(X) arcsin x Вычисление арксинуса
ACS(X) arccos x Вычисление арккосинуса
HSN(X) sh x Вычисление гиперболического синуса
HCS(X) ch x Вычисление гиперболического косинуса
HTN(X) th x Вычисление гиперболического тангенса
AHS(X) arsh x Вычисление обратного гиперболического синуса
AHC(X) arch x Вычисление обратного гиперболического косинуса
AHT(X) arth x Вычисление обратного гиперболического тангенса
LGT(X) log x 10х Вычисление десятичного логарифма
EXT(X) Вычисление функции 10х
PRINT TAB a — Перемещение места печати (или индикации) в строке на позицию с номером, заданным целой частью арифметиче- ского выражения, числа или переменной а (от 0 до 10!)
CALL n ON a Вызов внешней подпрограммы с номером п (от 1 до 7999) Безусловный переход по адресу, заданному целой частью арифметического выражения, числа илй переменной а
27
Таблица 2.7
Дополнительные операторы расширенной версии языка бейсик ПЭВМ
FX-702P класса Pocket Computers
Оператор Пояснение
X FRAC X DEG(X, Y, Z) Вычисление факториала x\ Выделение дробной части числа х Преобразование угла, выраженного в градусах X, минутах Y и секундах Z, в угол, выраженный в десятичных долях градуса
DMS X Преобразование угла, выраженного в градусах и их десятичных долях, в угол, выраженный в градусах, минутах и секундах с десятичными долями
RPC X, Y PRC X, Y RND(a, Y) Преобразование прямоугольных координат в полярные Преобразование полярных координат в прямоугольные Округление численного значения арифметического выражения или числа a с погрешностью до 10
CNT SDX SDY SDXN SDYN MX MY sx SY SX2 SY2 SXY I RA LRB COR EOX у EOY v INP <V> AS Подсчет числа введенных чисел при статистических вычислениях Стандартное отклонение т, (смещенное) Стандартное отклонение у. (смещенное) Стандартное отклонение х; Стандартное отклонение yt Вычисление среднего значения х. Вычисление среднего значения у. Вычисление суммы х, Вычисление суммы у, Вычисление суммы х2 Вычисление суммы у. Вычисление суммы произведения х.у. Вычисление параметра а линейной регрессии у (х) —а-\- Ьх Вычисление коэффициента b линейной регрессии у (х) —а-^-Ьх Вычисление коэффициента парной корреляции г Вычисление х по заданному у при линейной регрессии Вычисление у по заданному х при линейной регрессии Присвоение символьной переменной AS значения символа (V) по опе- ратору INP
S -"<V>" Присвоение символьной переменной S значения символа (V), содержа- щего до 30 знаков
BS = "<V>" Присвоение символьной переменной BS значения символа <V>, содер- жащего до 7 знаков
CS = ASH-BS LEN(CS) M1D (m [, n ] ) Суммирование символов символьных переменный AS и BS Вычисление числа символов в символьной переменной CS Выделение п символов символьной переменной S, начиная с символа
AS = KEY VAC SAC CLR ALL PASS"K" GSB 4Fn GOTO с номера т Присвоение клавише А свойств клавиши пользователя Стирание всех ячеек памяти (обнуление всех переменных) Стирание ячеек памяти статистических расчетов Стирание всех программ (от Р0 до Р9) Кодирование (засекречивание) программы кодом К (до 8 знаков) Обращение к подпрограмме, помещенной в программную область Рп Безусловный переход к программе, помещенной в программной обла- сти Рп
GSB a Обращение к подпрограмме с косвенно# адресацией (номер строки зада- ется арифметическим выражением а)
GSB #a GOTO a GOTO 4^ a Безусловный переход с косвенной адресацией (адрес задается значением арифметического выражения а) Безусловный переход к программе Рп, номер которой п задается значением арифметического выражения a
IF NS = "<V>" THEN n, #/r DEFM n CSR n Условный переход по адресу п или к программе Р/т, если символьная константа NS равна символу (V) Высвобождение памяти под 10 (/т-Н) переменных массивов, где п=**0-?19 Перемещение начала индикации или печати на позицию п (/т = 04-19),
pkt #.*•## оператор используется вместе с оператором PRT Задание формата чисел в форме с фиксированной запятой (знак #
PRT .. соответствует одной цифре) Задание формата чисел в экспоненциальной форме с плавающей запятой
SET N (знак =Ц= соответствует одной цифре) Задание стандартной формы чисел с 10-ю знаками мантиссы
28
Таблица 2.7 (продолжение)
, Оператор Пояснение
SET Е п Задание экспоненциальной формы чисел с п знаками мантиссы (л<10)
SET F п Задание формы чисел с фиксированной запятой и п знаками после деся-
тичной точки
WAIT п Задание индикации с перерывов счета на время, равное п«0,05 с
= 0-7-1000)
STAT а, 0 Проведение статистических расчетов с парой чисел X и Y, задаваемых
значениями переменных X, Y, констант или арифметических выражений
а и 0
MODE 4 Задание углов в градусах
MODE 5 Задание углов в радианах
MODE 6 Задание углов в градах
SAVE <f> Запись программы Ря с наименованием файла {[) на кассетный магнитофон
LOAD <f>. Ввод программы с наименованием файла (f) в область Рп с кассетного
магнитофона
SAVE ALL"<f>" Запись всех программ и данных с названием файла (f) на кассетный
магнитофон
LOAD ALL "<f>" Ввод всех программ и данных с названием файла (J) в микроЭВМ
с кассетного магнитофона
LIST Распечатка листинга программы Рп принтером
LIST "K" Распечатка листинга засекреченной кодом "К" программы Рп принтером
LIST ALL Распечатка всех программ (от Р0 до Р9) принтером
LIST V Распечатка принтером значений переменной V
PUT "<f>" A, В Запись файла данных (переменных А, В) с именем на кассетный
магнитофон
GET "<f>" S> C Вызов значений переменных S> С файла с именем <f> с кассетного магни-
тофона
VER "<f>" Контроль правильности считывания файла с именем <f> кассетным маг-
нитофоном
(преобразования координат), округления/чи-
сел с погрешностью до 10\ вычисления
17 статистических характеристик двумерного
массива чисел (см. § 5.3).
В эту версию входит ряд операций с сим-
вольными переменными.
Символьной переменной называется пе-
ременная (обозначаемая любой латинской
буквой со знаком S после нее), которая
может принимать значение символа <V>.
Например, оператор BS="ABC" присваи-
вает символьной переменной BS символ АВС,
который должен помещаться в кавычки. При
исполнении оператора PRINT BS на инди-
кацию или печать будет выведен символ —
в нашем случае АВС.
Суммирование символьных переменных
с помощью оператора вида CS^AS+BS
означает простое суммирование символов:
если AS="ABC", BS="DEF", то получим
CS="ABCDEF".
Оператор LEN (CS) обеспечивает под-
счет числа знаков в символьной перемен-
ной. В нашем примере после исполнения
этого оператора получим число 6.
Оператор MID (m, [, n]) *) выделяет п зна-
ков символьной переменной 5, начиная с сим-
вола с номером т. Допустим, символьная пере-
менная 5 = "STARTFINISHEND". Для выде-
ления слова, выделенного полужирным шриф-
том, имеющего п=6 букв и начинающегося
*) В квадратных скобках ставится необя-
зательный элемент выражения.
с символа F с номером т = 6, надо дать
команду MID (6.6). Так, если A$=MID (6.6),
то символьной переменной AS будет присвоен
символ FINISH.
Оператор AS— KEY обеспечивает при-
своение клавише символьной переменной
функции клавиши пользователе (key — кла-
виша). Тогда, используя операторы вида
IF AS="< V>" . THEN n, можно начать вы-
полнение программы со строки с номером п,
присвоив переменной AS значение символа
(V) (например, с помощью оператора INP
(сокращение от INPUT), см. § 2.5).
Операторы стирания VAC, SAC и CLR
ALL служат для обнуления всех перемен-
ных (VAC), стирания ячеек памяти при ста-
тистических расчетах (SAC) и общего
стирания всех программ (CLR ALL). Опе-
раторы VAC и SAC могут вводиться в про-
грамму, оператор CLR ALL — служебный
(выполняется в режиме записи программы
MODE 1).
Оператор кодирования программ PASS
(код) служит для присвоения программам
специального кода (до 8 знаков) в режиме
ввода программ — MODE 1. Не зная кода,
невозможно вывести листинг программы ^ли
стереть программу оператором (JLR (стирание
возможно командой CLR ALL). Для вывода
листинга код надо указать в кавычках
после оператора LIST п (п — номер строки)
или LIST.
Таким образом, оператор обеспечивает
защиту программы пользователя.
29
Операторы GSB #лй GOTO #л служат
для обращения к программной области Рл
(напомним, что этих областей 10 с п от 0 до 9).
Оператор GSB #л применяется, если про-
граммная область Рп выполняет функции
подпрограммы. При этом она должна завер-
шаться оператором RET (сокращение от
RETURN). Оператор GOTO =#л обеспечи-
вает вход в программную область Р/г без
автоматического возврата из нее.
Операторы косвенной адресации. Опера-
торы GSB a, GSB GOTO а и
GOTO =#а обеспечивают обращение к под-
программе или безусловные переходы с кос-
венной адресацией — адрес указывается
целой частью арифметического выражения
или значения переменной а.
Оператор DEFM п служит для задания
массива из 10 (л-Н) ячеек памяти. Число п
задается от 0 до 19. При этом число шагов
программы сокращается с 1 680 до 80,
т. е. увеличение п на 1 сокращает программу
на 80 шагов.
Оператор CSR в составе оператора PRT
(сокращение от PRINT) служит для смеще-
ния начала индикации на позицию, п (л =
= 04-19). Он аналогичен оператору TAB
в других версиях бейсика.
Задание формата печати (индикации)
обеспечивают операторы вида
PRT & ф или PRT # #.#=
Каждый символ # до и после десятичной
точки задает соответственно печать или
индикацию одной цифры результата. Если
последний не умещается в формат, то на
печать или индикацию выводятся знаки ф.
Символ f задает переход к индикации
чисел в экспоненциальной форме (см. при-
меры ниже):
К перспективным версиям языка бейсик
принадлежит и бейсик-SO — алгоритмический
диалоговый язык высокого уровня для ра-
боты с новыми разработками отечественных
персональных микроЭВМ и микропроцессор-
ных сиртем [26]. В программы на языке
бейсик-80 могут включаться подпрограммы,
записанные на других языках: фортране,
ПЛ/М-80, ассемблере. Бейсик-80 обеспечивает
операции с целыми числами и числами
с плавающей запятой с обычной и двойной
точностью. Возможно представление чисел
и в шестнадцатеричной форме.
Бейсик-80 имеет мощные средства для
эффективного редактирования программ и
работы с внешним периферийным оборудо-
ванием. Так, при работе с дисковыми нако-
пителями бейсик-80 позволяет не только
записывать и считывать информацию, но
и читать и стирать оглавления файлов,
создавать, переименовывать и изменять атри-
буты без обращения к операционной системе.
Бейсик-80 обеспечивает и работу с символь-
ными (строчными) переменными.
Алфавит бейсик-80 соответствует обще-
принятому (см. § 2.1). В языке бейсик-80
различают директивы, операторы и
функции.
Директивы (табл. 2.8) — команды, вы-
полняемые непосредственно после их ввода
с пульта. Они управляют программами или
файлами. Большинство директив может ис-
пользоваться в операторах программ. Однако
следует помнить, что многие из них останав-
ливают выполнение программы, обнуляют
значения переменных или делают их не-
определенными.
Операторы (табл. 2.9) выполняются по
мере того, как они встречаются в программе.
Оператор Индикация X —.0,123456789 Индикация Y = 12^3456789
PRT #; X; Y 0
PRT *.##; X; Y 0.12 *•##
PRT **•##*: X;.Y 0.123 12.345
PRT' X; Y 1.235E —01 1.125Е01
Общее число знаков Ф после оператора
PRT может быть до 10 включительно.
Операторы SET N, SET Ел и SET Fn
задают формы представления чисел: SET N —
стандартную форму с 10-ю знаками ман-
тиссы, SET Ел — экспоненциальную форму
с л знаками мантиссы. Оператором SET Ел
задается форма чисел с фиксированной запя-
той и л знаками после нее. Оператор SET 5
обеспечивает округление последнего знака
результата, а оператор SET 0 — сброс округ-
ления. В последнем случае происходит усе-
чение результата.
Оператор задания паузы WAIT л обеспе-
чивает по оператору PRINT паузу в вычис-
лениях с выдачей результата на время
л-0,05 с, причем л может задаваться от 0
до 1 000.
Смцсл остальных операторов расширенной
версии бейсика микроЭВМ FX-702P очевиден
из пояснений, приведенных в табл. 2.7.
30
Они составляют большинство рабочих пред-
писаний (команд) программ.
Функции (табл. 2.10) служат для образо-
вания арифметических и логических выраже-
ний совместно с директивами и операторами.
Функции подразделяются на арифметические
и строчные (для работы с символьными
переменными).
В бейсике-80 21 директива, 39 операторов
и 48 функций. Все они образуют инструк-
ции данного языка.
Представление данных в бейсике-80. Бей-
сик-80 оперирует е арифметическими данными
в виде констант и переменных. Константы
с обычной точностью определяются суффик-
сом I, который ставится после арифметиче-
ского значения, или с помощью буквы Е,
обозначающей представление константы в
экспоненциальной форме с плавающей точкой
(запятой). В последнем случае числа лежат
в диапазоне от ±1.2Е — 38 до ±3.4Е-|-38.
Таблица 2.8
Директивы языка бейсик-80
Директива Описание Примеры
ATTRIB Изменить атрибуты файла ATTRIB:"Fl :STAT,W"
AUTO, Задать автоматическую нумерацию строк с заданным приращением и номером на- чальной строки AUTO 25, 500
CLEAR Установить дополнительную память для строк (в байтах) CLEAR 2000
CONT Продолжить выполнение программы CONT
DELETE' Уничтожить строку (или строки) в про- грамме DELETE 700-875
DIR Прочесть оглавление файлов на диске DIR 1
EDIT Изменить указанный оператор программы EDIT 170
EXIT Вернуть управление операционной си- стеме EXIT
KILL Уничтожить файл на диске KILL ":F1:STAT"
LIST Вывести строку (или строки) программы LIST 300-400
LOAD Загрузить указанный файл с диска LOAD ": Fl: DATE S"
MERGE Соединить указанный программный файл с текущей программой MERGE ": Fl: DATES"
NEW Уничтожить текущую программу и очис- тить переменные NEW
PRUN Выполнить программу, хранящуюся в ПЗУ PRUN 4 E00H
RENAME Изменить имя файла RENAME ": Fl: SOUP" TO ": Fl: NUTS"
RENUM Изменить номера строк программы RENUM
RUN Начать выполнение программы ’RUN
SAVE Записать программу или файл на диск SAVE ":Fl:INVEN"
TRON Включить трассировку TRON
TROF Выключить трассировку TROF
WIDTH Изменить ширину строки W10TH 80
Операторы языка бейсик-80
Таблица 2.9
Оператор Описание Примеры
CLOSE Закрыть один или более файлов CLOSE 3
DATA Задать значения, которые могут быть считаны оператором READ DATA 9, 0, ON
DEF Определить написанную пользователем функцию DEF FNRT (Rh R2) = R1*R2/(R1 +R2)
DEFDBL Определить переменные, имена которых начинаются с указанной литеры как пе- ременные с плавающей точкой с двойной точностью DEFDBL R — Z
DEFINT Определить переменные, имена которых начинаются с указанной литерь! как цело- численные переменные DEFINT I - N
DEFSNG Определить переменные, имена которых начинаются с указанной литеры как пе- ременные с плавающей точкой с обычной точностью DEFSNG В — H, X
DEFSTR Определить переменные, имена которых начинаются с указанной литеры как строчные переменные DEFSTR К - О
DEFUSR Ввести подпрограммы на другом языке DEFUSR - 4E00H
DIM Зарезервировать память для переменных массива (массивов) DIM A(25,10,30)
END Закончить программу END
ERROR Имитировать ошибки с данным номером ERROR 12
31
Таблица 2.9 (продолжение)
Оператор | Описание | Примеры
FIELD Зарезервировать память для буфера файла прямого допуска FIELD ф 3,20, ASA 0
FOR...ТО...NEXT... STEP Х Создать цикл ... FOR 1 = 1 ТО 5 STEP. 5 NEXT I
GET Прочесть данные на диске файла GET #2,4
GOSUB Выполнить подпрограмму GOSUB 500
GOTO Выполнить безусловный переход по ука- занному номеру строки GOTO 1000
IF...THEN...ELSE Выполнить оператор, если указанное вы- ражение истинно; если ложно — выпол- нить второй оператор IF A> В THEN 250 ELSE PRINT "END"
INPUT I. Ввести данные с терминала 2. Прочесть данные из последователь- ного файла INPUT А, В, C INPUT #1, A 0, в а
LET Присвоить значение переменной LET X=100
LINE INPUT Ввести целую строку из последователь- ного файла LINE INPUT A0
LSET Выровнять указанные строки по левому краю LSET A0 ==B 0
ON ERROR Перейти к строке с заданным номером, если появилась ошибка ON ERROR GOTO 900
ON GOTO Перейти к строке с номером, заданным значением выражения X ON X GOTO 10, 50, 80
ON GOSUB Перейти к подпрограмме, номер первой строки которой задается значением вы- ражения X ON X GOSUB 100, 200, 500
OPEN Создать файлы последовательного или прямого доступа OPEN "R", #3, "F1:PERSON"
OPTION BASE Присвоить начальные значения элемен- там всех массивов (0 или 1) OPTION BASE 0
OUT Записать указанное целое число в устрой- ство ввода-вывода OUT 00F0, 12
POKE Записать байт в указанное место памяти POKE 0A077, 12
PRINT 1. Вывести значения переменных на тер- минал 2. Завести данные в последовательный файл на диске PRINT А, В, C PRINT #4, A0, B0
PRINT USING Представить текст в соответствии с дан- ным форматом PRINT USING "0 0 ##,##; 17.45; 24.67
PUT Занести данные в файл прямого доступа на диске PUT #3; A0, B0, C0
RANDOMIZE Инициализировать генератор случайных чисел RANDOMIZE
READ Присвоить значения переменным про- граммы из списка оператора DATA READ A, KI, L, Z
REM Напечатать комментарий в тексте про- граммы 10 REM START
RESTORE Установить заново указатель для чтения данных из оператора DATA RESTORE
RESUME Возобновить выполнение программы по- сле обнаружения ошибки RESUME
RETURN Возвратить управление оператору, сле- дующему за последним GOSUB RETURN
RSET Выровнять указанные строки по правому краю RSET L 0 =MK0
STOP Остановить выполнение программы STOP
SWAP Провести обмен значениями для двух переменных одинакового типа SWAP Al 0, B2 0
WAIT Остановить выполнение программы до тех пор, пока при сравнении не получит- ся значение «Истинно» WAIT 1, 04H, 0AH
LEN Определить число символов в указанной строке LEN (X0)
32
Таблица 2.9 (продолжение)
Оператор Описание Примеры
LOC Определить текущий номер записи в фай- LOC (#Х)
LOF ле прямого доступа X или количество прочитанных или записанных секторов в последовательном файле X Вычислить число записей в файле прямо- LOF(X)
LOG го доступа или число секторов с данными в последовательном файле X Вычислить натуральный логарифм от X LOG(X)
M1D0 Указать J литер, начиная с 1-й, MID0 (AQ, I, J)
мкю в строке АО Преобразовать 2-байтную строку в целое MKIO (AO)
MKSQ значение Преобразовать 4-байтную строку в зна- mkso (AC)
MKDO чение с плавающей точкой с обычной точностью Преобразовать 8-байтную строку АО MKDO (AO)
оста в значение с плавающей точкой с двой- ной*точностью Преобразовать систему восьмеричных оста (X)
РЕЕК цифр в эквивалент десятичного аргу- мента Указать отдельный байт памяти по PEEK(X)
POS адресу X Указать позицию курсора после послед- POS (DUMMY ARGUMENT)
RIGHT него PRINT Вывести I % правых литер в строке RIGHT (xa, I %)
RND Выдать случайное число обычной точно- RND
SGN сти со значением между 0 и 1 Указать знак X SGN(X)
SIN • Вычислить синус SIN(X)
SPACEO Вывести 1% пробелов SPACEa (X)
SPC Указать строку Х% пробелов SPC(X%)
SQR Вычислить корень квадратный из X SQR(X)
STRO Преобразовать строку десятичных цифр sTRa (X)
STRINGO в десятичный аргумент X Вывести первую литеру строки AQ, STRINGa (Y %, Aa>
TAB повторенную Y% раз Начать вывод с позиции X дисплея или TAB(X)
TAN принтера Вычислить тангенс X TAN(X)
USR Обратиться к подпрограмме пользова- AX = USR 12(A1, A2)
VAL теля от 0 до 24 Преобразовать числовое значение XQ VAL (XO)
VARPTR аргумента Указать адрес-памяти X VARPTR(X)
Функции языка бейсик*80
Таблица» 2.10
Функция Описание Примеры
ABS Выдать абсолютное значение X ABS(X)
ASC Выдать код КОИ8 для первой литеры указанной строки ASC(AO)
ATN Вычислить арктангенс (в радианах) X ATN(X) .
CDBL Вывести значение X с удвоенной точностью с плавающей CDBL(X)
запятой
chro Вывести литеру, соответствующую коду КОИ8 CHRa (X)
CINT Округлить X до целого числа CINT(X)
cos Вычислить косинус (в радианах) X COS(X)
2 В. П. Дьяконов
Таблица 2.10 (продолжение}
Функция Описание Примеры
CSNG Вывести значение X с обычной точностью с плавающей точкой CSNG(X)
CVD Преобразовать 8-символьную строку в число с двойной точностью CVD(X#)
CVI Преобразовать 2-символьную строку в целое число CVI(X%)
CVS Преобразовать 4-символьную строку в число с обычной точностью CVS(X!)
DSKF Указать число свободных 128-байтных блоков на ука- занном диске DSKF(l)
EOF Выдать указание (да — 1, нет — 0) о том, достигнут ли конец файла при чтении последовательного файла дан- ных A = EOF(#X)
ERL Указать номер строки, в которой произошла послед- няя ошибка ERL
ERR Указать код последней ошибки ERR
EXP Вычислить значение ех EXP(X)
FIX Вычислить усеченное целое значение X FIX(X)
FRE Определить число байт, оставшихся в памяти, при за- дании фиктивного аргумента X или XQ FRE(X)
HEXd Представить целочисленный аргумент Х% (от —32768 до 32767) в 16-ричном виде HEX0 (X %)
INP Вывести значение байта из устройства ввода-вывода, указанного выражением в скобках INP(X)
INSTRCI Указать позицию, заданную XQ, в строке YQ INSTRCI (X0, Y0)
INT Вычислить наибольшее целое значение, меньшее или равное значению (X) INT(X)
LEFTCI Вывести X литер строки А0,начиная с ее левого конца LEFT (Ad, X)
Примеры ввода констант: —1.414! (чис-
ло— 1,414); 5.26Е —12 (число 5,26* 10“12).
Константы с плавающей точкой с двойной
точностью определяются суффиксом =#= или
буквой D.
Диапазон значений чисел при этом расши-
ряется от ±2.2Е —308 до ±1.7Е-|-ЗО8.
Примеры ввода констант с двойной
точностью: —1.2345678912D 15 (число
-1,2345678912-1015); -12,3=#= (число
-12,3).
Арифметические переменные бывают трех
типов: целые, с плавающей точкой с обычной
точностью и с двойной точностью. Они
представляют значения чисел, которые могут
изменяться в процессе выполнения программы.
Арифметические переменные языка бейсик-80
могут изображаться одной или двумя буквами,
за которыми может следовауь определяющий
их тип суффикс. Первый элемент обозначе-
ния переменных. обязательно должен быть
буквой, второй — любым алфавитно-цифро-
вым знаком. Если имя переменной содержит
более чем две литеры (кроме суффикса,
определяющего тип), остальные литеры имени
переменной игнорируются.
До присвоения переменным численного
значения оно задается равным нулю. Дирек-
тивы NEW, RUN, CLEAR, LOAD и MERGE
обнуляют все переменные.
С помощью операторов DEFINT, DEFSNG
или DEFDBL можно определить ряд имен для
обозначения арифметических переменных ука-
занных типов. Группы переменных, которые
начинаются с определенных букв, могут быть
заданы с помощью этих операторов в
следующем виде:
DEFXXX М (N],
где N — любая буква от А до Z, М — любая
буква от N до Z. При этом все они задаются
как переменные одного типа.
По умолчанию все переменные имеют
представление с обычной точностью. Если
какие-то переменные должны быть иного
типа, их следует определить в начале про-
граммы. Определители имеют вид знаков: %
для целочисленных переменных, ! для пере-
менных с обычной точностью и # для пере-
менных с двойной точностью.
Строчные или символьные константы пред-
ставляют собой группу знаков, заключенных
в кавычки, например:
"NEWTON METHOD" или "PI = 3.14159".
Внутри этих переменных нельзя использовать
кавычки. Число знаков (длина строки)
может доходить до 255.
Строчные переменные — переменные, при-
нимающие по ходу выполнения программы
символьные. значения. Имя строчной nepet
менной задается одним или двумя знаками:
первый обязательно буква, второй — любой.
После них следует символО, определяю-
щий символьную переменную.
Например, переменная А10 NEWTON
METHOD имеет имя A1Q и значение символа
NEWTON METHOD.
Преобразование данных из одного типа
в другой в бейсике-80 обеспечивается с по-
мощью ряда специальных функций (см.
табл. 2.10).
Массивы (одномерные и двумерные) в
бейсике-80 задаются, как и в других версиях
языка бейсик, именем переменной и номе-
рами строк и столбцов в скобках: напри-
мер, А2(3,4) задает переменную массива А2
с индексами 3 и 4. Задание памяти под
массив обеспечивается оператором DIM.
В строчных переменных массивов необходим
резервировать и число знаков в строке.
Например, оператор DIMA ££(10,20,25) ре-
зервирует память под строчную переменную
из массива АО.
Приоритет выполнения операций в бейси-
ке-80. »
Функция CSNG(X) вычисляет выраже-
ние X с обычной точностью (до 7 десятичных
позиций).
Пример.
Ю А=# = I.DO/3.DO
20 PRINT CSNG(A#)/2, А =#=/2
RUN
.1666667 .166666666666667
Функции CVI, CVS, CVD преобразуют
строки в числа: CVI — 2-символьную строку
в целое число, CVS — 4-символьную строку
в число с обычной точностью и CVD —
8-символьную строку в число с двойной
точностью. Они используются для восстанов-
ления числовых значений из поля буфера
Операция Пример
1. Выражение в скобках 2. Возведение в степень 3. Отрицание (обозначается знаком —) 4. Умножение (♦) и деление (/) 5. Целочисленное деление (знак \) с преобразованием делимого, делителя и результата в целые числа 6. Модуль числа 7. Сложение и вычитание 8. Операции отношения (А + В) А^В -А А*В или А/В А\В AMOD A-j-B или А —В А> В и др.
Самый низкий приоритет у логических
операций. Они выполняются в порядке их
наименования: НЕ, И, ИЛИ, исключающее
ИЛИ, логическая импликация и логическая
эквивалентность.
Арифметические и логические выраже-
ния в бейсике-80 строятся по правилам, ти-
пичным для других версий (они описаны
выше).
Специальные функции языка бейсик-80 —
такие функции, которые характерны для
данной версии бейсика и имеют те или иные
отличия от функций бейсика, описанных
ранее.
Арифметическая функция CDBL(X) изме-
няет тип выражения X на представление
с двойной точностью с плавающей точкой.
В этом формате результат выдается с точ-
ностью до 16 десятичных цифр.
Пример.
10 А=#= = 1/3
20 B#==CDBL(l/3)
30 PRINT А=#=, В^
40 END
.333333 .333333333333333
Строчная функция CHRO (Выражение)
приводит выражение к целому числу в интер-
вале от 0 до 255. Арифметическая функция
C1NT(X) округляет выражение (X) до целого
значения.
Пример.
10 INPUT А, В, С
20 PRINT (ClNT(A + B + C)/3)
30 END
RUN
? 45, 24, 77
49
файла прямого доступа и являются обрат-
ными функциями MKIO, MKSO и MKDO
Функция INP (Выражение) вводит значение
байта со входного порта, номер которого ука-
зан целочисленным выражением (от 0 до 255).
Функция INPUTO (Выражение; Номер
файла) читает заданное количество символов
из указанного номером файла.
Пример. В программе
10 OPEN "1" =#=2, ":С1"
20 PRINT INPUTO (10,2)
30 CLOSE =#=2
40 END
RUN
123456789 (ВК)
123456789
строка 20 печатает первые 10 символов файла
#=2, а оператор CLOSE закрывает файл.
Функция INSTR ищет первое вложение
второй строки ВО в первой строке АО
и определяет порядковый номер второй
строки. Она формирует 0 при трех условиях:
если I больше длины АО, если ВО не может
быть найдена и если АО не содержит
символа. Вид записи функции:
INSTR ([1,1 Строчное выражение АО,.
Строчное выражение ВО).
Пример.
10 АО ="RANDON NUMBER
SUBROUTINE"
20 BO="R"
30 PRINT INSTR (AO, BO)
40 PRINT INSTR (2, AO, BO)
50 END
RUN
1
13
2*
35
Функция INT(X) отыскивает наибольшее
целое значение, меньшее или равное ука-
занному выражению или числу X. Например,
если В = INT( 15,021), то распечатка В дает
значение 15.
Строчная функция LEFT0 (Строчная
переменная. Выражение) находит значение
строки Х0 и определяет I левых символов.
Пример.
10 ха = "WHITE, SMITH, JONES,
BLACK, GREEN"
20 Y0 = LEFT Q (Xa, 11)
30 PRINT Ya
RUN
WHITE, SMITH
Строчная функция LEN(XO) подсчи-
тывает количество символов строки Х0,
включая непечатаемые символы и пробелы.
Функция LOC в файле прямого доступа
определяет текущий номер последней запи-
санной или прочитанной записи. В последо-
вательном файле функция LOC определяет
число секторов, прочитанных или записан-
ных со времени выполнения последнего
оператора OPEN. Функция записывается
в виде
LOC (Номер файла)
Пример.
10 OPEN "R", #=3,: Fl: RANDON
20 GET #3, 44
30 PRINT LOC(3)
40 END
RUN
44
Функция LOF (Номер файла) вычисляет
число записей в файле прямого доступа,
а в файле последовательного доступа вычис-
ляет число секторов с данными (128 байт
на сектор) в файле.
Функция MID0 (XQ, I [, J]) проверяет
строку XQ и выделяет ее правые символы,
начиная с позиции, заданной значением I.
Здесь I и J — целые числа от 0 до 255. Если
указан аргумент J, определяется J символов,
начиная с позиции I. Если I больше, чем
LEN (Х0), то MID0 формирует пустую
строку. Если J больше числа символов
в Ха справа от 1-й позиции или J не ука-
зано, функция MID0 формирует остаток
строки.
Пример.
10Xa="JOHN J. JONES"
20 PRINT MID0 (Xa, 10, 3)
30 END
RUN
ONE
Функция MKia, MKS0 и MKDa пре-
образовывают данные как числовые значения
в 2-, 4- или 8-байтные строки соответственно.
МК1 0 используется для преобразования
целого значения, MKS0 — для преобразо-
вания значения с плавающей запятой с обыч-
ной точностью и MKD0 — для преобразо-
вания значения с плавающей запятой с двой-
ной точностью.
Функция ОСТ О (Выражение) определяет
строку восьмеричных цифр, представляющую
значение целого аргумента (выражения).
Функция РЕЕК (Выражение) читает один
байт памяти в указанном месте, а функция
РОКЕ (см. далее) записывает один байт
в указанное место памяти. Например:
PRINT PEEK (0FABH)
200
где 200 — прочитанный байт из места
0FABH памяти.
Функция POS (Целое число или Выра-
жение) указывает позицию курсора после
последнего оператора PRINT. В записи
POS(I) аргумент 1 является фиктивным,
самая левая позиция курсора соответствует
Функция RANDOMIZE запрашивает ввод
нового случайного числа, которое является
начальным для функции генерации случай-
ных чисел с равномерным распределением
RDN. Если функция RANDOMIZE не исполь-
зуется, то одна и та же последовательность
случайных чисел будет повторяться каждый
раз. Функция RANDOMIZE ’записывается
в виде
RANDOMIZE (Выражение)
причем начальное случайное число задается
выражением (либо константой или пере-
менной).
Функция RIGHT0 (Строка, Целое I)
определяет I правых символов строки Х0.
"Если 1=0, выдается пустая строка, а если I
превышает длину строки Х0, то выдается
вся строка.
Пример.
•10 Aa="JOHN J. JONES"
20 xa =right0 (Aa, 8)
30 PRINT xa
40 RUN
J. JONES
Функция SPACEa (Целочисленное вы-
ражение) формирует в строке пустой интер-
вал, состоящий из пробелов, число которых
задается значением целочисленного выра-
жения. Функция SPS (Целое число) совместно
с оператором PRINT также формирует
пустой интервал из N пробелов (N — целое
число).
Функция STRING0 (Целое, Целое)
определяет строку, в которой заданный
символ повторяется указанное число раз.
В записи STRING0 (Целое, Строчное вы-
ражение) заданное число раз повторяется
первый символ строчного выражения. Функ-
ция STR0 (Выражение) формирует строку
десятичных знаков, которая представляет
значение целочисленного выражения.
Пример.
10 FOR 1=0 ТО 9
20 Aa=A0H-MIDa (STR0 (I), 2)
30 NEXT I
40 PRINT A0
RUN
0123456789
36
Функция USRN задает обращения к опре-
деленным пользователем подпрограммам,
записанным на языке ассемблера, фортран-80
или ПЛ/М-80. Оператор DEF USRN опре-
деляет начальный адрес соответствующей
подпрограммы USRN. Аргумент N может
быть любым целым от 0 до 24; если он не
указан, полагается N=0. Символ типа обозна-
чает тип результата. Если обозначение типа
отсутствует, результат определяется как
целое число в регистрах Н и L микропро-
цессора.
Функция VAL (Строка) определяет числен-
ное значение строки.
Пример.
10 INPUT AQ
20 Al = VAL (AQ)*52
30 PRINT Al >
RUN
? 4 (t. e. AQ ==4)
208 (т. e. имеем 4*52)
Специальные директивы и операторы.
Под специальными директивами и операто-
рами языка бейсик-80 подразумеваются спе-
цифические именно для него директивы и опе-
раторы. Ниже они даны в алфавитном
порядке.
Директива* ATTRIB изменяет атрибуты
файлов на дисках или защищает любой
файл от записи, стирания или изменения
имени. Защита файла выполняется директи-
вой в виде
ATTRIB:F Номер дисковода, "Имя фай-
ла", "W!"
Запись, стирание и изменение ранее защи-
щенного файла обеспечивается директивой
ATTRIB :F Номер дисковода, "Имя фай-
ла", "W0"
Директива AUTO обеспечивает автомати-
ческое присвоение номера каждой строке
программы. Она вводится в виде
AUTO Приращение номера [, Номер
первой строки]
Так, директива AUTO 50, 300 задает номе-
ра строк с приращением 50, начиная со стро-
ки 300, т. е. строки будут иметь номера
300, 350, 400, 450 и т. д. По умолчанию,
т. е. при вводе только директивы AUTO,
приращению и номеру первой строки присваи-
ваются значения 10. Если задаваемый дирек-
тивой AUTO номер строки имеется в про-
грамме, он отмечается знаком ♦.
Директива CLEAR обнуляет все пере-
менные и массивы, определения функций
и закрывает файлы. Символьные перемен-
ные при этом становятся пустыми строками.
Эта директива может записываться в виде
CLEAR [Выражение [Адрес]]
Численное значение выражения указывает
пространство для строк в байтах. Например,
директива CLEAR 2000, 0D000H резерви-
рует (высвобождает) 2000 байт для строк
и не позволяет использовать адреса памяти
выше 0D000H.
Директива CLOSE [Номер] закрывает
файл с заданным номером. Если аргумент
(номер) не указан, директива CLOSE за-
крывает все файлы. Все файлы закрывают
также директивы END, NEW, MERGE, LOAD,
RUN (без F),
Директива DEF FN(X) задает функцию
пользователя. Здесь FN — имя функции, X —
аргумент (функция может быть с любым
числом аргументов).
Директива DELETE НС, где НС — номер
строки, уничтожает одну строку с заданным
номером, директива DELETE —НС уничто-
жает строку с номером НС и все предшест-
вующие ей строки. Директива DELETE НС1,
НС2 уничтожает строки с номерами от
НС1 до НС2.
Директива DIR воспроизводит имена,
число блоков и длины (в байтах) файлов,
сохраняемых на указанном после нее диске.
Оператор END останавливает выполнение
программы и закрывает все файлы. Пере-
менные при этом сохраняют свои значения.
Оператор STOP действует как END, но
файлы не закрываются и при его исполнении
появляется сообщение
BREAK IN НС
(т. е. останов в строке НС). Оператор END
рекомендуется ставить в конце программы,
хотя это не обязательно.
Оператор ERROR "Выражение" имитирует
происхождение ошибки. Если ERROR выпол-
няется с номером, который не соответствует
сообщению об ошибке, будет напечатано
сообщение
UNPRINTABLE ERROR
Оператор FIELD#: «Номер файла» ис-
пользуется для назначения памяти в одном
из шести 128-байтных буферов файлов
прямого доступа.
Для чтения определенной записи из дис-
кового файла в 128-байтный буфер служит
оператор
GET[#] Номер файла [, Номер записи]
Оператор условных переходов в бейсике-80
может иметь вид
IF Выражение THEN Инструкция ELSE
Инструкция
Например, оператор
50 IF Х = 0 THEN А = 5 ELSE А = 20
означает, что если Х = 0, то А = 5, иначе
А = 20.
Оператор
KILL Строчное выражение
служит для исключения из дисковой памяти
программы. Он также уничтожает заголовок
программы в оглавлении.
Оператор INPUT помимо обычного приме-
нения (задания численных значений пере-
менной или переменным списка) используется
в составном операторе LINE INPUT. Послед-
ний читает целую строку данных и присваи-
вает ее указанной строчной переменной
в качестве значения. Данные могут быть
прочитаны из файла на диске или введены
37
с пульта. В последнем случае оператор
LINE INPUT задается в форме
LINE INPUT [Строчное выражение;]
Строчная переменная;
При этом оператор обеспечивает печать
строчного выражения в качестве напоминания
и ждет указания строчной переменной.
При вводе данных с файла оператор запи-
сывается в виде
LINE INPUT & Номер файла, Строчная
переменная
Директива MERGE читает программу с
диска и соединяет ее с текущей программой
без изменения строк каждой из программ.
Если программы имеют строки с одинаковыми
номерами, то введенные с диска строки за-
мещают строки текущей программы. Дирек-
тива MERGE стирает все переменные. Она
записывается в виде
MERGE Строчное выражение
Директива NEW стирает всю текущую
программу и обнуляет все переменные.
Оператор ON ERROR GOTO НС пере-
дает управление на строку” с номером НС,
если возникает ошибка. Оператор
ON Выражение GOTO НС1, НС2, ...
передает управление строкам НС1, НС2 и т. д.
по результатам вычисления выражения (либо
значения переменной). Оператор
ON Выражение GOSUB НС1, НС2, ...
обеспечивает обращение к подпрограммам,
начинающимся со строк НС1, НС2 и т. д.,
по результатам вычисления выражения.
Таким образом, операторы ON GOTO и
ON GOSUB осуществляют1 косвенную адре-
сацию.
Оператор
OPEN Тип, [#] Номер файла, Имя файла
делает файл Операционной системы доступ-
ным для программы. Тип файла указывается
знаками: R — для файла с прямым доступом,
1 — для последовательного вводного файла
и 0 — для последовательного выводного
файла. Номер файла — целое число от О
до 6, перед которым ставится знак =#. Одно-
временно можно открыть только 6 файлов.
Директива OPTION BASE N (где N=*=0
или 1) задает индексирование массивов с еди-
ницы (N = l) или с О (N —0).
Оператор
OUT Номер порта, Выражение
записывает значение выражения в виде це-
лого числа от 0 до 255 в указанный номер
порта.
Оператор
РОКЕ Ячейка, Выражение
помещает значение выражения (округленное
до целого числа) в указанную ячейку памяти.
До использования этого оператора нужно
использовать директиву CLEAR, чтобы за-
резервировать свободную память.
Оператор PRINT выводит на печать зна-
чения выражений или текст. Литерные строки
38
текста заключаются в кавычки. Оператор
PRINT USING Номер файла,]
Строка формата; Выражение, ...
обеспечивает вывод при специальных форма-
тах. Строка формата определяет пробелы и
дополнительные символы (*0) при печата-
нии числовых полей или определяет части дан-
ной строки при печатании строчных полей.
Необязательный номер файла определяет
последовательный дисковый файл.
Для оператора PRINT USING со строч-
ными полями существуют два формата: «!»
определяет, что печатается первый символ
каждой указанной строки; N пробелов опреде-
ляют, что печатаются первые 2 + N символов
(если используется обратная косая черта
без пробелов, то печатаются 2 символа).
Если поле содержит больше символов, чем
принимаемая подстрока, лишние символы
отбрасываются; если символов меньше —
вставляются пробелы, чтобы заполнить поле.
Пример.
10 ХО =«ONE»
20 Y0=«TWO»
30 PRINT USING <!»; X0; Y0
40 PRINT USING 5; X0; YO
RUN
ОТ
ONE TWO
Число цифр, выводимых на печать опе-
ратором PRINT USING, указывается сим-
волами =#=, между которыми может стоять
знак «,» или «.». Число знаков # до знака
«,» или «.» задает вывод целой части, а после
этих знаков — дробной части.
При необходимости числа округляются,
например:
PRINT USING «#=#,:#=#=»; 41.287
41.29
PRINT USING 71/100
0.71
Если число, которое выводится на печать,
мало, чтобы заполнить все указанные цифры
слева от десятичной точки, вставляются про-
белы, заполняющие все поле. До 5 цифр
можно напечатать для целого числа, до 7 —
для числа с плавающей точкой с обычной
точностью и до 15 — для числа с плавающей
точкой с двойной точностью.
Знак 4- может использоваться в начале
или в конце поля символов формата. Он
печатается в соответствующем месте. Знак
— используется справа поля символов
формата, чтобы вызвать печать замыкающего
знака «минус», если число отрицательное
(если число положительное, печатается про-
бел). Если ни + , ни — не включены в формат,
отрицательное число печатается со знаком —.
Примеры.
PRINT USING «+#.=#:#>
4. 89; -2.6689
+ 4.89; -2.67
PRINT USING «=#=#:.=#»; —5.8; 96.2;
-5.8
96.2
С помощью символов ** предшествующие
пробелы заполняются звездочками:
PRINT USING «**#=#=.=#=»; 4.8; 243,3;
*♦*4.8 *243.3
Символы О 0 добавляют один знак 0 слева
от формируемого числа:
PRINT USING «0 0###.##>;
—48.28; 364.90;
- 048.280364.90
Знаки 0 0 определяют пространство для
двух дополнительных символом, но добавлен-
ный символ 0 использует одну позицию.
Символы f 111 задают формат числа в
экспоненциальной форме. Стрелки поме-
щаются после цифровых символов формата.
Символ % выдается перед числом, если
оно не входит в формат:
PRINT USING «##.##»; 40.48;
99,997;
40.48 %99997
Директива
PR UN Адрес
обеспечивает выполнение программы, хра-
нящейся в ППЗУ. Адрес программы — целое
число.
Оператор
PUT Номер файла, [Номер записи]
передает данные из определенного файла
в указанную запись диска.
Оператор REM используется для ввода
в программу программных комментариев,
которые выводятся на печать только при
выводе листинга программы. Комментарии
записываются непосредственно после опера-
тора REM, например:
10 REM ЧИСЛЕННОЕ
ИНТЕГРИРОВАНИЕ МЕТОДОМ
СИМПСОНА
Директива
RENAME "Старое иМя файла" ТО
"Новое имя файла"
изменяет имя указанного файла на новое
с изменением ссылки в оглавлении.
Директива
RENUM [Новый номер] [, Старый номер]
[, Приращение]
переупорядочивает номера строк в программе
независимо от того, появляются ли они
в начале строки или являются аргументом
в операторе GOTO. В директиве можно
указать три необязательных аргумента: новый
номер первой перенумерованной строки,
старый номер перенумерованной строки и при-
ращение строк. Если аргументы не указаны,
первой строке присваивается номер 10 и при-
ращение принимает значение 10.
Пример.
20 INPUT А
40 PRINT «NEW»; А
15 RANDOMIZE
5 PRINT CHR0 (12)
52 A1=A*RND
58 A2 = INT(A)
RENUM
LIST
10 PRINT CHR0 (12)
20 RANDOMIZE
30 INPUT A
40 PRINT «NEW»; A
50 A1=A*RND
60 A2 = INT(A1)
Оператор RESUME возобновляет выпол-
нение программы после управляемой ошибки,
которая обнаруживается. Выполнение про-
граммы начинается с указанной строки. Если
номер строки не указан, выполнение програм-
мы происходит с оператора, в котором была
обнаружена ошибка. Оператор
RESUME [Номер строки] NEXT
обеспечивает выполнение оператора, следую-
щего за оператором с ошибкой.
Директива RUN обеспечивает выполне-
ние программы, начицая с наименьшего
номера строки. Если за оператором RUN
следует строчная переменная, обеспечивается
поиск файла с заданным ею именем, за-
грузка его в память и выполнение программы,
начиная с наименьшего номера строки.
Ввод символа |С, в том числе вместо
данных по оператору INPUT, останавливает
выполнение программы и вызывает печать
сообщения BREAK IN НС (где НС — номер
строки, на которой прервано выполнение
программы).
Директива
SAVE Строчное выражение [А]
заносит текущую программу на диск с ука-
занным строчным выражением именем файла.
Если файл с таким именем уже есть на диске,
он будет заменен новым.
Оператор
SWAP Переменная 1, Переменная 2
обеспечивает обмен значениями двух перемен-
ных: переменной 1 и переменной 2.
Директивы TRON и TROF соответственно
включают и выключают трассировку програм-
мы, т. е. обеспечивает пооператорное выпол-
нение программы.
Директива
WAIT Номер порта, Байт маски, Байт
сравнения
предписывает принять поступавшие с указан-
ного порта байты. Эти байты проверяются
по байту маски, который является целым
выражением (от 0 до 255). Если байт срав-
нения не указан, он задается равным 0.
Директива WAIT выполняет операцию исклю-
чающее ИЛИ над состоянием порта и байтом
сравнения, а результат и байт маски подтверж-
даются операцией И. Выполнение продол-
жается до тех пор, пока не будет получена
ненулевая величина.
39
Директива
WIDTH Выражение
задает ширину печатаемых на консоли строк
к заданной выражением величине (от 15
до 255). Если выражение не указано, ширина
строк задается с 72 знаками.
Особенности ввода и редактирования про-
грамм на бейсике-80. Бейсик-80 имеет ряд
дополнительных возможностей для ввода и
редактирования программ. Так, используя
директиву AUTO, можно автоматически ну-
меровать строки, начиная с заданного номера
с заданным приращением. После ввода дирек-
тивы AUTO бейсик-80 формирует номер стро-
ки и ждет ввода операторов. Если ввод их
закончен символом возврата каретки ВК,
интерпретатор бейсик-80 формирует номер
следующей строки и т. д. Ширина поля
печати равна 72 символам, но может изме-
няться директивой W1DHT.
Бейсик-80 обеспечивает редактирование
программ: стирание и замену текстов, отдель-
ных строк и предложений, коррекцию сим-
волов и предложений, коррекцию символов
в операторах, объединение строк и др. Он
имеет также возможности для работы с дис-
ковым накопителем. Бейсик-80 включает в себя
два типа операций ввода-вывода файлов
на диске: последовательный и с прямым
доступом. Последовательный позволяет читать
и писать файл от начала до конца,- а с пря-
мым доступом — указывать, где в файле вы-
полняется чтение и запись. Операторы работы
с файлами были описаны выше. Более по-
дробные сведения о редактировании программ
и работе с периферийным оборудованием
можно получить из [26] и технической
документации на вычислительные средства,
использующие версию бейсик-80.
Данные о некоторых других версиях бей-
сика. В некоторых версиях бейсика, например,
бейсике-плюс для серии отечественных мини-
ЭВМ (включая ЭВМ СМ-4) и бейсик-ЗА-TDM
для ЭВМ Электроника-ДЗ-28 имеется ряд
дополнительных операторов. Прежде всего,
к ним относятся операторы выполнения
матричных операций.
Оператор чтения элементов матриц МАТ
READ А, В, С, ... обеспечивает чтение
элементов матриц А, В, С, ... последователь-
но по строкам. Массивы элементов матриц
предварительно задаются операторами DIM
и DATA:
10 DIM А<3.»3)
20 DATA 1 .«• 2* 3/ 4/ б/ 7/ У/ 9
30 MAT READ А
Оператор ввода элемента матрицы с пульта
MAT INPUT А обеспечивает ввод элемен-
тов матрицы А построчно с клавишного
пульта.
Оператор вывода матрицы MAT PRINT
А, В, С, ... обеспечивает вывод массива
элементов матриц А, В, С, ... построчно
и последовательно, т. е. вначале выводятся
элементы матрицы А, затем В и т. д.
Оператор задания нулевой матрицы
MAT A = ZER формирует матрицу А, у кото-
рой все элементы нулевые.
Оператор задания матрицы с единичными
элементами MAT A = CON создает матрицу А,
у которой все элементы имеют значения 1.
Оператор задания единичных элементов
akk MAT A = IDM создает матрицу А, у кото-
рой элементы ал*=1, а остальные 0. Если
матрица А квадратная, то этот оператор
создает единичную матрицу.
Оператор транспонирования МАТ В =
=TRN(A) обеспечивает транспонирование
матрицы А, т. е. получение матрицы В, у ко-
торой элементы Ь^ — ац. Матрицы А и В не
должны совпадать, а их размерности должны
соответствовать возможности транспониро-
вания. В противном случае ПЭВМ выдает
указание об ошибке.
Оператор обращения матриц МАТ С =
= INV (А, В) или MAT B = INV(A). Форма
записи зависит от версии бейсика. В первом
виде исходной является квадратная матри-
ца С и должны быть зарезервированы два
служебных массива А и В. После выполнения
оператора MAT C = INV(A, В) обращенная
матрица помещается на место исходной,
а элементу А(0) присваивается значение
определителя D исходной матрицы С. Во вто-
ром виде оператора исходной является матри-
ца А и формируется матрица В = А~’.
Определитель при этом получается как зна-
чение специальной переменной DET, которое
может присваиваться обычной переменной
(например, D = DET).
Оператор умножения матриц МАТ С =
= А*В формирует матрицу С, получаемую
умножением матриц А и В. Матрицы А, В
и С не должны совпадать. Особенности
выбора размерности матриц при умножении
описаны в § 3.4.
Операторы арифметических действий с вы-
ражениями (а) используются в виде
МАТ В = А+(а) МАТ В=А+(а)
МАТ В —А/(а) МАТ В = А*(а)
В результате их выполнения получается
матрица В, все элементы которой — преобра-
зованные элементы матрицы А. Арифмети-
ческое выражение (а) должно обязательно
заключаться в скобки, матрицы А и В должны
быть одинаковой размерности, допустимо
совпадение имен матриц. Например, возможна
запись МАТ С = С-Ь(а) и т. д. Матричный
оператор присваивания МАТ В = А создает
матрицу В, элементы которой bij — atj. Размер-
ности массивов для матриц А и В должны
быть одинаковыми.
Операторы арифметических операций над
матрицами используются в виде
(сложение матриц)
(вычитание матриц)
(деление матриц)
МАТ С = А + В
МАТ С = А —В
МАТ С = А/В
МАТ С=Д**В (элементы возводятся
в степень Ьц)
Массивы матриц А, В' и С должны иметь
одинаковые размерности. Допускается совпа-
дение имен массивов.
Оператор умножения матрицы на кон-
станту (для версии бейсик-плюс) имеет вид
• МАТ В = А*К, где К — константа. Его
выполнение создает матрицу В, все элементу
которой Z?// = a,/ К.
40
Особенности применения матричных опе-
раторов. Применение матричных операторов
существенно упрощает решение задач, связан-
ных с использованием матриц (например,
решение систем линейных уравнений). По-
скольку при этом необходимые арифмети-
ческие операции проводятся на машинном
языке, существенно сокращается время вычис-
лений. Перед использованием матричных
операторов должны быть заданы и опреде-
лены (с помощью оператора DIM) массивы
под исходную вычисляемую и служебные
матрицы. Массивы могут иметь любые имена
(а не только А, В, С, как в приведенных
условных формах записи операторов). Усло-
вия совпадения имен оговорены выше.
Операторы обращения по меткам. В неко-
торые версии бейсика для ускорения вычис-
лений вводятся операторы ON# Метка и
GOSUB# Метка. Метка может быть числом
(0-4-9) или любой латинской буквой (от А
до Z). При выполнении этих операторов
происходит безусловный переход (опера-
тор ON) или обращение к подпрограмме
(оператор GOSUB), которые следуют за
строкой с меткой в виде REM# Метка.
Оператор-переключатель строк имеет вид
ON (a) HCI, НС2, НСЗ, ...
где а — арифметическое выражение, указы-
вающее порядок безусловных переходов
к строкам с номерами НО, НС2, НСЗ и т. д.
Если а принимает значение 1, происходит
переход к строке с номером НО, если а
принимает значение 2, переход идет к строке
НС2, и т. д. (номера строк не совпадают со
значениями а).
Операторы ввода символьных последова-
тельностей RED. Оператор присваивания
REDL А = 'Символы'
присваивает переменной А символьное зна-
чение. Для такого присвоения при вводе
символов с пульта используется оператор
REDI А. Здесь А — любая переменная.
Вывод символьной переменной, введенной
операторами REDL и REDI, выполняется
с помощью оператора
PRINT DA, QB, ...
Перед каждой символьной переменной из
списка оператора PRINT должен стоять
знакО.
Вывод символьных переменных выпол-
няется также операторами
REDP . , или пробел
REDP ; или /
REDP # М [...]
REDP А [(I [,К])]
При пустом списке оператор REDP игнориру-
ется, точка, запятая и пробел используются
в качестве разделителей, знак ; обеспечивает
пропуск одной позиции, знак / — перевод
строки с возвратом каретки, #М — пропуск
М позиций (где М — число), А — вывод
строки, введенной операторами REDL и REDI.
Широко распространенные операторы
Обработки символьных переменных LEN и
MID описаны в версии бейсика ПЭВМ
FX-702P.
Отметим, что обычно символьные пере-
менные отождествляются с элементами одно-
мерных и двумерных массивов, поэтому
на их длину (число символов) наклады-
ваются определенные ограничения (они за-
висят от конкретной версии языка бейсик).
В некоторых версиях бейсика имеются ограни-
чения и на виды используемых символов
(например, некоторые символы нельзя ис-
пользовать в составе символьных пере-
менных). ,
Все описанные выше директивы, опера-
торы и функции присущи наиболее сложным
версиям языка бейсик. В целом между
отдельными версиями имеются существенные
отличия, но они не затрагивают основные
(характерные именно для этого языка) опе-
раторы и функции. Программы, описанные
в данном справочнике, используют, по
возможности, только такие операторы и
функции. Пакет программ, в которых ис-
пользованы операторы матричных функций,
дан в § П5.12.
§ 2.3. Арифметические
и алгебраические операции,
работа в режиме калькулятора
Арифметические и алгебраические опе-
рации микроЭВМ, программируемые на бей-
сике, могут выполняться как по программе,
так и в режиме калькулятора. В последнем
случае они проводятся по командам, вводи-
мым без указания номера строк в режиме
вычислений.
Примеры такого рода вычислений даны
в табл. 2.11 (микроЭВМ FX-702P). У не-
которых микроЭВМ, например Электрони-
ка-Д 3-28, эти. операции выполняются после
ввода оператора PRINT (печать). При этом
аргумент функции должен заключаться в
скобки.
Из приведенных примеров видно, что вы-
числения упрощаются при учете приоритета
операций. В сомнительных случаях следует
вводить скобки. При записи произведений
между сомножителями обязателен знак умно-
жения ♦.
В отличие от вычислений на обычных
калькуляторах [10, 20], ПЭВМ обеспечивают
в калькуляторном режиме выполнение не
только элементарных (сложение двух чисел,
вычисление одной функции и т. д.), но и слож-
ных последовательностей действий, в част-
ности вычисление численных значений фор-
мульных выражений. При этом в ходе ввода
формулы возможна коррекция ошибочно вве-
денных* знаков, операторов и числовых
констант. По существу это означает програм-
мирование разового процесса вычислений.
Введенное формульное выражение в кальку-
ляторном режиме стирается после одно-
кратного вычисления его численного значе-
ния. Отметим некоторые дополнительные
виды вычислений, проводимые с использо-
ванием программ, записанных в ПЗУ ПЭВМ
(т. е. микропрограмм).
Микропрограммно вычисляются и все эле-
ментарные функции, включенные в набор
команд ПЭВМ.
41
Таблица 2.11
Примеры вычислений в режиме калькулятора (для ПЭВМ FX-702P)
Операция Показания дисплея при вводе Результат (после нажатия клавиши EXE)
а^-2 Ь+-3 А=2 В = 3 С = 5 Переменным a, 6, с и d
C-f-5 d^-1.5 D=1.5 присвоены значения 2, 3, 5 и 1,5
24-3*5/1,5 24-3*5/1.5 12
a + b'C/d A + B»C/D 12
5 sin 30° 5*SIN 30 2,5
-д/а tg 45° (SQRA)*TAN 45 1,414213562
20 Ig (3/1,5) a + 6 * к a 20*LOG (3/1.5) 6,020599913
sh d c ((A4-B)/C)*HSN D 2,129279455
cos 40°30'25,2" COS DEG (40,30,25.2) 0,7603266149
aed + b A*EXPD + B 11,96337814
b-cl B*C! 360
2,575 2.5 f 75 7,ОО649232Е 29
2nc 2*л*С 31,41592654
(c —a) arctg d (C —A)»ATN D 168,9297974
-2*io-5.e-‘8 — 2E —5»EXP -18 — 3,045995949Е—13
b In |a — B»LN ABS(A-C) 3,295836866
(int л)/2 INT n/2 . 1,5
int (л/2) 4-c INT (л/2)4-С 6
Преобразование полярных координат в
прямоугольные (рис. 2.1, а) выполняется по
формулам
r=V?4=?2’ и 0 = arctg (у/х),
где г — длина радиуса вектора. Для этого
используются команды
RPC х, у EXE X (получаем г) DMS Y ЕХЕ
(получаем 0)
Рис. 2.1. Преобразование координат
Пример. Найти г и 0 при х= —1
и у — — 2.
Вводимые команды Результат
RPC -1, —2 ЕХЕ X ЕХЕ 2.236067977 = г
DMS Y ЕХЕ Y ЕХЕ — 116°33'54.18" = 0 -116.5650512 = 0
Оператор DMS вводится, если угол 0 нужно
получить в градусах, минутах и секундах
с десятичными долями. Угол обычно опре-
деляется в пределах ±180°.
Преобразование прямоугольных координат
в полярные (рис. 2.1,6) производится по
формулам x = rcos0 и j/=rsin0 с примене-
нием команд
PRC г ,DEG(0°, 0', 0") EXE X ЕХЕ
(получаем х) Y ЕХЕ (получаем у)
Если угол вводится в градусах с десятич-
ными долями, вместо оператора DEG(0°,
0', 0") вводится значение 0.
Пример. Найти х и у при г=1 и 0 = 30°.
Вводимые команды
Результат
PRC 1, 30 ЕХЕ
X ЕХЕ
Y ЕХЕ
0.8660254038=х
0,5 = 1/
При представлении углов в разных еди-
ницах измерения используются следующие
режимы работы: MODE4 — угол в градусах,
MODE5 — угол в радианах и MODE6 — угол
в градах (100 град соответствует 90°).
Статистические вычисления могут выпол-
няться в режиме калькулятора (см. подроб-
нее § 5.3), где приведены и соответствующие
формулы.
42
Отметим, что вычисления в режиме каль-
кулятора могут проводиться в паузах между
вычислениями по программе. Они исполь-
зуются для предварительного преобразования
вводимых в ПЭВМ данных, элементарной
обработки полученных данных, проверки
отдельных фрагментов программ, выполнения
простых и редко повторяющихся вычисле-
ний и т. д. В других случаях, когда
вычисления сложны и требуют неоднократ-
ного выполнения, их целесообразно про-
водить по программам.
§ 2.4. Элементарное
программирование на языке
бейсик
Некоторые правила программирования
на языке бейсик были описаны при описании
его операторов (§ 2.1, 2.2). Ниже они систе-
матизируются. Поясним смысл основных по-
нятий программирования.
Алгоритм — то или иное описание всех
действий, которые должны быть выполнены
для решения данной задачи.
Описательный алгоритм — алгоритм, со-
ставленный на естественном, в частности
математическом, языке.
Графический алгоритм — компактная фор-
ма записи алгоритма в виде специальных
графических знаков (см. рис. 2.2) с указа-
нием связей между ними.
из строк со словами и предложениями,
составленными из операторов. Строки нуме-
руются от меньшего (0 или 1) до большего
номера (максимальный номер зависит от типа
ПЭВМ). Рекомендуется нумерация строк,
кратная 5 или 10, например 10, 20, 30, 40 и т. д.
Тогда в промежутки между номерами можно
вставлять новые строки. Операторы или от-
дельные предложения с ними разделяются
в строках двумя точками.
Неопытные пользователи часто записы-
вают в каждой строке один оператор или
одно предложение. Такая запись наглядна
и упрощает замену ошибочных операторов.
Однако ее не следует рекомендовать, так как
в этом случае неэкономно используется память
ПЭВМ (забивается множеством номеров),
увеличивается время счета, сложные програм-
мы получаются очень длинными, текст (лис-
тинг) программы неудобно выводить и его
распечатка ведет к неэкономному расходу
дорогостоящей бумаги. Рекомендуется запи-
сывать в строку несколько предложений с тем,
чтобы строка при индикации дисплеем вме-
щалась в ее формат (от 20 до 80 знаков
в одной строке).
Соответствие структуры программы алго-
ритму является непременным условием для
получения наглядной программы и обеспе-
чения удобства и безошибочности работы
с ней. Для этого программа разбивается на
отдельные части: организация ввода исход-
ных данных и констант, организация ввода
г=х2
Рис. 2.2. Графические обозначения алгоритмов: начала и конца программы (а), ввода и вывода дан-
ных (б), проведения операций (в), выполнения условных переходов (г) и циклов (д)
Алгоритм в виде программы — конечный
продукт разработки алгоритма в виде про-
граммы, записанной на языке программи-
рования (в нашем случае на бейсике).
Сравнение форм записи алгоритмов. Бей-
сик отличается от других языков програм-
мирования простотой и наглядностью записи
программ. Поэтому в большинстве случаев
алгоритм целесообразно записывать в виде
программы. Графический алгоритм целесо-
образно приводить при укрупненном описа-
нии сложных программ, содержащих большое
число условных и безусловных переходов,
циклов и подпрограмм. Если при описании
алгоритма необходимы особые пояснения
(например, вывод и преобразование формул),
преимуществом может обладать описательный
алгоритм.
Общие правила записи программ. Как
отмечалось, программа на бейсике состоит
текущих переменных, организация начала
циклов, построение тела циклов, организация
конца циклов, вывод результатов на индика-
цию и печать. Не рекомендуется смешивать
в одной строке фрагменты этих блоков.
Отдельно записываются подпрограммы, ко-
торые можно сопровождать комментарием,
записываемым с помощью оператора REM.
В начале программы с помощью операторов
REM или PRINT записывается название или
код программы, в конце указывается опера-
тор END. Отсутствие оператора END может
привести к ошибкам при записи программы
на магнитные накопители и ее считывании.
Виды программ. Программы могут быть
линейными, разветвляющимися и. цикличе-
скими.
Линейные программы имеют алгоритм,
при котором каждая последующая операция
выполняется строго за предыдущей. Все
43
операции исполняются от начала до конца —
см. пример вычисления площади круга по
формуле 5 = л£>2/4. Словесный алгоритм
при этом следующий.
1. Введем численное значение D и при-
своим его переменной D(D-<-D).
2. Вычислим nD2/4 и присвоим получен-
ное значение переменной S (S-<-ji£>2/4).
3. Выведем на печать значение перемен-
ной S.
4. Организуем останов ЭВМ.
Рис. 2.3. Алгоритм
вычисления пло-
щади круга
Соответствующий графический алгоритм
показан на рис. 2.3; а, программа имеет
вид
05 REM'ВЫЧИСЛЕНИЕ ПЛОШАЛИ КРУГА'
10 INPUT'ВВЕДИТЕ ДИАМЕТР КРУГА D='D
20 LETS=#PI*IT2/4
30 PRIНТ'ПЛОШАДЬ КРУГА S='S
4© END
Обратите внимание на комментарии при
операторах INPUT в строке 10 и PRINT
в строке 30.
У разветвляющихся программ вычисления
производятся в различных частях в зави-
симости от заданных исходных данных или
результатов вычислений. Это обеспечивают
операторы условных переходов. На рис. 2.4
Рис. 2.4. Алгоритм вычисления функции sin х/х
44
показан графический алгоритм вычисления
функции F(x)=sinx/x при х=#0 и Г(х) = 1
при х = 0. Соответствующая программа при-
ведена выше (в § 2.1) при описании опера-
торов IF...THEN.
Циклические программы обеспечивают
циклическое (т.* е. повторяющееся) выпол-
нение отдельных фрагментов заданное или
конечное, но неопределенное число раз — до
получения результата с заданной погреш-
ностью. Циклы с заданным числом повто-
рений организуются с помощью операторов
FOR ... ТО ... STEP и NEXT. Примеры
правильной и неправильной организации ряда
циклов даны на рис. 2.5.
-------/77/? 7=7 777 /У -
— /77/? 7=2 ТО М
r/77/? /T=J ТО Р -
'-NEXT X..........
— NEXT J.........
-----NEXT I
а
FOR Z=7 TO N
--------------------FOE TO M
p/77/? №5 P -
-----NEXT I...........
--NEXT T...........
-NEXT К...........
5
Рис. 2.§. Правильная {а) и неправильная (б)
организации циклов с помощью операторов FOR
и NEXT
Пример. Построение циклической про-
граммы с циклом, повторяющимся заданное
число раз. Пусть надо вычислить N-e число
Фибоначчи. Напомним, что числа Фибоначчи
образуют последовательность, у которой
каждый очередной член равен сумме двух
предыдущих:
1 2 3 5
24-3 = 5
8 13 21 34 ...
134-21=34
0
Словесное описание алгоритма может быть
следующим.
I. Задаем число N.
2. Присвоим переменной А значение 0
(А-«-0), а переменной В значение 1 (В-<-1).
3. Организуем цикл вычислений С =
= А4-В, организовав счетчик цикла с по-
мощью переменной I, значение которой
должно меняться от начального 1=3 до
конечного 1 = N с шагом, равным 1. В конце
каждого числа проведем замену переменных:
А—В и В«-С.
4. При I = N зададим выход из цикла
и выведем на индикацию число С.
5. Перейдем к выполнению п. 1 с помощью
операции безусловного перехода.
Рис. 2.6. Алгоритм вычисления чисел Фибоначчи
Графический алгоритм решения этой
задачи показан на рис. 2.6. Программа
имеет вид
16 INPUT'ЗАДАЙТЕ Н>=3 N»'№LETA«0:LETBs
20 FOR I»3 ТО N STEP 1
30 LETC=A+B:LETA=*B:LETB«C
40 NEXT I
50 PRINT'FN«'CxGOTO 10XEND
60 PRINTIF1.9!'FN«'C
70 GOTO 201END
В строке 10 организован ввод значения N
и присвоение переменным А и В значений
0 и 1. В строке 20 задан заголовок цикла
и указаны пределы изменения (от 3 до N)
управляющей переменной I. Далее в строке 30
проводятся вычисление переменной С =
= А4~В, присвоение переменной А значения В
и переменной В значения С. В строке 40
задан возврат из цикла, если I = N. И, на-
конец, в строке 50 задается печать значения
переменной С и безусловный переход к стро-
ке 10. Задав, например, N==10, получим
результат 34т
Пример. Построение циклической про-
граммы с циклом, повторяющимся до полу-
чения результата с заданной точностью.
Пусть надо вычислить обратный гиперболи
ческий тангенс arth х с заданной точностью
е = Е, используя разложение в ряд
у® у** х7
arth х = х+— + -Е- + -7-+ •••, х<1.
3 о (
Для эрэго будем вычислять сумму членов
х4// для i+-i 4-2 при начальном / = 1.
Графический алгоритм вычислений пока-
зан на рис. 2.7.
Рис. 2.7. Алгоритм вычисления функции arth х раз-
ложением ее в ряд
В программе (см. с. 46, сверху) цикл орга-
низован в строках 30 и 40 с помощью операто-
ров IF ... THEN, ведущих сравнение разности
(S — Z), где Z — предшествующее значение S,
с числом Е, задающим погрешность. Если
(S —Z)>E, то организуется условный пере-
ход к выполнению строки 30. В противном
случае выдается на индикацию или печать
результат вычислений (строка 50) и происхо-
дит безусловный переход (строка 60) к стро-
ке 20, т. е. ввод нового значения аргумента х,
и вычислению arth х.
Подобным образом строится большинство
программ вычисления специальных функций
по их разложениям в ряд, вычисления
рядов и сложных числовых последователь-
ностей. Следует отметить, что остановка счета
в данном случае возможна, если ряд яв-
ляется сходящимся.
Обращения к подпрограммам произво-
дятся в том случае, когда отдельные фраг-
менты программ должны выполняться при
различных значениях исходных для их
вычисления данных. Подпрограммы, как и
циклы, могут вкладываться друг в друга
(см. рис. 2.8). При завершении выполнения
подпрограммы происходит возврат в исходную
программу и выполнение оператора, следую-
щего за обращением GOSUB п к под-
программе, начинающейся со строки п. Это
возвращение задается оператором RETURN
в конце подпрограммы.
Пример. Построение программы с
подпрограммой. Пусть нужно вычислить
45
Описание программы приведено на с. 45.
10 INPUT*ЗАДАЙТЕ ПОГРЕШНОСТЬ РЕЗУЛЬТАТА Е=’Е
20 INPUT*ВВЕДИТЕ X=*Xs LET1=1s LETS=0
30 LET2=S:LETS=S+X~I/IsLETI=I+2
40 IF S-Z>E THEN 3©
50 PRINT*AHT<X)=*S
60 GOTO 20sEND
Основная
Программа
Подпрограммы (ПП)
Рис. 2.8. Структура организации подпрограмм с вложениями их друг в друга
определенный интеграл
ъ ь
/=^ д/2х-|- 1 Kx)dx
а а
по простой формуле Симпсона
p(a)+4f(-^±).+f(*)]. (2.1)
В этом • случае нужно трижды вычислить
значение подынтегральной функции Дх)=
= 7^+1 для х = а, (а-[-Ь)/2 и Ь. Поэтому
вычисление f(x) целесообразно вынести в под-
программу.
и засекают время ее исполнения. Деля его
на А/, получают время исполнения пустого
цикла /ц. Затем внутрь цикла вставляется
команда с заданной операцией, например
LET C=A-f-B, если нужно найти время про-
ведения операции сложения. Снова опре-
деляют общее время вычислений и делят его
на N. От полученного времени отнимают /ц
и получают время исполнения заданной опе-
рации /оп-
Время /оп сильно зависит от типа ПЭВМ,
поэтому подобные испытания следует провести
для конкретной ПЭВМ, имеющейся в распо-
ряжении пользователя (разумеется, если
нужных данных нет в ее описании). Ниже
приведены типовые значения /оп для СПП
10 INPUT*ВВЕДИТЕ ПРЕДЕЛЫ ИНТЕГРИРОВАНИЯ А/В *А,В
2© LETX=A: GOSUB 60s LETS=F
30 LET-X=<A+B)/2: GOSUB 60s LETS=S+4*F
4© LETX=B: GOSUB 60s LETS=S+F
5© PRINT‘ЗНАЧЕНИЕ ИНТЕГРАЛА I=*S*<B-A)/6: STOP
55 REM* ПОДПРОГРАММА ВЫЧИСЛЕНИЯ F(X>*
6© LETF=SQR<2*X+1)s RETURN
70 END
Здесь подпрограмма с оператором возвра-
та занимает строку 60. Суммирование членов
в квадратных скобках (2.1) производится
с помощью вспомогательной переменной S.
Для а = 0 и Ь=Л вычисления по этой про-
грамме дают результат /=1,398150843.
Оценка времени вычислений производится
суммированием времен выполнения отдельных
операций с учетом повторяемости их в циклах,
и подпрограммах. Для приближенной оценки
времени выполнения отдельных операций
можно использовать следующую методику.
Вначале определяют время проведения А/ цик-
лов (W=100 или 1 000). Для этого, задав N,
пускают простейшую программу
10 FOR 1 = 1 ТО N: NEXT 1
20 PRINT 'END': END
на базе настольной ЭВМ Электроника-ДЗ-28
и ПЭВМ класса Pocket Computers FX-702P
(/on в секундах):
Операция /оп для ПЭВМ
Электрони- ка-ДЗ-28 FX-702P
Сложение и вычитание 0,03 0,05
Умножение и деление 0,04 0,065
Функция 0,06 0,07
Функции In х, 1g х, ех 0,05 0,18
Тригонометрические функ- 0,1 0,25
ции Обратные тригонометриче- ские функции 0,05—0,1 0,3
Г иперболические функции 0,065 °’2
46
Операция t01, для ПЭВМ
Электрони- ка-ДЗ-28 FX-702P
Обратные гиперболи- ческие функции 0,1 0,3
Функции int (х), abs (х) 0,025 0,04
Функция у* 0,08 0,33
Безусловный переход 0,01 0,03
Условный переход Обращение к подпро- 0,04 0,06
грамме и выход из нее 0,02 ~ 0,04
Один цикл (/ц) ' 0,012 0,02
В данном случае арифметические операции
сложения, вычитания, умножения и деления
выполняются почти за одинаковое время. Это
не общее правило. У многих ПЭВМ операция
деления производится медленнее, чем опе-
рация умножения, а последняя, в свою
очередь, выполняется медленнее, чем операции
сложения и вычитания. Самой медленной
обычно является операция возведения в сте-
пень (/).
Сложность подсчета числа операций,
особенно если число циклов в программе
не фиксировано, а задается погрешностью
вычислений, делает целесообразным опреде-
ление общего времени выполнения вычисле-
ний по данным решения типового контроль-
ного примера. Исключения возможны, если
время выполнения всей программы менее
5—10 с.
Оптимизация программ проводится с
целью сокращения времени их исполнения
и объема памяти ПЭВМ, придания про-
граммам компактности и алгоритмической
ясности. Поскольку эти качества часто взаимо-
противоречивы, то процесс оптимизации носит
субъективный характер.
Для большинства пользователей ПЭВМ
вполне справедливо правило — составляйте
программу так, как это вам нравится и как
это вам удобно. Это правило справедливо,
если вычисления по программе носят единич-
ный или эпизодический характер. В этом
случае большие затраты времени на тща-
тельную оптимизацию программы нерацио-
нальны. Тем более, что нередко программу,
составленную за десяток минут, можно
оптимизировать многие дни, хотя конечный
результат остается тем же. Большинство
начинающих пользователей, как правило,
размещают в каждой строке один оператор.
Выше отмечались недостатки таких про-
грамм: чрезмерная длина листинга програм-
мы, неэкономное использование ОЗУ, труд-
ность обозрения сразу всей программы,
большой расход бумаги при распечатке
программ принтером. Поэтому лучше сразу
привыкнуть к размещению в строке несколь-
ких простых операторов, если к иному не
обязывает алгоритм вычислений. Программы,
рассчитанные на многократное использо-
вание, желательно тщательно оптимизи-
ровать.
Несмотря на субъективный характер под-
готовки программ, есть ряд приемов, которые
следует использовать при составлении и опти-
мизации программ. Прежде всего необходимо
особо внимательно отнестись к выбору алго-
ритма. Порой затрата на это в 10—20 мин
в дальнейшем сокращает время массовых
вычислений на многие часы, сутки и даже
месяцы. Например, переход от обычного спект-
рального анализа к процедуре быстрого
преобразования Фурье (БПФ) часто ведет
к уменьшению времени счета в десятки
и даже сотни раз.
В программах надо учитывать реальное
время выполнения операций (см. выше).
Например, если ПЭВМ выполняет деление
медленнее, чем умножение, то операцию
вида В=А/2 лучше записать как В = .5*А.
Возведение в малую целую степень ух (при
х = 2,3,...) Л/1учше заменить умножением,
например Y—>2 (или Y|2) следует заменить
операцией Y*Y. При табуляции функций
иногда полезно использовать не полностью
завершенные циклы следующей конструкции:
FOR I=A ТО 1Е99 STEP H:...:NEXT I
Цикл практически не завершается, так как
конечное значение управляющей переменной I
задано очень большим (10"). Такой цикл
аналогичен цепочке операторов
HCI LET I—A
НСМ LET I = 14-Н
HCN GOTO HCI
но выполняется существенно быстрее (вы-
игрыш во времени до 3—5 раз при пустом
цикле, т. е. учете затрат времени только
на выполнение операторов в строках НСМ
и HCN). Выход из цикла, если он нужен,
задается рабочими операторами, записан-
ными вместо многоточия.
Арифметические выражения в программах
целесообразно приводить к виду, позволяю-
щему уменьшить число операций. Например,
вычисление значения с = а2 — 2ab-}-tr при
обычной записи c = a-a-\-2-a-b — b-b требует
четырех операций умножения и по одной
операции сложения и вычитания. Представив
с — a — b и с — с*с, т. е. учитывая соотно-
шение (а2 — 2аЬ + 62) = (а — Ь)2, получим
тот же результат всего при одной операции
вычитания и одной умножения. Аналогичным
образом вычисление у = еа/еь лучше выполнить
в виде у — еа~ь, что уменьшит число обра-
щений к микропрограммам вычисления функ-
ций. В простых программах такие преобра-
зования опускаются, если они идут в ущерб
наглядности программы или приводят к отказу
от общепринятой формы записи вычисляе-
мого арифметического выражения. Эффек-
тивным приемом упрощения вычислительных
операций и придания им более общего вида
является нормирование арифметических вы-
ражений.
Следует по возможности убирать повто-
ряющиеся фрагменты вычислений и сосредо-
точивать их в одном месте. Особое внимание
необходимо уделять «чистке циклов», т. е.
47
выносу за пределы циклов всех повторяю-
щихся фрагментов вычислений. Например,
выражение
требует вычисления lna< и е/х 3000 раз. Между
тем, представив это выражение в виде
можно сразу сократить число вычислений
Ina, до 30. Если позволяет память ЭВМ,
можно отдельно сформировать массив экспо-
нент E(J)—e’x и сократить до 100 число
вычислений е/х. Однако при этом будет иметь
место обращение к массиву £(/) 3000 раз.
Тем не менее последний вариант по затратам
машинного времени будет лучщим.
При использовании переменных из мас-
сивов нередко повторяются их индексы.
Например, при каждом использовании вы-
ражения
A(J*K4-1)==A(J»K~H) + R
к переменной A(J*K-H) прибавляется зна-
чение R. Однако индекс (J*K+1) вычисля-
ется при этом дважды — в левой и в правой
частях равенства. Замена этого выражения
фрагментом программы
I=j*K + 1 :A(I) =A(I) +R
ведет к экономии памяти (выражение стало
короче) и сокращению времени счета (индекс
вычисляется один раз). Эта эко-
номия будет еще существеннее, если перемен-
ные A(J*KH-1) используются в программе
более двух раз, например в циклических
фрагментах.
Часто полезно заменять индексированную
переменную простой переменной. Например,
вычисление арифметического выражения
у=А(ЬК+ 1)*А(ЬК+1) +Х
можно выполнить в виде
Z = A(I»K-M): Y = Z»Z + X
Сокращение времени вычислений в этом
случае связано и с тем, что ЭВМ опознает
простую переменную быстрее, чем индекси-
рованную.
Иногда, в какой-то мере копируя подход,
принятый при составлении программ на языке
фортран, программы составляются по блоч-
ному принципу: делается основная программа,
в которой обеспечивается обращение к вспо-
могательным подпрограммам. Если последние
снабжены комментариями, в целом программа
оказывается очень наглядной. Однако в общем
случае не следует злоупотреблять обра-
щениями к подпрограммам, так как на
них затрачивается дополнительное время
(особенно, когда обращения идут из
циклов).
48
Необходимо также отметить, что исполь-
зование особых «программных трюков» в на-
стоящее время считается недостатком, а не
достоинством программ. Сокращение времени
вычислений не является самоцелью. В пра-
вильно составленных программах прини-
маются меры по устранению неоправданных
потерь машинного времени. Поэтому реко-
мендации по составлению программ не сле-
дует абсолютизировать.
В некоторых версиях языка бейсик
имеются специальные операторы для вклю-
чения в программы фрагментов, выполняемых
на других языках, например на машинно-
ориентированном языке конкретной ПЭВМ.
Последнее позволяет уменьшить время выпол-
нения программ (иногда в, десятки раз), со-
хранить присущий, бейсику диалог ПЭВМ
с пользователем и заметно расширить круг
решаемых на данной ПЭВМ задач [29].
Однако этот прием носит частный характер,
при его применении теряется наглядность
самих программ, усложняется их отладка
и исключается применение программ для
ПЭВМ с другим машинно-ориентированным
языком.
§ 2.5. Специальные вопросы
программирования на языке
бейсик
Описанные в § 2.4 приемы программи-
рования направлены на решение простых
вычислительных задач. Рассмотрим некото-
рые специальные вопросы программирова-
ния, выявляющие более полно возможности
языка бейсик.
Организация диалога с пользователем.
Простейший диалог с пользователем заложен
в самой программе-интерпретаторе. Так,
у большинства ПЭВМ загрузка этой про-
граммы (с ПЗУ или магнитной ленты)
сопровождается начальным диалогом: под-
тверждается загрузка интерпретатора, у поль-
зователя запрашивается, с каким оборудо-
ванием он будет работать, будут ли исполь-
зованы внешние подпрограммы и т. д.
(см. Приложения 1 и 3).
Комментарии могут вводиться пользова-
телем в составе операторов INPUT (при
вводе), PRINT (при выводе результатов вы-
числений) и REM (внутри программы).
Характер комментариев всецело задается
пользователем. Он может быть очень кратким,
например
10 INPUT D
(при этом индицируется лишь знак ?), или
детальным:
10 INPUT 'ВВЕДИТЕ ЧИСЛЕННОЕ
ЗНАЧЕНИЕ ДИАМЕТРА
ОКРУЖНОСТИ D = 'D
Следует помнить, что слишком подробные
комментарии удлиняют программу, увеличи-
вают время счета, загружают память ЭВМ,
затрудняют чтение программ. Такие коммен-
тарии оправданы лишь в отдельных случаях —
когда программа рассчитана на пользователя,
который не понимает сути вычислений. Спе-
циалист может довольствоваться короткими
комментариями, например
10 INPUT 'D = 'D
(если он знает, что речь идет о площади
круга, то вряд ли нужно особо указывать,
что D — это диаметр окружности).
Индикация ошибок предусмотрена у боль-
шинства ПЭВМ. Сложные ПЭВМ дают по-
дробное указание об ошибке, например
такое:
НЕТ ЗАКРЫВАЮЩЕЙ СКОБКИ В
ОПЕРАТОРЕ LET В СТРОКЕ 150
Более простые ПЭВМ дают указания вида
ОШИБКА <Номер) В СТРОКЕ <Номер)
При этом характер ошибок определяется по
их номеру с помощью специальных таблиц
(см. Приложения 2 и 4).
Вывод простых графиков. Многие ПЭВМ
способны формировать сложные многоцветные
графические изображения. Однако даже
те ПЭВМ, у которых нет специальных команд
построения графиков, могут создавать простые
графические изображения с помощью операто-
ров PRINT и TAB.
Рисунки с помощью оператора PRINT
формируются с помощью знаков, помещен-
ных в апострофы или кавычки. Так, из
знаков — можно создавать штриховые гори-
зонтальные прямые, из знаков ! — верти-
кальные линии и т. д. Ниже дана программа
построения стилизованной электрической
схемы. Она строится из различных знаков,
присущих ПЭВМ без графики.
Схема, сформированная в поле коммен-
тариев PRINT, будет выведена на экран
дисплея или печать после исполнения опера-
тора RUN.
Оператор TAB может использоваться
для графического отображения решений;
построения графиков функций, колебатель-
ных процессов и т. д. При этом функция
У(Х) строится с осью Y поперек, а с осью X
вдоль направления печати. Зона печати при
использовании оператора TAB разбивается
на Ломакс (Ломакс— обычно 80 или 100) по-
зиций, каждая из которых задается целой
частью арифметического выражения. Так,
приведенная ниже программа обеспечивает
построение графика функции Y = X2, который
строится с помощью знаков *.
В этой программе изменение аргумента X
от значения —6 до -|-6 задается циклом
с началом в строке 10 и концом в строке 60.
Если Х=/=0, осуществляется печать значений
Y = X2 с помощью операторов PRINT TAB
в строке 35 знаками ♦. Одновременно печа-
тается знак !, образующий горизонтальную
ось графика. При Х = 5 и X— — 5 (см.
строки 40 и 50) вместо знака ! печатаются
численные значения Х = 5! и Х= —5! на оси X,
т. е. осуществляется масштабирование оси X.
При Х = 0 вместо печати значения Y = X2 = 0
в строке 25 задана печать оси Y знаками —
и цифрами 0, 10, 20 и 30, обеспечивающими
ее масштабирование. График функции Y = X2,
формируемый этой программой, дан на
рис. 2.9.
У .ПЭВМ, рассчитанных на вывод графи-
ческой информации, имеются специальные
операторы для построения графиков. Так,
оператор PLOT X, Y, Z обеспечивает вывод
точки с координатами X и Y (используются
целые части значений переменных X и Y).
Если Z=0, точка погашена, если Z = l, она
высвечивается. С помощью оператора PLOT
можно по точкам строить сложные графики,
например, если Y и X связаны соотношением
Y = X2, то будет построена линия, подобная
приведенной на рис. 2.9 (однако график при
01 PRINT'ПРИМЕР ПОСТРОЕНИЯ ЭЛЕКТРОННОЙ СХЕМЫ'
02 PRINT' >
ЙЛ PRINT' i i >
04 PRINT' C2 === 0У i
©5 PRINT' i R3 ! .»
06 PRINT' <-l ====== f
07 PRINT' RU ‘ * i i-*-> Л
08 PRINT' — 1 —) _ ii f
09 PRINT' i I C4 === » i i i f
10 PRINT' R12 ! i ii. ।
11 PRINT' — ! i i .»
12 PRINT' I i .»
13 PRINT' — .•
20 END
05 PRINT#1'ПРИМЕР ПОСТРОЕНИЯ ГРАФИКА ФУНКЦИИ У=ХЛ2'
10 FOR Х=-6 ТО 6 STEP в 5
20 IF ХО0 THEN 35
25 PRINT'О--------10--------20--------30—Y=X~2'
30 GOTO 60
35 PRINT'!'TAB(X~2)'*'
40 IF X=-5 THEN PRINT'X=-5'л
50 IF X=5 THEN PRINT'X=5';
60 HEXT Xs END
49
Пример построения гршрика, функции, у=хЧ
I *'
i *
! *
д7=-5/ . *
! * *
I *
*
I *
i *
*
I*
0-------10-------20--------30----у=аГ2 -
! *
' * *
i
Рисд 2.9. График функции K = -V2 с координатными
осями
этом может иметь более высокую разрешаю-
щую способность). С помощью оператора
LINE X, Y вычерчивается прямая линия с
концом, заданным целыми значениями X и Y,
и началом, заданным предшествующим опе-
ратором PLOT. Например, операторы PLOT
О, 0, 1 и LINE 50, 50 обеспечивают построение
прямой с началом в точке (0,0) и концом
в точке (50,ЙО) декартовой системы координат
на плоскости. С помощью этих операторов
можно строить динамические, т. е. движущиеся
изображения и сложные рисунки,
Некоторые типы принтеров (например,
Электроника-УВВПЧ-30-004, входящие в
комплект последних моделей СПП на базе
микроЭВМ Электроника-ДЗ-28) могут форми-
ровать высококачественные одноцветные гра-
фические изображения по точкам, причем
печать графики возможна как вдоль, так
и поперек бумажной ленты.
Диалог с применением кодов. Часто нужно
на ПЭВМ выполнить ту или иную операцию,
например, провести расчет по той или иной
формуле. Это можно сделать, используя
операторы INPUT и IF, THEN.
Диалог с применением клавиш пользо
вателя. У ряда ПЭВМ есть команды присвое-
ния клавишам функций клавиш пользователя.
При этом пуск программы с заданного места
производится нажатием только клавиш поль-
зователя. Ниже дана программа для ПЭВМ
FX-702P, иллюстрирующая применение кла-
виш пользователя.
После ввода значения х символьной пере-
менной А$ командой KEY придается (стро-
ка 20) свойство управляющей переменной.
Теперь, если нажать клавишу 2, оператор
IF в строке 30 передаст управление строке 200;
если нажать клавишу 3, аналогичный оператор
в строке 40 передаст управление строке. 300.
Во всех других случаях происходит переход
к строке 20 и ПЭВМ ждет нажатия одной
из клавиш пользователя. Если ввести х==2
и нажать клавишу 2, будет получен результат
Xf2=4, если нажать клавишу 3, то Xf3=8
(напомним, что в системе команд FX-702P
стрелка f означает возведение в степень).
Диалог с применением символьных конс-
тант. Он наиболее близок к естественному,
так как при нем машина задает вопросы,
а пользователь отвечает на них на естествен-
ном языке (словесном или математическом).
Иллюстрацией к организации такого диалога
на ПЭВМ FX-702P является следующая
программа:
IB IHP "Xм,X
28 INP “Xf2 OR Xf3 ?”$
30 IF $==“Х42И THEN 200
40 IF $=nX|3” THEN 300
50 GOTO 20
200 PRT“Xt2=="J Xf2: GOTO 10
зев р₽тяХ13=и; xt3: goto 10
Здесь после задания x ПЭВМ в строке 20
задает пользователю вопрос: Xf2 OR Х|3?
(х2 или х3?). Надо ответить фразой Х|2 или
Х|3. Если ответ был Х|2, символьной
переменной $ присваивается значение Xf2,
а в строке 30 операторы IF ... THEN передают
управление строке 200, т. е. вычислению
и выдаче значения Х|2=х2. Если задать
Х|3, то в строке 40 операторы IF ... THEN
передадут управление строке 300, т. е. вычис-
10 INPUT'ВВЕДИТЕ Х=‘Х
20 PRINT'ДЛЯ ВЫЧИСЛЕНИЯ Х~2 УКАЖИТЕ КОД 2'
30 INPUT'ДЛЯ ВЫЧИСЛЕНИЯ Х'З УКАЖИТЕ КОД 3 КОД='К
40 IF К=2 THEN €0
50 IF К=3 GOTO 70s GOTO 2©
б© PRINT'X~2='X~2: GOTO 10
70 PRINT'X~3«'X~3s GOTO 10sEND
В этой программе при задании по запросу
ЭВМ кода 2 вычисляется значение х2, а при
задании кода 3—х3.
При ошибочно введенном коде повторяется
запрос кода.
I© INP “ХилХ .
20 a$=key:if а$=и и then 20
30 IF А$=И2И THEN 200
40 IF А$=“3“ THEN 300
50 GOTO 20
200 PRT“Xt2=H* X42
’ 300 PRTHXf3s”J Xt3: GOTO 10: END
лению и выдаче значения Х|3. Во всех
других случаях безусловный переход GOTO 20
ПЭИМ^ 50 К П0ВТ0Рению запРоса
Переходы с косвенной адресацией; Они
возможны в расширенных версиях бейсика.
Так, у ПЭВМ FX-702P возможны 6 типов
таких переходов:
. 1. GOTO у
2. GOTO Фу
3. IF а (условие) 0; GOTO у
4. IF а (условие) 0; GOTO Фу
50
5. GSB у
6. GSB
Здесь a, p и у — переменные или арифме-
тические выражения. Номер строки или про-
граммной области (при знаке =# перед y)
задается целой частью арифметического вы-
ражения или значения переменной у. Это
значение не должно выходить за пределы 9
при адресации к программным областям
и 10 000 при адресации к строкам Y-
Применение косвенной адресации поясним
таким примером: пусть надо выполнить
интегрирование нескольких функций по фор-
муле Симпсона, не меняя основную про-
грамму. Для этого можно каждую функцию
обозначить номером W (W=l, 2, 3 ...) и вы-
числять подпрограммой, записанной, на-
пример, со строк 100 А (100 при А=1,
200 при А = 2 и т. д.). Соответствующая
программа имеет вид
05 IMP “F N=”zN
I© IMP "В",В
20 х=а: bsb №*100: s=f
30 Х=(Й+В)/2: GSB №*100: S=S+4i*F
40 х=в: gsb №*10й: s=s+f
50 PRT “I=“ ? S*(B-A)/F.: АТПР
100 F=SQR<2*X+1): RET
200 F«l/(1+Xt2)i RET
300 F=10*LN X: RET
500 EMU
При задании A=l, 2 или 3 эта программа
будет вычислять соответственно интегралы
ь
1) ( 1 dx\
ь
3) \ 10 In х dx.
Задав, например, А = 1, a = 0 и b = 1, получим
для первого интеграла значение /=1,398150843.
§ 2.6. Перевод программ с одной
версии бейсика на другую
Различия между версиями бейсика могут
заключаться в синтаксисе (правилах записи
операторов) и в словарном запасе операторов.
Различия в синтаксисе, как правило, носят
непринципиальный характер и сводятся к
замене апострофов на кавычки, двоеточия
на точку с запятой, знаков возведения в сте-
пень (—। на f) нт. д. Такая замена легко
формализуется, но требует знания синтак-
сиса обеих версий бейсика — той, с которой
переводят, и той, на которую переводят
программы.
Различия в словарном запасе операторов
могут быть весьма существенными. Так,
простые версии бейсика содержат до 20—
50 операторов, а сложные — до 200—300.
Эти различия нередко носят принципиальный
характер. Так, операторы косвенной адреса-
ции, работы с целочисленными и символь-
ными переменными и константами, вывода
графиков и др., применяемые в сложных
версиях бейсика, не имеют функциональных
аналогов в простых версиях. Поэтому если
перевод с простой версии на сложную доста-
точно прост и формален, то обратный перевод
весьма сложен, а подчас и принципиально
невозможен.
Перевод программ справочника на другие
версии бейсика достаточно прост благодаря
специальным мерам, принятым при состав-
лении программ. Так, направленность спра-
вочника на научно-технические, статисти-
ческие и экономические расчеты позволила
отказаться от использования операторов
вывода сложных графиков и работы с сим-
вольными (текстовыми) переменными. Все
программы справочника даны на версии
бейсика умеренной сложности, применяемой
в массовых системах подготовки программ
на базе настольной микроЭВМ Электро-
ника-ДЗ-28. В эту версию бейсика входит
основной набор операторов (табл. 2.1—2.4),
применяемых в других версиях бейсика (для
микроЭВМ Электроника-СбО, Искра-226, диа-
логовых вычислительных комплексов ДВК-1,
ДВК-2 и др.). Принятая версия бейсика
является расширенной в части операторов
вычисления математических функций
(табл. 2.6), что упрощает запись программ.
Однако перевод операторов этой версии на
язык других версий (где эти операторы
отсутствуют) носит формальный характер
(см. табл. 2.12) и поэтому достаточно прост.
Для облегчения перевода в прикладных про-
граммах, как правило, не используются опе-
раторы DATA, READ, RESTORE и ON,
поскольку они легко заменяются другими
(INPUT, LET, GOTO) и отсутствуют у не-
которых версий бейсика (например, ПЭВМ
FX-702P).
Общие рекомендации по переводу про-
грамм. При переводе программ рекомендуется
придерживаться следующих правил.
1. Внимательно изучить особенности вер-
сий бейсика (оригинала и той, которая
нужна пользователю). В ходе этого изучения
нужно выяснить, насколько родственны эти
версии, прежде всего по словарному запасу
операторов.
2. Если версии бейсика достаточно близки,
следует использовать построчный или поопе-
раторный перевод, учитывая при этом раз-
личие в синтаксисе этих версий.
3. Если в оригинале встречаются опера-
торы, отсутствующие в нужной версии,
следует выяснить их смысл и заменить
другими операторами. Так, для замены ряда
операторов вычисления математических функ-
ций можно использовать табл. 2.9.
4. Если версии бейсика сильно разли-
чаются, целесообразно составить детальный
описательный или графический алгоритм
решения нужной задачи и затем по нему
заново составить программу на нужной
версии бейсика.
Некоторые практические рекомендации по
переводу программ. При переводе пользо-
ватель может существенно изменить характер
51
Таблица 2.12
Формальные правила перевода операторов вычисления математических функций
для некоторых версий бейсика (Р —л —3,141592654)
Версии бейсика
СПП на базе микроЭВМ МикроЭВМ Электроника-С60, Искра-226, ПЭВМ
Электроника-ДЗ-28 комплексы ДВК-1, ДВК-2 FX-702P
DEG(X) 180*Х/Р MODE4
RAD(X) Р*Х/180 MODE5
TAN(X) SIN(X)/COS(X) TAN X
ASN(X) ATN(X/SQR(1 - Х*Х)) ASN X
ACS(X) Р/2-ATN (X/SQR (1 - Х*Х)) ACS X
HSN(X) (EXP (X) — ЕХР( —X) )/2 HSN X
HCS(X) (ЕХР(Х) +ЕХР( -Х))/2 HCS X
HTN(X) (ЕХР(Х) -ЕХР(— Х))/(ЕХР(Х) +ЕХР(-X)) HTN X
AHS(X) LOG(X + SQR(X*X+ 1)) AHS X
AHC(X) LOG(X + S0R(X*X- 1)) АНС X
AHT(X) LOG((l+X)/(l-X))/2 АНТ X
LGT(X) LOG (X)/LOG (10) LOG X
LOG(X) LOG(X) LN X
X —INT(X) X-INT(X) FRAC X
EXT(X) xno Xf 10
диалога с ПЭВМ (сократить или, напротив,
расширить его). При переводе зарубежных
программ целесообразно перевести коммента-
рии с английского языка на русский. У поль-
зователей зарубежными ПЭВМ может возник-
нуть необходимость в обратном переводе.
У некоторых версий бейсика (например,
для микроЭВМ Электроника-С60) коммен-
тарии не вводятся с помощью оператора
INPUT. В этом случае прн переводе исполь-
зуется оператор PRINT.
Пример.
Версия для микроЭВМ Электрони-
ка-ДЗ-28
10 INPUT 'ВВЕДИТЕ X, Y' X, Y
Версия для микроЭВМ Электроника-СбО
10 PRINT "ВВЕДИТЕ X, У"
15 INPUT X, Y
Переадресация и переиндексация мас-
сивов и переменных бывает необходима при
их специальной организации, применяемой
в некоторых версиях бейёика. Например,
в версии бейсик-CASIO, применяемой в ПЭВМ
FX-702P, все массивы (одномерные и дву-
мерные) организуются на основе одной пере-
менной А: например, A(I), A(J, I). В боль-
шинстве других версий переменные массивов
могут обозначаться любыми буквами (или
буквами с цифрой от 0 до 9): X(I), Z9(I, J)
и т. д. Поэтому прямой перевод программ
с версии бейсик-CASIO на другие версии
возможен, а обратный требует переадресации
массивов. Одновременно Возникает необходи-
мость и в их переиндексацин. Например,
три одномерных массива X(I), Y(J), Z(K)
при 1< 10, J<20 и К<10 в версии бейсик-
CASIO можно заменить массивами А(1),
А (10 + 1) и А (30 + 1). В этой версии
А5 = А(5), А(15)=В5, тогда как в других
версиях А5 и А(5) — совершенно разные
52
переменные, как и А (15) и В5. В связи
с этим, если одна из версий бейсика при
переводе программ имеет подобные особен-
ности, к их учету следует относиться с осо-
бым вниманием.
Приведение аргумента функций в допус-
тимые пределы нередко необходимо при
переводе программ. Например, аргумент
тригонометрических функций в версии бейсик-
CASIO должен лежать в пределах от —8л
до +8л рад. В ряде других версий бейсика
таких ограничений нет. Выход аргумента
за допустимые пределы ведет к остановке
вычислений с выдачей знака ошибки. Для
приведения аргумента X в заданные пределы
можно использовать фрагмент программы
вида
50 IF Х<8*л THEN 70
60 Х = Х-8*л: GOTO 50
70 ...... ...................
или
50 X = 2*n*FRAC(X/2/n)
В последнем случае аргумент приводится
к интервалу от —2л до +2л.
Редактирование и отладка переведенных
программ. Редактирование программ, получен-
ных путем перевода, сводится к проверке
правильности записи всех операторов. Если
перевод сделан с простой версии бейсика
на более сложную, следует изучить возмож-
ность оптимизации программ, используя
специфические возможности применяемой вер-
сии бейсика. Например, выражение вида
Х—^]А2-}-В2 на ПЭВМ FX-702P может вы-
числяться с помощью оператора RPC А, В
вместо выражения X = SQR(A*A+B*B)
и т. д. Отладка полученных переводом
программ существенно облегчается, если
программа-оригинал была снабжена конт-
рольными тестами (примерами). Прн редак-
тировании и отладке программ следует-
использовать заложенный в основу бейсика
начальный диалог. Так, при неточностях в
записи операторов и в их синтаксисе ПЭВМ
подсказывает пользователю характер и место
ошибок, что позволяет легче найти и устра-
нить их.
Иногда причиной грубых расхождений ре-
зультатов вычислений при правильном пере-
воде программ являются особенности округ-
ления чисел при исполнении операторов
циклов вида FOR а = 0 ТО у STEP б. Малые
погрешности в вычислении у, например,
когда у есть целое число в целой степени,
могут приводить к тому, что число циклов
окажется на 1 меньше или больше, чем
предполагаемое. Например, число циклов,
заданных оператором FOR 1 = 1 ТО N13,
при У = 2 может быть не 8, а 7 или 9 в зави-
симости от того, как округляется N3. У не-
которых ПЭВМ округление при возведении
в целую степень целых чисел специально
предусмотрено. Однако у других, в частно-
сти у Электроники-ДЗ-28, этого нет (хотя
при вычислении /V3 с помощью оператора
PRINT N "13 будет получен точный резуль-
тат — ошибка содержится в скрытых раз-
рядах). В подобных ситуациях округление
можно проводить с помощью оператора INT.
Например, выполнение точно /V3 циклов гаран-
тировано, если оператор цикла записать
в виде FOR I = 1 ТО INT (N "1 3+1). Неболь-
шая добавка 0,1 к N3 создает определен-
ность в операции округления. Подобные си-
туации возможны и при использовании
операторов косвенной адресации вида ON а,
GOTO а, GOSUB а, когда а задает номер
строки, т. е. целое число.
53
Г Л А В A 3
АЛГОРИТМЫ И ПРОГРАММЫ ЭЛЕМЕНТАРНЫХ
ВЫЧИСЛЕНИЙ
§ 3.1. Операции
с действительными числами
Перевод чисел из одной системы счисле-
ния в другую выполняется по. правилам,
описанным в [36]. Для перевода целого
числа Хм с основанием М в число с основа-
нием W число Хм делится на N1 (/=1,2,3,...),
а последовательность остатков от деления
умножается на М‘ (/==0,1,2,...) и склады-
вается. Числа Хм в виде правильных дробей
последовательно умножаются на Nl (i —
= 1,2,3,...), целые части результата делятся
на М‘ (/ = 1,2,3,.,.). В приведенных ниже
программах операции над целыми и дробными
частями Хм проводятся одновременно. Коли-
чество цифр Хи ц XN не должно превышать
разрядности ЭВМ.
Программа 3.1.
Пример. Для N = 23345, М = 9135
получим (W, М) = 1015, а для W = 238
и М = 347 (Af, М) =34.
Разложение целого числа М на простые
множители производится последовательным
делением М на 2 и ряд простых чисел d
(d = 3, 5, 7, 9, 11, 13, ...) по формуле
Л4/ = М-\/d
до тех пор, пока соблюдается условие
Программа 3.3.
Пример. Число 1234567890 расклады-
вается на множители 2X3X3X5X3607X
Х3803.
Преобразование десятичного числа X
в цепную, или непрерывную, дробь произво-
дится выделением целой части X, а затем
10 PRINT'ПРЕОБРАЗОВАНИЕ ЧИСЛА ХМ В ЧИСЛО XN'
20 INPUT'ВВЕДИТЕ ХМ='Х:INPUT'ВВЕДИТЕ M=’Q
25 INPUT'ВВЕДИТЕ N='№LETU=0
30 LETS=10SLETK=10:LETM=Q:GOSUB 50
35 LETS=LsLETKs№LETX=UsLETMs10
40 GOSUB 50!PRINT’8.4!'XN='Us GOTO 2©
50 LETL=Ks LETD=1s LETE=1: LETU=0
60 LETC=INT<X)sLETW==X-C
70 FOR I=S TO 0 STEP -1
8© LETB=U*L!LETA=INT<B)
90 LETD=D*M:LETU=A/D+U
100 LETT=CsLETW=B-AsIF M=0 THEN 120
110 NEXT I
120 LETA=INT(T/L)
130 LETU=<T-A*L)*E+U:LETE=E*M
14© LETT=AsIF AO© THEN 128
150 RETURN:END
Контрольные примеры. Xe==
= 27-*X5 = 43 (M = 8, ^ = 5), X5 = 43->
->X8 = 27 (M = 5, A/ = 8), X10= 100-* X2==
= 1100100 (Af=10, jV = 2), время счета
/с«5 с.
Нахождение наибольшего общего дели-
теля двух чисел N и М проводится с по-
мощью рекуррентного соотношения
£ = 2,3,...,
где M> = max(|W|, |М|), /V, = min(|A/|, |M|).
Если Nk станет нулевым, то наибольший
общий делитель C=(jV, M)~Nk-\. Числа
/V и М должны быть меньше 109 для ЭВМ
с разрядностью 10.
Программа 3.2.
целых частей 1/(Х,_. । — int Х,_|), где
int X;~i — целая часть Х(-|.
Программа 3.4.
Пример. Число Х = л = 3,14159264-*-
->[3, 7, 15, 1, 252, 1, 1, 1, 4], т. е.
2524-...
Преобразование цепной дроби в деся-
тичное число X производится непосред-
54
Программа 3.2.
10 PRIНТ'НАХОЖДЕНИЕ НАИБОЛЬШЕГО ОБЩЕГО ДЕЛИТЕЛЯ'
15 INPUT'ВВЕДИТЕ ПЕРВОЕ ЧИСЛО N='N
20 INPUT'ВВЕДИТЕ ВТОРОЕ ЧИСЛО М='М
30 LETI=INT<NzM):LETL=M
40 LETM=N-M*lsLETN=L
50 IF МО0 THEN 30
60 PRINT 19.01'НАИБОЛЬШИЙ ОБШИй ДЕЛИТЕЛЬ»'N
70 GOTO 15s END
Программа 3.3.
05 PRINT'РАЗЛОЖЕНИЕ ЧИСЛА X НА ПРОСТЫЕ МНОЖИТЕЛИ'
10 INPUT'ВВЕДИТЕ Х«'А
15 PRINT 19.0!'МНОЖИТЕЛИ X'sGOTO 40
20 PRINT 21LETA=A/2
30 IF А-1=0 THEN 50
40 IF A/2-INT<Az2)»0 THEN 20
50 LETB=3
60 LETC=SQR<A>+1
70 IF B>=C THEN 140
80 IF A/B-INT<A/B>=0 THEN 100
90 LETB=B+2sGOTO 70
100 IF A/B*B-A=0 THEN 120
110 GOTO 90
120 PRINT В
130 LETA=A/BsGOTO 60
140 PRINT ASPRINT'КОНЕЦ':GOTO 10SEND
Программа 3.4.
05 PRINT'ПРЕОБРАЗОВАНИЕ ДЕСЯТИЧНОГО ЧИСЛА В ЦЕПНУЮ ДРОБЬ'
10INPUT'ВВЕДИТЕ ДЕСЯТИЧНОЕ ЧИСЛО Х='Х
15 FOR 1=1 ТО 10
20 LETF=INT<X)sPRINT!9.0!F
30 LETX=lz<X-F>sNEXT I
40 GOTO 10sEND
Программа 3.5.
05 PRINT'ПРЕОБРАЗОВАНИЕ ЦЕПНОЙ ДРОБИ В ДЕСЯТИЧНОЕ ЧИСЛО'
10 INPUT CSLETD=1SLETA=0SLETF=CSLETB=1
20 PRINT F/BsINPUT EsLETQ=C
30 LETC=C*E+D:LETD=QsLETQ=B
40 LETB=B*E+A:LETA=QsLETF=C
50 GOTO 20sEND
Программа 3.6.
10 PRINT'ДЕЛЕНИЕ ЧИСЛА А НА ЧИСЛО В'
20 PRINT'С ПРОИЗВОЛЬНОЙ ТОЧНОСТЬЮ’
30 INPUT'ВВЕДИТЕ Ал В 'Ал В
40 LETI=INT<A/B>:PRINT!9.0!'ЦЕЛАЯ ЧАСТЬ РЕЗУЛЬТАТА 'I
50 PRINT'ПОСЛЕДОВАТЕЛЬНОСТЬ ЦИФР РЕЗУЛЬТАТА'
60 LETF=INT<A/B)SPRINT 11.0! F;
70 LETA=<A-F*B)*10sGOTO 608END
55
ственным вычислением X по формуле цепной
дроби.
Программа 3.5.
Пример. [3, 7, 15, 1, 292, 1, 1, <, 4J->
->3,141592654.
Деление числа А на число В с произволь-
ной точностью выполняется выделением целой
части отношения А/В при вычислении
F=int(A/B) и затем использованием рекур-
рентной формулы Л< = (Л,_| — FXB) X Ю.
Программа 3.6.
Пример. 32/9,3 = 3,4408602150537 ...
Цифры результата выдаются до остановки
ЭВМ пользователем.
Получение N-ao числа Фибоначчи* т. е.
числа из последовательности
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...,
у которой новый член равен сумме двух
предыдущих (С|=0; С2=1):
Ci^Cj-s-^Ci-2* i = 4, 5, ...
Программа 3.7.
10 PRINT'ВЫДАЧА N-ГО ЧИСЛА ФИБОНАЧЧИ'
28 LETA=0:LETB=lsINPUT'ВВЕДИТЕ Н>=3 N»'N
30 FOR 1=3 TO N
40 LETC»A+B8LETA«BsLETB«C
50 NEXT I
60 PRINT!Fl.9! 'F№'C
70 GOTO 208END
Для W=10 получим Сю = 34.
§ 3.2. Операции и функции
с комплексными числами
и переменными
Комплексные числа записываются в алгеб-
раической форме Z=A 4-/B = ReZ4-/lniZ
или в тригонометрической Z = Re'°, причем
R = -\/A2 + B2 и 0 = arctg (В/А).
Сложение и вычитание комплексных чисел
Zi^Ai+j Bi и Z2=A2 + j В% выполняется
по формулам
Zi -|-Z2=H 14-Л2)4-/ (Bi 4-В2),
Zi —Z2 — (A 1 —Л2)4-/ (Bi — B2).
Умножение и деление комплексных чисел
Zi—Ai-{-jBi и Zi^A^-j-jВ2 выполняется по
формулам
Z|Z2=(Л 1Л 2 — BiB2)4~ / (Л i В2 4- В1Л2),
Z1 _ Л|Л24-В|В2 . В1Л2—Л|В2 /п,ч
ZT----лГ+вГ“+/ —лГ+й ’(ЗЛ)
а в тригонометрической форме
ZiZ2 = Rei*=:R cos 04*//? sin 0,
где R — R1R2, 0 = 0| 4-02, и
Zi/Z2 = Re/0 = B COS04-//? sin0,
где R = Ri/R2* 0 = 0i —02.
Программа 3.8.
Контрольный пример. Вычисле-
ние выражения
(5-/-3)(3+/.2)
(5+/.3)(2-/.4)+(0’5+/ °
дает результат ReZ0= 1,158823529 и ImZo =
= 1,464705882, т. е. Zo= 1,158823529 4~/Х
X 1,464705882.
Программа 3.9.
Для ZI=2e/’0,5 и Z2 = 3e/’0,25 получим
ZiZ2 = Z1>=6e'0'75 и Z, //2 = 20=1,5^Д25
Алгебраические функции
комплексного переменного:
Z2 = (Л2 —В2) 4-/2ЛВ,
1 А В
Z~A2 + B2 ’ Аг + В2 ’
I А2 —В1 . 2АВ
г2 ~ <д24-в2)2 1 (л!+в2)2 ’
-Л4-7а24-В2
2
expZ=e2=a4 cos В 4- jeA sin В,
In Z=XIn (Л24-В2) 4- j (arctg ^-±2л&),
fe = 0, 1, 2, ...,
Программа 3.8.
95
10
2©
30
40
50
60
70
80
9©
PRINT!Fl.9!
PRINT'АРИФМЕТИЧЕСКИЕ
PRINT' 1-—- -
INPUT'ВВЕДИТЕ RE Zb IM Z1
INPUT'ВВЕДИТЕ RE Z2j IM Z2 _
INPUT'ВВЕДИТЕ КОД ОПЕРАЦИИ +Ь-2,*3,/4
IF -------- - - -
IF
IF
IF
ОПЕРАЦИИ С КОМПЛЕКСНЫМИ'
ЧИСЛАМИ В АЛГЕБРАИЧЕСКОЙ ФОРМЕ'
- - - ,А,В
'C/D
K=1
K==2
K=3
K=4
THEN
THEN
THEN
THEN
110
130
140
168
'К
100 PRINT'КОД УКАЗАН НЕВЕРНО'sGOTO 58
110 LETA=A+CsLETB=B+D
120 PRINT'Z 0='A' + J*('B')'s60T0 40
130 LETA=A“C8LETB=B~D:6OTO 128
148 LETE=A*r:-B*D 8 LETF=A*D+C»B
158 LETA=ESLETB=FS6OTO 128
168 LETL=C*C+D*Ds LETE=A*C+B*Ds LETF=B*C-A*D
178 LETA=E/LSLETB»F/L8 6OTO 120sEND
56
Программа 3.9.
IS PRIНТ'УМНОЖЕНИЕ И ДЕЛЕНИЕ КОМПЛЕКСНЫХ '
20 PRINT'ЧИСЕЛ В ТРИГОНОМЕТРИЧЕСКОЙ ФОРМЕ'
30 INPUT'S КАКОЙ ФОРМЕ Z1 0-АЛГЕБ. 1-ТРИГОНОМ. 'К
40 IF К=1 THEN 70
50 INPUT'ВВЕДИТЕ RE Zb IM Zl 'A.B
60 LETR1=SQR<A*A+B*B>:LET01=ATN<BzA>!60T0 80
70 INPUT'ВВЕДИТЕ Rb QI 'RbQl
80 INPUT'В КАКОЙ ФОРМЕ Z2 0-АЛГЕБ. 1-ТРИГОНОМ. 'К
90 IF К=1 THEN 120
100 INPUT'ВВЕДИТЕ RE Z2, IM Z2 'C.-B
110 LETR2=SQR<C*iC+D*D>!LETQ2=ATN<D/C):&0T0 130
120 INPUT'ВВЕДИТЕ R2.. Q2 'R2/Q2
130 INPUT'ВВЕДИТЕ КОД ОПЕРАЦИИ Й *, 1 z 'К
140 IF К—0 THEN 160
150 LETR=RlzR2s|_ETQ=Ql-Q2!&0T0 170
160 LETR=R1*R2SLETQ=Q1+Q2
170 PRINT'Z0='R'* EXP<J*C'Q'>)'
180 LETR1=R:LETQ1=Q!6OTO 80SEND
7z=^e^=^cos A + jV^sin Ль A„ = f>/n + 3b0k/n, k — 0, 1, 2.n-1,
Z" = R"e= R" cos+ jR" sin n0.
Программа 3.10.
1Й PRINT'ВЫЧИСЛЕНИЕ F<Z>=Z"2'
2Й INPUT'ВВЕДИТЕ RE Z='As INPUT'ВВЕДИТЕ IM Z='B
ЗЙ LETE=A’’2-B“l2s LETF=2*A*B
4Й LETA=ESL.ETB=F
5Й PRINT'RE F(Z>='A:PRINT'IM F(Z)='B
бй ВСТО 20;END
Пример. (3 + /-2)2 = 5 + /-12.
Программа 3.11.
10 PRINT'ВЫЧИСЛЕНИЕ F<Z)=1/Z'
20 INPUT'ВВЕДИТЕ RE Z='As INPUT'ВВЕДИТЕ IM Z='B
30 LETG=A~2+B~2sLETE=A/&
40 LETF=-B/&sLETA=EsLETB=F
50 PRINT'RE F<Z)='AsPRlNT'IM F<Z)='B
60 GOTO 20s END
Пример. 1/(3 +/-2) =0,2307692308-/-0,1538461538.
Программа 3.12.
1й PRINT'ВЫЧИСЛЕНИЕ F < Z) = 1/Z~2'
20 INPUT'ВВЕДИТЕ RE Z='As INPUT'ВВЕДИТЕ IM Z='B
30 LET6=<A“’2+B“'2)”’2s LETE=(A‘“"2-B"’2)-ZG
40 LETF=-2*A#B-zGs LETA=Es LETB=F
50 PRINT'RE F(Z) = 'As PRINT'IM F<Z)='B
60 GOTO 20:END
Пример. 1/(3+/-2)2 = 0,02958579882-/-0,07100591716.
Программа 3.13.
10 PRINT'ВЫЧИСЛЕНИЕ F<Z)=SQR(Z>'
20 INPUT'ВВЕДИТЕ RE Z«'As INPUT'ВВЕДИТЕ IM .Z='B
30 LET G=SQR < A~2+B~2)s LETE=SQR< < A+6 >/2 >
40 LETF=SQR< <-A+G) /2 ) s LETA=Es LETB=F
50 PRINT'RE Z=+-'As PRINT'IM Z=+-'B
60 GOTO 20s END
Пример. 73 + /-2= ± 1,817354021 ±/-0,5502505227.
Программа 3.14.
10 PRINT'ВЫЧИСЛЕНИЕ F(Z>=EXP(X)'
20 INPUT'BBEAHTE RE Z=' As INPUT 'ВВЕДИТЕ IM Z=*'B
30 LETE=EXP(A > *COS(В> s LETF=EXP<A)*SIN(В)
40 LETA=EsLETB=F
50 PRINT'RE EXP<Z) = 'As PRINT'IM EXP<2> = 'B
60 GOTO 20 s END
Пример, exp (3+ /-2) = -8,358532651 +/-18,26372704.
57
Программа 3.15.
I© PRINT*ВЫЧИСЛЕНИЕ F(Z)=L0G<2)'
20 INPUT'BBEAHTE RE Z='As INPUT'ВВЕДИТЕ IM Z='B
3Q LETE==LOG(A~2+B~2>z2:LETF=ATN<BzA)
40 LETA=EsLETB=F
58 PRINT'F®'A'+J«C'B' +2*K*#PI)'
68 GOTO 205 END
Пример. In (3 + /-2) = 1,282474679+/ (0,5880026035 + 2fen).
Программа 3.16.
10 PRIНТ'ВЫЧИСЛЕНИЕ ФУНКЦИИ F(Z>=Z'<lzN>'
20 INPUT'ВВЕДИТЕ RE Z-'As INPUT'ВВЕДИТЕ IM Z«'B
30 INPUT'ВВЕДИТЕ N='NsLETX«SQR<A~2+B~2)
35 LETY=ATN(BzA)s LETA=X~<1zN >«COS < VzN >
40 LETB=X~<lzN)«SIN<YzN):PRINT'RE F<Z)='A
50 PRINT'IM F<Z)='BsEND
Пример. ^3 + /-2== 1,36311829+ /-0,2018352064.
Программа 3.17.
10 PRINT'ВЫЧИСЛЕНИЕ ФУНКЦИИ F(Z)=Z~N'
20 INPUT'ВВЕДИТЕ RE Z»'As INPUT'ВВЕДИТЕ IM Z«'B
30 INPUT'ВВЕДИТЕ №'N:LETX»SQR<A~2+B~2)
40 LETY=ATN(BzA) sLETA«X~N«COS<V«N)
50 LETB=X~N*SIN(Y*N):PRINT'RE F<Z>«'A
60 PRINT'IM F<Z)='B:END
Пример. (3 + / • 2)3 = - 8,999999999 + j • 46.
Тригонометрические функции комплексного переменного:
sin Z — sin A ch В + j cos A sh В,
cos Z = cos A ch В — j sin A sh Bt
t z— sin 2A • sh 2B
g cos 2A + ch 2B cos 2A + ch 2B *
Программа 3.18.
10 PRINT'ВЫЧИСЛЕНИЕ F<Z)=SIN<Z)'
20 INPUT'BBEAHTE RE Z='As INPUT'ВВЕДИТЕ IM Z=='B
30 LETE=SIN<A)«HCS<B):LETF=COS<A>«HSN(B)
40 LETA=E8LETB==F
50 PRINT'RE F<Z>e'AsPRINT'IM F(Z)='B
60 GOTO 20:END
Пример, sin (3 + /-2) =0,5309210863-/-3,59056459.
Программа 3.19.
10 PRINT'ВЫЧИСЛЕНИЕ F(Z)=C0S<Z)'
20 INPUT'BBEAHTE RE Z='As INPUT'ВВЕДИТЕ IM Z»'B
38 LETE=COS(A>«HCS(B>:LETF=-SIN(A>«HSN<B>
40 LETA=E:LETB=F
50 PRINT'RE F<Z>«'AsPRINT'IM F<Z>='B
60 GOTO 20:END
Пример, cos (3 + /-2) = -3,724545505-/-0,51182257.
Программа 3.20.
10 PRINT'ВЫЧИСЛЕНИЕ F<Z>=TAN(Z)'
20 INPUT'BBEAHTE RE Z='As INPUT'ВВЕДИТЕ IM Z«'B
30 LETA=A«2 5 LETB=B«2 s LETG«C0S < A)+HCS < В >
35 LETE=SINCA>z&sLETF=HSN(B>z6
4© LETA=EsLETB=F
50 PRINT'RE F<Z>='AsPRINT'IM F<Z>»'B
60 GOTO 20sEND
Пример. tg(3 + /-2) = —0,009884375039 +J-0,965385879.
58
Обратные тригонометрические функции комплексного пере-
менного:
arcsin Z=*arcsin ВдЧ-jln [Л^Ц-^/Л! — Г],
arccos Z = arccos В* —/1п [Лл4-уЛ*-—1 ],
x „ 1 4 / 2Л \ , L[n( Л2+(В-Ь1)2 \
arctg Z —garctg) + 4 ln\ д^^-Д^) ’
где 4*=±^/(4 + l)2 + B2 +^Н-')!+й1 и B^^(A + \)2 + B*(A-l)2+B*.
Программа 3.21.
10 PRINT'ВЫЧИСЛЕНИЕ F<Z>»ASN<Z>'
20 INPUT'BBEAHTE RE Z='AiINPUT'ВВЕДИТЕ IM Z='B
25 LETC=SQR<<A+l>''2+B'‘2>/2
30 LETD»SQR<<A-1>''2+B"2>z2
35 LETE“C+D:LETF=C-D:I_ETA=ASH<F)
40 LETB=l_OG<E+SQR<E«E-l > >
50 PRINT'RE F<Z>»’AlPRINT’IM FCZ)-'B
60 GOTO 20:END
Пример, arcsin (3+/-2) =0,9646585044 + j-1,968637926.
Программа 3.22.
IS PRINT'ВЫЧИСЛЕНИЕ F(Z)=ACS<Z)’
20 INPUT'ВВЕДИТЕ RE Z='A:INPUT'ВВЕДИТЕ IM Z='B
25 LETC=SQR< <A+1 >'‘2+B''2)/'2
30 LETD=SQR < < A-1 > ~2+B>'2 > z2
35 LETE=C+D:LETF=C-D:LETA=ACS<F>
40 LETB=-LOG<E+SQR<E*E-1>>
50 PRINT'RE F<Z)='AsPRINT'IM F<Z>='B
60 GOTO 20:END
Пример, arccos (3+/-2) =0,6061378224-/. 1,968637926.
Программа 3.23.
10 PRINT'ВЫЧИСЛЕНИЕ F<Z>=AHT<Z>’
20 INPUT'ВВЕДИТЕ RE Z='B:INPUT'ВВЕДИТЕ IM Z='AiLETB=-B
25 LETC=SQR<<A+i>"2+B*B)/2
30 LETE=ATN<2*A/<l-A»A-B*B)>/2
35 LETF=LOG< <A*A+<B+1 )*'2>/<A*A+<B-1 )~2) >/4
40 LETB=E:LETA=-F
50 PRINT'RE F(Z)='AlPRINT’IM<Z)-'B
60 GOTO 201END
Пример, arctg (0,3 + j• 0,2) =0,3018746667 + /-0.1849946201.
Гиперболические функции комплексного переменного:
sh Z =sh A cos В + j ch A sin B,
ch Z=ch A cos B + j sh A sin B,
_ sh A sin 2B
tg Z~ ch24+cos2S +l ch 2A + cos 2B '
Программа 3.24.
10 PRINT'ВЫЧИСЛЕНИЕ F<Z>=HSH<Z>'
20 IHPUT'BBEAMTE RE Z='AiINPUT'ВВЕДИТЕ IM Z='B
30 LETE=HSN<A>«COS<B):LETF=HCS<A)*SIN<B)
40 LETA=E:LETB=F
50 PRINT’RE F<Z>='AlPRINT'IM F<Z)='B
60 60T0 20:END
Пример, sh (3+/-2) =-4,16890696+/-9,154499147.
59
Программа 3.25.
18 PRINT'ВЫЧИСЛЕНИЕ F<Z)=HCS(Z>'
28 IHPUT'ВВЕДИТЕ RE Z=’A:INPUT'ВВЕДИТЕ IM Z='B
30 LETE=HCS<A)*COS< В ):LETF=HSN<A>*SIN<B >
40 LETA=E:LETB=F
58 PRINT'RE F<Z>='AsPRlNT'IM F<Z)='B
60 GOTO 20:END
Пример, ch (3 + /-2) =—4,189625691+/-9,109227894.
Программа 3.26.
10 PRINT'ВЫЧИСЛЕНИЕ F<Z>=HTN<Z>'
28 1НРиТ'ВВЕДИТЕ RE Z='As INPUT'ВВЕДИТЕ IM Z='B
30 LET A=A*2:LETB=B*2:LETG=HCS <A)+COS < В)
35 LETE=HSN<A)/GtLETF=SIN<B>z6
48 LETA=E:LETB=F
58 PRINT’RE F<Z>='AtPRINT’IM F<Z>='B
60 GOTO 20:END
Пример, th (3 + /-2) = l,003238627 —/-0,0037664025642.
Обратные гиперболические функции комплексного перемен-
ного:
arsh Z= —/arcsin (/Z), arch Z= ±/arccos Z, arth Z= —/arctg (/Z).
Программа 3.27.
10 PRINT’ВЫЧИСЛЕНИЕ F<Z)=AHS(Z)'
20 INPUT'ВВЕДИТЕ RE Z=’B:INPUT'ВВЕДИТЕ IM Z=’A:LETB=-B
25 LETC=SQRC<A+l>''2+B*B>/2
30 LETD=SQR<<A-1)~2+B*B>z2
35 LETE=C+D:LETF=C-D:LETB=ASN<F)
40 LETA=LOGCE+SQR(E*E-1>)
50 PRINT'RE F<Z)='A:PRINT'IM F<Z)=’B
60 GOTO 20:END
Пример, arsh (3 + /-2) = 1,98338703+/-0,5076527843.
Программа 3.28.
10 PRINT'ВЫЧИСЛЕНИЕ F<Z>=AHC<Z)'
20 INPUT'ВВЕДИТЕ RE Z='A:INPUT’ВВЕДИТЕ IM Z=’B
25 LETC=SQR<<A+1)''2+B»B)z2
38 LETD=SQR<(A-l)~2+B*B)z2
35 LETE=C+D:LETF=C-D:LETB=ACS(F)
40 LETA=LOG<E+SQR(E*E-1)>
58 PRINT'RE F<Z)=+-'AsPRlNT'IM F(Z>=+-’B
60 GOTO 20sEND
Пример, arch (3 + /-2) = ± 1,968637926±/-0,6061378224.
Программа 3.29.
10 PRINT’ВЫЧИСЛЕНИЕ F(Z>=AHT<Z>'
2И INPUT'ВВЕДИТЕ RE Z='B:INPUT'ВВЕДИТЕ IM Z='A:LETB=-B
LETU^QR (•; A+1 > "Z’+BaB ) /2
3© LETE=ATN<2* Ax<1-A*A-B*B))/2
35 LETF=LOG<(A* A+(B+1> ~2)/<A*A+(B-1)~2 >)/4
4© LETB=EsLETA=~F
5© PRINT’RE F<Z)=-’AsPRINT4M(Z)=='B
6© ©OTO 2©5 END
Пример, arth (0,3 + /-0,2) =0,2957499203 + /-0,2154744937.
В описанных программах значения Re F (Z) и Im F (Z) придаются переменным А и В
(A^ReF, Поэтому, опустив комментарии, программы можно использовать
в качестве подпрограмм вычисления функций комплексного переменного.
60
§ 3.3. Вычисление
степенных многочленов
и дробно-рациональных функций
Схема Горнера применяется для вычисле-
ния степенных многочленов Р (Z) (поли-
номов),
Р (Z) = anZn-|-ал_\Zn 1 -j- ... -j-diZ-j-ao,
и имеет вид
P(Z)=(...(artZ4-art_i)Z + an-2)Z-F...
• •• 4-fli) Z-j~ao.
Коэффициенты ап, ап-\, ...» ai, »ao будем
считать действительными. При действитель-
ном аргументе x = Z схема Горнера приме-
няется непосредственно, при комплексном
Z—A+jB — с применением операций умно-
жения и сложения комплексных чисел
(см. § 3.2).
Программа 3.30.
Устойчивость многочлена, описывающего
линейную систему с обратной связью (на-
пример, электронный усилитель), оценива-
ется с помощью критерия Гаусса—Гурвица.
Для устойчивости необходимо, чтобы значение
модуля многочлена 4(Z)=4(p), где p-ju,
при фазовом угле 0 = 0 было менее 1 (т. е. годо-
граф системы при со, меняющемся от 0 до оо,
не должен охватывать точку 0,1 комплексной
плоскости). Более удобно судить об устойчи-
вости А (р) по его разложению в цепную
дробь [cip, Сар, ...» спр]. Если все коэффи-
циенты Ci этого разложения положительны,
многочлен устойчив. Оценка устойчивости
многочлена
А (р) = апрп + ап-1рп~1 +... -haip + ao
выполняется с помощью следующей про-
граммы.
10 PRINT'ВЫЧИСЛЕНИЕ СТЕПЕННОГО МНОГОЧЛЕНА'
15 INPUT’ВВЕДИТЕ СТЕПЕНЬ МНОГОЧЛЕНА №'NsDIM АСЮ
20 FOR I=N ТО 0 STEP -1
30 PRINT!2.0!'ВВЕДИТЕ КОЭФФИЦИЕНТ А'1
35 INPUT ACI>sNEXT I j
40 INPUT'ВВЕДИТЕ ЗНАЧЕНИЕ X='XsLETY=0'
50 FOR I=N TO 1 STEP -1
60 LETY=CY+ACI))*XsNEXT I
70 LETY=Y+AC0):PRINT!F1.9!'ЗНАЧЕНИЕ PCX)='Y
80 GOTO 40:END
Для многочлена Р(х) = 4х4-|-Зх3-|-2х2-|-
Ч-1х-|-0 получим Р(1)=10, Р(2)=98.
Программа 3.31.
10 PRINT'ВЫЧИСЛЕНИЕ ПОЛИНОМА С КОМПЛЕКСНЫМ АРГУМЕНТОМ'
15 INPUT'ВВЕДИТЕ СТЕПЕНЬ ПОЛИНОМА fi='NsDIM АСЮ
20 FOR I=N ТО 0 STEP -1
30 PRINT!2.0!'ВВЕДИТЕ КОЭФФИЦИЕНТ АС'1')=?'
35 INPUT" AC I):NEXT I
» 40 INPUT'ВВЕДИТЕ RECZ>='Xs INPUT'ВВЕДИТЕ IMCZ)='Y
45 LETR=ACN)SLETJ=0
50 FOR 1=1 TO N
60 LETE=X*R-Y'*J+ACN-I>
70 LETF=Y*R+X*J:LETR=EsLETJ=F
80 NEXT IsPRINT!Fl.9! "
90 PRINT 'RE P(X) = 'Rs PRINT'.IM PCX) = 'J
100 GOTO 40SEND
Для многочлена P(Z) = 8Z8-|-7Z7-|-6Z64-
-4- 1Z4-1 получим P(1 +/• !•)= 144 — /• 113.
Программа 3.32.
10 PRINT'ОЦЕНКА УСТОЙЧИВОСТИ МНОГОЧЛЕНА'
20 INPUT'ЗАДАЙТЕ СТЕПЕНЬ МНОГОЧЛЕНА N='N:DIM АСЮ
30 FOR I=N ТО 0 STEP -1sPRINT!2.0!'A'I'='
40 INPUT ACDSNEXT lsLETW=N-2
50 LETN=W+2sLETZ=NsLETB=ACN):LETN=N-1sLETC=ACN)s LETN=N-2
60 IF C=0 GOTO 140
70 LETD=B*ACABSCN))sLETN=N+l
80 LETACABS С Ю )=<C*A < ABS CN))-И>/С
90 IF ACABSCN))<0 THEN 140
100 LETU=3-№ IF U>0 THEN 120
110 LETN=USGOTO 70
120 LETW=Z-3s IF ЫО0 THEN 50
130 PRINT'МНОГОЧЛЕН УСТОЙЧИВ'sSTOP
140 PRINT'МНОГОЧЛЕН НЕУСТОЙЧИВ'sEND
61
Пример. Многочлен А (р) =2р44~3р34-
4-р24-5р4-1 неустойчив, а многочлен А (р) =
= 12р5 +12р4 4-16р3 4* 10р2 4~ 5р 4“ 1 устойчив.
Вычисление значений дробно-рациональ-
ной функции комплексного переменного
F(Z)^-^- =
1 B(Z) .
_________amZm 4~^m—iZm 14-... 4-aiZ4-ao
bnZn •}- bn—\Zn *4-biZ-^rbo~
производится вычислением комплексных зна-
чений многочленов A(Z) и B(Z) с после-
дующим делением их по формуле (3.1).
Программа 3.33.
дробно-рациоиальной функции при задан* 1
ном Z. Так, для приведенного примера 1
МОДУЛЬ = 0,04454466144, ФАЗА= |
==-—65,45048284°. Возможно также вычисле- 1
нне операторной функции F (р), где p=/w 1
(вводится ReZ = 0 и lmZ = o)L а также вы- 1
числение функции F(Z) = 1/H(Z) (вводится ]
т=1, О|=0 и ао = 1). Для вычисления
дробно-рациональной функции вводится
Re Z = x и Im Z=0.
Деление степенного многочлена А(х) на
двухчлен В (х) =s U2 4- b\x 4- &0) выполняется
для понижения степени исходного много-
члена А (х). Если А (х) — многочлен четной
степени, то из него можно выделить квад-
PRINT'ВЫЧИСЛЕНИЕ ДРОБНО-РАЦИОНАЛЬНОЙ ФУНКЦИИ'
PRINT'F<Z>=ACZ)/B<Z> КОМПЛЕКСНОГО ПЕРЕМЕННОГО'
INPUT'BBEAHTE СТЕПЕНИ МНОГОЧЛЕНОВ А<2) И B<Z) M,N 'M,N
DIM A<M)?B<H):FOR I=M TO 0 STEP -1
PRINT!2.0!'ВВЕДИТЕ А'ПINPUT A<I>:NEXT I
FOR I=N TO 0 STEP -is PRINT'ВВЕДИТЕ В'I
INPUT BCD’.NEXT I
INPUT'ВВЕДИТЕ RE Z/ IM Z'X/YsLETR=A<M):LETU=0
FOR 1=1 TO M:LETE=X*R-Y*J+A(M-I)
10
20
30
40
50
60
70
80
90
100 LETF=V»R+XMJ:LETR=E5LETJ=F:NEXT I
110 LETQ=R s LETU=J s LETR=B < N)8 LETJ=0
12a FOR 1=1 TO N:LETE=X«R-Y*J+B<N-I)
130 LETF=?»R+X*J8LETR=E5LETJ=FSNEXT I
140 LETC=R*R+F*F:LETD=Q*R+U*F
150 LETE=U*R-Q*FsLETP«D/CsLETI=E/C
160 PRINT!F1.9!'RE F<Z)='PsPRINT 'IM F<Z>«'I
170 LETMli=SQR<P*P+I*I>8LETQ=ATN<I/P>
175 PRINT'МОДУЛЬ M='M
180 PRINT'ФАЗА В РАДИАНАХ Q«'Q
190 PRINT'ФАЗА В ГРАДУСАХ Q='Q*180/#PI
200 GOTO 80:END
Контрольный пример. Для функ-
ции
ял__ 3Z34-2Z2 + Z4-0,5
1 ; 5Z5 4- 4Z* 4- 3Z3 + 2Z2 + Z 4- 0,2 ’
где т — 3 и п = 5, при Z = 34"/*2 получим
F (3 4- / * 2) = 0,01850739412-/- 0,040551793708.
Программа 3.33 обеспечивает также вычис-
ление модуля
МОДУЛЬ F(Z) =V[Re Г (Z)]24- {Im F(Z)]2
и фазы
ФАЗА F (Z) — arctg [Im F (Z)/Re F (Z)]
ратичный множитель B(x) и использовать
операцию деления для исключения двух
корней, полученных из решения уравнения
В(х)=0. В общем случае деление А(х)
на В(х) дает многочлен D(x) и остаток
R(x) =Г|х4-г0.
Программа 3.34.
Пример. Для выражения
А(х) _ 1х6 4- 7х5 +.15х4 4-15х34-4х2 —Зх4-125
В(х) х2 —2x4-2
получим D(x) = 1х44-9х34-31х24-59х4-60 при
остатке R(x) = — 1x4-5.
Программа 3.34.
05 PRINT'ДЕЛЕНИЕ МНОГОЧЛЕНА АСХ) СТЕПЕНИ N'
10 PRINT'НА ДВУХЧЛЕН А(Х>=ХЛ2+В1*Х + В8'
20 INPUT'ВВЕДИТЕ НяВЬВ© 'N, С, В’. DIM A<N)
30 FOR I=N TO 0 STEP -1
40 PRINT!2.0!'ВВЕДИТЕ КОЭФФИЦИЕНТ A'I' ='
45 INPUT A<I):NEXT I
50 LETV=A<N):LETN=N-11LETX=A(N>:LETN=N-1
60 FOR I=N TO 0 STEP -1
80 60SUB 100:NEXT I
90 GOTO 120
100 LETD=X-Y*C:LETE=A<I):LETA<I)=Y
110 LETX=E-Y*B:LETY=D:RETURN
120 PRINT!F1.9!'ОСТАТОК R(X)='Y'*X + C'X')'
130 PRINT'КОЭФФИЦИЕНТЫ МНОГОЧЛЕНА-ЧАСТНОГО'
140 FOR I=N TO 0 STEP -1
150 PRINT!2.0!'A'I'='!F1.9!A<I)
160 NEXT BEND
62
Программа 3.35.
05 PRIНТ'ВЫЧИСЛЕНИЕ Р<С> И ДЕЛЕНИЕ Р(Х> НА СХ-СГ
10 INPUT'ВВЕДИТЕ ЗНАЧЕНИЯ НлС 'N/CsDIM А<Ю
20 FOR I==N ТО 0 STEP -1
30 PRINT’S.0!'А'!'«'•INPUT A<I)sNEXT I
40 PRINT«2.0»'B'N-1'='!F1.9!A<N)
50 FOR I=N-1 TO 0 STEP -1
60 LETA(I)=A<I)+A<I+1)«C
70 IF IO0 THEN PRINT’2.0!'B'1-1'»'!F1.9!A<I>
80 NEXT 18 PRINT?Fl.9•'P<X)«'A<0)8 END
Программа 3.36.
10 PRIНТ'УМНОЖЕНИЕ МНОГОЧЛЕНА A<X) СТЕПЕНИ M'
20 PRINT' НА МНОГОЧЛЕН В<Х> СТЕПЕНИ N'
30 INPUT'ВВЕДИТЕ M/N 'M/N8DIM А<М+М+1>
40 FOR 1*М ТО 0 STEP -1
50 PRINT’S.0*'А'1'=':INPUT A<I>sNEXT I
60 FOR I=N+M TO M STEP -1
70 PRIHTI2.0!'B'I-M'='sINPUT W
80 FOR J=M TO 1 STEP -1
90 LETA<J+M+l)=A<J)*W+A<J+M)5NEXT J
100 LETA<M+1)=A(0)*W
110 PRINT’S.©*'C'1'='?F1.9»A<M+M+1>8NEXT I
120 FOR I*M-1 TO 0 STEP -1
130 PRINT’S.©*'C'1'='*F1.9*A(I+M+1>
140 NEXT DPRINT'KOHEU ВЫЧИСЛЕНИЙ'sEND
Вычисление значения полинома P(x) =
=anx',4-0n-ix',_| 4-... 4-0ix4-0o в точке х=с
и деление Р(х) на (х — с) выполняется по
следующему алгоритму.
1. Вводим коэффициенты дл, дл_|, ...
..., ai, а0 полинома Р (х).
2. Задаем ai—an (i = n).
3. Преобразуем а< по рекуррентной фор-
муле а,=а, 4-0/-1с с помощью цикла с управ-
ляющей переменной 4, меняющейся от зна-
чения n—1 до 0 с шагом —1.
4. На каждом цикле п. 3, кроме 4 = 0,
выводим значения полинома В (х) =
=Л (х)/(х — с) = Ьл_1хл~| 4-5л_2х'”‘24- ...
...4-^>х4-^о, имеющего порядок (n—1).
5. По окончании цикла по п. 3, 4 выводим
Р(х)=д0.
Если с — корень Р(х), то деление Р(х)
на (х—с) может применяться для понижения
степени многочлена и поиска его очередного
корня.
Программа 3.35.
Пример. Для многочлена Р(х) = Зх34-
4-2х2 —5x4-7 при п = 3 и с = 3 получим
В (х)=3х24-Их4-28 и Р (с) =91.
Умножение многочлена А (х) =аЛ1х'я4-
4-am_i хт~1 4- 4-0ix4-0o степени т на
многочлен В (х) — bnxn-\-bn-\xn~{ 4- — 4-^ix4-
-|-6о дает многочлен С(х) =c,„ + ,(x'"+rt4-
4-cm+n_ixm+''"14-... 4-йх4-с0 степени
(т4-я). Эта операция выполняется по сле-
дующему алгоритму.
I. Вводим коэффициенты ат, ат_\, ...
..., О|, До- '
2. Организуем внешний «цикл вычислений
ci, задав начальное значение управляющей
переменной цикла i—(n-\-m) и конечное
значение т с шагом —-1. В начале каждого
цикла вводим bt_m и переходим к п. 3.
3. Организуем внутренний цикл с управ-
ляющей переменной /, меняющейся от j — m
до 1 с шагом 1. В этом цикле преобразуем
коэффициенты многочлена Д(х) по формуле
#/+«+1 в0Д--л+а/+я.
4. При выходе из внутреннего цикла вы-
числяем am+i=a06/-m, выводим на печать
с,= а2т+1 и переходим к п. 2 (т. е. завершаем
внешний цикл).
5. С-помощью цикла с управляющей пе-
ременной 4, меняющейся от i — m — 1 до 0
с шагом —1, выводим на печать последние
т значений Ct—ai+m+i.
Программа 3.36.
Пример. Для А (х) = 4х4 4-Зх2 + 2х 4-
4-1x4-0,5 и В(х) =2хй4-1х4-0,4 получим
многочлен С (х) = 8х6 4-1 Ох5 4- 8,6х4 4- 5,2х3 4-
4- 2,8х2 4~ 0,9х 4“ 0,2.
§ 3.4. Вычисление ортогональных
многочленов
Ортогональные многочлены Чебышева
Тл(х)=о)(х) являются решениями диффе-
ренциального уравнения второго порядка
(i-%2)4?‘_jc^r+n2<o=o- <з-2)
Они могут вычисляться с помощью явного
выражения
Tn(x) = cos (n arccosx) (3.3)
или по рекуррентным формулам Ti+i(x) =
= 2хТ1(х)~Ti_\(x) при То(х)=1 и Г1(х)=х.
Дифференциальному уравнению (3.2) со-
ответствуют и решения в виде функций
63
Программа 3.37.
10 PRINT ’ВЫЧИСЛЕНИЕ МНОГОЧЛЕНА ЧЕБЫШЕВА'
15 INPUT ‘ВВЕДИТЕ N='N
20 INPUT 'МНОГОЧЛЕН 1-ГО ИЛИ 2-ГО РОДА' R
30 INPUT 'ВВЕДИТЕ Х='Х
40 IF R=2 THEN 60
50 PRINT 'TN<X)='COS<N*ACS<X)) : GOTO 30
60 PRINT 'UN<X))='SIN<<N+1)*ACS<X)>/SIN(ACS<X>)
70 60T0 30 s END
Программа 3.38.
10 PRINT'ВЫЧИСЛЕНИЕ МНОГОЧЛЕНА ЛЕЖАНДРА'
20 INPUT'ВВЕДИТЕ N>=2 N='N
25 INPUT'ВВЕДИТЕ X='X:LETA=1:LETB=X
30 FOR 1=1 TO N-l
40 LETP=<<2*1+1)*X*B-I*A>/<1+1)
50 LETA=B5 LETB=Ps NEXT I
60 PRINT'PN<X)='PsGOTO 25:END
Программа 3.39.
10 PRINT 'ВЫЧИСЛЕНИЕ МНОГОЧЛЕНА ЛАГЕРРА'
20 INPUT 'ВВЕДИТЕ N>=2 N='N
30 INPUT 'ВВЕДИТЕ X='X s LET A=1 s LET B=l-X
40 FOR 1=1 TO N-l
5© LET L=<<2*I+l-X)*B-I*A>/<1+1>
60 LET A=B s LET B=L s NEXT I
70 PRINT 'LN<X)='L : GOTO 30 s END
Бесселя второго рода Un{x)-.
L/o(x) = arcsin x,
-d 1 — x^~
Un(x) — sin(n arccosx)=—-------
(3.4)
4- T„(x).
dx
Они также 'могут вычисляться с помощью
рекуррентных формул
Ut + \—2xUl{x)—Ui~i(x), Z=l, 2...n-l,
при Uo(x)— 1 и Ui(x) = 2x.
Поскольку в большинстве версий языка
бейсик предусмотрено вычисление обратных
тригонометрических функций, вычисление
Тп(х) и Un(x) целесообразно выполнять по
явным формулам (3.3) и (3.4).
Программа 3.37.
Контрольные примеры. Г3(0,1) =
= -0,26; (А(0,1 )=—0,392.
Ортогональные многочлены Лежандра
Рп(х) являются решениями дифференциаль-
ного уравнения
(1 ~х2) Д~Т"~2х ~т~ +« («+ 1) о> = 0
dx* dx ’
и могут вычисляться по рекуррентным
формулам
Р<+ |(х)=((2/+ 1) лР^-гЛ-^х^/ОЧ-1),
/=1, 2, . . ., п-1,
при Ро(х)=1 и Р|(х) = х.
Программа 3.38.
Пример. Для п =4 и х = 3 Р4(х) = 55,375.
Ортогональные многочлены Лагерра Ln(x)
являются решениями дифференциального
64
уравнения
d2<i) , . dm . Л
Z—+(1-х)-^г+л<о = 0
и вычисляются с помощью рекуррентных
формул
= ((2»+1-х) L, (х)—(х))/(<: +1),
(=1, 2...п-1,
при Lo(x)=l и Li(x)=l —х.
Программа 3.39.
Пример. L|0(3) = —0,7000223214;
Lio(10) = 27,98412698.
Ортогональные многочлены Эрмита Нп(х)
соответствуют решениям дифференциального
уравнения
d2<o
———2х —-—L2nw = 0
dx* dx
и вычисляются по рекуррентным формулам
Ht+\ (х)—2хН, (х) (х),
/ = 1, 2, ..., п— 1,
при Я0(х)=1, Hi(x)~2x.
Программа 3.40.
10 PRINT'ВЫЧИСЛЕНИЕ МНОГОЧЛЕНА ЭРМИТА'
2© INPUT'ВВЕДИТЕ N>=2 N='N
30 INPUT'ВВЕДИТЕ X='Xs LETA=ls LETB=2*X
40 FOR 1=1 TO N-l
50 LETH=2*X*B-2*I*A
60 LETA=BsLETB=№NEXT I
70 PRINT'HN<X>='HsGOTO 30SEND
Пример. tf10(3) = -3093984, H\Q(10) =
= 8,09327821-10‘2.
f 3.5. Операции с матрицами
Матрица — двумерный массив чисел вида
du di2 «1з ••• ain
Д__ 021 0,22 023 ••• 02/1 (3 5)
dm I dm2 dm3 ••• 0mn
Матрица характеризуется размерностью
mXn, т. e. произведением числа столбцов п
на число строк рг. Квадратная матрица
имеет т = п и размерность п2 — пХп. У про-
стейших ПЭВМ предусмотрено формирование
одной-двух матриц размерностью 10X10
с коэффициентами Аи (например, у ПЭВМ
класса Pocket Computers FX-702P можно
формировать одну матрицу 10X20 или две
матрицы 10X10, причем нумерация строк
и столбцов начинается с 0, а не с 1). У более
сложных ПЭВМ коэффициенты матрицы могут
задаваться любой переменной, например
В„, ZKL и т. д.
Ввод матрицы обычно задается по строкам
с помощью двух циклов.
1. Задаем значения / от 1 (или 0) до М
(или М— 1) во внешнем цикле.
2. Задаем значения J от 1 (или 0) до
V (или AZ— 1) во внутреннем цикле.
3. С помощью оператора INPUT задаем
ввод А (/, /) каждого члена матрицы.
Перед операторами ввода матрицы необ-
ходимо задать размерность массива, напри-
мер, с помощью операторов DIMA (М, N),
СОМА (М, N) или других (зависят от кон-
кретной версии бейсика, применяемой в ЭВМ).
Программа 3.41.
19 REM'BBOA ЭЛЕМЕНТОВ МАТРИЦЫ M*N'
20 INPUT'ВВЕДИТЕ МлН 'Мл Ns DIM АСМлЮ
30 FOP 1=1 ТО Ms FOR J=1 ТО Н
40 PRINT 12.01'ВВЕДИТЕ ЭЛЕМЕНТ А' I'л' J
50 INPUT ACbJ)sNEXT JsNEXT I
500 END
В ЭВМ с версией бейсика, имеющей
матричные операторы, программа ввода суще-
ственно упрощается (см. пример в § 2.2).
Диагональная матрица является разно-
видностью квадратной матрицы вида
0i 1 0 ... 0
А _ 0 022 ••• 0
0 0 ... йпп
У нее все элементы нулевые, кроме диаго-
нальных, т. е. А (/, /)#=0 при / = /.
Программа 3.42.
10 REM'ФОРМИРОВАНИЕ ДИАГОНАЛЬНОЙ МАТРИЦЫ'
20 INPUT'ВВЕДИТЕ N='NsDIM АСЫлЮ
Единичная матрица — разновидность диа-
гональной матрицы, у которой А(/, /) = 1
при / = /.
Программа 3.43.
10 REM' ФОРМИРОВАНИЕ ЕДИНИЧНОЙ МАТРИЦЫ •’
20 INPUT'ВВЕДИТЕ N='№DIM АСНлН)
30 FOR 1 = 1 ТО № FOR 0=1 TO N
40 IF IO.J THEN 60
50 LETACb J)=lsGOTO 70
60 LETACbJ>=0
70 NEXT J:NEXT I
500 END
Нулевая матрица — очищенный массив,
т. е. матрица, у которой все А(/, /)=0.
Для получения такой матрицы- иногда могут
использоваться специальные операторы пол-
ной очистки памяти данных (например, VAC
у ПЭВМ FX-702P), исполняемые до ввода
всех исходных данных. Если нулевую матрицу
нужно формировать по ходу вычислений,
можно использовать следующую программу:
Программа 3.44.
10 REM'ФОРМИРОВАНИЕ НУЛЕВОЙ МАТРИЦЫ'
20 INPUT'ВВЕДИТЕ Мл Ы 'Мл Ns DIM АСМлЮ
30 FOR 1=1 ТО Ms FOR J=1 ТО N
40 LETACbJ)=0sNEXT J:HEXT I
500 END
Операции с константами сводятся к сло-
жению или вычитанию элементов матрицы
А (/, /) с константой, например X, или
умножению А (/, /)*Х или делению А (/, J)/X
на константу. Все они могут проводиться
в ходе ввода матрицы (см. программу 3.45).
Программа 3.45.
10 PRINT'УМНОЖЕНИЕ МАТРИЦЫ N*N
15 PRINT’НА КОНСТАНТУ С'
29 INPUT'ВВЕДИТЕ N='N
251NPUT'ВВЕДИТЕ С'С:DIМ А СЫлN>
30 FOR 1 = 1 ТО Ns FOR .1=1 ТП N
4й PRINT 12.01'ВВЕДИТЕ ЭЛЕМЕНТ А'I'>'. I
50 INPUT АС 1л.J>s LETACb J)=A<Ь.ПжГ:
69 NEXT JsNEXT I
500 END
Вывод матрицы на печать opi анизуется,
как и ввод, с помощью двух циклов. Однако
вместо оператора ввода во внутреннем цикле
используется оператор вывода PRINT. Целе-
сообразно вывод организовать так, чтобы
индицировались индексы / и I каждого эле-
мента в формате без дробных частей (см. при-
мер вывода для программы 3.45).
Программа 3.46.
70 FOR 1 = 1 ТО Ns FOR J=1 ТО N
80 PRINT12.0? 'A' Гл 'J'='ACb J)
90 NEXT JsNEXT I
500 END
30 FOR 1 = 1 TO Ns FOR J=1 TO N
40 IF IOJ THEN 60
50 PRINT!2.01'ВВЕДИТЕ A'lb'J
55 INPUT ACbJ)sGOTO 70
60 LETACb J)=0
70 NEXT J:NEXT I
Пример. Для X = 2 и матрицы
500 END
2 3
5 6
8 9
выполнение совместно программ 3.45 и 3.46
3 В. П. Дьяконов
65
даст такие результаты (элементы выводятся
построчно):
А 1, 1 = 2
А 1,2 = 4
А 3, 3 = 18
Для матриц небольшой размерности выйбд
можно задать и в естественном для матрицы
виде.
Программа 3.47.
76 PRINT
80 PRINT
90 PRINT
500 END
A(bl)>A(b2>,A(b3)
A<2/l)/A<2/2)fA<2/3)
А(ЗМ>лА<Зл2)/А<3/3)
Пример. Для приведенного вЫше при-
мера совместное выполнение программ 3.45
и 3.47 ведет к выдаче результатов в форме
2 4 6
8 10 12
14 16 18
Транспонированной матрицей Ат называ-
ется квадратная матрица, у которой столбцы
соответствуют строкам -квадратной матри-
цы А, например:
Для матрицы 2X2,
Z) — й!г1«22«3з4"«2>«^2«13 4~«l2«23"tbf —
— «э । а&а i з — «з2«2.з«л —«2i«i2«;w
для матрицы 3X3-и
D = (011022 — «г20*21) (оззо44 —Х1ыа&} -f-
+ («13«21 -* О| 102э) f«32«44 — «34«4в) 4"
-F («11024 — 014021) (0320И13—O33O4fj 4"
4“ («12023 — Or^Oji) (Оз»«44 — «34«4|)“Г
4-(Oj4«22 — 012024) («*1«43 — «З3«^|)4-
-F («13«24 — О |4«2з) («3I «42 — «32(041)
Для /Матрицы 4X4.
Программа 3.49.
Пример.
0=|> 2 | = -2
Программа 3.150.
Пример. • 1 2 '3 .
£) = 4 5 6 = 54.
7 8 — 9
Программа 3.31.
Пример.
1
А = 4
7
2 3
5 6
8 9
Нетрудно заметить, что диагональные
элементы у матриц А и Аг«одни и те же
и операция транспонирования матрицы А
сводится к перестановке остальных элементов
симметрично относительно диагонали. Это
реализуется с помощью Соотношения
при
Программа 3.48.
Определители матриц с любой размер-
ностью пХп вычисляются41 по методу v Payee а.
Он сводится к преобразованию матриц
к треугольному виду с помощью следующих
формул преобразования элементов матри-
цы А (3.5):
М__ Ак-\) °
°" ~а" в,‘
где k—l, 2 (п—1) и ой‘ П#=’О.'Преобра-
зование массива А(п, п) производится в на-
правлении расположения столбцов слева
10 PRINT'ТРАНСПОНИРОВАНИЕ МАТРИЦЫ'
20 IHPUT'BBEftMTE N='№DIM A<N,N),B<H>N)
30 FOR 1=1 ТО № FOR J»1 TO N
40 PRINT>2.0!'ВВЕДИТЕ A'I'/'JsINPUT A<bJ)
50 NEXT JiNEXT I
60 FOR 1=1 T0№FOR J=I+1 TO N
70 LETC=A< b J)s LETAC bJ>=A<J,I)sLETACJ,I>=C
80 NEXT JsNEXT I
90 REM'ТРАНСПОНИРОВАННАЯ МАТРИЦА ЗАНЕСЕНА НА МЕСТО ИСХОДНОМ
500 END
Определитель квадратной матрицы А —
число Z), равное сумме nl членов
( — 1)' а|,|«2/2аз.-з...a«in, каждый из которых
соответствует одному из nl различных упо-
рядоченных множеств /|, j >......../\, получен-
ных r-парными перестановками элементов из
множества 1, 2, .. ., п.
Определители матриц малой размерности
(2X2, 3X3, 4X4) целесообразно вычис-
лять по известным формулам:
D =Д| 1«22 — «21«12
направо. Определитель вычисляется как
произведение всех диагональных элементов
преобразованной матрицы.
Программа 3.52.
Проверка программы производится по
примерам, приведенным вЫше для программ
3.49 и 3.50.
Необходимое -условие для реализации
простого метода Гаусса заключается в
неравенстве элемента нулю на всех
этапах преобразования. В случае a4VIJ=0
произойдет останов ЭВМ, так как деление
66
Программа 3.49.
10 PRINT'ВЫЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ 2*2'
20 INPUT'ВВЕДИТЕ Al 1/ А12/ А2Ь А22 'А/ В/ C/D
30 PRINT'ОПРЕДЕЛИТЕЛЬ D=' A*D-C*B s END
Программа 3.50.
10 PRINT'ВЫЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ 3*3'
20 INPUT'ВВЕДИТЕ A11/A12/A13 'А/В/С
30 INPUT'ВВЕДИТЕ А21/А22/А23 'D/E/F
40 INPUT'ВВЕДИТЕ A31/A32/A33 'G/H/I
50 LETS=A*<E*I-H*F)+C*<D*H~G*E)+B*<F*G-D*I>
60 PRINT'ОПРЕДЕЛИТЕЛЬ D='SsEND
Программа 3.51
10 PRINT'ВЫЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ 4*4'
15 HIM A<4/4)sLETS=0
20 FOR 1 = 1 ТО 4s FOR J=1 TO 4
30 PRINT'BBEAHTE ЭЛЕМЕНТ A='’2.0’I'/'J
40 INPUT A<bJ)sNEXT JsNEXT I
50 LET0=lsLETP=2sLETQ=3sLETR=4sGOSUB 120
60 LET0=3sLETP=lsLETGl=2sLETR=4s GOSUB 12©
70 LETO=1:LETP=4sLETQ=2:LETR=3:60SUB 120
80 LET0=2sLETP=3sLETQ=lsLETR=4sGOSUB 120
90 LET0=4sLETP=2sLETQ=lsLETR=3sGOSUB 120
100 LET0=3:LETP=4sLETQ=lsLETR=2sGOSUB 120
110 PRINT I Fl«9!'ОПРЕДЕЛИТЕЛЬ D='SsSTOP
120 LETB=A<1/0)*A<2/P)-A<1/P)*A<2/0)
130 LETS=S+B*( A(3.» Q)*A(4, R)-A<3/R)*A(4.» Q) >
140 RETURN:END
Программа 3.52.
10 PRINT'ВЫЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ'
20 INPUT'ВВЕДИТЕ ПОРЯДОК ОПРЕДЕЛИТЕЛЯ N='N
30 DIM A<N/N)sLETP=l
40 FOR 1 = 1 TO Ns FOR J=1 TO N
50 PRINT‘2.О’'ВВЕДИТЕ ЭЛЕМЕНТ A'I'/'J
60 INPUT A<1/.J)sNEXT JsNEXT I
70 FOR 1=1 TO N-1sFOR J=I + 1 TO N
SO LETA<J/I)=A<J/I)/A<bI)sFOR K=I + 1 TO N
90 LETA<J/K)=A<J/K)-AGJ, I)*A(I/K)sNEXT K
100 HEXT JsLETP=P*A< I.»I):NEXT I
110 LETP=P*A<N/N)SPRINT’Fl.9!'ОПРЕДЕЛИТЕЛЬ D='P:END
Программа 3.53.
10 PRINT'ВЫЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ ПО МЕТОДУ ГАУССА'
15 PRINT'С ВЫБОРОМ ГЛАВНОГО ЭЛЕМЕНТА ПО ВСЕЙ МАТРИЦЕ'
20 INPUT'ЗАДАЙТЕ ЗНАЧЕНИЕ N='NsDIM А(Н,Ю
25 FOR 1=0 ТО N-lsFOR J=0 ТО N-1
30 PRINT’2.0’'ВВЕДИТЕ ЭЛЕМЕНТ А'1+1'/'J+l'='
40 INPUT A<bJ)sNEXT JsNEXT I*LETP=0
50 LETZ=1sLETD=l:FOR K=0 TO N-2
60 LETE»0sFOR I=K TO N-1
78 FOR J=K TO N-1sIF ABS(E)>=ABS(A(bJ)) THEN 90
80 LETE=A<I/J)sLETB=IsLETC=JsNEXT JsNEXT I
90 IF K=B THEN 120
100 FOR J=K TO N-1sLETS=A<K/J)
110 LETA<K/J)=A(B/J)sLETA<B/J)=S5NEXT JsLETZ=-Z
120 IF K=C THEN 150
125 FOR I=K TO N-1
130 LE TS=A < Ь К ) s LET A < Ь К > = A < I / C )
140 LETA(I/C)=SsNEXT IsLETZ=-Z
150 FOR I=K+f TO N-lsLETG=A(bK>zA<K/K)
160 FOR J=K TO N-lsLETA(f, J)=A<b J)-G*A<K/ J)
170 NEXT JsNEXT Is NEXT K
180 FOR 1=0 TO N-lsLETD=D*A<bI)
190 NEXT IsLETD=D*ZSPRINT'ОПРЕДЕЛИТЕЛЬ D='’Fl.9‘DsEND
67
3*
Программа 3.49.
10 PRINT'ВЫЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ 2*2'
20 INPUT'ВВЕДИТЕ Alb А12/ А2ЬА22 'А/ В/ С/ И
30 PRINT'ОПРЕДЕЛИТЕЛЬ D='A*D-C*BsEND
Программа 3.50.
10 PRINT'ВЫЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ 3*3'
2© INPUT'ВВЕДИТЕ AlbA12/A13 'А/В/С
30 INPUT'ВВЕДИТЕ A2bA22/A23 'D/E/F
40 INPUT'ВВЕДИТЕ A3bA32/A33 '6,НИ
5© LETS=A*(E*I-H*F)+C*(D*H-G*E)+B*(F*6-D*I>
60 PRINT'ОПРЕДЕЛИТЕЛЬ D='SsEND
Программа 3.51
10 PRINT'ВЫЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ 4*4'
15 DIM A<4/4)SLETS=0
20 FOR 1=1 ТО 45 FOR J=1 ТО 4
30 PRINT'BBEAHTE ЭЛЕМЕНТ А='!2.0!I'/'J
40 INPUT A<bJ)sNEXT JsNEXT I
50 LETO=15LETP=25LETQ=3sLETR=456OSUB 120
60 LET0=35LETP=15LET0=2sLETR=4560SUB 120
70 LETO=15LETP=45LETQ=25LETR=356OSUB 12©
80 LETO=25LETP=35LETQ=15LETR=456OSUB 120
90 LETO=45LETP=25LETQ=15LETR=356OSUB 120
100 LETO=35LETP=45LETQ=15LETR=25GOSUB 120
110 PRINT!F1.9!'ОПРЕДЕЛИТЕЛЬ D='85STOP
120 LETB=A< b0>*A(2,P)-A<bP)*A<2>0>
130 LETS=S+B* < A < 3/Q > *A < 4/R > - A < 3/R > *A(4/Q))
140 RETURNS END
Программа 3.52.
10 PRINT'ВЫЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ'
20 INPUT'BBEAHTE ПОРЯДОК ОПРЕДЕЛИТЕЛЯ N='N
30 DIM A(N/N)sLETP=l
40 FOR 1 = 1 TO Ns FOR J=1 TO H
58 PRINT!2.0‘'ВВЕДИТЕ ЭЛЕМЕНТ A'lb'J
60 INPUT A<bJ)sNEXT JsNEXT I
70 FOR 1=1 TO N-lsFOR J=I + 1 TO N
80 LETAGJ, I>=A<JH)/A<bI)5F0R K=I + 1 TO N
90 LETA(J/K)=A<J>K)-A<J,I)*A(bK)5 NEXT K
100 NEXT JsLETP=P*A<b DsNEXT I
110 LETP=P*A<N/N)SPRINT!Fl.9!'ОПРЕДЕЛИТЕЛЬ D='PsEND
Программа 3.53.
10 PRINT'ВЫЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ ПО МЕТОДУ ГАУССА'
15 PRINT'С ВЫБОРОМ ГЛАВНОГО ЭЛЕМЕНТА ПО ВСЕЙ МАТРИЦЕ'
20 INPUT'ЗАДАЙТЕ ЗНАЧЕНИЕ N='NsHIM А<Н,Ю
25 FOR 1=0 ТО N-is FOR J=0 ТО N-l
30 PRINT!2.0!'ВВЕДИТЕ ЭЛЕМЕНТ А'1+1b'J+1'='
40 INPUT A<bJ)sNEXT JsNEXT IsLETP=0
50 LETZ=15LETD=lsF0R K=8 TO N-2
60 LETE=0sFOR I=K TO N-l
70 FOR J=K TO N-l5 IF ABS<E)>=ABS<A<bJ)> THEN 90
80 LETE=A<bJ)5LETB=IsLETC=JsNEXT JsNEXT I
98 IF K=B THEN 120
100 FOR J=K TO N-l5LETS=A<K?J)
110 LETA<K/J)=A<B,J)SLETA(B/J)=S8NEXT JsLETZ=-Z
120 IF K=C THEN 150
125 FOR I=K TO N-l
130 LETS=A<ЬK)5LETACbK)=A<bC)
140 LETA<bC)=SsNEXT IsLETZ=-Z
150 FOR I=K+f TO N-l:LET6=A<bK)/A<K/K)
160 FOR J=K TO N-lsLETACbJ>=A(b J)-G*A<K/ J)
170 NEXT JsNEXT P-NEXT K
180 FOR 1=0 TO N-lsLETD=D*A(bI)
190 NEXT IsLETD=D*ZSPRINT'ОПРЕДЕЛИТЕЛЬ D='!F1.9!DsEND
67
3
на 0 считается некорректной операцией.
Большие погрешности возникают, если
а1*~,)=#=0, но является малым числом.
Для повышения точности вычисления
определителя и исключения останова ЭВМ
в ходе вычислений применяются варианты
метода Гаусса с выбором главного элемента
по столбцу, строке или по всей матрице.
В последнем случае перед преобразованиями
в матрице А (3.5) выбирают наибольший
по модулю (главный) элемент, допустим а(/.
Далее переставляют первую строку матрицы
с i-й строкой (это и есть выбор главного
элемента по строке), а первый столбец
переставляют с /*-м (выбор главного элемента
по столбцу). При каждой такой перестановке
Решение этих уравнений определяет зна-
чения всех элементов матрицы Л~‘хц. Оно
выполняется по методам, описанным в § 4.1.
Для простых матриц обращение выполняется
по программам, реализующим готовые «ре-
цепты» процедуры обращения.
Программа 3.54.
1© PRIНТ‘ОБРАЩЕНИЕ МАТРИЦЫ 2*2'
29 INPUT’ВВЕДИТЕ AlbА12 ‘АлВ
25 INPUT’ВВЕДИТЕ А21/А22 ‘ОН
30 LETE=C*Bs LETF=A!LETE=D*F~E:LETA=D/E
40 LETD=FzEsLETC=-C/E5LETB=«B/E
50 PRINT ‘ОБРАЩЕННАЯ МАТРИЦА •’
60 PRINT А/ВSPRINT HsENU
Пример.
знак определителя меняется, поэтому ре-
зультат нужно умножить на (—1)р, где Р —
число перестановок.
Программа 3.53.
Пример.
1
1
I
9
2 3 4
2 4 6
2 4 8 — — 20.
8 7 6
Отметим, что вычисление этого определителя
по программе 3.52 ведет к останову ЭВМ
с индикацией ошибки (некорректная мате-
матическая операция).
Обратной матрицей называется матри-
ца Л-1, произведение которой на заданную
матрицу А дает единичную матрицу.
Обращение матрицы А заключается в на-
хождении обратной матрицы А~'. Для обра-
щения матрицы А используют следующие
основные соотношения:
А-А~' = <211 <212 <221 <222 <2Я1 <2я2 •.. <21 л .... <22п ... <2дд =
= Х|| Х12 X21 Х22 ... Х|Я • • • Х2л =
Х„1 Х«2 • • • v Хдл
1 0 0 1 0 0
0 0 ’’ i
Перемножая матрицы Л и Л получим п систем уравнений с п2 неизвестными:
<211*11 4“<212X21 4- ... 4“<2|nXnl <221X11 4-<222X21 4- ... 4“,<22пХп1 <2«|Х| 1 4“<2л2Х21 4“ ••• 4"<2плХл| = 1, =0, =0. (1)
<211*12 "Ь 012*22 “Г ••• 4"<21/i*n2 = 0,
<221*12 4- <222*22 4“ ... 4”<22п*п2= 1, (2)
<2п1*12 4“<2п2*25 4" • •• 4" <2плХд2 — 0.
<2| 1*1 п 4” <212*2п 4“ 4" <21 пХпп = 0,
<221*1я4_<222*2п4” ••• 4“<22п*пп = 0, (н)
<2nl*ln 4"<2п2*2п 4“ 4“<2nn*nn = 1 .
1,66666667 - 2,666666667
-1,333333333 2,333333333
Программа 3.55.
Пример.
4
Л= 8
2
8 0
8 8
0 1
л-‘ =
0,083333
0,083333
-0,16666
-0,083333
0,041666
0,16666
0,66666
-0,33333
-0,33333
(указаны, 5 значащих
Программа 3.56.
цифр результата).
Проверить эту программу можно по при-
меру, приведенному к программе 3.55.
Сложение и вычитание для двух матриц
Л и В с одинаковой размерностью тХп
производится по формуле
<чj — CLij Mz bjj,
где t = l, 2, m и / = 1, 2, ..., n. Здесь
сц — элементы результирующей матрицы С.
Программа 3.57.
05 PRINT‘СЛОЖЕНИЕ МАТРИЦ'
10 INPUT’ВВЕДИТЕ МлН ’МлН
15 DIM А(МлН>лВ<МлН>лС<МлН:)
20 FOR 1 = 1 ТО Ms FOR J=1 ТО N
30 PRINT‘2.01’ВВЕДИТЕ A‘lb‘J
40 INPUT АСЬ.J) s NEXT J: NEXT I
50 FOR 1 = 1 TO Ms FOR J=1 TO H
6© PR I NT •’ ВВЕДИТЕ ВЧ V J
65 INPUT B(bJ)
70 LET С ( b J ) = A < b J > +B < I л J )
80 HEXT J5 HEXT Is END
Пример. Для m — 2, n — 3
12 3 7 8 9
4 5 6’8 7 6
8 10 11
12 12 12
Умножение матриц А с размерностью mXn
и В с размерностью пХ/ выполняется по
формуле
п
cbl^ £ (aklbii),
/ = 1
где /=!, 2, ..., I и k—\t 2, ..., m, Полу-
чаемая матрица С имеет размерность тХ/.
68
Программа 3.55
10 PRINT'ОБРАЩЕНИЕ МАТРИЦЫ 3*3':DIM А(ЗлЗ)
15 INPUT'ВВЕДИТЕ А11лА12лА13 ' А< 1л 1)л АС 1л 2)л Й< 1/3)
28 IHPUT' ВВЕДИТЕ А21 , А22л А23 ' А С2/ 1 > г А < 2.» 2 > > А < 2 л 3 )
25 INPUT'ВВЕДИТЕ А31лА32лАЗЗ ' АСЗл1)л АСЗл 2>л АСЗл 3>
3© FOR К=1 ТО 3
35 ЦЕТА=АС2л 1 ).-'АС 1л 1 >: LETB=-A
40 LETC=A С 2 л 2 ) -А*А С 1л 2 >: LETD=А С 2 л 3) -А*А С 1л 3 >
50 ЬЕТА=АСЗл 1 >/АС 1л1 >: ЦЕТАС2л 3)=-А
60 ЕЕТАС2л 1 )=АСЗл2>-А*АС 1,2)
70 LET АС 2л2)=АСЗл3>-А*АС 1л3)
80 ЦЕТАСЗл 1 )=АС 1/ 2>/АС 1л 1)
90 LET А С 3/ 2 ) =А С1л 3 ) 'А < 1 л 1 >
100 ЕЕТА<ЗлЗ)=1'-'А<1л 1):LETA(1.> 1?=С
110 LETAС1л 2>=D:LETА С1л 3 >=В:NEXT К
120 PRINT'ОБРАЩЕННАЯ МАТРИЦА'
130 PRINT АС1л ПлАС1л2)л АС1лЗ)
140 PRINT АС2л1)лАС2л2)лА(2лЗ)
150 PRINT АСЗл 1)лАСЗл2)лА<ЗлЗ):ЕЫЛ
Программа 3-56.
05 PRINT'ОБРАЩЕНИЕ МАТРИЦ МЕТОДОМ ГАУССА’
18 PRINT'С ВЫБОРОМ ГЛАВНОГО ЭЛЕМЕНТА'
15 INPUT'ЗАДАЙТЕ N='N:DIM ЙСНлЮлРСИлН)
20 DIM ВСЮлССНлЮлБСЮлХСН)
25 FOR 1=1 ТО NsFOR J=1 ТО Ы
30 PRINT 12.0!'ВВЕДИТЕ А' I' л ' J' =': INPUT ACbJ)
35 LETPCb J>=ACbJJsNEXT JsNEXT I
40 FOR J2=l TO NSFOR 1=1 TO N
50 LETBCI>=0sNEXT I
60 LETBCJ2>=1
70 FOR J3=l TO NSFOR J4=l TO N
80 ЦЕТАСОЗл04)=РС03лJ4>sNEXT J4SNEXT J3
85 GOSUB 100 s FOR 1 = 1 TO N
90 PRINT!2.0!'X'I'л'J2'='!F1.9!XCI)
95 NEXT Is NEXT J2SST0P
100 LETNl=N-ls FOR K=1 TO Hl
110 IF АВ8СА(КлЮ>>0 БОТО 200
120 LETK1=K+1:FOR M=K1 TON
138 IF АВЗСАСМлК))>0 60T0 150
140 60T0 165
150 FOR L=1 TO N:LETU=ACKbL)sЦЕТАСКлЦ)=АСМлL)
160 ЦЕТА<МлЦ>=и8ЫЕХТ LsNEXT M
178 LETU=BС К)s LETB С К)=B С M)s LETBC M)=U
200 LE TG С К)=B С Ю zА С Кл К)s LETK1=K+1
210 FOR I=K1 TO NsLETBCI)=BCI)-AC1лK)*GCK)
220 FOR J1=K TO NsLETJ=N-Jl+KsLETCCK.-О)=ЙСКл J)zACK,IO
225 LETAC 1л J)=AC 1л J>-AC 1л ЮжССКл J)
230 NEXT Jis NEXT Is NEXT К
240 LETM=NsLETXCM)=BCM)zACM>M>
250 LETM=M-1sLETS=0sFOR L=M TO HI
260 ЕЕТ5=8+ССМлL+l)*XCL+1>sNEXT L
270 LETXCM>=GCM>-SsIF M>1 GOTO 250
280 RETURNS END
Программа 3.58.
10 PRINT’УМНОЖЕНИЕ МАТРИЦ M*N И N*L'
20 INPUT'ВВЕДИТЕ МлНлЦ'МлНлЦ
30 DIM А<МлН)лВ<НлЦ)лС<НлЦ)
40 FOR 1=1 TO Ms FOR J=1 TO N
50 PRINT!2.0!'ВВЕДИТЕ A' I', ' Js INPUT A<bJ>
60 NEXT JSNEXT I
70 FOR 1=1 TO NsFOR J=1 TO L
80 PRINT'ВВЕДИТЕ В'I' л ' Js INPUT B(bJ)
90 NEXT JsNEXT I
100 FOR K=1 TO MsFOR J=1 TO LsLETS=0
110 FOR 1=1 TO NsLETS=S+A<K> 1)*В<1лJ)sNEXT I
120 LETC<K.«J)=5sNEXT JsNEXT К
130 PRINT'РЕЗУЛЬТАТ'
140 FOR K=1 TO MsFOR J=1 TO L
150 PRINT!2.0!'C'K’/'J'='!Р1.9!С<КлJ)
160 NEXT JsNEXT KsEND
69
Программа 3.58.
Пример. Для zn = 4, п = 5, / = 3
12345 \23 15 30 45
6 7 8 9 1 2 , 31 62 93
2 3 4 5 6 Х 20 40 81
7 8 9 12 2 . 27 54 81 1 Z U
Умножение матрицы на вектор R =
d=(ri, г2, ...» Г/») выполняется по формуле
п
Ui= Z a‘iri-
где i=|, 2, m. В результате получаем
вектор U. = [Vb у2, ..., и,«}.
Скалярное произведение векторов А =
= {аь а2, ..., <2п) и В={6ь 62.Ьп} есть число
п
с= £
1-1
где z= 1, 2, п.
Ввиду простоты составления программ для
двух последних операций они не приводятся.
§ 3.6. Вычисление факториалов
и комбинаторика
Факториал ври целом п 1
rt! = n-(n — 1)-(л —2)-... - 2-1 (3.6)
с особым случаем 0! = 1 у ряда ПЭВМ может
вычисляться микропрограммно (найгример,
с помощью оператора ! у ПЭВМ БХ-702Р}.
Если такой возможности нет, вычисление
факториала проводится по формуле (3.6).
Программа 3.59л
05
10
20
30
40
50
70
PRINT*ВЫЧИСЛЕНИЕ ФАКТОРИАЛА
INPUT 'ВВЕДИТЕ ЧИСЛО ЧИСЕЛ I
LET l=0s LET Р«1
LET I=I+ls LET P=P*I
IF I<N THEN 30
PRINT 'ФАКТОРИАЛ N»='P
GOTO 108 END
N='H
Пример 5! = 120, 101 = 3628800.
При n>70 значения nt выходят за пре-
делы разрядности болншинства ПЭВМ
(и!> Ю90).
Для приближенного вычисления фак-
ториала больших чисел и Применяется
формула Стирлинга [10, 36].
Функция nF! вычисляется ио формуле
пц==-(п(п — 2)-... • 1 при нечетном л,
|п(п — 2)-...-2 при четном п,
Программа 3.60.
Пример. 7!! = 105, 8!! = 384.
Число перестановок Ря = л!, а число раз-
мещений из п элементов по т
АХ = М/(п-т)..
Число сочетаний из п элементов по т
С™ ~п\/((п~т)\т\),
причем п>1 и 1<т<п.
’ Программа 3.61.
Пример. Для т = 5 и н = 10 По-
лучим
Рю = 3628800, А?»=30240 и С?0 = 252.
Подобным способом можно вычислять и
другие функции, содержащие члены с фак-
ториалами.
Программа 3.60.
05 PRINT'ВЫЧИСЛЕНИЕ ФУНКЦИИ N! '
10 INPUT'ВВЕДИТЕ ЧИСЛО N='HsLETA=N/2sLETB=l
15 FOR 1=1 ТО 10
20 IF A-INT<A)=0 THEN 60
30 FOR 1=1 TO N STEP 2
4© LETB=B»I;NEXT I
50 GOTO 80
60 FOR J=2 TO H STEP 2
70 LETB=B*.J8HEXT J
80 PRIНТ'ЗНАЧЕНИЕ N!!='B
90 GOTO 10sEND
Программа 3.61.
10 PRINT'РАСЧЕТ ЧИСЛА ПЕРЕСТАНОВОК/ РАЗМЕЩЕНИЙ'
20 PRINT'И СОЧЕТАНИЙ ИЗ N ЭЛЕМЕНТОВ ПО М'
30 INPUT'ВВЕДИТЕ ЦЕЛЫЕ ЧИСЛА N, М 'N/M
40 LETX=NsGOSUB 100sLETP=R
50 LETX=N-MsGOSUB 100sLETA=P/R
60 LETX=MsGOSUB 100sLETC=A/R
70 PRINT'ЧИСЛО ПЕРЕСТАНОВОК PN='P
80 PRINT'ЧИСЛО РАЗМЕЩЕНИЙ A M/N='A
90 PRINT'ЧИСЛО СОЧЕТАНИЙ C M/N='CsSTOP
100 LETR=lsFOR I=X TO 1 STEP -1
110 LETR=R*IsNEXT IsRETURNS END
70
§ 3.7. Преобразования координат
и векторный анализ
Преобразование координат из декартовых
в полярные на плоскости описывалось
в § 2.3. Преобразование декартовых коорди-
нат X, У, Z в сферические в пространстве
(рис. 3.1) проводится по формулам
fl=7x2+r2+Z2 . Q = arctg(//X),
<p=arccos(Z/R),
где R — полярный радиус, Q — долгота и
Ф—широта. Обратные преобразования про-
водятся по формулам
X — R sin ср cos Q, Y — R sin ср cos Q, Z —
= R cos (p.
Таким образом, если положить Z = 0, <р = 90°,
то из этих формул вытекают формулы для
преобразования декартовых координат в по-
лярные и наоборот на плоскости.
Программа 3.62.
Рис. 3.1. Декартова и сферическая системы
координат
10 PRINT'ПРЕОБРАЗОВАНИЕ КООРДИНАТ В ПРОСТРАНСТВЕ'
20 PRINT'СФЕРИЧЕСКИХ В ДЕКАРТОВЫ -КОД 0'
30 PRINT'ДЕКАРТОВЫХ В СФЕРИЧЕСКИЕ-КОД 1'
40 INPUT'3AAAhTE КОД 'As IF А=1 THEN 110
50 INPUT'ВВЕДИТЕ ПОЛЯРНЫЙ РАДИУС R='R
60 INPUT'ВВЕДИТЕ ДОЛГОТУ-УГОЛ(ГРАД) Q='QsLETQl«RAD<0)
70 INPUT'BBEAHTE ШИРОТУ-УГОЛСГРАД) F='F:LETF1=RAD(F)
80 LETX=R*SIH(Fl)*COS<Ql)sLETY=R*SIN<Fl)*SIN<Ql)
90 LETZ=R*COS(Fi)sPRINT'ДЕКАРТОВЫ КООРДИНАТЫ'
100 PRINT'X='Хл'Y='Y>'ZS'Z:STOP
110 INPUT'ВВЕДИТЕ КООРДИНАТЫ ХлУл2 'ХлУлЗ
128 LETR=SQR< X«X+Y*Y+Z*Z)s LETF== ACS < Z/R)s LETQ«ATN < Y/X )
130 PRINT'ПОЛЯРНЫЙ РАДИУС R='R#'ДОЛГОТА О='ПЕ&(О)'ГРАД'
140 PRINT'ШИРОТА F='DEG(F)'ГРАД'SEND
Пример. Для R— 10, Q = 40° и — Р —
= 60° получим (код 0) X — 6,634139482, Y —
= 5,566703992 и Z = 5, а для X=y=Z= 10
получим (код 1) /?= 17,32050808, Q = 45°
и ф = Г = 54,73561032° .
Преобразование декартовых координат
на плоскости при сдвиге и повороте коорди-
натных осей (рис. 3.2) осуществляется по
формулам (далее 0 = Q)
X' = (X - X(l) cos Q -Н (Y - Го) si n Q,
Y' = (Y- Уо) cos Q - (X - Xo) sin Q,
где X' и У' — новые координаты точки
(X, У), Хо и Уо—координаты центра новой
системы координат.
Программа 3.63.
Рис. 3.2. Преобразование декартовых координат
на плоскости при сдвиге и повороте осей
10 PRINT'ПРЕОБРАЗОВАНИЕ КООРДИНАТ НА ПЛОСКОСТИ'
20 INPUT'ЗАДАЙТЕ УГОЛ ПОВОРОТА ПЛОСКОСТЕЙ (ГРАД) Q='Q
30 LETO=RAIKQ)s INPUT'ЗАДАЙТЕ КООРДИНАТЫ ЦЕНТРА Х0лУ8 'Вл С
40 INPUT'ВВЕДИТЕ СТАРЫЕ КООРДИНАТЫ ХлУ 'X/Y
45 LETX1=<X-B)*COS<Q)+<Y-C)*SIN<Q)
50 LETY1=(Y-C)*COS(Q)-<X-B)*SIN<Q)
60 PRINT'НОВЫЕ КООРДИНАТЫ'
70 PRINT'Xl='Xb'Yl='Yls60T0 40SEND
Пример. Для Q = 20°, Xo = 3, Уо = 2,
X = 5 и У = 5 получим
X' =2,905445672 и Y' =2,135037676.
Вектор (отрезок) с координатами начала
(Х|, У|) и конца (Х2, У2), лежащий на
плоскости, имеет длину
£>=У(Х2-Х|)2+(),2-Г1)2-
Координаты точки (X, У), делящей этоТ
отрезок в отношении M/N-. ч
WX,+MX2 y_NY^MY2
M + N ’ M + N
71
Программа 3.64.
19 PRINT'ДЛИНА ОТРЕЗКА И ЕГО ДЕЛЕНИЕ В ОТНОШЕНИИ M/N'
20 INPUT‘ЗАДАЙТЕ КООРДИНАТЫ ТОЧКИ 1 XbYl 'XbYl
30 INPUT'ЗАДАЙТЕ КООРДИНАТЫ ТОЧКИ 2 X2/Y2 'X2,Y2
4© LETD=SQR<(Х2-Х1)~2+(¥2-Yl)”2)
50 PRINT'ДЛИНА ОТРЕЗКА D='D
60 INPUT*ЗАДАЙТЕ M,N 'M/N
70 LETX=<N*X1+M«X2)/<M+H>
80 LETY==<N»Yl+M*Y2)z<M+N>
90 PR I NT > КООРДИНАТЫ ТОЧКИ ДЕЛЕНИЯ ОТРЕЗКА**
100 PRINT'Х='Х/ 'Y='Y:END
Пример. Для Xt = 2,3, У|=4, X2 = 8,5
и У2 = 0,7 получим £> = 7,023531875. За-
дав М = 3 и N — 2, получим Х = 6,02 и
У = 2,02.
Полярными параметрами прямой ДХ4-
4- В У 4- С = 0, лежащей на плоскости
(рис. 3.3), являются полярное расстояние
от нее до точки (0,0)
Р=|С|/л/л2 + б2
и полярный угол Q, вычисляемый из соотно-
шений
cos Q= +4/уД24-В2,
sin Q = т5/д/л2 + б2,
где знак — берется, если С> 0, а знак 4-,
если С<0.
Программа 3.65.
Рис. 3.3. Полярные параметры прямой на пло
скости
10 PRINT’ПОЛЯРНЫЕ ПАРАМЕТРЫ ПРЯМОЙ A«X+B»Y+C=0'
20 INPUT'ВВЕДИТЕ А/В/С 'А, В/С
30 LETD=1UF С>0 THEN LETD=-1
48 LETF=SQR<А*А+ВжВ)з LETP=ABS<C)/F
50 PRINT'КРАТЧАЙШЕЕ РАССТОЯНИЕ ДО ТОЧКИ* <0/0> Р«'Р
60 PRINT'COS(Q)='D*A/F/ 'SIN<Q)='D=*B/F
70 PRINT-’УГОЛ Q='HE6<ACS<B*A/F>)sEND
Пример. Для 4=3, В=—4 и С=10
получим Р = 2, cosQ=—0,6, sinQ = 0,8 и
Q = 126,8698976°.
Вектор в пространстве с началом в точке
(0,0,0) декартовой системы координат и
концом в точке (X, У, Z) имеет длину
о=л/х2+г2+г2
и образует с осями координат углы
a = arccos (X/D), 0 = arccos (Y/D)
у = arccos (Z/£>).
Программа 3.66.
10 PRINT'ДЛИНА ВЕКТОРА И УГОЛ МЕЖДУ НИМ И КООРДИНАТНЫМИ ОСЯМИ'-
20 INPUT'ЗАДАЙТЕ КООРДИНАТЫ КОНЦА ВЕКТОРА XcY/Z 'X/Y/Z
30 L.ETD=SG!R<X«X+Y*Y+Z*Z> sLETA=X-'D:LETB=Y.'DsLETC=Z-'H
40 PRINT'COS АЛЬФА='А,'COS EETA='B/'COS ГАММА='С
50 PRINT'АЛЬФА='DE6<ACS<A)>,'БЕТА='DE6<ACS<B>)/
60 PRINT'rAMMA='DE6<ACS<C))s0OTO 20s END
72
Пример. Для Х — 2, Y= — 2 и Z= — l
получаем cos а = 0,666666667, cosp =
= -0,666666667, cos у =—0,333333333, а =
= 48,1896851°, р= 131,8103149° и у =
= 109,4712206°.
Два вектора с началом в точке (0,0,0)
и концами в точках (Х>, У>, Zi) и (Х2, Уг, Z2)
образуют между собой угол (рис. 3.4)
Х|Х2У1 У2 "4” Z| Z2
Q = a rccos ---------— ' —~~~ •
-д/^+И + Z? -yJXl+Yl + Zl
Длина отрезка, заданного концами этих век-
торов или просто точками с их-координатами,
D=V(X, -Х2)2+(Г| - K2)2 + (Zi —Z2)2 •
Координаты точки (X, У, Z), делящей
этот отрезок в отношении M//V, выражаются
формулами
WX,+MX2 УУ14-МГ2
M+N ’ M+N ’
Рис. 3.4. Отрезок в пространстве, образован-
ный двумя векторами, исходящими из точки
(0, 0, 0)
JVZ14-MZ2
M4-W
Программа 3.67.
1© PRINT‘УГОЛ МЕЖДУ ДВУМЯ ВЕКТОРАМИ/ ДЛИНА ОТРЕЗКА МЕЖДУ'
20 PRINT'ИХ КОНЦАМИ И КООРДИНАТЫ ТОЧКИ/ДЕЛЯЩЕЙ ОТРЕЗОК В'
30 PRINT' ОТНОШЕНИИ М-'Н'
40 PRINT'ВВЕДИТЕ КООРДИНАТЫ КОНЦА ПЕРВОГО ВЕКТОРА'
50 INPUT'XI/VI/Z1 'А/В/С
60 PRINT'ВВЕДИТЕ КООРДИНАТЫ КОНЦА ВТОРОГО ВЕКТОРА'
70 INPUT'X2/V2/Z2 'D/E/F
80 LETS=SQR< <A-D)J‘‘2+<B-E)'%2+<C-F)^2)
90 LETQ=SQR ( A*A+B*B+C*C ) #SQR < D*D+E*E+F*F >
100 LETQ==<A*D+B*EK*F)/Q
110 PRINT'УГОЛ МЕЖДУ ВЕКТОРАМИ<ГРАД) Q=='DEG<ACS(Q) )
120 PRINT'ДЛИНА ОТРЕЗКА H='S
130 INPUT'ЗАДАЙТЕ M/N 'M/№LETR=M+N
140 LETL=A:LETK=D5GOSUB 190:LETX=W
150 LETL=B5LETK=E:GOSUB 190sLETV=W
160 LETL=C:LETK=F!GOSUB 190!LETZ=U
170 PRINT'КООРДИНАТЫ ТОЧКИ ДЕЛЕНИЯ'
180 PRINT'X='X/'V='V/'Z='Z5 GOTO 130
190 LETW=<N*L+M*K)/R:RETURNs END
Пример. Для векторов At (8; —3; 8) и
Д2 (6; —1; 9) получим Q—14,6712486°
и D = 3. Задав М=1 и V = 4, находим
Х = 7,6, У=—’2,6 и Z = 8,2.
Плоскость в пространстве декартовой
системы координат, описываемая уравне-
нием AXA-^YA-CZA-D — 0, имеет полярные
параметры (см. рис. 3.5)
р=|О|/л/Л7+В2’+'С5-
a = arccos (ТЛ/д/'/42-Ь В2 -|- С2),
р = arccos ( Т В/^А2'-|- В2 -j- С2),
y = arccos (Т С/-\]~А'2 + В2 +-С2 L
где Р — кратчайшее расстояние от точки
(0,0,0) до плоскости, а, 0 и у — полярные
углы (между перпендикуляром, опущенным
на плоскость из точки (0,0,0) и осями коор-
динат).
Рис. 3.5. Полярные параметры плоскости, распо-
ложенной в пространстве
73
Ориентированное расстояние от точки
(Л|, И|, Zt) до дайной плоскости
L H^+Br. + CZi+D
т/Л’ + В’ + С2'
Знак L указывает на расположение точки
(Ль ZJ сверху или снизу плоскости.
Программа 3.68.
1© PRINT'ПОЛЯРНЫЕ ПАРАМЕТРЫ ПЛОСКОСТИ A*X+B*Y+C*Z+D«0'
20 PRINT' И РАССТОЯНИЕ ОТ НЕЕ ДО ТОЧКИ MICXbVbZIV
30 INPUT'ВВЕДИТЕ ПАРАМЕТРЫ A/B/C/D 'А/В/С/И
40 LETR=lsIF D>0 THEN LETR=-1
50 LETM=SQR < A:*A+B*B+C*C ):LETA1 =DE6 < ACS ( R*A/M ) )
60 LETB1=DEG(ACS<R»B/M) > 5LETG1==DEG<ACS<R*C/M> >
70 PRINT-'УГЛЫ В ГРАДУСАХ':PRINT'АЛЬФA='Al
86 PRINT'БЕТA='В1:PRINT'ГAMMA='61
90 INPUT'ВВЕДИТЕ КООРДИНАТЫ ТОЧКИ XbYl/Zl 'X>Y,Z
100 LETL=<A*X+B*Y+C*Z+D)/M
110 PRINT'РАССТОЯНИЕ ДО ТОЧКИ L='Ls&OTO 9©SEND
Для 4<=1 В—~2, C = 2 и £>——3 —131,8103149° и у ==48,1896851°. Для точки
получаем ₽i=l, а = 70,52877937°, ₽= (5,5,5) £ = 0,666666667.
ГЛABA 4
АЛГОРИТМЫ И ПРОГРАММЫ РЕАЛИЗАЦИИ ОСНОВНЫХ
ЧИСЛЕННЫХ МЕТОДОВ
§4.1. Решение систем линейных
уравнений
Системы, из п линейных уравнений вида-
ОцХ| 4“'«12Х24“ . ..4“«1«Xrt = 6|,
Я2|Х| 4-«22^2 + ... + «2пХл = &2, (4.1)
«Ч1*1 4? «л2Х2 4~ • 4" dnnXn — Ьп
решаются: точными и итерационными мето-
дами. Точные методы даюъ точное решение
за конечное число операций, если все они
выполнялись без погрешности. Число операций
у итерационных методов зависит от заданной,
погрешности вычислений.
Метод Гаусса или метод последователь-
ного исключения неизвестных основан на-
приведении матрицы -коэффициентов ац к тре-
угольному виду. При этом алгоритм решения
системы (4.1) следующий,
I. С помощью двух циклов с управляю^
щимн переменными / = 1, 2, ..., п и / =
= 1, 2, ..., п организуем ввод коэффициен-
тов Oij и bj, образующих массивы А{1, J).
и вцу:
2. Проводим прямой ход исключения пере-
менных путем преобразования коэффициен-
тов, (4.1) по формулам
«р== ац/уц.\ ajk Qjk a^ciik', bf — bi 4" а^Ьн
где /= 1; 2, ..., л.—1 ;./==/4-h <4*2, ..., п
и. /?f=/’4“L /'4-2,..:, В конце этих пре-
образований получаем
Хп== Ь п/апп.
3. Организуем обратный ход (последо-
вательное нахождение хЯт1, хя_2, .... х2, x\)f
проводя вычисления цо формулам
h-b, n Ji = h—Xian,
где i — п — 1, и — 2..2, 1, / = 74~. 1, * 4“’2, .. .
..,, п и. x. — hjau. В результате формируется
массив .Х.(/)< неизвестных к , xn_i, .... х2, xv.
4. Организуем вывод, массива Х(/).
Программа 4.1.'
Пример. Для системы (л = 3)
4х । .4- 0,241'2 — 0,08хз — 8,
0,09х>4г. Зх2-0,15хз = 9. С4'2)
0.04*1-0,08x2 4- 4 ц = 20
находим Xi ?= R909Н>8284; х2 = 3,194964417
и х4 = 5,044807306. Если, коэффициенты а,,
близки к 0, может наступить аварийный
останов ЭВМ, либо из-за погрешностей округ-
ления точность сильно ухудшается. Это явля?
ется недостатком простейшей реализации
метода Гаусса.
Метод Гаусса с выбором главного элемента
заключается в том, что при прямом ходе
производится выбор наибольшего по модулю'
(главного), элемента и перестановка строк
или столбцов (см. рис. 4.1). Последнее
исключает деление на 0; если матрица А (/, /)
содержит нулевые элементы, и повышает
точность вычислений при наличии ошибок
округления. Для ПЭВМ, ведущих вычисления
с числами с плавающей запятой, достаточен
выбор А (Д /) со-
программа 4.2.
Пример. Для системы
3xi 4“2х24“Хз = 4,
Xi4~ х2—- хз=1, (4.3)
Xt — 2х24-Хз = 3.
получим Х| = 1,7; х2 =—0,6 и хз = 0,1.
Метод вращения [24] является разно-
видностью метода Гаусса, обладающей по*
выщенной устойчивостью к «провалам» про-
межуточных вычислений. Этот метод обеспе-
чивает приведение исходной системы» (4.1)
к системе с правой треугольной матрицей
по следующему алгоритму.
1. Вводим ан и bt.
2. Вычисляем
Л Л du 1
Мы ——-------- и Ьы—--------------,
причем если а<?==а«=0, то Ж=1 и L*, = 0.
Проводим преобразования системы по фор?
мулам
МщУ? ГыУь = Mkibi Lkibk,
Lktyt Mkiyk.^^ Lkibi Мы-bk,
где f= 1, 2.....n4- 1, fc = /4-1, /4-2,. ..., n,.
у, и у* — левые части,, а b, и. bk — пра-
вые части /-го и k-ro уравнений соответ-
ственно.
После п(п—1)/2 шагов приходим, к си*
стеме с верхней треугольной матрицей.
3. Осуществляем обратный ход:
Хт = (Й1? — 4-1 хт + I 7—-а\ппХп) /а\пт,
где т — п, п — 1» ..., 1.
75
Программа 4.1.
05 PRINT'РЕШЕНИЕ СИСТЕМЫ ИЗ N ЛИНЕЙНЫХ УРАВНЕНИЙ'
10 INPUT 'ЧИСЛО УРАВНЕНИЙ N='N
20 DIM A(N,N),B<N>,X(N>
30 FOR 1=1 TO № PRINT «2.0»'ВВОД КОЭФ. УРАВНЕНИЯ 'I
40 FOR J=1 TO № INPUT A<bJ)
56 HEXT Js INPUT B<I>:NEXT I
6© FOR 1=1 TO N-l: FOR J=I + 1 JO N
70 LETA<J,I)=-A<J>I)/A(I,I)sFOR K=I + 1 TO N
80 LETACJjK>=A<JjK>+A<J/ I.WbK)! NEXT К
90 LETB(J>=B<J)+ACJ,I)*B<I>: NEXT Js NEXT I
100 LETX<N)=B(N)/A(N/N>
110 FOR I=H-1 TO 1 STEP -is LETH=B<I)
120 FOR J=I+1 TO Ns LETH=H-XGJ)*A(b JMNEXT J
130 LETX<I)=H/A(I, I)’.NEXT I
140 PRINT 'КОРНИ СИСТЕМЫ УРАВНЕНИЙ'
150 FOR 1=1 TO Ns PRINT‘2.0» 'X<'I')='sPRINT!E? X<I)
160 NEXT IS END
Программа 4.2.
10 PRINT'РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ УРАВНЕНИЙ МЕТОДОМ'
20 PRINT' ГАУССА С ВЫБОРОМ ГЛАВНОГО ЭЛЕМЕНТА'
30 INPUT'ЗАДАЙТЕ ЧИСЛО УРАВНЕНИЙ N= 'N
40 DIM A(NfN)/B<H)/C<H/N)/0<H>/X<N)
50 FOR 1=1 ТО Ns FOR J=1 TO N
60 PRINT!2.0!'ВВЕДИТЕ A' I'/' J'='s INPUT A<bJ)sNEXT J
70 PRINT'BBEAHTE B'I'='sINPUT B<I)sNEXT I
80 GOSUB 100
85 FOR 1=1 TO N
90 PRINT!2.0?'X'I'='!F1.9!X<I)sNEXT BSTOP
100 LETNl=N-ls FOR K=1 TO Hl
116 IF ABS<A(K/K))>0 GOTO 200
120 LETKl=K+lsFOR M=K1 TON
130 IF ABS<A<M/K))>0 GOTO 150
140 GOTO 165
150 FOR L=1 TO NsLETU=A(K.»L)sLETA<K^L)=A<M/L)
160 LETA<M/L)=U*NEXT L
165 NEXT M
170 LETU=B<K)sLETB<K)=B<M)sLETB<M)=U
200 LETG<K)=B<K)/A<K,K):LETK1=K+1
210 FOR I=K1 TO №LETB(I)=B<I)-A<I.»K)*G<K>
220 FOR J1=K TO NsLETJ=N-Jl+KsLETC<K> J>=A<K^J)/A<K/K>
225 LETA<bJ)=A(bJ)-A<bK)*C(K, J)
23© NEXT Jis NEXT Is NEXT К ,
240 LETM=NSLETX<M)=B<M)/A<M^MX
250 LETM=M-lsLETS=0:FOR L=M TO N1
260 LETS=S+C(M,L+l)*X<L+l)sNEXT L
270 LETX<M)=G(M>-SsIF M>1 GOTO 250
280 RETURNS END
76
/И7=Ж-7 /Г=7
нет
/аММ
да
/7=/Г+7
L-1
М=М+1
X
1А(ММ>0
да
M*N
ON
V=B(B); В(К)-В(М)\
BM=V;G(B)=B(K)/A(K,^
V=A(K,L)
A(K,L)=A(M,L) *i
A(M,L)=V
7=/Г+7 L-L^1
B(l)=B(l)~A(I,K}*
*G(K) J1=K
Л=^+4
нет
L— Л=Л4-7
J=N-J1^K;C(K,J)=
jAtZ^Afl,^-
-А(1,К)*С(НД)
нет
T1>N
да
JON
да
K>N1
да
M=N
BfM)
Рис. 4.1. Алгоритм реализации метода Гаусса с выбором главного элемента
77
Программа 4.3.
10 PRINT'РЕШЕНИЕ СИСТЕМЫ ЛИНЕЙНЫХ УРАВНЕНИЙ >
15 PRINT' МЕТОДОМ ВРАЩЕНИЯ'
20 INPUT'ВВЕДИТЕ ЧИСЛО УРАВНЕНИЙ N='№LETM=0sDIM A(N/N)
25 FOR 1=1 ТО NsFOR J=1 TO N
30 PRINT«2.0»'ВВЕДИТЕ КОЭФФИЦИЕНТ A'I'/'J
40 INPUT Ad, J) 5 IF JON THEN 60
50 PRINT'ВВЕДИТЕ В'В INPUT А(Ь0)
68 NEXT J5NEXT I
78 FOR 1=1 TO N-lsFOR K=I+1 TO N
80 IF А(Ы)О0 THEN 118
90 IF АСК/I >08 THEN 118
180 LETM=lsLETL=0s6OTO 138
110 LETM=SQR<Ad, I>л2+А<К, I )~2)
128 LETL=-A<KH)/MsLETM=A<bI)/M
138 FOR J=1 TO NsLETR=M*A<bJ)-L*A<K,J)
148 LETA<K/J)=L*A<bJ)+M*A(K, J)
158 LETACbJ)=R:NEXT J
168 LETR=M*Ad,8)-L*A(K/6)
178 LETACK/8>=L«A<b0)+M*A(K/0>
180 LETAC b0>=R:NEXT K: NEXT I
198 FOR I=N TO 1 STEP -1:LETM=8
200 FOR K=8 TO N-I-l
218 LETM=M+AC0/N-K>MACbN-K>’.NEXT К
220 LETAC8/ I>=САСЬ8)-М)/АСЬ I)
238 PRINT12.8!'КОРЕНЬ X'l '='1F1.9!AC8/I?
240 NEXT BEND
Для проверки программы можно решить
уравнение (4.3). Результат совпадает с ука-
занным выше.
Метод простых итераций, описанный
В § 4.4 для систем нелинейных уравнений,
применим и для решения систем линейных
уравнений. Однако его сходимость гаранти-
руется, если значения диагональных элемен-
тов матрицы Д(/, /) превосходят остальные,
что снижает применимость метода простых
итераций (хотя любые системы линейных
уравнений можно свести к нужному для
сходимости виду с помощью преобразований,
описанных в [7]). Сказанное относится и
к методу Зейделя.
Программы реализации этих и некото-
рых других методов частного применения
даны в Приложении 5.
Отметим, что итерационные методы обла-
дают свойством самоисправления ошибок
в ходе вычислений и могут применяться в
особых случаях, например, когда матрица
коэффициентов at/ сильно разрежена, т. е.
содержит много нулей.
Метод минимизации заключается в поиске
минимума целевой функции
F(xb х2, ...» Xn)=lfl(Xl, х2, ...» хя)14~...
...4- lh(xi, х2, хя)|,
компоненты которой формируются из урав-
нений решаемой системы
/|(хь х2, ..., хя) —ацХ]4-ai2x2-|-...
...4-а1яхя — bi,
fi(xi, х2, ..., xrt)=a2|Xi4-a22x2-f-...*
... 4-а2яхл — bi,
/n(xi, х2, ..., хя) = аЯ|Х|4-ая2х24-...
• ♦ • 4" аппхп Ьп.
Если Х|, х2, ..., хп — решение (4.1), то функ-
78
ция F (х\, х2, ..., хя)=0. Для реализации
этого метода могут использоваться программы
поиска минимума функции ряда переменных,
описанные в § 5.6.
§ 4.2. Интерполяция
и экстраполяция
Интерполяция функции у (х) одной пере-
менной х, заданной («4-1) узлами yt (х<),
где / —О, 1, 2, ..., п, заключается в нахожде-
нии значений у по значениям х, находя-
щихся в промежутках между узлами х,. При
интерполяции функция у (х) заменяется ин?
терполяционцым полиномом Р (х), значения
которого Р (х,) в узлах точно совпадают
с у (х,). Значение п задает степень поли-
нома Р (х).
Формулы Лагранжа для интерполяции
при равномерном расположении узлов обеспе-
чивают наименьшее время интерполяции, не
требуют обновления ввода у, и хо для вычис-
ления каждого у(х) и позволяют вычислять
у, в узлах Xi (например, для контроля правиль-
ности вычислений). В этих формулах индек-
сом 0 обозначается центральный узел. Для
«4-1=24-6 формулы Лагранжа имеют вид
[36]
«Хх)2=(1 -р)уо + ру,+0,125Н^'(1У.
* Z
+0,065ft V" (5);
,2+Л(р).
I где
I (0;02WV (g)llpH,0<p< 1».
[ 10a042h*y v (g) прд. — 1 .< p < O.<
! 1:<р<2<
g | f
±Др(р’-«) >l+.
+ ,,+w
где.
f 0,012Л»/й) при IpKl,
^=U,031ft5/a) при l<fp|<2;
^..= _M-'hp-w-3)
120
, Pto-IHP2-4)(p-3)
+----------24-------y-' -
(р2.-1>(Д2-4)(р-3) ,
,. p(p.+ l)(p2-4)(p —3)
+ _ if, .
p(p2-I)(p.+ 2)(/?-3). .. ,
-----------24....... *i +
+-------[go-----Уз "* 'Pi'
где
.0.0049/ЛЛ'‘(5) ПРИ 0<р<1,
_ '.0,0071A*/'®.
RtP)—. при — 1<р<0. 1<р<2,
0.Q24 Л6/'(^)
при —2<р< —1, 2<р<3.
В этих формулах
*=xo-Fpx, Р=(х^Хо)/Л,
где Л — шаг расположения узлов, индекс у
у(х) соответствует числу узлов (ft^-l),
4п+,(В) — максимальное значение производной
у(х) аля точки х = £, лежащей в пределах
интерполяции. Последний член формулы
(он в программах не вычисляется) харак-
теризует погрешность интерполяции.
Пример (к программе 4.4). Для кон-
троля этой программы выполним интерполя-
цию функции Струве На (х)=у (х) [36], за-
данной таблицей, при х0=1 и Л = 0,2:
4-2 = 0,36699114; ! =0,4739944; 40 =
= 0,5686566; 41=0,648855 ; 42 = 0,7117925 и
4з~ 0,7570255.
1. При линейной интерполяции (Л4 = 1)
для х=1,1 получим 4(1,1) =0,6087558.
2. При квадратичной интерполяции
(Л4 = 2) получим 4(0$) =0,5231716; 4(1,1) =
= 0,6104494.
3. При кубической интерполяции (М=3).
получим 4(0,9) =0^5230539688; 4(1,1) =
= 0,6105670313,
4. При Л4 = 4 получим 4(0,9) =
= 0,5230357695; у (I,L) = 0,6105779508.
5. При М=5, получим 4(0,9).=
= 0,5230350945; у( 1 •! ).= 0,6105786258.
> M«*MsLETN«M+l
*2/Hi IF N=3 THEN 10B
*АгВ
Программа 4.4,
10 PRINT'ИНТЕРПОЛЯПИЯПРИ H«CONST ПО ФОРМУЛАМ ЛАГРАНЖА*
20
30
40
50
60
70
80
90_____
100 IHPUT'BBEAHTE Y-lrY0rYl
110 INPUT*ВВЕДИТЕ X-*X:LETP*<X-Z>zH
120
130
140
158
160
170
180
190
208
210
228
238
240
258
260
270
288
298
380
INPUT*ЗАДАЙТЕ СТЕПЕНЬ ПОЛИНОМА М=1-5
IHPUT'BBEAHTE Х0гН
IF н>4 THEN 140
IF Н»5 THEN 190
IF N®6 THEN 250
IHPUT'BBEAHTE Y0/Y1
INPUT'ВВЕДИТЕ X«*XiLETP»<X-Z>/H
LETY*<l~P)*A+P*BiPRINT*Y»'Y*GOTO 80
, U-t-UA.UI 'АлВ/С
LETY»P»<P-i >»A/2+<1-P«P>«B+P»<P+1>«C/2
PRINT*Y«*YiGOTO 110
IHPUT'BBEAHTE Y-bY0/Yl,Y2
INPUT'BBEAHTE X«*XiLETP»(X-Z>/HiLETE«<P-2)/2
LETY»-P*<P-1>*E»A/3+<P«P-l>«E*6
LETY=Y-P*<P+1>«E*C*P«<P»P“1>*0/6
PRINT*Y«*Yi60T0 150
INPUT * ВВЕДИТЕ Y-2, Y-Ь Y0, Yb Y2 Ar В/ Cr Dr E
IHPUT'BBEAHTE X»*XiLETP»<X-Z)/H
LETF*(P*P-l>/2«LETK«(P»P-4>/2
LETY«F»P*<P-2 > «А/12-< P-1>*P*K«B/3+F*K*C
LETY”Y-<P+1>*P*K*D/3+F*P«<P+2>«Ez12
PRIHT'Y«'Yi60T0 200 _ л _
INPUT'BBEAHTE Y-2rY-lrY0rYlrY2rY3 'ArBrCrDrErF
INPUT'BBEAHTE X»*X1LETP«<X-Z>/HtLETM»P«P-1
LETI«M/24iLETJ«-P»I»<P-3>iLETK»M-3iLETL»K*<P-3)/12
LETY«J*<P-2>*A/5+L«P*CP-l>*B/2-M*L«C
LETY«Y+P*<P*1 )«L»IHJ»<P- ‘'*=
PRINT*Y»*Y1GOTO 260>END
7?
Точные значения Но(х): //о(0,9) =0,523035
и Яо( 1,1) = 0,6105787.
Существует ряд специальных видов поли-
нома Р(х) (Ньютона, Эверетта и др.) [4, 5, 7,
18, 24, 30, 38]. Однако следует помнить, что
полином Р(х\ имеющий P(xi)=yfa), является
всегда единственным. Поэтому при пренебре-
жении погрешностью вычислений ЭВМ все
виды интерполяции должны давать одина-
ковый результат. Это характерно для совре-
менных ПЭВМ, оперирующих числами с пла-
вающей запятой й имеющих нередко скрытые
разряды для повышения точности вычислений.
Интерполяция по методу Эйткена заклю-
чается в вычислении у(х) при произвольно
расположенных узлах без явного построения
интерполяционного полинома. Последнее
достигается путем последовательного приме-
нения формул линейной интерполяции:
и т. д. В приведенной ниже программе
с М = 2~-6 для ускорения счета интерпо-
ляция ведется прямо по приведенным фор-
мулам.
Программа 4.5.
у( 1,55) = 0,8888683478 (все цифры результата
верные).
Интерполяция полиномом Лагранжа при
произвольном расположении узлов в общем
случае сводится к вычислению y(x) = Ln(x)
с помощью интерполяционного полинома,
имеющего вид (рис. 4.2)
[ (Y\_ (* х ।) (х х%)... (х Хп)
} (xo-XI)(xo-x2)...(xo-Xn)^ +
| (х —хо)(х —х2) ... (х — Хп)
(X!— Хо)(Х|— х2) ... (Xi— Хп)
(х —Хр) (х — Х| ) . . . (XХп—। )
(Хп Хо) (.Хп ” Х|) . . . (хп Хп—1)
Программа 4.6.
Пример. Используя данные примера
к программе 4.5, получим (/(1,55) = 0,888868348.
Интерполяция с одновременным полу-
чением коэффициентов полинома
P(x) = anxn~l-an—ixn 1-|-...-j-aix 4~оо
может выполняться с применением интер-
поляционной формулы Ньютона [4, 24]:
Рп-1(х) = {/1+(х — Х|)/(Хь х2)Ч-
+ (Х — Х1)(х — x2)f(xr, х2; Хз)+(х—Х1)(х —х2)...
п — 1
... (х — Хп—1) f (Xj; х2; ...; х„) = £ Л*ф<;
( = 0
где Л0 = (/ь Л* = /(хь х2; ..., xft+i) — разде-
ленные разности К-го порядка (К=1, 2,
05 PRINT'ИНТЕРПОЛЯЦИЯ ТАБЛИЦ С ЧИСЛОМ УЗЛОВ ДО ШЕСТИ'
10 INPUT 'ЧИСЛО УЗЛОВ АО ШЕСТИ №'М
20 LETB2«08 LETB3=0sLETB4=0sLETB5«08 LETB6=0s LETX3=0sLETX4=0sLETX5»©
30 INPUT 'ВВЕДИТЕ X0>Y8' X0/Y8
40 INPUT 'ВВЕДИТЕ XbYl'XbYl
50 LETB0«Y0ILETQ1»<V1-Y0>/<X1-X0)SLETB1=Q1
60 IF M»2 THEN 210
70 INPUT 'ВВЕДИТЕ Х2лУ2'Х2лУ2
80 LETQ2«<Y2-Y0>/<X2-X0)8LETR2«<Q2-Q1>/<X2-Xl>
90 LETB2«R2s IF M»3 THEN 210
100 INPUT 'ВВЕДИТЕ X3,Y3'X3,Y3
110 LETQ3=<Y3-Y0)/<X3-X0)s LETR3*<Q3-Q1)/<X3-Xl)
120 LETS3«<R3-R2>/<X3~X2>8LETB3»S3s IF M«4 THEN 210
130 INPUT 'ВВЕДИТЕ Х4лУ4'Х4/У4
140 LETQ4*<Y4-Y0>Z<X4-X0>8LETR4«(Q4-Q1)z<X4-Xl>
150 LETS4»<R4-R2)/<X4~X2)sLETL4’=<S4~S3>/<X4-X3>
160 LETB4«L4s IF M=5 THEN 210
170 INPUT 'ВВЕДИТЕ X5/Y5' X5/Y5
180 LETQ5=<Y5-Y0>/<X5-X0)8LETR5«<Q5-Q1>/(X5-X1)
190 LETS5«<R5-R2)/<X5-X2>8LETL5=<S5-S3>/(X5-X3>
208 LETB5«<L5-L4>z(X5-X4>
210 INPUT 'ВВЕДИТЕ X»'X
220 PRINT'?®'<(<<В5*(Х-Х4)+В4>ж(Х-ХЗ>+ВЗ>*<Х-Х2>+В2>*(Х-Х1)+В1)*<Х-Х0)+В0
230 GOTO 2108 END
Пример. Для контроля этой программы
проведем интерполяцию гамма-функции
Г(х)—У(х\ заданной А4 = 6 значениями х,
и у< (36]< х0=1,5; i/0 = 0,8862269255; xi =
= 1,51; 1/1=0,886591685; х2= 1,525; у% —
=0,8872930231; х3=1,54; (/3 = 0,8881776586;
х4=1,54; (/4 = 0,889639199; х5=1,59 и (/5 =
=0,8924282141. Тогда для х=1,55 получим
3, ...» /г — 1) и ф0=1;
i l k
ч>|= П (x~xi)= Е Ф/х‘~'; Ф‘*=(-1)' п xi>
z /-о А /=1
Z (-ir+'oi-z+m Z(-1Ap)ra;
m=l р=1
Фо=1; »=1, 2, .... n-l; k=\, 2...i.
80
Программа 4.6.
1й PRINT'ИНТЕРПОЛЯЦИЯ ПО ЛАГРАНЖУ ДЛЯ N+1 УЗЛОВ*
2й INPUT*ВВЕДИТЕ №=*№ГПМ A<N)sDIM В<Ю
7.й FOR 1=0 ТО № PRINT!3.0!'ВВЕДИТЕ X* I
4й INPUT А<1)SPRINT ‘ВВЕДИТЕ ‘т, л I
INPUT B<I)SNEXT I
INPUT'ВВЕДИТЕ Х=лXsLET8=0 , _.
IF X=A<0) THEN PR1NT!F1.9‘?Y<X.J = -B'JJ?SbOTU ьИ
FOR J=1 TO NsLETC=1sFOR 1=1 TO N
LETD=A< J)~A< I >s IF I=J THEN LETD=X-A's J? _ _
i IF D=0 THEN PRINT!1.9!лУ<Х)=ЛB<I)sbUTU bb
i LETC=C*<X-A(I>>/DsNEXT I
i LETS=5+C:*B<J)sNEXT J
t PRINT!1.9!* V<* X ’ ) = * S s ВОТU bbs END
50 :
во :
70 :
80 I
90 I
100
110
120
130
81
Программа 4.7.
10 PRINT*ПОСТРОЕНИЕ ИНТЕРПОЛЯЦИОННОГО ПОЛИНОМА НЬЮТОНА*
20 PRINT*И ИНТЕРПОЛЯЦИЯ ПРИ ПРОИЗВОЛЬНО РАСПОЛОЖЕННЫХ УЗЛАХ*
30 INPUT*ЗАДАЙТЕ ЧИСЛО УЗЛОВ N«'NiDIM А<Н)лЕ<ЮлХ<НЪУ(Н>
40 FOR I«1 ТО Hi PRINT!2.0!'ВВЕДИТЕ Х*1* л Y'J
50 INPUT Х<1ЪV<I>iNEXT HLETA<1)«1ILETF<N>=Y<1)
60 FOR I«1 TO H-ltLETF<I)»0iNEXT I
70 FOR K«1 TO N-lIFOR I«1 TO N-K
80 LEmfXV<I*D-Y<I»/<X<r+X)-X<I)>iHEXT I
90 LETR-HIF K/2-INT<K/2>OQ THEN LETR«-1
100 LETP«HFOR J«1 TO KiLETP«P*X<J>iNEXT J
110 LETACK+l>=R*PlIF K»1 THEN 170
120 FOR L=1 TO KitETW«0iFOR M«=l TO L
130 LETRMHF K/2-INT(K/2><>0 THEN LETR«-i
140 LETS«0iFOR P«1 TO KiLETS»S+R*<l/X<P>>^iNEXT P
150 LETW*W+<-R>«A<K+l+M-L>»SiNEXT M
160 LETA<K-L+l>«W/LiHEXT L
170 FOR J=H TO N-K STEP -1
1S0 LETF<J>«F<J>+A(J-H+K+l>*Y<i):NEXT JiNEXT К
190 PRINT'КОЭФФИЦИЕНТЫ СТЕПЕННОГО МНОГОЧЛЕНА'
200 FOR I«1 TO NiPRINT»2.0!'A'H-I!F1.9!'*'F<I)iNEXT I
210 INPUT'ВВЕДИТЕ ЗНАЧЕНИЕ X«'XiLETS=F(l>iFOR 1=1 TO N-l
220 LETS=S*X+F(I+l>iNEXT I
230 PRINT1F1.9!'Y<X>«'StGOTO 210IENB
Пример. Пусть надо построить интер-
поляционный полином для интеграла вероят-
ности у (х) = Фо (х) = (1 Л/2л) 5 ехр (— /2) dt,
о
заданного пятью узлами у{ (2,2) =±=0,4860966;
У2 (2,3) = 0,4892759; у3 (2,4) = 0,4918025;
у4 (2,5) =0,4937903 и у5 (2,6) =0,4953388. Вве-
дя эти значения, найдем: а0= —0,1706447;
а । ==0,805165666; а2=-0,3712775; а3 =
= 0,07783333333 и 04= —0,0625. Далее можно
вычислить у(х) для заданного х (в том числе
и в узлах интерполяции).
Экстраполяция — получение значений у(х)
при х, не принадлежащем отрезку (х0, хп]
или [xi, Xn+i],- также осуществляется по
описанным выше программам, но с суще-
ственно большей погрешностью. Для гладких
у(х) экстраполяция целесообразна при х,
выходящих за указанные пределы не более
чем на Л/2.
Обратная интерполяция — процесс на-
хождения значений х по заданным значе-
ниям у. Она может выполняться по любой
программе интерполяции с произвольно рас-
положенными узлами. При этом вместо зна-
чений Xi вводятся значения «/,, а вместо
у, — значения xt.
Многоинтервальная интерполяция заклю-
чается в интерполяции у{х$ в ряде частич-
ных интервалов (ограниченных двумя узлами
или группой узлов) отдельными полиномами
невысокой степени. Такая интерполяция
может применяться при широком общем
отрезке [а, 6], когда обычная интерполя-
ция полиномом высокой степени дает большую
погрешность и ведет к большому времени
вычислений. Заметим также, что по виду
полинома и значениям его коэффициентов
трудно судить о виде зависимости «/(х).
Многоинтервальная кусочно-линейная
интерполяция при равномерном расположе-
нии узлов сводится к заданию начального
значения х^-а, шага h (расстояния между
узлами), номера п последнего узла и (n-j-l)
ординат i/о, i/i, ..., уп, после чего вычисление
у(х) при заданном х выполняется по фор-
мулам
i = int ((х-—а)/А),
, 4/W=yi+{yi +1 — У<) —ih — a)/h.
На примере многоинтервальной кусочно-
линейной интерполяции отчетливо видны
общие свойства многоинтервальной интер-
поляции: степень интерполирующего поли-
нома (в данном случае 1) не зависит от
числа узлов; с ростом последнего погреш-
ность интерполяции монотонно стремится
к нулю; для любого интервала вычисление
у(х) производится по одним и тем же* относи-
тельно простым (из-за малой степени поли-
нома) формулам, поэтому время вычислений
г/(х) при заданных х мало; массив yi несет*
наглядную информацию о виде зависи-
мости £/(х).
Задание асимптотического поведения
у(х) при x<Zxo — a и х^> b~a-\-nh заклю-
чается в линейной экстраполяции, т. е.
вычислении у(х) за пределами отрезка
[а, 6] по формулам
у(х) = £/о+(х — а)(у}— yo)/h при х<а,
«/W = i/nH-(x — b)(yn — yn-\)/h при х>6.
Такое задание не всегда строго, но позво-
ляет избежать грубых искажений асимптоти-
ческого поведения экстраполирующей функ-
ции у(х) за пределами отрезка [а, , которые
нередко наблюдаются при обычной поли-
номиальной экстраполяции.
Многоинтервальная квадратичная интер-
поляция заключается в задании четного
числа парных интервалов (п — четное число)
с вычислением «/(х) при заданном х по фор-
мулам (хо — а)
f ==int ((х—-a)/2/i)-|-1, р = (х — a — ih)
и
+Й+0,,,.,.
82
Выражение для у(х) есть интерполяцион-
ная формула «Лагранжа для трех ординат,
применяемая для каждого частичного интер-
вала.
Асимптотическое поведение у(х) задается
с помощью линейной экстраполяции с вы-
числением первой производной в концах
общего отрезка [а, 6] по формулам числен-
ного. дифференцирования для трех точек:
у(х)—уо+(х — а)(4у1—у2~Зуо)/2/1 при х<а,
=уп 4- (х — Ь) (Зуп 4-уп _ 2 — 4уп _•) )/2/i
при х>6.
Сплайн-интерполяция есть специальный
вид многоинтервальной интерполяции, при
котором интерполирующий полином обеспе-
чивает не только равенство у(х) значениям
у, в узлах, но и непрерывность заданного
числа первых производных на границах
частичных интервалов. В общем случае
сплайн задается глобальным способом, т. е.
с использованием всех узлов при любом их
расположении (см. § П5.11 Приложения 5).
Ниже рассматривается задание кубичекого
сплайна локальным способом, которое реали-
зуется сравнительно просто и требует суще-
ственно меньшего объема памяти ЭВМ,- чем
при глобальном способе задания.
Кубический сплайн, заданный локально,—
это интерполирующая функция в виде поли-
нома третьей степени, вычисляемая по
формулам [6],
z = int ((х — а)/К),
h
4. (х-х.')2№+1—х) + д) yf+ , _|_
(х,+ |— Х)2(Х — X,) m
_|-------—--------frll —
h'
где m, и mi+\ — первые производные у(х).
Производные локального сплайна могут зада-
ваться двумя способами.
Способ 1. Производные mt и
вычисляются с помощью формул численного
дифференцирования по трем точкам:
mt = (yi+[ — yi-\)/2h для z = l, 2, ..., и—1,
m0 — (4yi — у2 — 3yo)/2h для z = 0,
тп = (Зуп+уп-2 — 4yn-\)/2h для i = n.
Способ удобен тем, что для задания сплайна
требуется вводить лишь ординаты yt (зна-
чения вычисляются программой). Для
уменьшения времени многократных вычисле-
ний у(х) желательно предварительно вычис-
лить массив mi и хранить его в памяти ЭВМ.
Способ 2. Значения mt (вычисленные
отдельно или полученные из графика как
наклоны его в узлах) задаются непосред-
ственно в виде массива ть
Задание асимптотического поведения z/(x)
за пределами отрезка [а, Ь] осуществляется
так же, как и при многоинтервальной квад-
ратичной интерполяции. У рассмотренного
локально заданного сплайна непрерывны
лишь нулевая и первая производные (у гло-
бально заданных кубических сплайнов не-
прерывна также и вторая производная).
Кусочно-линейная и многоинтервальная квад-
ратичная интерполяция рассматриваются как
дефектные сплайны, у которых обеспечива-
ется непрерывность только нулевой произ-
водной. Все эти виды интерполяции реали-
зуются программой 4.8. После задания
нужного вида интерполяции вычисления
у(х) выполняются подпрограммами: кусочно-
линейная интерполяция — экстраполяция со
строки 1000, квадратичная — со строки 2000
и кубическая — со строки 3000. Эти под-
программы могут использоваться для задания
(аппроксимации) нелинейных зависимостей
z/(x) в дополнительных программах, вписы-
ваемых пользователем в программу 4.8.
Программа 4.8.
10 PRINT'АППРОКСИМАЦИЯ/ИНТЕРПОЛЯЦИЯ И ЭКСТРАПОЛЯЦИЯ*’
20 PRINT'СПЛАЙНАМИ ПРИ ЛОКАЛЬНОМ ИХ ЗАДАНИИ'
30 INPUT'ВВЕДИТЕ НАЧАЛЬНОЕ ЗНАЧЕНИЕ Х0=*А
40 INPUT'ВВЕДИТЕ ШАГ Н='Н
50 INPUT'ВВЕДИТЕ НОМЕР ПОСЛЕДНЕГО УЗЛА Н='№П1М 7<Н)
60 FOR 1=0 ТО Ns PRINT*3.0*'ВВЕДИТЕ V'I
70 INPUT Y<I)sHEXT I
80 INPUT'ВВЕДИТЕ ПОРЯДОК 1/2 ИЛИ 3 ПОЛИНОМА'Р
90 IF Р=2 THEN 130
100 IF Р=3 THEN 150
. 110 INPUT'ВВЕДИТЕ X='XsGOSUB 1000
120 PRINT*F1.9*'Y<X>='WsGOTO 110
130 INPUT'ВВЕДИТЕ X='XsGOSUB 2000
140 PRINT*F1.9’.'Y(X)='WsGOTO 130
150 PRINT'3AAAATE КОД 0-DY/DX HE ЗАДАЕТСЯ'sDIM M(N>
160 INPUT'ЗАДАЙТЕ КОД 1-DY/DX ЗАДАЕТСЯ'К
170 IF K=0 THEN 200
180 FOR 1=0 TO Ns PRINT*3.0»'ВВЕДИТЕ DY/DX'I
190 INPUT MOSNEXT Is GOTO 230
208 LETM<0>=<4»Y<l)-Y<2)-3»Y<0))/2/H
210 LETM<N)=<3*Y(N)+V(N-2)-4*Y<N-lH/2/H
220 FOR 1=1 TO N-lsLETM<I)=(Y<I+l)-V<I-l)>/2/HsNEXT I
230 INPUT'ВВЕДИТЕ X='XsGOSUB 3000
83
240 PRINT!F1.9!'Y(X>«'W8GOTO 230
1000 REM'ВЫЧИСЛЕНИЕ Y<X)»W ПРИ СТЕПЕНИ ПОЛИНОМА 1'
1010 IF Х<«А THEN 1050
1020 LETB»A+H*HiIF X>=B THEN 106©
1030 LETI«INT<<X-A)/H)8LETW»V<I)
1040 LETW«W+<V<I+1)-V<I))»<X-I*H-A)/H8RETURN
1050 LETW»Y<0>+<X~A>*<V<1)-V<0))/HiRETURN
1060 LETW«V<H)+<X-B>*<V<N)-Y<N-1»/HtRETURN
2000 REM'ВЫЧИСЛЕНИЕ Y<X)«W ПРИ СТЕПЕНИ ПОЛИНОМА 2'
2010 IF XOA THEN 2060
2020 LETB«A*H»№IF X>=B THEN 2070
2030 LETI«l+2»INT<(X-A>/2/H)sLETP«(X-A-I*H)/H
2040 LETW«P*<P-l)*Y<I-l)/2+<l-P*P)*Y<I)
2050 LETW«W+P*<P+1)*Y<1+1>/2iRETURN
2060 LETU=V<0>-KX-A)*<4*Y<l)-Y<2)-3*Y<0)>/2/HrRETURN
2070 LETW=V(N)+<X-B)*<3*Y<N)+Y(N-2>-4»Y^H-l))/2/HsRETURN
3000 REM'ВЫЧИСЛЕНИЕ Y<X)«W ПРИ СТЕПЕНИ ПОЛИНОМА 3'
3010 IF X<«A THEN 3080
3020 LETB»A+N*H:IF X>«B THEN 3090
3830 LETI»INT < < X-A >/Н > 8 LETB=A+H*I
3840 LETC»B+H8LETD«X-C8LETE»X-B
3050 LETW=D*D*<E+E+H)*Y(I)+E*E*<H-D-D)*Y<I+l>
3060 LETW«W/H+D«B*E*M<I>
3070
3080
LETU=(W+E*E*D*M(I+1)J/H/H8 RETURN
LETW«Y< 0 >♦< X-A > *M < 8)s RETURN
3098 LETW*=Y<N)+<X«B>mM(H)8RETUR№END
Пример. Провести интерполяцию (ап-
проксимацию) W-образной вольт-ампёрной
характеристики туннельного диода, заданной
в виде
влияние на ход у(х) по всей кривой, что
качественно неверно описывает физические
явления, лежащие в основе нелинейности
интерполируемой функции.
Xi=Ut В 0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8
yi = 1, мА 0 10 4 2 1,5 2 5 9 13
Задаем хо=О, /i = 0,l и п — 8. Введя
ординаты yt для кусочно-линейной интер-
поляции — экстраполяции, будем иметь
8/(0,1) = 10, (/(— 0,1) = — 10, 8/(0,05) = 5, 8/(0,8) =
= 13 и т. д. Для многоинтервальной квад-
ратичной интерполяции — экстраполяции
у(0, 1) = 10, у( - 0,1) = - 18, 8/(0,25) = 2,8125,
8/(1) = 21 и т. д. Для кубической сплайн-
интерполяции и экстраполяции i/(0,l)=10;
8/(0,25) = 2,65625, у( - 0,1) = -18, у( 1) =
= 21 и т. д.
Из этого примера видно, что для задания
сплайна, аппроксимирующего некоторую за-
висимость 8/t(x<), достаточно задать лишь
определенное число ее ординат 8/t. Массив
значений yi сохраняется в памяти ЭВМ
и в любой момент может быть использован
для восстановления вида аппроксимируемой
зависимости, например, для вывода по точкам
ее графика.
Достоинством локально заданных сплай-
нов является описание свойств зависимо-
сти yi (xf) на каждом частичном интервале
независимо от ее свойств на других ин-
тервалах. Подобное поведение нередко встре-
чается на практике, например, восходя-
щие туннельная и диффузионная ветви
W-образной вольт-амперной характеристики
туннельного диода обусловлены совершенно
различными физическими явлениями. Отме-
тим, что у обычной полиномиальной аппрок-
симации этого свойства нет и изменение
8/(х) вблизи какого-либо узла оказывает
84
Более точной, но и более сложной, является
аппроксимация сплайнами при глобальном их
задании. В этом случае коэффициенты т( вы-
числяются по всем узлам yi (х/). Этот вид ап-
проксимации рассматривается в § П5.11.
Интерполяция функции двух переменных
х и у по трем точкам (см. рис. 4.3, а) выпол-
няется по формулам
Кх, y)=(i-p—q)foo+pfto + qhi,
где р=(х —xo)/h и q—(y—ya}/l. Здесь
h — шаг изменения х, а / — шаг измене-
ния у. Несколько лучшие результаты дает
интерполяция по четырем точкам
(рис. 4.3, б):
f(x, «/) = (! -р)(1 —q)fbQ-^p(l-q)f[^
+ ?(1— Р) foi+pt/fii.
Ошибка при этом пропорциональна Л2.
При интерполяции по шести точкам
(рис. 4,3, в)
р (р —2р4-1)
+ (l+p<Z-p2-^)foo+ 2 f,o+
, q(.q—2p+i)c , __с
т-----2~—'°' + wn1
погрешность пропорциональна h3.
У
"(0,1)
(0,0) (l,0)
О зв
"(0,l)»(1,l)
(0,0) (1,0)
О X
У
"(0,1)*(1,1)
^0,0) (1,0)
(-1,0) О х:
"(0,~1)
Рис. 4.3. Расположение равноотстоящих узлов при интерполяции функции двух переменных по 3(a),
4(6) и 7(в) точкам
Программа 4.9.
10 PRINT ’ИНТЕРПОЛЯЦИЯ ФУНКЦИИ ДВУХ ПЕРЕМЕННЫХ'
20 PRINT’FCX/Y) ПО 3,4 И 6 ТОЧКАМ'
30 INPUT'ЗАДАЙТЕ ШАГ X Н='Н
40 INPUT’ЗАДАЙТЕ ШАГ V L=’L
50 INPUT’ЗАДАЙТЕ ЧИСЛО ТОЧЕК 3/4 ИЛИ 6 N=’N
60 IF N=4 THEN 90
70 IF N=6 THEN 100
80 INPUT'ВВЕДИТЕ F00/F1G/FG1 ’А, В?C:GOTO 110
90 INPUT’ВВЕДИТЕ FGG, Fl О/ FGl, Fl 1 ' А,Вл С/ Ds GOTO 110
100 INPUT'ВВЕДИТЕ FG-l? F-10, FGG? FIG? F01 .<• Fl 1 'A,B/C?D/E, I
110 INPUT'ВВЕДИТЕ ЗНАЧЕНИЯ XG/YG 'XG/YG
12G INPUT’ВВЕДИТЕ X/Y 'X/Y
130 LETP=<X-XG)zHsLETQ=(Y-YG)zLsIF N=4 THEN 160
140 IF N=6 THEN 170
150 LETF=( 1-Р-0)жА+РжВ+С.!жС! GOTO 19G
160 LETF= (1-P > ж(1-Q)жй+Рж< 1 -G!>жВ+Сгж (1 -P )жС+РжОжЦs GOT0 19G
170 ЕЕТР=0ж<0-1>жА/2+Рж(Р-1)жВ/2+<Д+Р*б-РжР-0жб)жС
18G L.ETF=F+P*(P-2*Q+1 )жВ/2+бж<13-2жР+1 )жЕ/2+Рж0ж!
190 PRINT'F<X/Y)='FsGOTO 12G8END
Контрольные примеры. Интер-
поляция функции последействия
М= \у-^‘-г -хе ‘ dz,
заданной таблично.
1. Интерполяция по трем точкам. Задано:
и = 3; Л = 0,3; / = 0,1; хо = О,4; t/o = O; /оо = 2,5;
/01 =2,456 и /.о =1,429. Получим [(0,7; 0,05) =
= 1,407; /(0,4; 0,05)^2,478 и т. д.
2. Интерполяция по четырем точкам.
Задано: п = 4, h — 0,3; I — 0,1; хо = О,4; z/0 = 0;
/оо = 2,5; До= 1,429; Д, =2,456 и fn = l,4.
Получим ДО,7; 0,05)= 1,4145; ДО,5; 0,08) =
= 2,1118 и т. д.
3. Интерполяция по шести точкам. Задано:
м = 6, А = 0,3; / = 0,1; хо = О,7; //о = 0,05;
Д_| = 1,429; /-.0 = 2,487; /00=1,419, До =
= 0,995; /о1 = 1,4; /и =0,981. Получим
ДО,4; 0) = 2,502; ДО,5; 0,03) = 2,065857778.
Многоинтервальная квадратичная интер-
поляция — аппроксимация функции двух пе-
ременных может использоваться, когда не-
обходимо интерполировать или аппрокси-
мировать таблично или графически задан-
ные функции двух переменных. Такая интер-
поляция — аппроксимация удобна, например,
для вычисления токов по заданным напря-
жениям у приборов с графически опреде-
ленным семейством вольт-амперных харак-
теристик (биполярных и полевых транзисто-
ров, тиристоров и т. д.). Алгоритм интер-
поляции — аппроксимации следующий.
1. Функция Дх, у) задается в виде матри-
цы F(I, J), где / — номер строки таблицы
(или кривой графика), J — номер столбца
(или точки на кривой). При нумерации
I и J с 0 имеем 0^/^/V—1 и 1,
где А— число строк (кривых), М — число
столбцов (точек на каждой кривой). Кроме
того, задаются приращения (шаги) Ax = /i =
= const и Az/ = / = const и начальные зна-
чения хо~а и уо = Ь.
2. Для каждого значения х и у вычис-
ляются:
J = int ((х — a)/h), если J = 0, то берем 7=1,
Z = int((i/ — если / = 0, то берем /=1,
Р = (х — a — Jh), Q — (у — b — II).
3. Для каждого / = /—1, /, /4-1 (в пра-
вой части / соответствует вычисленному
в п. 2) вычисляется значение
Z = P(P—\) F(l, / — 1 )/2-J-(1 — Р2)Л(/, /) +
4-Р (Р4-1) F (/, J + D/2.
Эти значения присваиваются переменным С,
D и Е. Таким образом, обеспечивается тройная
квадратичная интерполяция по переменной х.
4. Выполняется квадратичная интерпо-
ляция по переменной у;
Z = Q(Q- 1) C/2 + (l -Q2) D + Q(Q+ 1) Е/2.
Считаем Р(х, z/) = Z.
85
При аппроксимации неоднократно исполь-
зуются п. 2, 3 и 4 алгоритма. Общее время
вычислений примерно в 4 раза больше, чем
при квадратичной интерполяции — аппрокси-
мации функций одной переменной.
Программа 4.10.
всех корней сводится к локализации.
корня с последующим сужением отрезков
локализации корня [а, 6] одним из описан-
ных далее методов.
IS PRINT'МНОГОИНТЕРВАЛЬНАЯ ДВУХМЕРНАЯ КВАДРАТИЧНАЯ •'
20 PR I NT •’ ИНТЕРПОЛЯЦИЯ-АППРОКСИМАЦИЯ ФУНКЦИИ F(X,Y)'
30 INPUT‘ЗАДАЙТЕ ЧИСЛО ТОЧЕК КАЖДОЙ КРИВОЙ М=‘М:LETM=M-1
40 INPUT‘ЗАДАЙТЕ ЧИСЛО КРИВЫХ Ы=л№LETN=N-1sDIM F(N,M)
5© INPUT ‘ЗАДАЙТЕ X0/Y0 'А/В
60 INPUT’ЗАДАЙТЕ ПРИРАЩЕНИЯ ПО X И Y - Н,L ЛН,Е
70 FOR 1=0 ТО № FOR J=0 TO M
80 PRINT! 3.0?‘ВВЕДИТЕ Y? Г'’ Js INPUT F(bJ)
30 NEXT Js NEXT I
100 INPUT'ВВЕДИТЕ Y/X л‘AXsGOSUB 4000
110 PRINT!F1.9!’F<X/Y)=,ZsG0T0 100
4000 REM’ПОДПРОГРАММА ВЫЧИСЛЕНИЯ F<X/Y)?
4010 LETJ=INT<<X-A)/H)sIF J=© THEN LETJ=1
4020 LETI=INT<<Y-B)xL)sIF 1=0 THEN LETI=1
4030 LETP= < X-A-J*H)/Н:LETQ=(Y-B-1)xL
4040 LET1=1-1:GOSUB 4080:LETC=Z
4050 LETI=I+2:GOSUB 408©:LETE=Z
4060 LET1=1-1:GOSUB 4©8©:LETD=Z
4070 LETZ=Q* < Q-1)ЖС/2+ < 1 -Q*Q > *H+C'* < Q+1) *E/2: RETURN
4030 LETZ=P* (P-1 >-*F < I / J-1) /2+ < 1-РЖР ) *F < I r J )
4090 LETZ=Z+P*(P+1)*F<IrJ+1)/2!RETURN:END
Пример. Пусть требуется провести
интерполяцию для семейства вольт-амперных
характеристик мощного полевого транзистора
(F(x, y} — lc(Uv, U3), где Ic — ток стока,
х=(Д. — напряжение на стоке и у — U3 —
напряжение на затворе), если она задана
таблицей (Д/ = Л4 = 6, /? = 10, /—1, t/o = 3,
хо = 0):
Метод простых итераций основан на пред-
ставлении (4.4) в виде
x = f(x) (4.5)
и многократном применении итерационной
формулы хп+1 =f(xn) до тех пор, пока соблю-
дается условие
|хн+.| — xj ^>Е, (4.6}
Напряжение на затворе /Л в Напряжение на стоке х, В
0 1° 20 30 40 50
3 0 0 0 0 0 о.
4 0 0,35 0,4 0,45 0,5 0,55
5 0 0,8 1,1 1,2 1,22 1,25
6 0 1,25 1,8 2 2,12 2,15
7 0 1,8 2,7 3,15 3,17 3,2
8 0 2,95 4 4,45 4,5 4,7
Значения токов приведены в амперах.
Введя эти данные, будем получать F(35;
5,5) — 1,631875 А; Л45; 7,5) = 3,8375 А и т. д.
Отметим, что этот метод обеспечивает высокую
точность аппроксимации для семейств доста-
точно сложных кривых, в том числе не моно-
тонных.
§ 4.3. Решение нелинейных и транс-
цендентных уравнений
Решение нелинейных (в частности, транс-
цендентных) уравнений вида
Г(х) = 0 (4.4)
заключается в отыскании одного или всех
корней на отрезке [а, 6] изменения х. Обычно
стараются локализовать каждый корень
в своем отрезке [а, Ь]. Тогда нахождение
86
где £ — заданная погрешность вычисления
корня х. Итерационный процесс сходится
(т. е. хп -* х при и-> оо), если соблюдается
условие f' (х) < 1 при a<Zx<Zb.
Программа 4.11.
В строке 70 программы 4.11 записано
выражение f(x)~sin x-f-0,25 (подпрограмма),
соответствующее решению трансцендентного
уравнения
F(x) = x — sin х — 0,25 = 0. (4.7)
Для начального значения х = х()=1,2 и-По-
грешности е = Е=1 -10"6 получим х —
= 1,71230493 при времени счета около 5 с.
Метод Ньютона (касательных) основан
на замене F(x) в точке начального прибли-
жения х = хо касательной, пересечение кото-
рой с осью х дает первое приближение хь
и т. д. (см. рис. 4.4). Таким образом, итера-
ционный процесс схождения к корню реали-
Программа 4.11.
10 PRIНТ’РЕШЕНИЕ УРАВНЕНИЯ X=F(X) МЕТОДОМ’
15 PRINT' ПРОСТЫХ ИТЕРАЦИЙ-’
20 INPUT’ЗАДАЙТЕ НАЧАЛЬНОЕ ЗНАЧЕНИЕ X Х0=’Х
25 INPUT’ЗАДАЙТЕ ПОГРЕШНОСТЬ РЕЗУЛЬТАТА Е=’Е
30 GOSUB 70
40 IF ABS(F-X)<E THEN 6©
50 LETX=F:60T0 30
60 PRINT'КОРЕНЬ X=’Xs GOTO 20
65 REM’ПОДПРОГРАММА ВЫЧИСЛЕНИЯ F(X)'
70 LETF=SIN<X)+.25
75 RETURN:END
зуется формулой
хл+) =хл —F(xn)/F'(x„), (4.8)
до тех пор, пока соблюдается условие (4.6).
Метод обеспечивает быструю (квадратич-
ную) сходимость, если
F(xo) F"(x0)> 0. (4.9)
В качестве хо выбирают тот конец отрезка
[а, Ь], на котором знаки F(xo) и F"(xo) совпа-
дают. Выигрыш во времени вычислений за
счет быстрой сходимости уменьшается из-за
необходимости вычисления помимо Г(хл)
производной F'(xn). Исключение составляют
частные случаи, когда выражение, по ко-
торому вычисляется F(xn)/F'(xn), не сложнее
выражения для вычисления F(x«) отдельно.
Программа 4.12.
Рис. 4.4. Решение уравнения F (х) =0 методом
Ньютона (касательных)
10 PRINT'РЕШЕНИЕ УРАВНЕНИЯ F<X)=0 МЕТОДОМ НЬЮТОНА'
20 INPUT’ЗАДАЙТЕ НАЧАЛЬНОЕ ПРИБЛИЖЕНИЕ Х0='Х
25 INPUT•’ЗАДАЙТЕ ПОГРЕШНОСТЬ РЕЗУЛЬТАТА Е='Е
30 GOSUB 60!LETX*X-F
40 IF ABS<F)>E THEN 30
50 PRINT'КОРЕНЬ УРАВНЕНИЯ X='X:GOTO 20
55 REM'ПОДПРОГРАММА ВЫЧИСЛЕНИЯ F(X)/<DF/DX)'
60 LETF= <X-SIN< X ) -. 25 ) •••- (1 -COS < X ) )
70 RETURN:END
Пример. Вычислить корень уравнения
(4.7) на отрезке [1,1; 1,2]. В данном случае
F'(x) — 1 — cos х, так что
F(xn) _ х —sin х—-0,25
F'(xn) 1 — cos x
Вычисление этого выражения оформлено
подпрограммой, записанной со строки 60.
Поскольку F" (х) — sin х> 0 и F (х)> 0 при
х = Ь, в качестве начального приближения
возьмем хо = 6=1,2. Тогда при погрешности
е=1-10“6 получим 7=1,171229656 при вре-
мени счета /с «3,5 с.
Модифицированный метод Ньютона заклю-
чается в том, что вместо вычисления про-
изводной F' (хл) на каждом шаге итера-
ций находится ее приближенное значение
F'(xn)=dF(xn)/dx~(F(xn-\-\x) —
— Г(хл) )/Ax = AF(xn)/Ax, где Ах = е. Следо-
вательно, итерационная формула имеет вид
_ Ах F(xn)
. хл+1-х„ F(Xn + Ax)_fM •
Значение Ах не обязательно должно быть
равно е. Равенство Ах = е позволяет умень-
шить число* исходных данных при вводе.
Программа 4.13.
1Й PRINT'РЕШЕНИЕ УРАВНЕНИЯ F<X)=0 МОДИФИЦИРОВАННЫМ'
15 PRINT' МЕТОДОМ НЬЮТОНА'
20 INPUT'ЗАДАЙТЕ НАЧАЛЬНОЕ ПРИБЛИЖЕНИЕ Х0='Х
25 INPUT'ЗАДАЙТЕ ПОГРЕШНОСТЬ РЕЗУЛЬТАТА Е='Е
30 GOSUB 70s LETL=F: LETX=X+E
40 GOSUB 70:LETL=E*L/<F-L):LETX=X-L“E
50 IF ABS<L)>E THEN 30
60 PRINT'КОРЕНЬ УРАВНЕНИЯ X='X:GOTO 20
70 LETF=X-SIN(X>-.25
80 RETURN:END
87
Пример. Вычисление F(xn) выполняется
подпрограммой, записанной со строки 70.
Для приведенного выше примера расчет дает
х= 1,171229653 при /с~4 с. При модифи-
цированном методе Ньютона отпадает необхо-
димость вычисления £'(хЛ), но добавляется
вычисление Г(хл-|-Дх).
Метод Рыбакова также можно рассматри-
вать как модификацию метода Ньютона
при замене F'(xn) некоторым числом M^F'(g),
где g — значение х на отрезке [а, 6], при
котором F'(x) максимальна. При M^>F'(l)
сходимость не нарушается, но замедляет-
ся. Метод Рыбакова удобен для поиска
всех корней уравнения (4.4) на отрез-
ке [а, д] с помощью следующего алго-
ритма [24].
1. Задаем начальные значения х—хо — а.
2. Для каждой n-й итерации (п = 0, 1,
2, ...) вычисляем
(4.10)
и проверяем условие
x„+i <Ь.
(4.И)
Если (4.11) не выполняется, значит, найдены
все корни. В противном случае проверяем
выполнение условия |x«+i — xrt|> е. Если оно
выполняется, повторяем цикл вычислений по
формуле (4.10). Если это условие не выпол-
нено, значит, Хп+\ есть один из корней
и значение хп+\ выводится на печать. После
этого переходим к выполнению следующего
пункта.
3. Задаем начальное приближение к оче-
редному корню х0 = Хп+14“ е и, если хо<Ь,
идем к выполнению п. 2. Если х0^Ь, вы-
числения считаем законченными.
Число итераций при реализации метода
Рыбакова N—(b — a) М/г. Функция F (х) на
отрезке [а, 6] может иметь производную
с разрывами первого рода.
Программа 4.14.
Метод деления отрезка [a, 6J пополам
(метод дихотомии) реализуется следующим
алгоритмом (для F (а) > 0).
1. Находим х=(а4-д)/2.
2. Вычисляем F(x).
3. Если Г(х)> 0, задаем а=х, иначе Ь—х.
4. Проверяем условие Ь — а> е; если оно
выполняется, идем к п. 1, если не ‘выпол-
няется, ^заканчиваем вычисления и считаем,
что х — х с заданной точностью е.
Число итераций при использовании этого
метода
1п((Ь —а)/е)
1п 2
значительно, и поэтому сходимость его
медленная. Однако при любой ширине отрезка
[а, Ь] сходимость гарантирована. Кроме
того, простота реализации метода уменьшает
число вспомогательных операций и частично
компенсирует увеличение общего времени
счета из-за медленной сходимости.
Программа 4.15.
Пример. Для уравнения F(x)=E —х —
— Я/о(ехр (Dx) — 1) при Е = 2, /? = 10, /0 =
==Ы(Г* £> = 20, 4 = 0, В = 2 и е = /7 =
= 1-1СГ4. Получим х=0,8143920898. При
F (а) < 0 берем F (x) = — F (х).
Метод поразрядного приближения для
поиска всех корней отрезка [а, 6] реали-
зуется следующим алгоритмом.
1. Задаем шаг с = /г, х = а, /г = 0 и находим
lF=sgn F(x).
2. Задаем значение х = (х-|-с) и проверяем
условие (х—-с)^Ь. Если оно выполняется,
заканчиваем счет, иначе идем к п. 3.
3. Вычисляем F(x) и проверяем условие
FW/O 0. Если оно выполняется, идем к п. 2,
иначе к п. 4.
4. Задаем с—— c/R, где R— показатель
разрядности (уменьшения шага с), и прове-
ряем выполнение условия |с|> г/R, где е —
10 PRINT"НАХОЖДЕНИЕ ВСЕХ КОРНЕЙ УРАВНЕНИЯ F<X)=0"
15 PRINT"В ИНТЕРВАЛЕ ОТ А ДО В МЕТОДОМ РЫБАКОВА"
20 INPUT"ВВЕДИТЕ ГРАНИЦЫ ИНТЕРВАЛА А/В "А>В
25 INPUT"ЗАДАЙТЕ ПОГРЕШНОСТЬ.НАХОЖДЕНИЯ КОРНЯ Е="Е
30 INPUT"ЗАДАЙТЕ ЧИСЛО M="M:LETX=A:LETT=0:LETI=0
40 GOSUB-120:LETZsX+ABS<F>/M
50 IF Z>=B GOTO 115
60 IF Z-X>«E GOTO 90
70 IF T=0 THEN LETU=Z
SO LETX=Z+E!LETY=Z:LETT=1!GOTO 48
90 IF TO1 THEN 110
100 LETI=I+1 SPRINT’2.0’ "X" I" =" IF1.9! (Y+W>/2sLETT=0
110 LETX»ZsGOTO 40
115 PRINT"КОНЕЦ ВЫЧИСЛЕНИЙ":STOP
120 LETF=X~4-13*X~2+36
130 RETURN:END
Пример. Найти все корни уравнения
F(x)=x4—13x4-36 = 0 на отрезке [ — 4,4],
т. е. а=—4, Ь = 4, с точностью е= 1 • 10-3.
Задав 44=100, получим: х\ = —2,9987453;
х2=-1,999170328; х3 = 2,000132432 и х4 =
= 3,000785311. Общее время вычислений
около 2 мин.
заданная погрешность вычисления корня.
Если это условие выполняется, идем к п. 2,
иначе к п. 5.
5. Задаем £ = &4-1 и выводим на пе-
чать (индикацию) значение &-го корня
хй = х. Затем полагаем c—h, U7= —IF и идем
к п. 2.
88
Программа 4.15.
01 PRINT'РЕШЕНИЕ УРАВНЕНИЕ F<X)=0 МЕТОДОМ ДИХОТОМИИ'
05 INPUT 'E/R/I0/D' E/R/I0/D
10 INPUT 'А/В/Н' A/B/H
20 LETX=(A+B)/2
30 GOSUB 90
40 IF F>0 THEN 60
50 LETB=X: GOTO 70
60 LETA=X
70 IF B-A>H THEN 20
80 PRINT 'KOPEHb='Xs STOP
90 LETF=E-X-R*I0#(EXP<D*X)-1)
100 RETURN: END
Программа 4.16.
10 PRINT'ВЫЧИСЛЕНИЕ ВСЕХ КОРНЕЙ НЕЛИНЕЙНОГО УРАВНЕНИЯ F(X)=0'
20 PRIНТ'В ИНТЕРВАЛЕ <А/В> МЕТОДОМ ПОРАЗРЯДНОГО ПРИБЛИЖЕНИЯ'
30 INPUT'ЗАДАЙТЕ ГРАНИЦЫ ИНТЕРВАЛА А/В 'А,В
40 INPUT'ЗАДАЙТЕ ПОГРЕШНОСТЬ ВЫЧИСЛЕНИЯ КОРНЕЙ Е='Е
50 INPUT'ЗАДАЙТЕ ШАГ НАЧАЛЬНОГО ПОИСКА Н='Н
60 LETC=HsLETK=0sLETX=AsGOSUB 120sLETW=SGNCF>
70 LETX=X+CsIF X-C>«B THEN PRINT'КОНЕЦ'sSTOP
80 GOSUB 120s IF F«W/C>0 THEN 70
90 LETC=~C/4sIF ABS(C)>E/4 THEN 78
100 LETK«K+1SPRINT!2.0!'X'K!F1.9!'«'X
110 LETC=H5LETW=-WsGOTO 70
120 LETI=.2718*X*EXP(-10*X)+1E-8*(EXP<20*X)-1)
130 LETF=<1-X)z125-Is RETURNSEND
Пример. Найти напряжения на туннель-
ном диоде из решения уравнения
F(U) = (E-U)/R-1(U) = O, (4.12)
где Е — напряжение источника питания,
R — сопротивление в его цепи и
](U) = I = AUe~aU + D(e*U - 1)
— М-образная вольт-амперная характерис-
тика туннельного диода. Для х = U, А = 0,2718,
а=10, Г>=1-10 8, р = 20, Е=1 В и
R = 125 Ом получаем подпрограмму, записан-
ную в строках 120 и 130. Задав а = 0,
Ь = Е и е = £1 =0,001, получим X! =0,043 В,
х2 = 0,234 В и = 0,625 В. Следовательно,
в данном случае линия нагрузки резистора R
пересекает вольт-амперную характеристику
в трех точках.
Метод подекадного приближения анало-
гичен методу поразрядного приближения при
R = 10. Метод дает все верные цифры резуль-
тата в пределах заданной погрешности е
(остальные цифры — нули).
Метод хорд (см. рис. 4.5, а). При этом
методе каждое значение хл+| находится как
точка пересечения оси абсцисс с хордой,
проведенной через точки F(a) и F(b), причем
одна из этих точек фиксируется — та, для
которой знаки F(x) и F"(x) одинаковы. Если
неподвижен конец хорды х = а, то
Е(Х«) 7 „X
Г(А,л)_ца) IX» а)>
а если неподвижен конец хорды х — Ь, то
Е(хп) ,, х
Если
|хл+1—Х„|> Е,
то в первом случае считаем Ь=хп+\, во
втором а = хп+\ и повторяем вычисле-
ния. При использовании метода хорд пола-
гается, что корень х находится на отрез-
ке [а, Ь].
Метод секущих (см. рис. 4.5, б) реали-
зуется алгоритмом, описанным выше, если
абсциссы а и b взяты с одной стороны от
корня и не фиксируются.
Необходимость вычисления F' (х) (условия
сходимости этих методов аналогичны (4.9))
и выбора одной из двух формул затрудняют
практическое применение методов хорд и
секущих в отдельности.
Комбинированный метод секущих — хорд
обеспечивает гарантированную сходимость
при выборе в пределах отрезка [а, 6] двух
приближений: нулевого х0 и первого Х|. Он
реализуется алгоритмом, описанным для ме-
тода Ньютона с заменой производной Е'(х)
ее приближенным значением — множитель
перед F (х„):
Хл 1 — А п
Хп Хп_ 1
F (Хп) — Р (Х„— 1)
F(xn).
89
Рис. 4.5. Решение
уравнения F (х)=
= 0 методом хорд
(а) и секу-
щих (6)
01 PR I NT' РЕШЕНИЕ УРАВНЕНИЯ F(X)=0 КОМБИНИРОВАННЫМ •'
62 PRINT'* ' МЕТОДОМ СЕКУШИХ-ХОРД'*
05 INPUT Е/R/Ю// D ‘Е/R/10/D
10 INPUT 'Х0/Х1/Н' Х0/ XI/ Н
20 LETX=X0S GOSUB 80
30 LETA=Fs LETX=Xls GOSUB 80
40 LETB=F! LETY=X0-A*<X1-X0)/(B-A)
50 LETX0=XB LETX1=Y
60 IF ABS<X1-X0)>H THEN 20
70 PRINT *KOPEHb=,Xls STOP
80 LETF=E-X-R*10* < EXP < D*X> -1 >
90 RETURNS END
100 RETURNS END
Пример. Для уравнения F(x)=x3 + x2 —
— x — 1 при xq — 2, xi = 1,5 и е=1 • 10“5
находим х=1 при /С«Ю с. Аналогичный
результат получим при хо = 0,5 и xi = l,5.
Вычисление F(x) оформляется подпрограммой,
записанной со строки 90.
Метод Эйткена — Стеффенсона с уско-
ренной сходимостью обеспечивает решение
уравнения (4.5) по следующему алгоритму.
1. Задаем начальное приближение хп.— хо.
2. Находим первое xi==f(xo) и второе
X2==f(xi) приближения.
3. Вычисляем хл+1 — (х0х2 —х?)/(х0 —2хН~
-р *•>).
4. Проверяем условия |хл + |—хл|>е,
хо —2xi-f-x2=/=0. Если эти условия соблю-
даются, идем к п. 1, т. е. задаем хп новое
значение хл+|, в противном случае останав-
ливаем счет и получаем х==хл+!.
Метод Эйткена — Стеффенсона при слож-
ных f(x) имеет ускоренную сходимость (по
сравнению с методом простых итераций).
Однако при простых функциях f(x) время
счета практически не уменьшается, так как
число дополнительных операций в этом
методе существенно больше, чем в методе
простых итераций.
Программа 4.18.
Пример. Используя данные к програм-
ме 4.11, при 8— 1 -10~6 получим корень (4.7)
х— 1,171229421 при tc&l с. Вычисление функ-
ции f(x) выполняется подпрограммой, запи-
санной в строках 90 и 100.
Метод обратной интерполяции — экстра-
поляции заключается в вычислении ряда
значений yi — F(xi) для заданных х, на отрезке
[а, 6]. Затем, полагая у — 0, с помощью
обратной интерполяции находим х, (рис. 4.6, а).
Корень может быть найден и за пределами
отрезка [а, Ь] (рис. 4.6,6). В последнем
случае применяется обратная экстраполяция.
Для реализации этого метода могут исполь-
зоваться описанные в § 4.2 программы.
К сожалению, для произвольных F(x)
оценка погрешности этого метода отсутствует.
Однако для получения результата с задан-
ной погрешностью можно построить итера-
ционную процедуру уточнения корня. Отме-
тим, что при пг = 2 отсчетах F(x) данный
метод фактически является комбинированным
методом секущих — хорд, реализующим ли-
нейную интерполяцию — экстраполяцию.
Метод обратной квадратичной интерпо-
ляции — экстраполяции заключается в за-
мене F(x) полиномом Лагранжа второй степени
(число отсчетов т = 3). При этом можно
05 PRINT*РЕШЕНИЕ ‘/РАВНЕНИЯ X=F(X) МЕТОДОМ'1
18 PR I НТ •* ЭйТКЕНА-СТЕФФЕНСОНА •*
15 INPUT’ЗАДАЙТЕ НАЧАЛЬНОЕ ПРИБЛИЖЕНИЕ Х0='Х
20 INPUT‘ЗАДАЙТЕ ПОГРЕШНОСТЬ РЕЗУЛЬТАТА Е=‘Е
30 LETA=XsGOSUB 90sLETB=F:LETX=F
40 GOSUB 90s LETC=<A-2*B+F)
50 IF »>© THEN 70
60 LET X=(A*F-B*B >/С
70 IF ABS(X-F)>E THEN 30
80 PRINT’КОРЕНЬ УРАВНЕНИЯ X=?X:GOTO 20
SO LETF=SIbkX) + .25
100 RETURN: END
90
y=F(X)
y=F(x)
Рис. 4.6. Решение уравнения Л{х)=О методом обратной интерполяции (а) и экстраполяции (б)
получить аналитическое выражение для при-
ближенного значения корня.
Действительно, заменив х- на у и у на х,
полином Лагранжа второй степени можно
представить в виде х(#) = 6о4- Ь\(у — £/<>)-|-
Сходимость данного алгоритма основана
на свойстве интерполяционного полинома
давать точные значения х при заданном у-
в узле интерполяции (т. е. в точке Xi).
Программа 4.49.
16 PRINT*РЕШЕНИЕ УРАВНЕНИЯ F<X)=0 МЕТОДОМ КВАДРАТИЧНОЙ"
20 PRINT* ИНТЕРПОЛЯЦИИ-ЭКСТРАПОЛЯЦИИ *
30 INPUT'ЗАДАЙТЕ ГРАНИЦЫ Ал В *АлВ
35 INPUT*ЗАДАЙТЕ ПОГРЕШНОСТЬ ВЫЧИСЛЕНИЙ Е=*Е
40 INPUT'ЗАДАЙТЕ НАЧАЛЬНОЕ ПРИБЛИЖЕНИЕ Х1 = 'С
50 LETX=AsGOSUB 120sLETL=F
60 LETX=B!GOSUB 120sLETM=F
70 LETX=CsGOSUB 120sLETQ=C
80 LETN= < C-A >/< F-L > s LETP= < B-A)/< M-L >
90 LETC=A-L*<N+(N-P)*F/(M-F>>
100 IF ABS<Q-C>>E THEN 70
110 PRINT'KOPEHb X='CsSTOP
120 LETF«X-SIN(X >-.25:RETURN s END
— (y — i/1)- Для .£/ = 0 находим
x = 60 — b\y^-^b^y\. (4.13)
В соответствии с методом Эйткена и с учетом
взаимной Замены переменных х и у имеем
д() = Х(>,
Xt — Хр
У\~Уь ’
<?2 =
Ь2
У 2 — у о
У-2 — bi
У'2 — У\
Подставив 6о, Ь\ и Ь2 в (4.13), после элемен-
тарных преобразований получим
- /Х| — А',,
х—хо — у и (---- 4-
ХЮ — */<>
(Х|— x^Kyt — у1>)—(хг—Хп)/(у1— Ун}, \
-f—— -------—---------------------УI J •
У2-У1 /
(4.14)
Приведем алгоритм вычислений этим мето-
дом (один из возможных).
1. Полагаем х<> = а и вычисляем F(xt<) = //<>.
2. Полагаем хг = 6 и вычисляем F(x2) = y2-
3. Задаем начальное приближение к
корню x = xj и вычисляем /?(xi) = z/1.
_ 4. По формуле (4.14) находим корень
х (см. рис. 4.6).
5. Проверяем условие |х —xj>t; если
оно выполняется, задаем xi=x и идем к п. 3,
если не выполняется, останавливаем счет
и считаем х корнем.
Пример. Используя данные программы
4.11, при е=5= 1 • 10 ’6 получим х= 1,171229661
при /( «4 с.
§ 4.4. Решение систем
нелинейных уравнений
Решение систем нелинейных уравнений
может выполняться описанными выше ме-
тодами, применяемыми поочередно к каждому
из уравнений системы с контролем погреш-
ности схождения каждой переменной к корню
с заданной погрешностью. Остановимся на
описании двух модификаций метода итераций.
Решение системы нелинейных уравнений
методом простых итераций заключается в реа-
лизации итерационного процесса по следую-
щей формуле:
(4.15)
применяемой после преобразования системы
нелинейных уравнений общего вида
ад)=о (4.16)
к виду Х( = Д(Х). Здесь / - номер перемен-
ной (1, 2Ч ..., N), п — номер итерации.
Вычисления ведутся до тех пор, пока соблю-
дается условие |X/(n+i) —Xi(nJ> в, где е —
заданная точность.
Метод Зейделя отличается от метода
простых итераций тем, что уточненные
91
X(n_|_i) сразу подставляются в последующие
уравнения. Обычно (но не всегда) метод
Зейделя дает лучшую сходимость.
Необходимость преобразования (4.16) и
трудности в обеспечении быстрой сходимости
ограничивают применение этих методов.
Однако программная реализация их довольно
проста (см. Приложение 5).
Метод Ньютона (или Ньютона — Раф-
сона) является наиболее распространенным
методом решения системы уравнений (4.16).
Он реализуется следующим алгоритмом.
1. Задаем абсолютную или относитель-
ную погрешность е = £, число уравнений А/,
максимальное число итераций М и вектор
начальных приближений Хо (с компонентами
Х10> Х20> •••» Хд^о) •
2. Используя разложение Х(Х) в ряд
Тейлора, формируем матрицу Якоби [dF(/dX],
необходимую для расчета приращений Х(Х)
при малом изменении переменных. Матрица
Якоби в развернутом виде записывается
следующим образом:
" dF\/dx\ dF\/dx2 ... dF\/dxN
dF2/dx\ dF2/dx2 ... dF2/dxN
_ dFN/dx\ dFN/dx2 ... dFN/dxN
Поскольку аналитическое дифференциро-
вание Л(Х) в общем случае нежелательно,
заменяем частные производные в матрице
Якоби их приближенными конечно-разност-
ными значениями
dFt ~ Х{Х4-#)-Л(Х)
дХ, ~ Н
где Hi — малое приращение X, например
Hi = z\Xt\.
3. Составляем и решаем систему ли-
нейных уравнений для малых прираще-
ний X,:
' dF\/dx\ dF\/dx2 ... dF\/dxN 1 Г Дх('
dF2/dx\ dF2/dx2 ... dF2/dxN . Дх2 __
dFN/dxx dFN/dx>
dFN/dxN
_\xN-
r-r,
~f2
Решение этой системы дает Дхь Дх2, .... Дх^,
т. е. ДХ-
4. Вычисляем уточненные значения
Х|(п+ 1) = Х|(п)4“ ДХ|,
Х2(п+ 1) = Х2(Я) Ч" ДХ2,
X/V (л 4-1) — XN (п) 4-ДХд^.
или в общем виде
Х(п+1) = ХпЧ-ДХ.
5. Для всех ДХ проверяем одно из усло-
вий: |ДХ1> е, |ДХ/Х1> е.
Если оно выполняется, идем к п. 2, т. е.
выполняем новую итерацию. Иначе считаем
вектор Х(«+1) найденным решением.
Отметим, что решение системы нелинейных
уравнений (4.16) можно представить и в виде
Х(.л+1)==Х(п) — и^(п)'Л(Х(П)), где F(„) — обра-
щенная матрица Якоби. Обращение матрицы
Якоби осуществляется в ходе решения системы
линейных уравнений для приращений ДХ
методом Гаусса.
Программа 4.20.
10 PRINT'РЕШЕНИЕ СИСТЕМЫ НЕЛИНЕЙНЫХ УРАВНЕНИЙ*
20 PRINT** . МОДИФИЦИРОВАННЫМ МЕТОДОМ НЬЮТОНА*
30 INPUT ЗАДАЙТЕ ЧИСЛО УРАВНЕНИЙ Н=*№1ПМ A<N,N),B<N)>X<N),F<N)
40 INPUT*ЗАДАЙТЕ МАКСИМАЛЬНОЕ ЧИСЛО ИТЕРАЦИЙ М=*М
50 INPUT*ЗАДАЙТЕ ОТНОСИТЕЛЬНУЮ ПОГРЕШНОСТЬ E=*E:LETS=0
6© FOR 1=1 ТО Ns PRINT! 2.0 ** ВВЕДИТЕ ХЧ*<8>*
70 INPUT Х<I)«NEXT I
80 60SUB 260:FOR I»1 TO NsLETB<I>=-F<I)8NEXT I
90 FOR J=1 TO NsLETX=X<J):LETH=E»ABS<X)
108 LETX<J)»X+H:60SUB 260:FOR I»1 TO N
110 LETACbJ)=<F<D+B<D)zH:NEXT I:LETX<J)=X:NEXT J
120 LETS=S+1:IF S=M+1 THEN PRINT*4HCDO ИТЕРАЦИЙ S=M*sSTOP
130 FOR 1=1 TO N-l:FOR J=I + 1 TO N
140 LETA< J# D=“A< I>/A< I/I)s FOR K=I + 1 TO N
150 LETA<J,K>»A<J,K>+A(J, D*A<bK>:NEXT К
160 LETB<J>=B<J>+A<J/D*B<D:NEXT J:NEXT I
170 LETF<N)=B<N)/A<N,N>sFOR I=N-1 TO 1 STEP -1
180 LETH=B<I>:FOR J=I+1 TO NsLETH=H-F<J)*A<bJ):NEXT J
190 LETF<I)=H/A(I,I>:NEXT l:LETR=0
200 FOR 1=1 TO N«LETX< D=X< I >+F< I)
210 IF ABS<F<DZX< DDE THEN LETR=1
220 NEXT is IF R«1 THEN 80
230 PRINT'РЕШЕНИЕ СИСТЕМЫ*
240 FOR 1=1 TO N:PRINT!2.0’*X*I!F1.9!*«*X<DsNEXT I
245 PRINT 12.0!*ЧИСЛО ИТЕРАЦИЙ S=*SsSTOP
250 REM*ПОДПРОГРАММА ВЫЧИСЛЕНИЯ F<D=F<X<1>,Х<2Ъ.../X<N>)*
260 LETF<1>=X< D+3*L6T <X<1))-X<2>*X<2)
270 LETF<2)=2«X<1)*X<D-X< 1)*Х<2>-5жХ<1) + l
280 RETURNSEND
92
Пример. В программе со строки 260
записывается подпрограмма вычисления пра-
вых частей (4.16) в виде
F(J)=(Функция переменных Х(Г)).
В данном случае подпрограмма служит
для решения системы уравнений
XI 4-3 IgXi — Х2 = 0,
2xi — xjx2 —5х( 4-1=0.
Задав А = 2, Л4=10 (максимальное число
итераций для случая, если решение расхо-
дится), е = Е=1-10~4, Х|о = Х1(О) = 3,4 и
х2о = Х2(0) = 2,2, получим xt =3,487442788,
х2 = 2,261628631 и S = 3. Значение перемен-
ной S дает число итераций, а значения
Е(/) — невязки системы. Время счета контроль-
ного примера 16 с.
Решение (4.16) с помощью методов мини-
мизации функций ряда переменных описано
в § 4.6.
§ 4.5. Решение алгебраических
уравнений с действительными
и комплексными коэффициентами
Алгебраические (но не трансцендентные)
уравнения сводятся к канонической форме
Аогл4-Л12п-14-...Ч-Лп-|24-Лп = О,(4.17)
где коэффициенты А о, ..., Ап— в общем
случае комплексные ’ числа. В таком виде
алгебраические уравнения используются
редко. На практике обычно встречаются поли-
номиальные уравнения с действительными
коэффициентами
амсп + а\хп~' +... 4-an-ix4-a„ = 0, (4.18)
причем нередко (4.18) записывается в другой
форме:
апхп + ап_\хп~[ 4-...4-aix4-ao = 0. (4.19)
Отметим некоторые известные свойства
алгебраических уравнений, на которых бази-
руются методы их решения.
1. Корни алгебраических уравнений могут
быть действительными и комплексно сопря-
женными, причем на комплексной плоскости
все они лежат в пределах кольца, ограни-,
ценного окружностями с радиусами #=14-
4-|амакс/аЛ| И Г == 1 4" | Омакс/Яп I , ГДС Пмакс
наибольший по модулю коэффициент поли-
нома, амакс — следующий наибольший по
модулю коэффициент (т. е. без учета аМакс).
2. Число корней с учетом их кратности
равно п, причем полиномы нечетной степени
обязательно имеют хотя бы один действи-
тельный корень.
3. Число положительных (отрицательных)
корней равно числу перемен (постоянств)
знаков в последовательности ап, ап_\, ..., ао
коэффициентов или меньше его на четное
число.
Квадратное уравнение
a2x24-aix4-ao = O (4.20)
имеет решение в виде
01 // О| \2 ао
х' 2~ 2а2 ± V \ 2а2) ~ а2 ’
причем если подкоренное выражение отрица-
тельно, корни получаются комплексно сопря-
женными, если оно положительно, они действи-
тельные.
Программа 4.21.
Пример. Для уравнения 2х2 — 5х —-10 =
= 0 получим xi = —1,311737691 и
х2 = 3,811737691, а для уравнения х24-2х4~
4-15 = 0 получим Х|,2= — 1 ±/-3,741657387.
Приведенное кубическое уравнение
x34-a2x24-aix4-ao —0 (4.21)
может решаться по точным формулам [18].
Однако более компактное решение получается
при использовании следующего алгоритма.
Вначале методом половинного деления с
е = 1. 1О~10 находится действительный корень
хз (он обязательно существует). Затем
делением (4.21) на (х—хз) получается квад-
ратное уравнение, из которого вычисляются
два других корня xi и х2.
Программа 4.22.
Пример. Для уравнения х3 — 6х24-21х —
— 52 = 0 получаем xi.2= 1 ±/-3,464101615 и
хз —4, а для уравнения х3 — 6х24- Их — 6 = 0
получим xi=3, х2 —2 и хз=1.
Уравнение (4.19) с действительными
коэффициентами решается методом Хичкока.
При этом (вначале) итерационным методом
из (4.19) выделяется квадратичный мно-
житель (если п >2) и вычисляются два его
корня. Затем (4J9) делится на этот множи-
тель, т. е. п уменьшается на 2, и процесс
повторяется до вычисления всех корней.
Программа 4.23.
Пример. Для уравнения х44-9х34-
4-31x^4-59x 4-60 = 0 прлучим корни Х| =
= —14-/-2, х2= —1—у-2, хз=—34-/-0,
Х4=—44-/-0 (т. е. хз и х< действительны),
а для уравнения х54-8х4±31х34-80х24-94х4-
4-20 = 0 получим xi =—0,2679491924, х2 =
= — 2, хз—— 14-/-3, х4 = —-1 —/'• 3 и х5 =
= —3,732050808 (при вычислениях принима-
лось е= 1 • 10“6).
Решение уравнения общего вида (4.17)
с комплексными коэффициентами Ai=ai+jbi
обобщенным методом Ньютона реализуется
следующим алгоритмом.
1. Вводим массив Лх и задаем точность
вычислений е.
2. Задаем начальное приближение Zo =
= хо4-///о, в частности х0 — Ь и t/o = 0 (Метод
дает сходимость к какому-либо корню при
любых начальных приближениях).
3. По методу Ньютона (но с применением
аппарата комплексной арифметики) находим
корень (4.17) Zi.
4. Делим (4.17) на (Z —ZJ, т. е. пони-
жаем степень (4.17) на единицу и повто-
ряем вычисления с п. 2 до нахождения
второго корня и т. д. до тех пор, пока не будут
вычислены все корни.
Более подробное описание этого метода
см. в [24]. При использовании програм-
93
Программа 4.21.
05 PRINT3РЕШЕНИЕ КВАДРАТНОГО УРАВНЕНИЯ'
10 INPUT'BBEAHTE A2='CsINPUT'ВВЕДИТЕ А1='В
15 INPUT'ВВЕДИТЕ А0='А
20 LETD=B/2/CsLETF=D'*D-A/C
30 IF F>0 THEN ,68
40 PRINT'X1/2='-D'+- J*'SQR <-F>
50 GOTO 10
60 PRINT'Xl='-D-SQR(F)
70 PRINT'X2='-H+SQR < F)
80 GOTO 18s END
Программа 4.22.
05 PRINT'РЕШЕНИЕ ПРИВЕДЕННОГО КУБИЧЕСКОГО УРАВНЕНИЯ1
10 1НРиТ'ВВЕДИТЕ A2='CsINPUT'ВВЕДИТЕ А1='В
15 INPUT'ВВЕДИТЕ А8='As INPUT'ВВЕДИТЕ /А МАХ/='К
20 LETX=05LETK=K+1
25 LETG=X+C:LETL=G»X+B
30 IF L*X+A>=0 THEN 50
40 LETX=X+K
50 LETK=K/2SLETX=X-K
60 IF K>=1E-10 THEN 25
70 LETE*-G/28LET№E«E-L
80 IF M>=0 THEN 130
90 PRINT'Xb2=='E'+- J*'SQR(-M>
100 PRIHT'X3='X5STOP
130 LETF=SQR< M ):LETH=F+E s LETI=E-F
140 PRINT'X1»'H:PRINT'X2='Is PRINT'X3='X s END
Программа 4.23.
05 PRINT'ВЫЧИСЛЕНИЕ ВСЕХ КОРНЕЙ ПОЛИНОМА'
10 PRINT'С ДЕЙСТВИТЕЛЬНЫМИ КОЭФФИЦИЕНТАМИ'
15 INPUT'ЗАДАЙТЕ ПОГРЕШНОСТЬ Е='Е
20 INPUT'ЗАДАЙТЕ СТЕПЕНЬ ПОЛИНОМА N='№DIM А<2*Н+1)
25 FOR J=1 ТО N+is PRINT'ВВЕДИТЕ A'12.01N+1-J
30 INPUT A(J)sNEXT JsLETK=l
35 LETT=1:LETC=A<2)/A<1>
40 IF N=1 THEN LETP=-CsLETGb=05 6OTO 270
50 IF N=2 THEN LETH=C**C/4-A<3)/A< 1) s GOTO 220
60 LETM=10;LETC=45LETD=85LETU=4
70 LETU=8s LETF=l: LETU=2sLETT=8
80 IF MO10 THEN 100
85 LETP=C s LETM=0sLETQ=D s LETC=U s LETD=U
90 LETU=PsLETU=QsLETV«C:LETZ=DsLETF=-F
100 LETM«=M+1LETH=0s LETQ=A< 1) s LETP=A < 2 >-C*Q s LETL=Q
120 FOR J=3 TO №LETR=P5LETP=A<J)-C*R-D*Q
130 LETQ=R!LETR4JLETL*Q-C*R-H«D5LETH=R5NEXT j
140 LETQ=A<N+1)-D*Q:LETS«L+C*R
150 IF T=0 THEN LETX=D*RsLETH=R*X+S*LsIF H=8 THEN 80
160 LETC=C+<P*S-Q*R>/Hs LETD«D+<P*X+Q*L)/H
170 IF C-V+D-ZO0 THEN 190
180 IF F=-kl THEN PR I NT'НЕТ РЕШЕНИЯ'sSTOP
185 LETW=-F
190 LETH=C*C/4-D:IF SQR(<Q-P*C/2)"2+P*P*ABS<H))>E/N THEN 80
200 LETT=0sLETA<2)=A<2)-C*A(l)sFOR J=3 TO N-l
210 LETA(J)=A<J)-C*A<J~1)-D*A(J-2)5 NEXT J
220 LETP=”C/25LETQ=SQR<ABS<H>)
230 IF H>=0 THEN LETM=P+Q5LETP»P-QsLETQ=056OTO 258
248 LETM=P
250 PRIHT!2.8! 'XCK')=' !F1.9!M' +J*('Q')' sLETK=K+l
278 PRINT*2.0!'X('K')='!F1.9!P' +J*<'-Q')'5LETK=K+1
290 IF TOG THEN 358
308 LETN=N-2sLETA=0
318 IF SQR((S4?*C/2r2+R*R*ABS<H))<=E THEN LETA=1
328 LETB=8slF N>=2 THEN LETB=1
330 IF A+B=2 THEN LETT=lsGOTO 110
348 GOTO 35
358 PRINT'ВЫЧИСЛЕНИЯ ЗАКОНЧЕНЫ'SEND
94
мы 4.22, реализующей этот метод, вводятся:
степень полинома n = N, погрешность равен-
ства нулю-производной £1, погрешность вы-
числения корней е = £2 и массив действи-
тельных at и мнимых bt частей коэффициен-
тов At. Если Ai = ai — действительные числа,
задаем dz = 0.
Программа 4.24.
Пример. Решить уравнение
Z6 + 8Z4 -F 31Z3 4- 80Z2 + 94Z + 20 = 0.
Вводим /V = 5, 0.0=1, Я|—8, а2 = 31, а:} = 80,
а4 = 94, аб = 20 и до4-/>5 = 0. Результат полу-
чаем (при £1 = Ы0“3 и £2=1-10'5)
с округлением на пятой цифре:
ReZ(l) = -2,67949-10-'
ReZ(2)=—2,00000
ReZ(3)=—3,73205
ReZ(4)= - 1,00000
ReZ(5)= —1,00000
ImZ(l) = -7,96970- IO"17 1
1 m Z(2) = 1,51995 • 10 ~16 K&) = 1
ImZ(3)= -4,61589-10~17 K(3)= 1
ImZ(4) = 3,00000 K(4)=l
ImZ(5)= -3,00000 1
Значения K(i) указывают на кратность
/-1'0 корня. Для ImZ(l), ImZ(2) и ImZ(3)
значения меньше заданной погрешности £2,
поэтому их следует считать нулевыми. Таким
Программа 4.24.
05 PRINT*ВЫЧИСЛЕНИЕ КОРНЕЙ ПОЛИНОМА PCZ)*
10 PRINT'C КОМПЛЕКСНЫМИ КОЭФФИЦИЕНТАМИ*
15»INPUT*ЗАДАЙТЕ СТЕПЕНЬ ПОЛИНОМА N= *N:LETH=N
20 DIM CCN+l>/DCN+l)/ECH+l)/F(N+l>/Gl(N+l>
25 DIM A<N+1)/B<N+1>>F1<N+1>/K<N>/D1(N)/Z1<N)
30 LETX0=08LETV0=0s INPUT'BBEAHTE ЕЬЕ2 *ЕЬЕ2
40 FOR 1=1 TO N+l8 PRINT 12.0!'ВВЕДИТЕ AC* 1-1* ЪВС* J-l* )*
50 INPUT ACI)лВСD8NEXT IsLETIl=l
120 LETX=X08LETY=V08LETS=lsFOR 1=1 TO N+l
140 LETFCI>=ACI)sLETGlCI>«BCI)8LETCCI)=ACI)8LETDCI>=BCI)
150 NEXT I1LETM=N86OTO 500
170 LETU1«U8LETU1=UsLETL=186OTO 670
190 FOR 1=1 TO N+L-l
200 LETFCI>=CCI)sLETGlCI)«DCI)sHEXT 1
220 LET M=N«“L8LETS=28 6OTO600
230 IF SQRCU~2+U~2)>=E1 THEN 260
240 LETL=L+18G0T0 670
260 LET Z4T2+U~2
270 LET G=*-CUl*U+Ul*U)zZ
200 LETU=C U1*U-U1*U)zZs LETZ=SQR< 6*6+W*W) s LETW1=W/Z
300 IF ABSCW/Z>>1 THEN LETWl=SI6HCWzZ)
310 LETF2=ASNCW1>/L
320 IF G<=0 THEN LETF2=#PI/L-ASNCW1>zL
330 LETZ=EXP <LOG < Z > zL)s LET6=Z*C0S C F2 >
340 LETW=Z*SIN<F2 > 8 LETT=1s LETS=3s LETM=N
350 FOR 1=1 TO N+l
360 LETF<I)=A<I)sLETGl<I>=B(I>sNEXT I
370 LETX=X0+Ts*G:LETY=Y0+T*W8 6OTO 6©0
390 IF CU~2+U~2><CUi~2+Ul~2)THEN 405
408 LETT=Tz2sGOTO370
410 IF T*SQRC6~2+IT2)<E2 THEN 460
420 LETX0=X:LETY0=YsLETS=1sFOR 1=1 TO H+l
440 LETCCI)=ACI)sLETDCI>=BCI)sNEXT Is GOTO 170
460 LETKCI1>=L8LETD1<11>=XsLETZ1C11>=Y
470 FOR J=1 TO L8LETQ=H~J+1sGOTO 700
500 FOR 1=1 TO Q8LETA<I)=E<I>8LETB<I)=F1<I)8NEXT DNEXT J
520 IF N-L<=0 THEN 560
530 LETI1=I1+18LETN=N-18GOTO 120
560 FOR 1=1 TO H
570 PRINT‘2.0!*RE ZC*I*>=*IF1.51D1CI)!2.8!* IM ZC* I*) = *1F1.5IZ1CI)
580 PRINT 12»01 * КС * I *)=*КС I)sNEXT BSTOP
600 LETU=F<1)sLETU=G1<1)
610 FOR 1=2 ТО M+l
620 LETZ=U*X4l*Y+FCI)sLET U=U*Y+U*X+G1CI)sLETU=Z
640 NEXT 18 IF 8=1 GOTO 170
650 IF 8=2 GOTO 230
660 GOTO 390
670 FOR 1=1 TO M
680 LETCCI>=CM-I + l)*CCI)sLETIi<I)=CM--I + l)*DCI)
690 NEXT Is GOTO 190
700 LETEC1)=A<1)8LETF1<1)=8<1>
710 FOR 1=2 TO Q
728 LETECI)«A<I)+E<1-1>*X-F1<1-1)*Y
730 LETF1<I>=B<I>+ECI-1>*Y+F1CI-1>*X
740 NEXT IsGOTO 500s END
95
образом, уравнение имеет три действительных
корня Zi =—0,267949, Z2—— 2 и Z3 =
= —3,73205 и два комплексно сопряженных
Z4,5= —1±/-3. Время счета контрольного
примера около J0 мин.
§4.6. Поиск экстремумов функ-
ций одной и множества пере-
менных
На практике часто необходимо найти
экстремум (или экстремумы) некоторой це-
левой функции F(xi, %2, ...» хя) п переменных
X, (проектных параметров). Такая функция
описывает (n-f-1)-мерную поверхность. Со-
ответственно функция /F(x) одного парамет-
ра х\=х описывает некоторую кривую на
плоскости (рис. 4.7, а). Поиск экстремумов
функций одной переменной является само-
стоятельной и часто встречаемой задачей.
Кроме того, к нему сводится гораздо более
сложная задача поиска экстремумов функций
множества переменных [3, 41].
В общем случае функция F(x) может иметь
несколько экстремумов (максимумов или
минимумов). Из них главный (оптимальное
решение для пространства проектирования)
называется глобальным. Задача поиска экс-
тремумов сводится к их локализации и уточ-
нению значений х и F(x) в точке экстремума.
В дальнейшем для функций одной перемен-
ной под экстремумом будем подразумевать
максимум F(x). Поскольку максимуму функ-
ции F(x) соответствует минимум функции
— F(x), то, сменив знак у F(x),. программами
поиска максимума можно пользоваться и для
поиска минимума функций. Будем также
полагать, что на изменения х (если это
особо не оговорено) накладываются ограни-
чения в виде неравенств а^х^.Ь, где а и b —
границы интервала поиска. В пределах
отрезка [а, Ь] функцию считаем унимодаль-
ной, т. е. содержащей один максимум
(рис. 4.7, б).
Метод равномерного поиска основан на
том, что переменной х присваиваются значения
х-|-Ах с шагом Ax = const и вычисляются
значения F(x). Если Г(хя+»)> Г(хя), перемен-
ной х даётся новое приращение. Как только
F(Xn+\) станет меньше F(xn), поиск останав-
ливается. При малой заданной погрешности
этот метод неэкономичен по затратам машин-
ного времени.
Метод поразрядного приближения явля-
ется разновидностью метода равномерного
Рис. 4.7 Функция с несколькими экстрему-
мами (а) и унимодальная функция с одним
экстремумом максимумом (6)
поиска и реализуется следующим алгорит-
мом.
1. Задаем начальное приближение х=х0
слева от максимума F(x) и вычисляем F(xo).
Задаем D — h, где /г = Ах—начальный шаг
поиска.
2. Полагаем G = F(xn\ где вначале Е(хя) =
= Г(л'о), задаем x — x-FD и вычисляем
Е(хл+1) = Е(х).
3. Проверяем условие F(x«+i)> G; если
оно выполняется, идем к п. 3, если нет —
к п. 4.
4. Полагаем D= —D/4. Проверяем усло-
вие |D|> Е/4, где Е — заданная погреш-
ность вычисления хт в точке максимума.
Если оно выполняется, идем к п. 2, т. е.
обеспечиваем поиск максимума в другом
направлении с шагом в 4 раза меньше
прежнего. Если данное условие выполняется,
заканчиваем счет.
Программа 4.25.
10 PRINT’ПОИСК МАКСИМУМА F<X) МЕТОДОМ'
15 PRINT' ПОРАЗРЯДНОГО ПРИБЛИЖЕНИЯ'
2© INPUT'ВВЕДИТЕ НАЧАЛЬНЫЙ ШАГ ПОИСКА Н= 'Н
25 INPUT'ЗАДАЙТЕ ПОГРЕШНОСТЬ РЕЗУЛЬТАТА Е= 'Е
30 INPUT'ЗАДАЙТЕ НАЧАЛЬНОЕ ЗНАЧЕНИЕ X Х0= 'X
35 LETD=Hs60SUB 80
40 LET6=FsLETX=X+D:&0SUB 80
50 IF F>6 THEN 40
60 LETD=-D/4s IF ABS(D>>E/4 THEN 40
70 PRINT'XM='X:PRINT'F < XM)='F s STOP
80 LETF=<<.1*X-2)*X+10)*X
90 RETURNS END
96
Пример. Найти максимум функции
F(x) = 0,1 х3 — 2л2 -j- 1 Ох. (4.22)
Подпрограмма вычисления F(x) записана со
строки 80. Задав £=1, £ = 0,001 и хо = 2,
получим хт = 3,33203125 и F(Xm)= 14,81481312.
Метод дихотомии (деления интервала
поиска [а, 6] пополам) реализуется следую-
щим алгоритмом.
1. Проверяем условие \Ь — а\<2Е, где
Е — заданная погрешность вычисления хт.
Если это условие выполняется, идем к п. 6;
если не выполняется, идем к п. 2.
2. Делим интервал поиска [а, 6] пополам
и вычисляем две абсциссы, симметрично
расположенные относительно точки х=
= (а4-6)/2: xi = (a + b — в)/2 и х2 = (а + Ь +
3. Для этих значений х вычисляем r(xi)
и F(x2).
4. Проверяем условие F(xi)> £(х2). Если
оно выполняется, полагаем 6 = х2 и идем
к п. 1. Если не выполняется, идем к п. 5.
5. Полагаем a = xt и идем к п. 1.
6. Выводим на печать xm= (a-j-b) /2 и
вычисляем F (хт).
Программа 4.26.
(см. алгоритм ниже). Он позволяет сужать
отрезок [а, Ь], каждый раз вычисляя лишь
одно значение F(x), а не два, как в методе
дихотомии. Данный метод реализуется сле-
дующим алгоритмом.
1. Находим коэффициент дробления /г =
=(-\/5— 1)/2 отрезка [а, Ь].
2. Находим абсциссу Xi =a-j-(l -— k) (b—-a)
и вычисляем F(xj).
3. Находим абсциссу х2 = а + (d — а) и вы-
числяем £(х2).
4. Проверяем выполнение условия
|х2—xi|<£, где Е — заданная погрешность
вычисления хт. Если это условие выпол-
няется, вычисляем xm= (xi-|-х2)/2 и F(xm),
после чего останавливаем счет с выдачей
значений хт и F(xm). Если данное условие
не выполняется, идем к п. 5.
5. Проверяем условие F(xi)<F(x2). Если
оно выполняется, полагаем a=xi, xi=x2
и F(xi) = F(x2), после чего выполняем п. 3 и п. 4.
6. Если £(xi)>£(х2), полагаем 6=х2,
x2 = xi, f(x2) = f(xi), после чего выполняем п. 2
и п. 4.
Программа 4.27.
Пример. Со строки 180 записана под-
программа вычисления £(х) для функции
I© PRINT‘ПОИСК МАКСИМУМА F(X> МЕТОДОМ ДИХОТОМИИ3
20 INPUT3ВВЕДИТЕ ГРАНИЦЫ ИНТЕРВАЛА ПОИСКА Ал В3Ал В
25 INPUT3ЗАДАЙТЕ ПОГРЕШНОСТЬ РЕЗУЛЬТАТА Е«3Е
30 IF АВ8<В-АХ2жЕ THEN 100
40 LETC=< A+B-E >/2 s LETD»< A+B+E)/2
50 LETX=C:GOSUB 120:LETK«F
60 LETX=D:GOSUB 1205LETL*=F
70 IF K>L THEN 90
80 LETAC: GOTO 30
90 LETB=Ds GOTO 30
100 LETX==<A+B)/25GOSUB 120
11© PRINT3 XM=3X’-PRINT3F<XM)=3 F:STOP
120 LETFCG Г*Х-2>жХ+10)жХ
130 RETURNS END
Пример. Co строки 120 записана под-
программа поиска максимума функции Г(х)
по формуле (4.22). При а —2, Ь = 5 и Е = 0,001
получим хт = 3,333429565 и £(хт)= 14,81481481.
Метод золотого сечения основан на делении
отрезка [а, 6] по правилу золотого сечения
(4.22). Для а = 2, £ = 5 и £ = 0,001 получим
хт = 3,33495386 и F (хт) = 14,81481479.
Метод квадратичной интерполяции —
экстраполяции заключается в замене £(х)
в промежутке Xi±/i, где xi — начальное при-
ближение, квадратической параболой, экстре-
Программа 4.27.
10
20
25
30
40
PRINT3ПОИСК МАКСИМУМА F(X) МЕТОДОМ ЗОЛОТОГО СЕЧЕНИЯ3
INPUT3ВВЕДИТЕ ПРЕДЕЛЫ ИЗМЕНЕНИЯ X Ал В 3 Ал В
INPUT3ЗАДАЙТЕ ПОГРЕШНОСТЬ РЕЗУЛЬТАТА Е= 3Е
LETK=<SQR<5)“1)/2
GOSUB 140
50 GOSUB 160
б© IF ABS(D-CXE THEN 120
70 IF L>M THEN 100
80 LETAC: LETC=D s LETL=M
90 GOSUB 160"GOTO 60
100 LETB=DSLETD=CSLETM=L
110 GOSUB 140:GOTO 6©
120 LETX= < C+D >/2:PRINT3 XM=3X
130 GOSUB 180:PRINT3F<XM)=3F:STOP
140 LETCC+(1-K)*<B-A)
150 LETXC: GOSUB 180:LETL=F:RETURN
160 LETD=A+K*<B-A)
170 LETX=H:GOSUB 180:LETM=F:RETURN
180 LETF=((.1жХ-2)жХ+10 >жХ
190 RETURN:END
4 В. П. Дьяконов
97
мум которой вычисляется аналитически. После
приближенного нахождения экстремума хт
(максимума или минимума) можно задать
xi=xm и повторить поиск, Таким образом,
с помощью итерационной процедуры значение
хт уточняется до получения его с заданной
погрешностью е. Как видно из рис. 4.8, этот
метод обеспечивает поиск как максимумов,
так и минимумов F(x), в том числе для случая
F (х) =0, причем точка хт может лежать в ин-
тервале xi±/i (интерполяция) и быть вне его
(экстраполяция). Алгоритм реализации этого
метода следующий.
1. Задаем начальное приближение Х|
для хм и вычисляем два смежных значения
аргумента /?(х):хо=Х1 — h и X2 = xi-j-/z, где
h — полуинтервал интерполяции — экстрапо-
ляции.
2. Вычисляем три значения F (х): F (х0) =
— Ло, F(xi)=/7i и F(x2)—F2.
3. Находим коэффициенты
Fo Fi F2 __ 1 , p x
С-'2Лг Тг4"2Л!Г“'2Л:г(?" 2F'+ 2)’
— Fo(2xi 4-/i)4-4FiX!—^г(2х| h)
&=---------------2jj!-------------
параболы y(x)—x2 + bx + c, проходящей через
выбранные три узла интерполяции — экстра-
поляции F(x), и по ним вычисляем анали-
тически положение экстремума
b
2с"
1 Л)(2х| 4~^)4"4F[Xi-j-/\>(2xi — Л)
= 2 Л, —2F, ’
4. Проверяем выполнение условия
(хт~Xi) <8. Если оно не выполняется, задаем
х\—хт и идем к п. 1. Если выполняется,
считаем хт найденным с заданной погреш-
ностью 8, вычисляем F (хт) и останавливаем
счет.
Программа 4.28.
Рис. 4.8. Поиск экстремумов максимума (а)
и минимума (6) методом квадратичной интер-
поляции —- экстраполяции
причем в обоих случаях экстремумы находи-
лись за пределами интервала xi±/z.
Сравнение методов одномерной оптими-
зации показывает, что для простой функции
Л(х). например вида (4.22), они обеспечивают
примерно одинаковое время поиска (около
10 с). Исключением является последний ме-
тод, имеющий время поиска примерно в 2,5 ра-
за меньше. Последнее связано с тем, что
функция (4.22) близка к квадратичной пара-
боле из-за малости коэффициента при х3.
10 PRINT'ВЫЧИСЛЕНИЕ ЭКСТРЕМУМОВ ФУНКЦИИ ОДНОЙ ПЕРЕМЕННОЙ'
20 PRINT'МЕТОДОМ КВАДРАТИЧНОЙ ИНТЕРПОЛЯЦИИ-ЭКСТРАПОЛЯЦИИ'
100 INPUT'ВВЕДИТЕ ШАГ №'Н
105 INPUT'ВВЕДИТЕ НАЧАЛЬНОЕ ЗНАЧЕНИЕ X1='Z
110 1МРиТ'ЗАДАйТЕ ПОГРЕШНОСТЬ РЕЗУЛЬТАТА Е='Е
115 LETX=Zs60SUB 20©sLETU=F
120 LETX=Z-Hs80SUB 2©0:LETW=F
130 LETX=Z+Hs60SUB 200sLETU=F
140 LETT=W«(2*Z+H)-4*U*Z+U*< 2*Z-H)
150 LETT=T/<W-2«U+U)/2
160 IF ABS<T-ZXE THEN 18©
170 LETZ=T:60T0 115
180 PRINT'XM='T
190 PRINT'F<XM>='UsSTOP
200 LETF=((.1*X-2)*X+10)*X
210 RETURNS END
Пример. Вычисление f(x) для функции
(4.22) производится подпрограммой, запи-
санной со строки 200. Для h = 0,1; Х|=3
и е = 0,001 получим хт = 3,33383342 и F (хт) =
= 14,8148146, а для х,=8 xw = 9,999499962
и F (хп1) =2,414881321 • 10“7. Значения F (хт)
показывают, что в первом случае обнаружен
максимум F(x), а во втором — минимум,
98
В большинстве случаев для гладких F(x\
метод квадратичной интерполяции — экстра
полиции дает заметный выигрыш во времени
вычислений. Удобно и то, что он без всякой
перестройки программ обнаруживает как
максимумы, так и минимумы F(x), причем
даже за пределами первоначально заданного
интервала поиска. Преимущество метода
золотого сечения перед методами поразряд-
ного приближения и дихотомии при простых
£(х) не выявляется, поскольку программная
реализация первого метода сложнее и необхо-
димо выполнение ряда вспомогательных опе-
раций. Однако при сложных F(x) метод
золотого сечения может давать существенный
выигрыш во времени. Для поиска экстремумов
пользуются также методом с числами Фибо-
наччи [3, 41], однако особым преимуществом
перед методом золотого сечения он не обла-
дает.
Многомерная оптимизация заключается в
поиске экстремумов функции многих пере-
менных F(xi, х2, ...» хп). Методы такой опти-
мизации детально описаны в [3, 38, 41].
Из всего многообразия методов многомерной
оптимизации ограничимся рассмотрением трех
относительно простых методов поиска мини-
мума £(Х|, Х2, ...» Хп).
Метод координатного спуска заключается
в поочередном поиске минимума по коор-
динате Х|, затем х2 и т. д. После нахождения
точки минимума по координате Х| переходим
к нахождению точки минимума по коорди-
нате Х2 и т. д. Поиск ведется с одинаковым
шагом, который уменьшается после нахож-
дения всех значений Xim, x2m, ..., xnm. Таким
образом, алгоритм реализации этого метода
подобен алгоритму метода поразрядного при-
ближения и лишь дополняется циклом задания
переменных хь х2, ..., хп, внутри которого
оценивается погрешность нахождения х^
для каждой переменной.
Программа 4.29.
Метод спирального координатного спуска
отличается от рассмотренного выше лишь тем,
что шаг Н меняется каждый раз при переходе
от поиска минимума по одной переменной
к поиску минимума по другой переменной.
В трехмерном пространстве это напоминает
спуск во впадину по спирали. Обычно этот
метод дает некоторое сокращение времени
поиска.
Программа 4.30.
Со строки 120 записана подпрограмма
вычисления функции (4.23). Для хю^хы**
=хзо=0,5; 77 — 0,5 и £=1.10~4 получим
Х1ш= 1,000032; х2т» 2,000032; x3™*3,000032
и F (xi)мин = 3,735451795 при /сл?1,5 мин.
Метод координатного спуска с квадратич-
ной интерполяцией — экстраполяцией основан
на последовательном поиске минимума каждой
переменной с применением для этого метода
квадратичной интерполяции — экстраполяции.
Программа 4.31.
Пример. Со строки 250 записана под-
программа вычисления функции (4.23). При
л =0,01; £=1-10~4; Хю=х2о=х3о.= О,5 по-
лучим %i,n= 1,000033409; х2да = 2,000016758;
х3,н = 3,000008995 и F (х<) иин= 3,735514058
(/с~1 мин).
Применение многомерной оптимизации для
решения систем уравнений (линейных и не-
линейных). Если дана система уравнений
’ /|(Х|, х2, ..., хя) = 0,
fa(xi, х2, ..., х„)=0,
/п(Х|, х2, ..., хй)=й=0,
I© PRINT’МИНИМИЗАЦИЯ ФУНКЦИЙ Н ПЕРЕМЕННЫХ МЕТОДОМ’
15 PRINT’ КООРДИНАТНОГО СПУСКА’
20 INPUT’ЗАДАЙТЕ ЧИСЛО ПЕРЕМЕННЫХ №’№ШМ A(N)
25 INPUT’ЗАДАЙТЕ НАЧАЛЬНЫЙ ШАГ ПОИСКА H=’HsLETL=H
30 INPUT’ЗАДАЙТЕ ТОЧНОСТЬ РЕЗУЛЬТАТА Е=’Е
35 FOR 1=1 ТО N
40 PRINT!2.0!’ВВЕДИТЕ НАЧАЛЬНЫЕ X’I’ 0= ’
45 INPUT A(I)sNEXT I
50 FOR 1=1 TO №LETB=.9E98
60 LETA<I)=A<I>+H5 6OSUB 150sLETC=B.“LETB=F
7© IF F-C<0 THEN 60
80 LETH=-H/3sIF ABSCH)>=ABS<L/3> THEN 60
90 LETH=L’-NEXT I
100 LETL=L/9sLETH=L
110 IF E/9<=L THEN 50
115 PRINT1F1.9!’F<XI MIN)=’F
120 FOR 1=1 TO N
130 PRINT 12.01’X’I’ MIN=’!F1.9!A(I)
135 NEXT I SPRINT’КОНЕЦ ВЫЧИСЛЕНИЙ’sSTOP
140 NEXT ISPRINT’КОНЕЦ ВЫЧИСЛЕНИЙ’sSTOP
150 LETF=EXP<A<1)+A(2)+A<3))/<A<1>*A<2)*A<2)*A<3)*A(3)*A<3)>
160 RETURNS END
Пример. Co строки 150 записана под-
программа вычисления функции
ч exp(xi +х24-х3)
F(x,. Х2, х3)=-------—5-5------
Х|Х2Хз
(4.23)
трех переменных. Для начальных значений
хю = Х2о=хзо = О,5, шага // = 0,5 и погреш-
ности £=1-10~4 получим Xim = 0,9999745973;
х2от = 1,999974597; х3« = 2,999979597 и
F (xi) «„и = 3,735451794.
Время счета около 1,5 мин.
4*
то поиск минимума функций
п п
£ 1МХ')1 или to)= £ (to))2
1=1 i ==)
дает неизвестные этой системы.
Пример. Найти неизвестные системы
из двух нелинейных уравнений
х?4-х2=1? х?—х2=0.
99
Программа 4.30.
10
15
20
25
30
35
PRINT'МИНИМИЗАЦИЯ ФУНКЦИЙ N ПЕРЕМЕННЫХ МЕТОДОМ
PRINT'* СПИРАЛЬНОГО КООРДИНАТНОГО СПУСКА'
INPUT’ЗАДАЙТЕ ЧИСЛО ПЕРЕМЕННЫХ N='NsDIM АСЮ
INPUT'ЗАДАЙТЕ НАЧАЛЬНЫЙ ШАГ ПОИСКА Н='Н
INPUT'ЗАДАЙТЕ ТОЧНОСТЬ РЕЗУЛЬТАТА Е='Е
FOR 1=1 ТО N
40 PRINT!2.0!'ВВЕДИТЕ НАЧАЛЬНЫЕ Х'1' 0='
45 INPUT ACDsNEXT I
50 FOR 1=1 TO NsLETB=.9E98
60
70
75
LETACI)=ACI>+Hs 6QSUB 120s LETC=B:LETB=F
IF F~C<0 THEN 60
NEXT I
80 LETH=-H/5: IF ABSCH)>E/5 THEN 50
90 PRINT’Fl.9!'FCXI MIN)='F
100 FOR 1=1 TO N
110 PRINT!2.0!'X'I' MIN='?F1.9!ACI)
115 NEXT I SPRINT'КОНЕЦ ВЫЧИСЛЕНИЙ'sSTOP
120 LETF=EXPCAC1)+AC2>+AC3))/CAC1)*AC2)*AC2)*AC3)*AC3)*AC3>)
130 RETURNS END
Программа 4.31.
10 PRINT'МИНИМИЗАЦИЯ ФУНКЦИЙ N ПЕРЕМЕННЫХ FCXI) МЕТОДОМ'
15 PRINT' КВАДРАТИЧНОЙ ИНТЕРПОЛЯЦИИ-ЭКСТРАПОЛЯЦИИ'
20 INPUT'ЗАДАЙТЕ ЧИСЛО ПЕРЕМЕННЫХ N='NsDIM АСЮ
25 INPUT'ЗАДАЙТЕ ПОГРЕШНОСТЬ ВЫЧИСЛЕНИЯ Е='Е
30 INPUT'ЗАДАЙТЕ ИНТЕРВАЛ ИНТЕРПОЛЯЦИИ Н='Н
35 FOR 1=1 ТО N
40 PRINT!2.8!'ВВЕДИТЕ НАЧАЛЬНЫЕ ЗНАЧЕНИЯ Х'1'НАЧ='
50 INPUT ACI>sHEXT I
100 LETS=0
110 FOR 1=1 TO N
120 LETZ=ACI)s60SUB 250sLETU=F
130 LETACI>=Z-Hs60SUB 250sLETW=F
140 LETACI>=Z+HsGOSUB 250sLETU=F
150 LEТТ=Ы* C 2*Z+H)-4*U*Z+U* C 2*Z-H)
160 LETT=T/CW-2'*U+U)/2
17© IF ABSCT-Z)>E THEN LETS=1
180 LETACI)=TsNEXT I
190 IF SO0 THEN 100
200 PRINT!F1.9!'FCXI MIN>='F
210 FOR 1=1 TO N
220 PRINT!2.0!'X'T'MIN='!F1.9! AC I)
230 NEXT I
240 РР1НТ'КОНЕЦ ВЫЧИСЛЕНИЙ'sSTOP
250 LETF=EXPCAC1)+AC2)+AC3)>/CAC1>*AC2)*AC2)*AC3)*AC3>*AC3))
260 RETURNS END
Для них имеем
F(X\, X2) = (^?+x2— l)2 + (x? —%2)2-
Воспользовавшись программой 4.31 при
/7 = 0,01; Е=Ы0’4 и х|О = х2о=1, получим
xim = 0,8259; х2т = 0,5636 и F (х1т, х2т) =
= 2,2726-10-4. Подстановка xlfn и х2т в исход-
ные уравнения дает x'i,tl -J-xL = 0,9998~ 1 и
x3im — х2т = — 2-10—4 ~ 0.
мул. Для функций, заданных таблично со
случайной погрешностью, точность чис-
ленного дифференцирования может быть
низкой.
Численное дифференцирование при равно-
мерно расположенных узлах с интерполя-
цией реализуется следующими формулами
(для 3, 4 и 5 узлов):
/(хо4-р/?)з =
§ 4.7. Численное
дифференцирование и вычисление
коэффициентов чувствительности
=-— 0,5) у-1 — 2pt/o-F(p + 0,5) yi],
// । t,\ 1/ 3p~ — 6/? —|—2
У (xо -Г ---------q-------У -1 +
Численное дифференцирование аналити-
чески или таблично заданной функции у(х)
заключается в замене у(х) интерполяцион-
ным полиномом Р(х), производные dnJ\x')/dxn ~
~dny(x)/dxn которого можно найти анали-
тически с помощью соответствующих фор-
3/?2 —4p—1
2
100
„ , 1 / 2р3-Зр2-р+1
у (xn + ph)i=- ----У-г —
4р3-Зр2-8р + 4 2р’-5р
-------6-----У-'+----2---У" ~
4р’ + 3р2 —8р —4 2р' + 3р2-р—1\
-------6-----У' +------12----У2)-
В этих формулах p = (x — xo)/h и x = xo + p/i.
Вычисление у'(х) по последней формуле реали-
зовано программой 4.32, в которой ординаты
у~2, у-\, уо, у\ и у2 обозначены как А, В, С,
D и Е.
Программа 4.32.
Формулы численного дифференцирования
для узлов у(х) существенно проще приведен-
ных, так как в узлах Р принимает фикси-
рованные значения. Особенно простыми явля-
ются формулы для центрального узла (Р = 0)
(см. табл. 4.1). Эти формулы удобны для
численного дифференцирования таблично за-
данных функций в точке х = х<>.
Частные производные функции ряда пере-
менных f(xi, х2, ..., х„) вычисляются по при-
веденным выше формулам, если задавать
приращение одной „из переменных и оставлять
неизменными (равными заданным значениям)
остальные переменные.
Анализ чувствительности функции Дх,,
х2, ..., хп) к изменению ее параметров х,,
10 PR I NT> ВЫЧИСЛЕНИЕ ПЕРВОЙ ПРОИЗВОДНОЙ/ ТАБ ЛИЧНО ЗАДАННОЙ'
20 PRINT'N=3-5 ОРДИНАТАМИ ФУНКЦИИ ПРИ РАВНОМЕРНОМ'
30 PRINT'РАСПОЛОЖЕНИИ УЗЛОВ ИНТЕРПОЛЯЦИИ':PRINT"
40 INPUT'ВВЕДИТЕ Х0='Ы:INPUT'ВВЕДИТЕ ШАГ Н='Н
50 INPUT'ЗАДАЙТЕ ЧИСЛО ОРДИНАТ N='N
60 IF N=3 GOTO 100
70 IF N=4 GOTO 110
80 IF №5 GOTO 120
90 INPUT'ПОВТОРИТЕ ВВОД N='№GOTO 60
100 INPUT'ВВЕДИТЕ ОРДИНАТЫ V-l/ V©/ VI 'А/ В/ С: GOTO 13©
И© 1НРиТ'ВВЕДИТЕ ОРДИНАТЫ V-ЬV©/VI/V2'A/В/C/D:GOTO 130
120 INPUT'ВВЕДИТЕ ОРДИНАТЫ V-l/V-l/V0/V1/V2'A/B/C/D/E
130 INPUT'ВВЕДИТЕ Х='Х: LETP=<X-W)/H
140 if №4 GOTO 180
150 IF N=5 GOTO 210
16© LETF= < <P-.5)жА-2жрж©+ < P+.5)жС)/Н
170 PRINT'DV/DX^'F!GOTO 138
18© LETF= <-< Зжржр-6жр+2)ЖА/6+ < Зжржр-4жр-1)ЖВ/2 )
190 ЬЕТЕ=(-<Зжржр-2жР-2)жС/2+<Зжржр-1)жЦ/6)
200 LETF=(F+E)/H:GOTO 17©
210 LETF=< < <2ЖР-3)жр-1>жр+1)жА/12
220 LETF=F-(< <4жР-3)жр-8)жр+4)жВ/6
230 СЕТР=Р+<2жржр-5)жржС/2
240 LETF=F-<(<4жр+3)жР-8)жр-4)жЦ/6
250 LETF5=F+ < < <2жр+3 )жр-1) жр-1)жЕ/12
260 LETF=F/HSGOTO 170:END
Пример. Найти производную /(х) в
точке х = 0,51 функции у(х), заданной при
хо = 0,5 и h = 0,02 пятью значениями у,:у_> =
= 0,35889029, у_1 = 0,35553253, у о =
= 0,35206533, yi =0,34849251 и t/2 = 0,344818.
Введя эти данные, получим /(0,51) =
= -0,1786491875.
х2, ..., Хп основан на вычислении абсолют-
ного приращения функции по формуле
Ах, +
дх2
дхп
А/(Х|, Х2, ...; Х„) =
А
Таблица 4.1
Формулы численного дифференцирования (производные в центральных узлах)
Число узлов Производные Погрешности У = У»
3 У' = У" = (У1-2уо + У-\)/к2 -к'у"'1Ь -h2yv/t2
5 у' = (— f/2-pBi/i—8у~ । -}~У- 2)/ 12А /' = ( — (/2-1- 16(/, — ЗО(/оЧ- 16(/_, — y-z)/\2h2 У"' = (y2 — 2yl+2y_i—y_2)/2h3 -h'y^O -rfy1/*
7 У' = (Уз — 9(/2 -1- 45(/1 — 45у _ । + 9е/ _ 2 — у - з)/60Л у" = (2(/3 — 27 у2 + 270(/1 — 49О(/о + 270(/ _, — 27 у _ 2 + 2у _ :J) /180/г' у"' — уз + 8(/2 — 1 Зу\ -f-1 Зу~ । — 8(/_2 -р 1/-з)/8А3 -Л6/”/140 -Л6/"'/560 7 Л4/"/120
101
где коэффициенты дЦдх, являются абсолют-
ными коэффициентами чувствительности к
изменению параметра xz. Применяют и относи-
тельные коэффициенты чувствительности
з;
_ж
dxi/xi
Нт
о Axj/x,
(4.24)
С их помощью легко вычисляется относи-
тельное приращение функции при заданных
относительных изменениях параметров (пере-
менных) Axz/x/o:
Пример. Найти три производные функ-
ции нормального распоеделения ф(х)=/(х) =
в точке хо==О,5. Подпрограмма
вычисления f (х) при х==Х(1) записывается
со строки 400. Задав Н = 0,001, получим
выдачу в виде
D1F/DX1 = - 1,760326635- 10’1,
D2F/DX2— -2,640406667- Ю"1,
D3F/DX3 = 4,845-10-1,
S=-2,500000002 -Ю"1,
F(X10) = 3,3520653268-10“‘.
А/
f(xi<}, х2о, ...» xrth)
Точные значения производных и функ-
ции Дхо):
= s, -^-+S2 АД-4-... + Sn-^i-.
*10 X20 XnO
Вычисление трех частных производных
и относительных коэффициентов чувстви-
тельности функции f(xi, Х2, ...» хп) ряда пере-
менных можно организовать следующим
образом.
1. Будем считать переменные xi, х2, ...» хп
переменными массива Х(1) и организуем ввод
числа переменных N и начальных значений
переменных хю, Х20, ..., хпо.
2. Вводим приращение Ах — //.
3. Организуем цикл вычислений частных
производных по каждой переменной с управ-
ляющей переменной /=1, 2, ..., /V. Внутри
цикла задаем х, = (х^ — 2/i), (х/0 —/г),
(х/о 4- 2/г) • (для 5 узлов) и для этих значений
Xi, обращаясь к подпрограмме вычисления
f(xi, Х2, ..., Хп), находим ординаты /„2 = 1/-2,
...» /2 ==*/2. После этого вычисляем
производные Нхю)==/(х/о), * /"(*«<)) =*/'(*<0),
1"'(хю)—у"'(хю) по формулам табл. 4.1 и ко-
эффициенты S, (4.24) и выводим их на печать.
4. После выхода из цикла идем к п 2
и повторяем вычисления (если это необхо-
димо).
При Л/1 по этому алгоритму вычисля-
ются три производные и коэффициент S
функции одной переменной f(x).
Программа 4.33.
-^-=±=—0,1760326633,
ах
-0,2640489951,
ах
d?f
-7-^=0,48408982,
dx*
Дх0) = 0,3520653267.
Если значения хю, Х20, ..., хЛо сильно
различаются, то для повышения точности
численного дифференцирования целесообраз-
но задавать не абсолютные приращения
Дх, = /г, а относительные р = Дх</х,-о. Тогда
при вычислениях п. 3 в описанном выше
алгоритме нужно задавать абсциссы
(х.о — 2рх,(1), (Х/О —рх,о), ..., (х,о + 2рх/О). Кроме
того, в этом случае
Si^(dfi/dXi)/p.
Программа 4.34.
Работу этой программы можно проверить
по примеру, приведенному выше для про-
граммы 4.33 (при р = 0,002 получим анало-
гичные результаты).
Подобные программы могут быть состав-
лены и для численного дифференцирова-
ния аналитически заданных функций по
7 точкам.
10 PRINT'ВЫЧИСЛЕНИЕ ТРЕХ ЧАСТНЫХ ПРОИЗВОДНЫХ И'
20 PRINT'ОТНОСИТЕЛЬНОГО КОЭФФИЦИЕНТА ЧУВСТВИТЕЛЬНОСТИ'
30 PRINT'ФУНКЦИИ F<XI) РЯДА ПЕРЕМЕННЫХ, ЗАДАННОЙ'
40 PRINT'S ОРДИНАТАМИ-ПОДПРОГРАММА СО СТРОКИ 400'
50 INPUT'BBEAHTE ЧИСЛО ПЕРЕМЕННЫХ N='N
60 DIM X(N>,А<Ю,B<N>,C<N),S<N)sFOR 1=1 TO N
70 PRINT 12.0!'ВВЕДИТЕ НАЧАЛЬНОЕ ЗНАЧЕНИЕ XC'I')'
80 INPUT XCI): NEXT I
90 INPUT'ЗАДАЙТЕ АБСОЛЮТНОЕ ПРИРАЩЕНИЕ Х<1) Н='Н
100 FOR 1=1 ТО №LETX<0)=X< I >
110 LETX<I)=X(0)-2*HsGOSUB 400sLETF2=FsGOSUB 400sLETFl=F
120 GOSUB 400sLETF0=FsGOSUB 400sLETEl=FsGOSUB 400sLETE2=F
130 LETX <I)=X < 0)sLETA < I)=C-E2+8*E1-8*F1+F2 >/12/H
140 LETS<I)=A(I)*X(I)/F0
150 LETB <I)=<-E2+16*E1-30«F0+16*F1-F2)z12/H/H
160 LETCCI)=<E2-2*El+2*Fl-F2)/2/H/H/HsNEXT I
200 FOR 1=1 TO № PRINT 12.0!'ДЛЯ ПЕРЕМЕННОЙ XC'I')'
210 PRINT!F1.9!'D1F/DX1='A(I>
220 PRINT'D2F/DX2='B<I)sPRINT'D3FzDX3='C<I)
230 PRINT'S='S<I>sNEXT I
240 PRINT'ЗНАЧЕНИЕ ФУНКЦИИ F(XI0>='F0SGOTO 90
400 LETF=EXP <-X <1> л2/2)zSQR < 2*#PI)
410 LETXCI)=X<I)+HsRETURNS END
102
Программа 4.34.
10 PRINT'ВЫЧИСЛЕНИЕ ТРЕХ ЧАСТНЫХ ПРОИЗВОДНЫХ И'
20 PRINT‘ОТНОСИТЕЛЬНОГО КОЭФФИЦИЕНТА ЧУВСТВИТЕЛЬНОСТИ'
30 PRINT'ФУНКЦИИ F(XI) РЯДА ПЕРЕМЕННЫХ/ ЗАДАННОЙ'
40 PRINT'АНАЛИТИЧЕСКИ-ПОДПРОГРАММА СО СТРОКИ 400'
45 PRINT'ПРИ ЗАДАНИИ ОТНОСИТЕЛЬНОГО ИЗМЕНЕНИЯ ПЕРЕМЕННЫХ'
50 INPUT'ВВЕДИТЕ ЧИСЛО ПЕРЕМЕННЫХ N='N
60 DIM X(N)/A<N>/B<N>/C(N)/S<N):FOR 1=1 ТО N
70 PRINT!2.0?'ВВЕДИТЕ НАЧАЛЬНОЕ ЗНАЧЕНИЕ Х('Г‘>'
80 INPUT Х<1): NEXT I
90 INPUT'ЗАДАЙТЕ ОТНОСИТЕЛЬНОЕ ПРИРАЩЕНИЕ XCI) Р='Р
100 FOR 1=1 ТО N:LETX<0)=X<I):LETH=P*X<0)
110 LETX(I)=X<0)-2*HsGOSUB 400sLETF2=FsGOSUB 40©sLETFl=F
120 GOSUB 400sLETF0=FsGOSUB 400sLETEl=FsGOSUB 480sLETE2=F
130 LETX(I)=X(0)s LETA < D = <-E2+8*E1-8*F1+F2)/12/H
140 LETS<I)=A(I)*X<I)/F0
150 LETB <I)=(-E2+16*E1-30*F8+16*F1-F2)/12/H/H
160 LETC(I)=(E2-2*El+2*Fl-F2>/2/H/H/HsNEXT I
200 FOR 1 = 1 TO Ns PRINT!2.0!'ДЛЯ ПЕРЕМЕННОЙ XC'I')'
210 PRINT!F1.9!'DlFzDXl='A<I)
220 PRINT'D2F/DX2='B(I)sPRINT'D3F/DX3»'C<I)
230 PRINT'S»'S(I)sNEXT I
240 PRINT'ЗНАЧЕНИЕ ФУНКЦИИ F<XI0)='F0SGOTO 90
400 LETF=EXP<-X< 1 r-2/2VSQR<2*#PI >
410 LE TX(I)=X <I') +H s RETURN s END
Программа 4.35.
10 PRINT'ВЫЧИСЛЕНИЕ ТРЕХ ЧАСТНЫХ ПРОИЗВОДНЫХ И'
28 PRINT'ОТНОСИТЕЛЬНОГО КОЭФФИЦИЕНТА ЧУВСТВИТЕЛЬНОСТИ'
30 PRINT'ФУНКЦИИ FCXI) РЯДА ПЕРЕМЕННЫХ/ ЗАДАННОЙ'
40 PRINT'АНАЛИТИЧЕСКИ-ПОДПРОГРАММА СО СТРОКИ 400'
50 INPUT'ВВЕДИТЕ ЧИСЛО ПЕРЕМЕННЫХ N='N
60 DIM X<H)/A<N)/B<N)/C<N>/S<N)sFOR I«1 TO N
70 PRINT*2.0!'ВВЕДИТЕ НАЧАЛЬНОЕ ЗНАЧЕНИЕ X<'I')'
80 INPUT X<I)s NEXT I
90 INPUT'ЗАДАЙТЕ ОТНОСИТЕЛЬНОЕ ПРИРАЩЕНИЕ Х<1) Р='Р
100 FOR 1=1 ТО №LETX<0>=X<I)5LETH=X(0)*P
110 LETX<I>=X<0)-3*HsGOSUB 400sLETF3=F
120 GOSUB 400sLETF2=FsGOSUB 400sLETFl=FsGOSUB 400sLETE©=F
130 GOSUB 400sLETE1=FsGOSUB 400sLETE2=FsGOSUB 400sLETE3=F
140 LETA<I)=<E3-9*E2+45*El-45*Fl+9*F2-F3>/60/H
150 LETB<I)=2*E3~27*E2+270*E1~490*E0
160 LETB(I>=<B<I>+270»Fl-27*F2+2*F3>/180/<H»H)
170 LETC(I)=< 8ЖЕ2-E3-13*E1+13*F1-8»F2+F3)/8/< H~3)
180 LETS<I)=A<I)*X(0)/E05LETX<I>=X<0)sNEXT I
200 FOR 1 = 1 TO Ns PRINT!2.0!'ДЛЯ ПЕРЕМЕННОЙ X('I'>'
210 PRINT !F1.9!' D1F<DX1 = 'AC I)
220 PRINT'D2F/DX2='В <I> s PRINT'D3F/DX3='CCD
230 PRINT'S='S<I)8NEXT I
240 PRINT'ЗНАЧЕНИЕ ФУНКЦИИ FCXI©)»'E05GOTO 98
400 LETF=EXPC-XC1>~2/2)/SQR<2*#PI)
410 LETXCI)«XCI)+HsRETURNS END
Пример. Используя данные програм-
мы 4.33, получим
D1F/DX1 = — 1,760326636-10~1,
D2F/DX2 = -2,640489378-10“
D3F/DX3 = 4,840943756 • 16“
S=-2,500000004-10“',
F(XI0)=3,3520653268- IO-1.
В этой программе Н = const. В приведен-
ной ниже программе задается Р = Дхг/х/0~
= const.
103
Программа 4.36.
10 PRINT‘ВЫЧИСЛЕНИЕ ТРЕХ ЧАСТНЫХ ПРОИЗВОДНЫХ И"
20 PRINT"ОТНОСИТЕЛЬНОГО КОЭФФИЦИЕНТА ЧУВСТВИТЕЛЬНОСТИ"
30 PRINT"ФУНКЦИИ F£XI> РЯДА ПЕРЕМЕННЫХ/ ЗАДАННОЙ"
40 PRINT"АНАЛИТИЧЕСКИ-ПОДПРОГРАМПА СО СТРОКИ 400"
50 INPUT"ВВЕДИТЕ ЧИСЛО ПЕРЕМЕННЫХ N="N
60 DIM X<N)/A<N)/B(N>/C<N>/S(N)sFOR 1=1 ТО N
70 PRINT 12.0!"ВВЕДИТЕ НАЧАЛЬНОЕ ЗНАЧЕНИЕ Х<"I">"
80 INPUT Х<I>s NEXT I
90 INPUT"ЗАДАЙТЕ АБСОЛЮТНОЕ ПРИРАЩЕНИЕ X(I) H="H
100 FOR 1=1 TO №LETX(0)=X< I)
110 LETX<I)=X<0)-3*HsGOSUB 400sLETF3=F
120 GOSUB 400sLETF2=F:GOSUB 400sLETF1=Fs60808 400sLETE8=F
130 GOSUB 400sLETEl=FsGOSUB 400sLETE2=FsGOSUB 400sLETE3=F
140 LETA <I>=< E3-9*E2+45*E1-45*F1+9*F2-F3 >/60/Н
150 LETB<I)=2*E3-27*E2+270*E1-490«E0
160 LETB<I)=(B<I)+270*F1-27>F2+2*F3)/180/<H*H)
170 LETC< I)=< З.ЖЕ2-ЕЗ-13*E 1 +13*F 1 -8*F2+F3 ) '8/ < H~3 )
180 LETS<I)=A<I>*X(0)/E0sLETX(I)=X(0)5NEXT I
200 FOR 1=1 TO Ns PRINT*2.0!"ДЛЯ ПЕРЕМЕННОЙ X("I">"
210 PRINT!F1.9!"D1F/DX1="A<I)
220 PRINT"D2F/DX2»"B(I)sPRINT"D3F/I*X3="C(I)
230 PRINT'S»"S<I>sNEXT I
240 PRINT"ЗНАЧЕНИЕ ФУНКЦИИ FCXI0>="E0SGOTO 98
400 LETF=EXP(“X(1)л2/2)/SQR< 2ж#РI)
410 LETX<I>«X<I)+HsRETURNSEND
Работу этой программы также можно
проверить по приведенному выше примеру.
Следует отметить, что из-за ошибок округ-
ления точность численного дифференциро-
вания при малых hup при 7 точках улучша-
ется незначительно, а иногда даже ухудшается
(в сравнении с дифференцированием по
5 точкам).
§ 4.8. Вычисление определенных
интегралов
Определенный интеграл
ь
.1 =$ fW dx
а
(4.25)
с пределами интегрирования а и b можно
трактовать как площадь фигуры (рис. 4.9),
ограниченной ординатами а и Ь, осью
абсцисс х и графиком подынтегральной
функции f (х).
Рис. 4.9. Графическая Иллюстрация численного
интегрирования
Обыкновенный определенный интеграл,
у которого известна его первообразная
F(x), вычисляется по формуле Ньютона —
Лейбница
/ = F(&)-F(a).
Поэтому, достаточно вычислить значения
функции F(x). Большое количество опреде-
ленных интегралов приведено в книге [30].
Численное интегрирование применяется,
если нахождение F(x) сложно или невозможно.
Оно заключается в интерполяции Дх) на от-
резке [а, 6] подходящим полиномом, для
которого определенный интеграл вычисляется
по формулам численного интегрирования.
Обычно отрезок [а, /?] разбивается на m
частей, к каждой из которых применяется
соответствующая простая формула. Таким
образом получают составные (или сложные)
формулы численного интегрирования.
Метод прямоугольников — простейший
прием численного интегрирования, при ко-
тором функция y = f(x) заменяется интерпо-
ляционным многочленом нулевого порядка.
Для повышения точности интегрирования
отрезок [а, /?] разбивается на m частей
и формула прямоугольника применяется к
каждому отрезку. Приведем обобщенную
формулу прямоугольников:
ш— 1
/ = 0
Вследствие низкой точности этот метод почти
не применяется.
Модифицированный метод прямоуголь-
ников базируется на представлении Дх)
ординатами, смещенными на величину 0,5/i,
где h = (b — a)/nv.
l~h £ f(x/ + 0,5ft)+—
где /"(5) — значение второй производной Дх)
в точке х = £, где она максимальна.
Метод трапеций заключается в линейной
аппроксимации Дх) на отрезке [а, Ь]. Для
уменьшения погрешности [а, разбивается
104
на т частей длины h — (b — a)/m (при методе
прямоугольников f(x() = const = yt на этом
отрезке).
С учетом суммирования смежных орди-
нат внутри отрезка [а, Ь] обобщенная фор-
мула метода трапеций имеет вид
- - (5).
В связи с легкостью программной реали-
зации и низкой точностью рассмотренных
методов программы для них не приво-
дятся.
Метод Ньютона — Котеса основан на
интерполяции f(x) в п промежутках полино-
мом Лагранжа. В общем случае f(x) должна
задаваться (п 4-1) ординатами. Формулы
интегрирования точны, если f (х) — много-
член п-й степени. При п=\ получаем метод
трапеций.
Метод Симпсона (парабол) — частный
случай метода Ньютона — Котеса при п — 2.
При разбиении отрезка [а, Ь] на m равных
отрезков получим обобщенную формулу
Симпсона
( h
/ = f(x)dx ~ х |«а)+4Да+Л)+2Да + 2Л)+
и
а
+4Ka + 3/i)+...+4K*-/i)+f(*)]-^-f,V(5).
Выражение для остаточного члена показы-
вает, что формула Симпсона точна, даже
если /(х) — многочлен третьей степени. Эта
частная особенность формулы Симпсона
объясняет ее преимущественное применение —
у некоторых ЭВМ вычисление по ней реали-
зовано микропрограммно.
Алгоритм реализации метода Симпсона
дан на рис. 4.10.
Программа 4.37.
Пример. Вычислить интеграл
j
/ = $ V2x+ 1 dx= 1,398717474
о
(4.26)
при а==0 и Ь — \. Вычисление подынтеграль-
ной функции оформляется подпрограммой —
см. строку 110. Для т — М — % получим
/=1,39871724 при /с«5 с.
Программа 4.37.
Рис. 4.10. Алгоритм численного интегрирования по
составной формуле Симпсона
Интегрирование по формуле Бодэ
/= J f(x)dx=^-(7yn + 32yi + l2y2 +
XQ 4о
+ 32j/3 + 7j/4)
10 PRINT 'ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ МЕТОДОМ СИМПСОНА’
20 INPUT 'ВВЕДИТЕ НИМНИй ПРЕДЕЛ ИНТЕГРИРОВАНИЯ А='А
25 INPUT 'ВВЕДИТЕ ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ В»'В
30 INPUT 'ВВЕДИТЕ ЧИСЛО ИНТЕРВАЛОВ ИНТЕГРИРОВАНИЯ М=’М
40 LET Н=<В-А)/М/2 s LET Х=А
50 60SUB 110 I LET I=F s LET N=0
60 LET X«X+H s 60SUB 110 s LET I=I+4*F
70 LET N=N+2 • IF N=2*M THEN 90
80 LET X=X+H s 60SUB 110 t LET I»I+2*F s 60T0 60
90 LET X=B : 60SUB 110 s LET I*CI+F)*Hz3
95 PRINT 'ДЛЯ A=’A’ B='B' И M«’Ms PRINT"
100 PRINT'ЗНАЧЕНИЕ ИНТЕГРАЛА 1='Is GOTO 30
110 LET F=SQR<2»X+1> s RETURN : END
105
примененной к каждому из т отрезков
разбиения [a, 6J, реализует следующая
программа.
Программа 4.38.
по формуле, содержащей одинаковые мно-
жители‘д,—. 2/л перед /(/,). Однако при этом
абсциссы h располагаются неравномерно.
Так, для л = 3 /| = — ^/2/2, /2 = 0 и /3 = У2/2
10 PRINT'ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ ПО ФОРМУЛЕ БОДЭ'
20 INPUT'ВВЕДИТЕ НИЖНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ А='А
30 INPUT'ВВЕДИТЕ ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ В='В
40 INPUT'ВВЕДИТЕ ЧИСЛО ИНТЕРВАЛОВ ИНТЕГРИРОВАНИЯ М«'М
50 LETH=<B-A>/M!LETE«Hz4sLETX=As60SUB 1308 LETI=7*F
60 FOR N=1 TO MSLJETX=X+E
70 GOSUB 1308LETI=I+32*FsLETX=X+E
80 GOSUB 130:LETI=I+12*FsLETX=X+E
90 GOSUB 130sLET1=1+32*FsLETX=X+E
100 GOSUB 1308LETI=I+14*F
110 NEXT N
120 LETI=I-7*F!LETI = I.*2*E/45
125 PRINT'ЗНАЧЕНИЕ ИНТЕГРАЛА 1=4 8 GOTO 40
130 LETF=SQR(2*X+l)sRETURN:END
Пример. Для интеграла (4.26) при
т — 4 получим /=1,398717463 при /с~5 с.
Подпрограмма вычисления f(x) записывается
со строки 130.
Метод Уэддля базируется на применении
к каждому из т отрезков разбиения [а, /?]
формулы
/ — $ f(x)dx =
Х()
— jo G/o + 5//i+//2 4-6г/з4-//4 4-5#5-+-*/б)4-
। 47/i7 fVI
+ 12700 I
Программа 4.39.
Пример. Для интеграла (4.26) при
т = 4 получим /=1,398717474 при /с~5 с.
Подпрограмма вычисления f(x) записывается
со строки 170.
Формула Ньютона — Котеса с повышенной
(в сравнении с формулой Уэддля) точностью
для т=6
/ =
Jf (х) rfxsi-A- (411/0 + 2161/!+ 271/2 +
Х()
+ 272i/3 + 27i/4 + 216i/5 + 41i/6) —^LfvltI Ц)
реализована в следующей программе.
Программа 4.40.
Пример. Для интеграла (4.26) при
т = 4 получим /=1,398717474 при /с~5 с.
Подпрограмма вычисления f(x) записывается
со строки 130?
Приведенные выше методы интегрирования
имеют равномерное расположение абсцисс х,,
для которых вычисляются yi~f(Xi). При этом
крайние значения х, равны а и b (за исклю-
чением модифицированного метода прямо-
угольников).
Метод Чебышева основан на вычислении
значения определенного интеграла
-Н 9 п п
/= 5 w <4-27>
— j i = I i = I
интеграл (4.27) приводится к виду (4.25)
подстановкой
х=-Ур- + -^-/. (4.28)
Формула (4.27) точна для полиномов сте-
пени п.
Программа 4.41.
Пример. Для интеграла (4.26) при
т = 8 получим /=1,398717533 при /с«6 с.
Вычйсление f(x) оформлено подпрограммой
(строка 140).
Метод Гаусса основан на интерполяции
f(x) полиномом Лагранжа, но абсциссы х,
выбираются из условия обеспечения минимума
погрешности интерполяции. При этом интег-
рал (4.25) подстановкой (4.28) сводится
к виду
+ I п
-I t=l
(4.29)
Метод Гаусса обычно обеспечивает повы-
шенную точность — формула (4.29) верна для
полиномов до (2л—1)-й_степени. Для п —
= 3 Д,=5/9, /, = — УГ/З, Д2 = 8/9, /2 = 0,
Д3 = 5/9 и /з = <Г73. Остаточный член (по-
грешность) при этом равен
Для повышения точности интегрирования
отрезок [а, дробитря на m частей.
Программа 4.42.
Пример. Для интеграла (4.26) при
М — 8 получим /=1,398717474 при /с«6 с.
Подпрограмма вычисления f(x) записана со
строки 130. При численном интегрировании
с заданной точностью оценка погрешности
интегрирования обычно сложна и требует
вычисления высших производных f(x). Поэтому
на практике принято проводить интегриро-
вание для ряда т = 2, 4, 8 и т. д., считая
верным число совпадающих первых цифр ре-
зультата. Этот процесс легко автоматизиро-
вать, что положено в основу программы 4.43.
106
Программа 4.39.
10 PRINT’ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ МЕТОДОМ УЭДДЛЯ'
30 INPUT’ВВЕДИТЕ НИЖНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ А='О
30 INPUT'ВВЕДИТЕ ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ 8='В
40 INPUT’ВВЕДИТЕ ЧИСЛО ИНТЕРВАЛОВ ИНТЕГРИРОВАНИЯ М='М
50 LETAM?’LETH=<B~A>zMsLETX=A:GOSUB 170
55 LETI=FsLETL=Hz6
60 FOR E=1 TO M
70 LETX=X+LsGOSUB 170:LETI=I+5*F
80 LETX=X+L:GOSUB 1705 LET1*1+F
98 LETX=X+LsGOSUB 170sLETI=I+6*F
100 LETX=X+L:GOSUB 170sLETI=I+F
110 LETX=X+LsGOSUB 170sLETI=I+5*F
120 LETX*X+L:GOSUB 170 s LETI = I+2*F
130 LETA*Xs NEXT E
140 LETI=<I~F>*3.*L/10
150 PRINT'ДЛЯ A*'Q'B«'B'M M«'M
160 PRINT'ЗНАЧЕНИЕ ИНТЕГРАЛА I*'I:GOTO 40
170 LETF=SQR(l+2*X)sRETURNS END
Программа 4.40.
10 PRINT'ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ МЕТОДОМ НЬИТОНА-КОТЕСА'
20 INPUT'BBEAHTE НИЖНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ А='А
25 INPUT'ВВЕДИТЕ ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ В='В
30 INPUT'ВВЕДИТЕ ЧИСЛО ИНТЕРВАЛОВ ИНТЕГРИРОВАНИЯ №'М
35 LETH=<B-A>/MsLETE=H/6
40 LETX=AsGOSUB 130sLETI=41*F
50 FOR N=1 TO MsLETX=X+E
60 GOSUB 130sLETI=I+216*F8LETX=X+E
70 GOSUB 130"LETI=I+27*FsLETX=X+E
86 GOSUB 130SLETI=I+272*FSLETX=X+E
90 GOSUB 130 s LETI = I+27*FsLETX=X+E
100 GOSUB 1305LETI=I+216*FsLETX=X+E
110 GOSUB 1305LETI=I+82*FsNEXT N
120 LETI=<I-41*F>*E/140
125 PRINT'ЗНАЧЕНИЕ ИНТЕГРАЛА 1='Is GOTO 30
130 LETF=SQR<2*X+1> s RETURNS END
Программа 4.41.
10 PRINT 'ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ МЕТОДОМ ЧЕБЫШЕВА'
20 INPUT'ВВЕДИТЕ НИЖНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ A='Q
30 INPUT'ВВЕДИТЕ ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ В='В
40 INPUT'ВВЕДИТЕ ЧИСЛО ИНТЕРВАЛОВ ИНТЕГРИРОВАНИЯ М='М
50 LETA=Q:LETT=SQR < 2 >/2 s LETI=0 s LETH= < В-А >/М
68 FOR E=1 TO MsLETW=A+H8LETC=CM+A)/2
70 LETD=(U-A)/2sLETX=C-D*TsGOSUB 120
80 LETI=I+FsLETX=CsGOSUB 120
90 LETI*I+FsLETX«X+D*TsGOSUB 120
100 LETI*I+FsLETA«WsNEXT E
110 LETI=I*H/3sPRINT'ЗНАЧЕНИЕ ИНТЕГРАЛА I='I8&OTO 40
120 LETF=SQR(2*X+1>sRETURNSEND
Программа 4.42.
05 PRINT'ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ МЕТОДОМ ГАУССА'
10 INPUT'ВВЕДИТЕ НИЖНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ А='О
12 INPUT'ВВЕДИТЕ ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ В='В
15 INPUT'ВВЕДИТЕ ЧИСЛО ИНТЕРВАЛОВ ИНТЕГРИРОВАНИЯ M=’MsLETA=Q
20 LETT«SQR ( 0.6 ) s LET I ==0 s LETH= (В-A >/М
30 FOR E=1 TO Ms LETB1=A+H
40 LETC=<Bl+A)/2s LETD=<B1-AV2
50 LETX=C-D*Ts GOSUB 130
60 LETV*D*5*F/9s LETI=1+7
70 LETX=Cs GOSUB 130
80 LETY=D*8*F/9s LETI=I+V
90 LETX=C+D«Ts GOSUB 130
100 LETY=D*5*F/9s LETI=I+V
110 LETA=Bls NEXT E
115 PRINT'ДЛЯ А='О'В='В'И M='MsPRINT"
120 PRINT' ЗНАЧЕНИЕ ИНТЕГРАЛА I='D GOTO 15
130 LET F=SQR<2*X+1>:RETURNS END
lt»7
Программа 4.43.
1© PRINT'ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ С ЗАДАННОЙ ТОЧНОСТЬЮ'
15 PRINT' МЕТОДОМ ГАУССА'
20 INPUT'BBEAHTE НИИНИй ПРЕДЕЛ ИНТЕГРИРОВАНИЯ A'Q
22 IHPUT'BBEAHTE ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ В'В
25 INPUT'BBEAHTE ПОГРЕШНОСТЬ РЕЗУЛЬТАТА Е='Н
30 LETN==N*60 s LETM= 18 LETK=0
40 LETM»2*MsLETA=Q
45 LETT=SQR<.6)8 LETI=08 LETH=<B-A>/М
50 FOR J=1 TO M8LETW=A+HsLETC«<W+A)/2
55 LETD»(W-A)/28LETE«D*5/9
60 LETL»D*8/9SLETD=D*T
70 LETX=C-DsGOSUB 150sLETI=I+E*F
80 LETX=Cs60SUB 150:LETI=I+L*F
98 LETXSC+Ds GOSUB 150sLETI=I+E*F
100 LETA=WsHEXT J
110
120
130
LETL=K:LETK=I
IF ABS<I-L)>N THEN 40
PRINT'ЗНАЧЕНИЕ ИНТЕГРАЛА 1='Is STOP
150 LETF=SQR<2*X+1>sRETURN;END
Для погрешносчи i =1-10“6 вычисление
интеграла (4.26) дает /=1,398717485 при
/с«8 с. Подпрограмма вычисления f(x) запи-
сывается со строки 150.
§4.9. Вычисление определенных ин-
тегралов специального вида
Несобственными интегралами называются
интегралы, у которых f (х) оо на отрезке
[а, 6] либо I (а) -> оо или f (6) -> оо.
Вычисление несобственных интегралов с
f (х) -> оо на концах отрезка [а, 6] в прин-
ципе осуществляется методами Гаусса и Че-
бышева, так как у них в ходе вычислений
узлы интерполяции f (х) не совпадают с пре-
делами интегрирования. Наличие особенности
может повлиять на точность интегрирования.
Методы Ньютона — Котеса (в частности,
метод Симпсона) удобно применять, если
f (хо) -> оо при хо, принадлежащем интер-
валу (а, Ь). Равномерное расположение уз-
лов интерполяции у этих методов облегчает
контроль за их положением и исключение
в ходе вычислений значений х, = хо. Если
f (х) имеет на концах предела интегрируе-
мости устранимую особенность, например не-
определенность 0/0 или оо/оо, можно
использовать эти методы с отдельным вводом
значений f (а) и f (b).
Программа 4.44.
Пример. При £=1-10~4 получим для
интеграла (4.26) значение /=1,3987 при
tc «4 с.
Сходящиеся несобственные интегралы с
бесконечными пределами интегрирования вы-
числяются различными приемами [4]. Так,
интеграл вида
/ = f f (х) dx—\ f (х) dx-\- J f (x) dx (4.30)
a a b .
может вычисляться как обыкновенный при
выборе вспомогательного промежуточного
предела интегрирования из условия
/=$ f (х) dx<e,
ь
где е — заданная погрешность интегрирова-
ния. Другой прием заключается в автомати-
ческом изменении 6, например как 6о, 26о,
46о, 86о и т. д., где до — начальное значе-
ние b с контролем на каждой /-й стадии
условия
1А-//_1|<е=Е.
При выполнении этого условия счет прекра-
щается. Последний способ реализован в
программе 4.45, где вычисляются несобствен-
ные интегралы вида (4.30) методом Гаусса.
Программа 4.45.
Пример. Для функции f (х) =хе-х, а =
= 0 при и 6о=Ю получим
/=1,000457964 при /с«20 с. Отметим, что
при малых Е время счета может резко
возрастать, а из-за погрешностей вычисле-
ния А и А-i программа может зациклиться.
В строке 150 записана подпрограмма, вы-
числяющая f (х).
Двойные (кратные) интегралы вида
!=\\f у) dxdy
а с
могут вычисляться по кубатурной формуле
Симпсона. При этом область интегрирова-
ния в плоскости х, у разбивается на четыре
квадрата (рис. 4.11, а), а значение / вычис-
ляется по формуле* [7]
hk
1(*о, Уо) 47 (*2, Уо) 47 (*о, 4/г) 4“
+ f (*2, «/г)) 4- 4 [f (xi, уо) -|- f (хо, У\) +
+ f (*2,4/i)+f (х,, г/2)] 4-16/ (х,, t/i)),
Программа 4.46.
Пример. Для интеграла (подпрограмма
записана со строки 140)
4 4 2.6
/ = ( \ -* dy = In 3• In 1,1 = 0,02500598522,
3 J xy
4 2 (4.31)
введя a = 4, 6 = 4,4, c — 2 и d = 2,6, получим
/ = 0,02500698577. Для повышения точности
область интегрирования можно разбить на
108
Программа 4.44.
10 PRINT'ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ МЕТОДОМ СИМПСОНА С ЗАДАННОЙ'
15 PRINT'ТОЧНОСТЬЮ Е И F<X) С ОСОБЕННОСТЯМИ ПРИ Х=А И Х=В'
20 PRINT" •INPUT'ВВЕДИТЕ НИИНИй ПРЕДЕЛ ИНТЕГРИРОВАНИЯ А«'А
25 INPUT'ВВЕДИТЕ ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ В»'В
30 INPUT'ВВЕДИТЕ ПОГРЕШНОСТЬ РЕЗУЛЬТАТА E='EsLETM=l
40 PRINT'ВВЕДИТЕ 0 ЕСЛИ НЕТ ОСОБЕННОСТИ ПРИ Х=А‘
45 INPUT'И 1 ЕСЛИ ЕСТЬ ОСОБЕННОСТЬ ПРИ Х=А 'S
50 IF S=0 THEN 65
60 INPUT'ВВЕДИТЕ ЗНАЧЕНИЕ F(A)='CsGOTO 70
65 LETX=AsGOSUB 210sLETC=F
70 PRINT'ВВЕДИТЕ 0 ЕСЛИ НЕТ ОСОБЕННОСТИ ПРИ Х=В'
75 INPUT'И 1 ЕСЛИ ЕСТЬ ОСОБЕННОСТЬ ПРИ Х=В 'S
80 IF S=0 THEN 100
90 INPUT'ВВЕДИТЕ ЗНАЧЕНИЕ F<B>='DsGOTO 110
100 LETX=BsGOSUB 210sLETD=FsLETJ=0
110 LETM=M*2sLETH=<B-A)/M/2
120 LETN=08LETI=0:LETX=A
130 LETX=X+HsGOSUB 210
140 LETI=I+4*F:LETN=N+2
150 IF N=2*M THEN 180
160 LETX=X+HsGOSUB 210
170 LETI=I+2*FsGOTO 130
180 LETI=<I+C+D)*H/3sLETK=JsLETJ=I
190 IF ABS<I-K)>E*15 THEN 118
280 PRINT" sPRINT'ЗНАЧЕНИЕ ИНТЕГРАЛА I»'DSTOP
205 REM'ПОДПРОГРАММА ВЫЧИСЛЕНИЯ FCX)'
210 LETF=SIN(X)/XsRETURNS END
Программа 4.45.
05 PRINT'ВЫЧИСЛ. НЕСОБСТВ. ИНТЕГРАЛА МЕТОДОМ ГАУССА'
10 INPUT'ВВЕДИТЕ НИКНИй ПРЕДЕЛ ИНТЕГРИРОВАНИЯ А='О
15 INPUT'ВВЕДИТЕ НАЧАЛЬНЫЙ ВЕРХНИЙ ПРЕДЕЛ ИНТЕГР. B0='Z
20 INPUT'ЗАДАЙТЕ ПОГРЕШНОСТЬ РЕЗУЛЬТАТА E='N
25 LETM=11LETK=0sLETB=Z/2sLETT=SQR<.6)8 LETU=8
30 LETB=B*2
35 LETM=M*2s LETA=Q 8 LETI=0s LETH= < В-A >/М
48 FOR J=1 TO MsLETC=A+H/2sLETD=H/2
50 LETE=D*5/98 LETL=D*8/9s LETD=D*T
60 LETX=C-DsGOSUB 150sLETI=I+E*F
70 LETX=CsGOSUB 150sLETI=I+L*F
80 LETX=C+DsGOSUB 15©sLETI=I+E*F
90 LETA=A+HsNEXT J
100 LETL=KsLETK=I
110 IF ABS<I-L)>N*30 THEN 35
120 LETU=UsLETU=I
130 IF ABS<I-U)>N/2 THEN 30
140 PRINT'ЗНАЧЕНИЕ ИНТЕГРАЛА 1='Is STOP
150 LETF=X*EXP<-X>sRETURNa END
Программа 4.46:
10 PRINT'ВЫЧИСЛЕНИЕ ДВОЙНОГО ИНТЕГРАЛА ПО ПРОСТОЙ'
15 PRINT' ФОРМУЛЕ СИМПСОНА'sLETS=0
20 INPUT'ВВЕДИТЕ ПРЕДЕЛЫ АлВлС/D 'А/В/СлВ
30 LETH=(B-A)/2s LETK=( П-О/2
40 LETX=As LETV=Cs GOSUB 140s LETS=S+F
50 LETX=Bs GOSUB 1408 LETS=S+F
60 LETX=A8 LETY=Ds GOSUB 140s LETS=S+F
70 LETX=B: 60SUB 140s LETS=S+F
80 LETX=A+Hs LETV=C8 GOSUB 140s LETS=S+4*F
98 LETY=Ds GOSUB 1408 LETS=S+4*F
100 LETX=A8 LETY=C+Ks GOSUB 140s LETS=S+4*F
110 LETX=B8 GOSUB 140" LETS=S+4*F
120 LETX=A+Hs GOSUB 140s LETS=S+16*F
130 PRINT'ЗНАЧЕНИЕ ИНТЕГРАЛА I='S*H*K/9s60T0 20
140 LETF=1/X/Ys RETURNS END
109
Рис. 4.11. Расположение узлов при вычислении двойных определенных интегралов методом Симпсона (а)
и Гаусса (б)
несколько квадратов, вычислив /, для каждого
Z-го квадрата. Программа 4.46 предусматри-
вает последовательное суммирование значе-
ний /,. Например, разбив область интегри-
рования (4.31) на 4 квадрата (а|=4;
6i=4,2; С! =2,3; d\ =2,6; а2 = 4,2; 6г — 4,4;
с2 = 2,3; d2 = 2,6; а3 = 4,2; 63 = 4,4; с3 = 2;
б/з=2,3; 414 = 4; 6д = 4,2; С4 = 2 и ^4 = 2,3 —
см. рис. 4.11,6), получим
/ = 0,02500605059.
Время счета для каждого квадрата менее 2 с.
Кубатурная формула Гаусса с п = 2 имеет
вид
ь d
f (•*• y) = PR If (*l. yi) +f (*2. У2> +
a c
+ f (x3,^)+f (X4.I/4)]. (4.32)
где />=(/>—a)/2, R=(d—c)/2, а узлы
интерполяции расположены на расстоянии
±КР и ±KR от осей, где К—Д/3.
Программа 4.47.
Пример. Для интеграла (4.31) с об-
ластью интегрирования в виде одного квад-
рата получим / = 0,02500532089, а с областью
интегрирования в виде четырех прямоуголь-
ников — / = 0,02500594169. Время вычисления
для одного квадрата области интегрирова-
ния — около 1,5 с.
Сложная кубатурная формула Гаусса
реализуется разбивкой отрезков [а, 6] на М
и [с, d] на N частей с применением для
каждого элементарного прямоугольника фор-
мулы (4.32).
Программа 4.48.
Пример. Для интеграла (4.31), задав
М —М = 4 (всего 16 прямоугольников), по-
лучим / = 0,02500598247 при /с = 24 с.
Аналогичным образом могут быть состав-
лены программы для вычисления интегралов
с большей кратностью. Формулы численного
интегрирования для них приведены в [18, 36].
Интегралы большой кратности вычисляются
методом Монте-Карло (см. [4]).
Программа 4.47.
10 PRINT*ВЫЧИСЛЕНИЕ ДВОЙНОГО ИНТЕГРАЛА ПО ПРОСТОЙ’
15 PRINT* ФОРМУЛЕ ГАУССА**LETS=0
20 INPUT*ВВЕДИТЕ ПРЕДЕЛЫ АлВ/C/D *A/B/C^D
30 LET0=(A+B>/2’. LETP=(B-A)/2s LETQ=<C+D>/2
40 LETR=<D~C)/2sLETK=SQP<1/3)
50 LETX=O+P«KsLETY=Q+R»KsGOSUB 100
60 LETX=O-P*KsGOSUB 10©
70 LETY=Q-R*KsGOSUB 100
80 LETX=O+P*KsGOSUB 10©
9© PRINT*ЗНАЧЕНИЕ ИНТЕГРАЛА I=*S*R*PsGOTO 20
10© LETF=1/X/Ys LETS=S+Fs RETURNS END
Программа 4.48.
1© PRINT*ВЫЧИСЛЕНИЕ ДВОЙНОГО ИНТЕГРАЛА ПО СЛОЖНОЙ*
15 PRINT* ФОРМУЛЕ ГАУССА*sLETS=0
20 INPUT* ВВЕДИТЕ ПРЕДЕЛЫ A/B/C,D *bbB/C/D
25 IHPUT'BBEAHTE ЧИСЛА MzN *M,N
30 LETH= < В-Ы)/М s LETL= < D-C >/Нs LETK=SQR<1/3)
40 FOR 1=1 TO № LETD=C+L
50 LETQ=<C+D)/2sLETR=L/2sLETA=W
60 FOR J=1 TO MsLETB=A+HsLET0=<A+B)/2sLETP=H/2
70 LETX=O+P«KsLETY=Q+R»KsGOSUB 140
8© LETX=O-P*KsGOSUB 140
90 LETY=Q-R*KsGOSUB 14©
10© LETX=O+P*KsGOSUB 140
11© LETA=BsNEXT J
120 LETC=DSNEXT I
130 PRINT*ЗНАЧЕНИЕ ИНТЕГРАЛА I=*S*H*L/4sST0P
140 LETF=i/XzYs LETS=S+FsRETURNS END
110
§ 4.10. Решение систем
дифференциальных уравнений
Задача Коши заключается в решении си-
стем обыкновенных дифференциальных урав-
нений первого порядка, представляемых в виде
(х, i/i.yj..ук\
^=Fi(x’ У'............УЬ---' </л/).(4.33)
-^-=Fn (х, у.....у,......yN),
где /=14-М— номер каждой зависимой
переменной yh х — независимая переменная.
Если задача Коши решается для анализа
поведения системы или объекта во времени,
то х является временем (х = /). Решение
системы (4.33) при заданных начальных
условиях X —Хо, У\ (Хо) = 1/10, уч (Хо) = #20, • . .
..., у^х^ — ум сводится к нахождению
зависимостей (интегральных кривых) у\ (х),
У2 (х), ..., #/(х), ..., yN (х), проходящих
через точки, заданные начальными усло-
виями (хо, #ю), (Хо, #20), ...» (Хо, #/о), ...
..., (хо, f/л/о)- Задача Коши сводится к инте-
грированию дифференциальных уравнений.
Порядок метода численного интегрирования
при этом определяет и порядок метода
решения (4.33).
Обобщенная форма записи каждого из
уравнений системы (4.33) может быть пред-
ставлена в общем виде
где У/ в правой части уравнения — векторы
переменных у\, у^ Уь •••> Уль а —
правая часть каждого из уравнений (4.33).
В частности, одно дифференциальное урав-
нение (1/=У/ = У| и = F —Л) записывается
в виде
<«.»>.
Дифференциальные уравнения высшего
порядка
= F (х, у, у’, у".(4.35)
где (п) — порядок уравнения, могут быть
сведены к системам вида (4.33) или (4.34)
с помощью следующих преобразований:
—^———Уп-\, (4.36)
ах
dyn — । г> / \
= Г (х, #, #ь ...» уп-0-
Следовательно, решение (4.35) сводится к ре-
шению системы дифференциальных уравне-
ний первого порядка (4.36).
Метод Эйлера — Коши — простейший ме-
тод первого порядка для численного инте-
грирования дифференциальных уравнений.
Он реализуется следующей рекуррентной
формулой:
Г((, + 1) =Yn+hFi (хь У/(),
где h — шаг интегрирования (приращение
переменной х). Этот метод обладает боль-
шой погрешностью и имеет систематическое
накопление ошибок. Погрешность метода
R~(h2), т. е. пропорциональна /г2.
Метод Эйлера — Коши с итерациями за-
ключается в вычислении на каждом шаге
начального значения
У$+1)=У,, + ЙА,- (х„ У,.).
Затем с помощью итерационной формулы
/^+1)=^+4 <*'+'• ^‘+нч
решение уточняется. Итерации проводят до
тех пор, пока не совпадает заданное число
цифр результата на двух последних шагах
итераций. Погрешность метода /?~(/г3).
Обычно число итераций не должно превы-
шать 3—4, иначе нужно уменьшить шаг Л.
Модифицированный метод Эйлера второго
порядка реализуется следующими рекур-
рентными формулами:
+ (Хё + Л/2, УГоч-1/2)),
где (Xi,Yji)/2. Метод дает
погрешность (/г3) и имеет меньшее время
вычислений, поскольку вместо нескольких
итераций производится вычисление только
одного значения У^о + 1/2).
Метод трапеций — одна из модификаций
метода Эйлера второго порядка. Он реали-
зуется применением на каждом шаге формулы
где "K^hF, (х„ У,,), Кц — hFi (х,+Л. У„ +
Ч-K/i), и дает погрешность R~ (/i3). Этот ме-
тод относится к общим методам Рунге —
Кутта (см. далее).
Программа 4.49.
Пример. Вычисление функций F; (х, У,)
оформляется подпрограммой, записываемой
со строки 200 и завершаемой операторами
RETURN и END. При этом форма записи
каждой функции следующая:
F (J) = (функция X, Y (1), Y (2),..., Y (N) >,
где J — номер, соответствующий номеру j
в обобщенной форме записи Fj(x,yj). Ha-t
пример, для решения системы дифферен-
циальных уравнений
—T~~—F\ (х,у,,у2)=уг,
ах
(*. </ь У1) —У*) -J-У'
111
Программа 4.49.
10 PRINT'РЕШЕНИЕ СИСТЕМЫ ДИФФЕРЕНЦИАЛЬНЫХ '
2© PRINT' УРАВНЕНИЙ МЕТОДОМ ТРАПЕЦИЙ'
30 INPUT'ЗАДАЙТЕ ЧИСЛО УРАВНЕНИЙ N='N
40 DIM Y(N),W<N),K<N)/F(N)
100 INPUT 'ВВЕДИТЕ НАЧАЛЬНОЕ X0='X
110 FOR J=1 ТО № PRINT’2.0!'ВВЕДИТЕ НАЧАЛЬНОЕ YOC'J')'
120 INPUT Ы<J):LETY<J)=W<J):NEXT J
130 INPUT'ВВЕДИТЕ ШАГ H='H
140 GOSUB 2©0:FOR J=1 TO N
15© LETK<J)«H*F<J):LETY<J)=W<J)+K<J):NEXT J
160 LETX=X+№PRIHT’F1.91'ДЛЯ X='X:GOSUB 2©0
170 FOR J=1 TO №LETV<J)=W<.J)+<K<J)+H*F<J))/2
180 PRINT»2.0!'Y('J')='!F1.9’Y<J)
190 LETWCJNEXT J:GOTO 148,
20© LETF<1)=Y<2):LETF<2)=<Y<1)/X-Y<2>)/X-Y<1>
210 RETURN:END
подпрограмму следует записать в виде
F(1)=Y(2),
F (2) = (Y (1)/Х—-Y (2))/Х —Y (1)
(см. Также выражения в строке 200 про-
граммы 4.49). Для W = 2; ft = 0,1; хо = О,2;
{/.о = 0,099500833 и {/го = 0,49235 получим:
X У\ У2
0,3 0,148367183 0,4830282264
0,4 0,1961203205 0,4701529365
0,5 0,2424068609 0,4537779586
1,0 0,440372468 0,3249711437
и т. д.
Время счета на каждом шаге около 1,5 с.
Не рекомендуется применять этот метод,
если возможны изменения (х) с сильно
различающейся крутизной (например, одни
K3/=ftF, (x,+^ К,?) .
Kai = hFj (xt 4- Л, Yц 4- К3/);
Г/о+1)=*я+ (К>/+2К2(+2Кз/ + К<;).
При переходе от одной формулы к дру-
гой задаются или вычисляются соответствую-
щие значения х и У, и находятся по под-
программе значения функций Ft (х, Yj).
Решение одного дифференциального урав-
нения методом Рунге — Кутта производится
по приведенным формулам, если в них
опустить индекс /, а из алгоритма исклю-
чить циклы.. Последнее резко упрощает
программу и позволяет получить минималь-
но возможное время счета.
Программа 4.50.
10 PRINT'РЕШЕНИЕ ОДНОГО ДИФФЕРЕНЦИАЛЬНОГО УРАВНЕНИЯ '
28 PRINT' МЕТОДОМ РУНГЕ-КУТТА'
30 INPUT'ЗАДАЙТЕ ШАГ Н='№INPUT'ЗАДАЙТЕ НАЧАЛЬНОЕ Х0='Х
4© INPUT'ВВЕДИТЕ НАЧАЛЬНОЕ Y8='Z:LETY=Z
50 GOSUB 100sLETA=F*H:LETX=X+H/2:LETV=Z+A/2
60 GOSUB 100:LETB=F*H:LETV«Z+B/2
78 GOSUB 100:LETC=F*H:LETX=X+Hz2:LETV=Z+C
80 GOSUB 100:LETY=Z+<A+2*<B+C>+H*F)/6:LETZ«V
90 PRINT'ДЛЯ X='X:PRINT'Y='Y:GOTO 50
100 LETF=-Y:RETURN:END
участки кривых у, (x) плавные, а другие рез-
кие), поскольку при этом возможно возник-
новение численной неустойчивости решения.
Ее устранение может потребовать выбора
очень малого шага ft, что значительно уве-
личивает общее время вычислений.
Метод Рунге — Kytra четвертого порядка
является наиболее распространенным ,мето-
дом решения систем (4.34) при шаге ft =
= const. Его достоинством является высокая
точность — погрешность R~ (ft5) — и мень-
шая склонность к возникновению неустойчи-
вости решения. Алгоритм реализации метода
Рунге — Кутта заключается в циклических
вычислениях Y/o+i) на каждом 14-1 шаге
по следующим формулам:
K^hF^x,, Y^-.K^hF,^- , У„+1 К,/);
, 1,2
Пример. Для дифференциального урав-
нения у'—— у/т— — у при т = 1, ft = 0,l,
хо = О и {/о=1 будем получать j/(0,l) =
=0,9048375, у (0,2) =0,8187309014, у (0,3) =
= 0,740818422, у (0,4) =0,6703202889’,
у (0,5) =0,6065309344. Время выдачи одного
значения у (х) около 1 с. Подпрограмма
вычисления
F — dy/dx
записывается со строки 100.
Реализация решения системы из /V диф-
ференциальных уравнений иллюстрируется
программой 4.51. Максимальное число N
зависит от сложности уравнений и объема
ОЗУ ЭВМ. Для ПЭВМ типовые максималь-
ные значения W лежат от 10—20 (для ПЭВМ
класса Pocket Computers) до 50—100 (для
профессиональных ЭВМ).
Программа 4.51.
10 PRINT'РЕШЕНИЕ СИСТЕМЫ ДИФФЕРЕНЦИАЛЬНЫХ'
2© PRINT'УРАВНЕНИЙ МЕТОДОМ РУНГЕ-КУТТА'
30 INPUT'BBEAHTE ЧИСЛО УРАВНЕНИЙ №'N
40 DIM Y<N)/A<N>/K<N),F<N>/W<N>
5© INPUT'ЗАДАЙТЕ ШАГ Н«'Н
60 INPUT'ЗАДАЙТЕ НАЧАЛЬНОЕ ХО^'Х
70 FOR J=1 ТО № PRINT!2.0!'ЗАДАЙТЕ НАЧАЛЬНОЕ Y8<'J')'
80 INPUT Ы<J)sLETY<J)=W<J):NEXT J
90 GOSUB 200:FOR J=1 TO №LETU»H*F<J>
100 LETK<.J)=USLETY(J)=W<J)+U/25NEXT J
110 LETX=X+H/2sGOSUB 200:FOR J=1 TO N
120 LETU=H*F< J > s LETK < J)=K < J >+2«U
13© LETY<J)*WGJ)+U/2sNEXT J
14© GOSUB 200s FOR J=1 TO №LETU=H**F<J>
150 LETK<J)=K<J)+2*U5LET¥<J)=W<J>+UsNEXT J
160 LETX=X+H/2sPRIHT!Fl.9!'ДЛЯ X«'XsGOSUB 200
170 FOR J==l 10 HsLETYCJ)=WCJ)+(K<J>+H*F<J))/6
180 PRINT?2.0!'Y<'J')='!F1.9!V<J>
190 LETW<J)=Y<J)sNEXT JsGOTO 90
20© LETF<1)=Y<2)sLETF<2)=<Y<1>/X-Y<2> >/X-Y<1)
210 RETURN: END.
Пример. Для системы уравнений (см.
подпрограмму, записанную со строки 200)
при W = 2, Л = 0,1, хо = О,2, с« о = 0,099500833
и 1/20 = 0,49235 будем получать следующие
значения х, у\ и уч'.
вида
y"=4v=f (*> У’у'')’
dx
имеющий погрешность /?~(Л5), реализуется
с помощью следующих формул [36]:
K\—hF (Xi\ yr, у'}\
Kz^hF (xi+~ ; yi+4-У' +~ Кг, у' + ф) ;
' Z Z О Z / -
х у\ уъ
0,3 0,1483051278 0,4831085139
0,4 0,1960019791 > 0,4702289086
0,5 • 0,2422342383 0,453843868
1 0,4399784882 0,3250861127
iz i c i h । h j. , , Кч\
K3 = hF +-g- Kii У‘ 4—2 / ’
K4 = hF (м-Л; y, + htf 4-A Кз; y'i + Кз) ;
1,5 0,5578420795 0,1398423554
</;+! =У< + Л +"g" (^1 + Кз + Кз)
2,0 0,5766255981 - 0,06446334779
Ввиду особого значения и широкого при-
менения дифференциальных уравнений вто-
рого порядка полезно иметь специальную
программу для их решения.
Метод Рунге — Кутта для дифферен-
циального уравнения второго порядка
yf+1=yf+4- (*|+2К2 + 2*з + К4).
Перед началом вычислений надо задать
шаг h и начальные значения хо, у (хо)=£/о
и у' (хо) = Со-
программа 4.52.
18 PRINT'РЕШЕНИЕ ДИФФЕРЕНЦИАЛЬНОГО УРАВНЕНИЯ ВТОРОГО'
20 PRINT' ПОРЯДКА МЕТОДОМ РУНГЕ-КУТТА'
30 IHPUT'BBEAHTE ШАГ Н='Hi INPUT'BBEAHTE НАЧАЛЬНОЕ Х8=*'Х
48 INPUT'BBEAHTE НАЧАЛЬНОЕ V8='W
50 INPUT'BBEAHTE НАЧАЛЬНОЕ DY/DX0»'UiLETY«W:LETZ=U
60 GOSUB 150sLETA=*H*F-.LETX=X+H/2
70 LETY=W+U*H/2+A*H/88LETZ=U+A/2
88 GOSUB 1508LETB«H*FsLETZ=U+B/2
90 GOSUB 1508LETC=H*F8LETX=X+H/2
108 LETY=W+H*U+H«C/28LETZ=U+CsGOSUB 158
118 LETY=U+H»<U+<A+B+C)/6)iLETW«Y
120 LETZ=U+<A+(B+C>»2+H»F>/68 LETU=Z
130 PRINT'ADfl X='X--PRINT'Y='Y
140 PRINT'DY/DX='ZsGOTO 68
158 LETF»-Y+ <1-Y*Y >«2*28 8 RETURN s END
Пример. Для дифференциального урав-
нения (см. подпрограмму, записанную в стро-
ке 150)
F~y"^-y+(\--y2) (20/)
при h = 0,003125, Хо = О,
будем получать:
* У
0,003125 2,007690786
0,00625 2,007665302
6,009375 . 2,007626354
0,0125 2,00757266
0,015625 2,007516959
уо = 2,0077 и / = 0
У'
— 0,00571555801
— 0,01044479113
-0,01435793978
-0,01759589125
-0,02027523125
Автоматическое изменение шага в ходе
решения систем дифференциальных уравне-
ний необходимо, если решение требуется
получить с заданной точностью. При высо-
кой точности (погрешность e^£=l-10“3)
и решении в виде кривых с сильно разли-
чающейся крутизной автоматическое измене-
ние шага обеспечивает уменьшение общего
числа шагов в несколько раз, резко умень-
шает вероятность возникновения числовой
неустойчивости, дает более равномерное рас-
положение точек графика кривых (решений)
при их выводе на печать.
Метод Рунге — Кутта с автоматическим
изменением шага заключается в том, что
после вычисления К/(< + 1) с шагом h все вы-
числения проводятся повторно с шагом Л/2.
Полученный результат Kfb+i) сравнивается
с У/(/+1). Если | У/(4Ч_|)— У/*оч-|)| <с, вычис-
ления продолжают с шагом А, в противном
случае шаг уменьшают. Если это неравен-
ство слишком сильное, шаг, напротив, увели-
чивают. При той же погрешности R~(h5)
лучшие результаты дает описанный ниже
метод.
Метод Рунге — Кутта — Мерсона с авто-
матическим изменением шага обеспечивает
приближенную оценку погрешности на каж-
дом шаге интегрирования. Погрешность
интегрированйя имеет порядок /г5 [31].
Этот метод реализуется следующим алго-
ритмом.
1. Задаем число уравнений /V, погреш-
ность е = £, начальный шаг интегрирования
h^H и начальное значение хо, t/io...7/vo-
2. С помощью 5 циклов с управляющей
переменной 7 = 1, 2, ..., W вычисляем коэф-
фициенты:
Koj^hFf (xr, Y,,);
К\j = hF—д' Л; "Tjr Ко,
K2/==/iF//i; Kj/+-g-Ko/+-g-Ki/^ :
K^hFi(x,+4-Л; r,,+4-Ko,+4
Z О О /
= + Yi, 4-y Ko,—-|-K2/ + 2K.0 •
3. Находим (в последнем цикле) зна-
чение
у/(/+«= у/7 4- (Kni + 4Кз/ + Ktj) /6
и погрешность
Rid+ п=» (-2Ко/+9К2/ -8Кз/ + Kai) /30.
4. Проверяем выполнение условий
I/?;•(,+1)| < £, 1Ян, + 1й>£/30.
Если первое условие не выполняется, де-
лим шаг h на 2 и повторяем вычисления
с п. 2, восстановив .начальные значения Y}i.
Если это условие выполняется и выпол-
няется второе условие, значения Xi+i=x,-4-h
и Yj(i+\) выводятся на печать. Если второе
условие не выполняется, шаг h увеличи-
вается вдвое и вычисления опять повто-
ряются с п. 2.
Таким образом, У/(л+1> выводится на пе-
чать только при одновременном выполнении
условий этого пункта.
Программа 4.53.
Пример. Для системы дифференциаль-
ных уравнений
£i = у\-|- */2 — х’-|-х^-2,
ах
f2=^-=-2i/,+4y2+2x2-4x-7
при К = 2, 6 = 0,1, £=1.10-7, хо = 0, ун1 = 0
и //20 = 2 получим:
х у\ уч
0,025 6,25-10"4 2,025
0,05 2,5-10“3 2,05
0,075 5,625-10-3 2,075
0,1 1-10“2 2,1
Следовательно, в данном случае имеет место
автоматическое уменьшение шага. Для Л =
= 0,02 и £=1-10“3 получим:
X У< f/2
0,02 6,731133879-IO"4 2,020963777
0,04 1,898781104-10'3 2,041032153
0,08 6,756088366-10 '3 2,081182964
0,16 2,609871963 • 10 _ 2 2,161549932
0,32 1,033398344-10-1 2,322641762
0,64 4,127175414-Ю-1 2,74775972
0,96 9,309436052-10' 1 2,981657806
1,28 1,665020406 3,338953272
В данном случае шаг автоматически уве-
личивается от значения /i = 0,02 до /i = 0,32.
Время вычислений на одном шаге (кроме
начального при уменьшении h) составляет
около 5 с.
Подпрограмма вычисления производных
записывается со строки 400.
Как отмечалось, погрешность Ящ+\) на
каждом шаге метода Рунге — Кутта — Мер-
сона оценивается приближенно. При решении
нелинейных дифференциальных уравнений
истинная погрешность может отличаться
в несколько раз от заданной £.
114
Программа 4.53.
05 PRIНТ'РЕШЕНИЕ СИСТЕМЫ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ'
10 PRINT'МЕТОДОМ РУНГЕ-КУТТА-МЕРСОНА С АВТОМАТИЧЕСКИМ'
15 PRINT' ВЫБОРОМ ШАГА'SPRINT!2.0!
40 INPUT'ВВЕДИТЕ ЧИСЛО УРАВНЕНИЙ Н='Н
45 DIM УСЮ'ЫСИЪA(N)>C<H>/D<N),E<N>,F(N)
50 INPUT-ЗАДАЙТЕ ПОГРЕШНОСТЬ ВЫЧИСЛЕНИЙ Е='Е1
60 INPUT'ЗАДАЙТЕ НАЧАЛЬНЫЙ ШАГ Н='Н
70 INPUT'ЗАДАЙТЕ НАЧАЛЬНОЕ Х0='Х
80 FOR J=1 ТО Ns PRINT'ВВЕДИТЕ НАЧАЛЬНОЕ Y0<'J’)='
90 INPUT W(J>:LETV<J>=W<J)sNEXT J
110 LETE3=0sGOSUB 400sLETD=0sFOR J=1 TO N
120 LETACJ)=F<J>*HsLETY<J)=W<J>+A<J>/3sNEXT J
130 LETX=X+H/3sGOSUB 400s FOR J=1 TO H
140 LETY<J)=U<J)+CACJ>+FCJ)*H>/6sNEXT J
150 GOSUB 400SFOR J=1 TO NsLETCCJ)=F<J>*H
160 LETY<J>=W<J)+A<J>''8+.375*C<J>sHEXT J
170 LETX=X+H/6sGOSUB 400s FOR J=1 TO N
180 LETD<J)=F<J>*HsLETY<J)=W<J)+A<J>/2-1.5*C<J)+2»D<J>
190 NEXT JsLETX=X+H/2s60SUB 400
200 FOR J=1 TO NsLETECJ>=F<J>*H
210 LETY<J>=W<J) + <A<J)+4*D<J)+E<.J))/6
220 LETE2=ABS<-2*A<J)+9*C<J)-3*D< J)+E(J >)/30
230 IF E2<=E1 THEN 250
240 LETE3=lsG0T0 260
250 IF E2<El/20 THEN LETD=D+1
260 NEXT JsIF E3=0 THEN 290
270 LETX=X-HsFOR J=1 TO NsLETY<.J)=hl<J):NEXT J
280 LETH=H/2sGOTO 110
290 IF D=N THEN LETH=H+H
300 PRINT!Fl.9!'ДЛЯ X='XsFOR J=1 TO N
310 PRINT12.0!’Y<’J')='!F1.9!Y<J>
320 LEWJ>=Y<J>sNEXT JsGOTO 110
400 LETF<l)=Y<l)+Y<2>-X*X+X-2
410 LETF<2>=-2*Y<1>+4*Y<2)+2*X*X-4*X-7
420 RETURNS END
Метод Рунге — Кутта — Фельберга с ав-
томатическим изменением шага дает более
точную оценку погрешности на каждом шаге
и реализуется последовательным цикличе-
ским вычислением по следующим формулам
[31]:
K0/ = /iF,(x,; У„);
K\i = hFl^x,-\-—h\ Y:, +-g- Ku} ;
K2i = hFi^x,-[--^ ft; Yj, + *jy K\t^;
„ iv / , 3 , v , 69 143 „
- hF, (x, + — h; Y„ Kn, -~K„ +
. 135 К Y
+ “6ГХ2'/-
K^hFiix. + h; Yl,-~.Kttl-)~Kti-
-^Кг,+^кЛ.
/<5/ _ h Fjxt 4- -g- h; Уц -J- - _ Koj —Ki / +
x v io
+-fg- +-^ Ky, 4--^- K<t
Yj(«+1) = + g + 20 ^2/ + 45 +42
. (4.37)
Погрешность
??K'+l)=7So Ko'—Too /f2'+4I’K3l+
+ 20 Kti 25 Кз'
в этом методе — разность приращений K/o+i),
вычисленных по двум формулам: порядка
п = 4 (4.37) и порядка «+1. Последняя
формула не приводится, но использована для
вычисления + Если d> Е, шаг h
уменьшается вдвое, если Rj(l + \)<E/20, он
увеличивается вдвое. Этот метод имеет четвер-
тый порядок.
115
Программа 4.54.
05 PRINT'РЕШЕНИЕ СИСТЕМЫ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ'
18 PRINT'МЕТОДОМ РУНГЕ-КУТТА-ФЕЛЬБЕРГА С АВТОМАТИЧЕСКИМ'
15 PRINT' ВЫБОРОМ ШАГА'sPRINT 12.0!
40 INPUT'BBEAHTE ЧИСЛО УРАВНЕНИЙ N='N
45 DIM Y(N)/L<N),W<N),A(N),B<N)>C<N)/D<N)/E<N>>F<N)
50 INPUT'ЗАДАЙТЕ ПОГРЕШНОСТЬ ВЫЧИСЛЕНИЙ Е='Е1
60 INPUT'ЗАДАЙТЕ НАЧАЛЬНЫЙ ШАГ Н='Н
70 INPUT'ЗАДАЙТЕ НАЧАЛЬНОЕ Х0='Х
80 FOR J=1 ТО N:PRINT'ВВЕДИТЕ НАЧАЛЬНОЕ S'0<'J')='
9© INPUT W(.J)2LETV(J>=W<J>8NEXT J 1
110 LETE3=0:GOSUB 400SLETD=05FOR J=1 TO N j
120 LETA<J)«F<J)*H:LETV<J>=W(J)+2*AGJ)/9:NEXT J *
130 LETX=X+2*H/9:GOSUB 400:FOR J=1 TO N
14© LETB(.J)=H*F< J>: LETY<«J)=bK J)+A<.J)zl2+B( J)z4:NEXT J
156 LETX=X+H/9:60SUB 400:FOR J=1 TO N
160 LETC(J)=H*F<.J):LETY(d)=W< J) + <34.5*A(.J>-121.5*BGJ) + 135#C(J>)/64
170 NEXT J:LETX=X+H/2.4:60SUB 400:FOR d«l TO N
180 LETD(J)==H*F< J)sLETQ=W < J)-17*A < J)z12+6.75*B < J >
185 LETY<d)=Q-5.4*C<d>+16*D<d)/15:NEXT J
19© LETX=X+H/4:60SUB 400:FOR d=l TO N
195 LETE < d> =H*F ( d ): LETQ=W< d) +65*A < J > z432-.3125*B(d)
20© LETY<d)»Q+.8125*C(d)+4*D<d)/27+5:*E(d)/144:NEXT J
205 LETX=X-H/6:GOSUB 400:FOR d=l TO N
210 LETL(J)=H*F<J):LETY(J)=W<J)+A<J)z9+.-45*C<J) + 16*D<J)/45+E<J)/12
220 LETO A<J)/150-.©3*C(d)+16*D < d)/75+Е < J)/28
230 LETE2=ABS(Q-.24*L<d)):IF E2<=E1 THEN 250
240 LETE3=l:G0T0 260
258 IF E2<Elz20 THEN LETD=D+1
260 NEXT J:LETX=X+H/6:GOSUB 400:IF E3=8 THEN 290
270 LETX=X-H:FOR d=l TO N:LETY(J>=U<J):NEXT J
280 LETH=H/2:G0T0 118
290 IF D=N THEN LETH=H+H
300 PRINT!Fl.9!'ДЛЯ X='X:FOR d=l TO N
310 PRINT’2.0!'Y<'d')=' !F1.9!Y(J)
320 LETWCd)=V(d):NEXT J:GOTO 110
400 LETF<l)=Y(l)+Y(2)-X*X+X-2
410 LETF < 2)=-2* V(1)+4*V(2 >+2*X*X-4*X-7
428 RETURN:END
Пример. Для системы дифференциаль-
ных уравнений и данных к программе 4.53
будем получать:
X У\ У2
0,05 2,499985857-10~3 2,049999950
0,1 9,999968178-10-3 2,099999890
0,15 2,249994626 • 10 “2 2,149999819
0,2 3,999991927 • 10“2 2,199999736
0,25 6,249988623 • 10“2 2,249999637
Время счета для одной точки около 10 с,
т. е. вдвое больше, чем у программы 4.53.
Однако вдвое больше и выбранный про-
граммой шаг h. В целом скорость счета
у программ 4.53 и 4.54 примерно одинакова
и зависит от характера решаемой системы
дифференциальных уравнений.
О дно шаговые методы решения систем
дифференциальных уравнений, к которым от-
носятся все описанные выше методы, осно-
ваны на вычислениях по рекуррентным фор-
мулам, содержащим данные, полученные из
решения на одном предшествующем шаге.
Эти методы обеспечивают автоматическое
начало вычислений при заданных началь-
ных условиях и изменение (в том числе
автоматическое) шага в ходе вычислений.
Многошаговые методы решения диффе-
ренциальных уравнений базируются на ис-
пользовании данных решения на нескольких
предшествующих шагах. Это позволяет по-
выбить скорость вычислений. Однако для
начала вычислений приходится выполнять
одношаговыми методами несколько первых
шагов. Аналогично это делается при каж-
дой смене шага интегрирования.
Методы прогноза и коррекции — разно-
видности многошаговых методов, при кото-
рых решение вначале проводится по формуле
прогноза, а затем уточняется по формуле
коррекции.
Ввиду сложности программной реализа-
ции многошаговых методов, а также неявных
методов численного интегрирования (послед-
ние лишены численной неустойчивости реше-
ния), они очень редко используются при
решении задач на персональных ЭВМ. Алго-
ритмы их реализации описаны в [10, 18,
24, 36].
§ 4.11. Гармонический синтез
Гармонический синтез — получение коле-
баний сложной формы путем суммирования
их гармонических составляющих (гармоник).
Гармонический синтез может иметь как само-
стоятельное значение, так и использоваться
как средство тригонометрической интерполя-
ции функций (совместно со спектральным
анализом — см. §5.1).
116
Гармонический синтез с помощью ряда
Фурье (1 вариант) заключается в вычисле-
нии ограниченного т гармониками ряда Фурье
т
у (/) {Ak sin 2Tckf\t-\-Bk cos 2nkfit),
k= I
где t — время, fi — частота первой гармо-
ники, Ak и Bk — коэффициенты ряда Фурье.
Программа 4.55.
§ 4.12. Вычисление собственных
значений и векторов матриц
Собственные значения К (/=1, 2, ..., п)
квадратной матрицы А = [а,,] n-го порядка
есть числа (действительные или комплекс-
ные), удовлетворяющие условиям Лх = Х,х.
В механике собственные значения характе-
ризуют, например, _ внутренние напряжения
в объекте, находящимся под воздействием
10 PRINT'ГАРМОНИЧЕСКИЙ СИНТЕЗ 1'
20 INPUT' ВВЕДИТЕ ЧИСЛО ГАРМОНИК М='М:ШМ А<М)лВ<М)
30 PRINT'ВВЕДИТЕ А 0'sINPUT А
40 FOR N=1 ТО Ms PRINT!2.0!'ВВЕДИТЕ A'N
50 INPUT A<N>SPRINT'ВВЕДИТЕ B'NsINPUT B(N>sHEXT N
60 INPUT'ВВЕДИТЕ ЧАСТОТУ F«'F
70 INPUT'ВВЕДИТЕ ВРЕМЯ T='TsLETC=2*#PI*F*T:LETS=0
80 FOR N=1 TO Ms LETD=C*N
90 LETS«S+(A<H)*COS<D>+B<N>*SIN(D>)sNEXT N
100 LETY=A/2+SsPRINT'Y(T)='!F1.9!Ys60T0 70SEND
Пример. Для Ло = 4, Ai = 10, Bi =5,
Л2 = 8, В2=±2у Л3 = 4, Вз=1, Л4=1, В4=0,2,
Л& = 0,1, #5 = 0,05 и Ji = 1 будем получать:
у (0) = 25,1;; у (0,1) = 16,32687379; у (0,2) =
= 0,9348395361.
Гармонический синтез с помощью ряда
Фурье (2 вариант) сводится к вычислению
ряда
т
i/(0=Jy-+^ Ak cos (2nkfit + Qk)f
k= i
заданного гармониками с амплитудой Ak
и фазовым углом Qk (рад).
Программа 4.56.
внешних усилий, действующих со всех сто-
рон. В электро-радиотехнических устройст-
вах собственные значения матриц опреде-
ляют характеристические постоянные вре-
мени и режимы работы этих устройств. Все
это говорит о практической важности задач
на нахождение собственных значений [4,
24, 41].
Определитель
D (Х) =
а 11 — X a 12 ... а।н
<221 0,22 — X . • • О2п
On 1 ... ... Опп X
называется характеристическим многочленом
10 PRINT'ГАРМОНИЧЕСКИЙ СИНТЕЗ 2'
20 INPUT'ВВЕДИТЕ ЧИСЛО ГАРМОНИК M='MsDIM А<М.Ъб<М)
30 PRINT'ВВЕДИТЕ А 0'sINPUT А
4й FOR N=1 ТО Ms PRINT!2.0!'ВВЕДИТЕ A'N
50 INPUT A<N)sPRINT!2.0!'ВВЕДИТЕ ФАЗУ В РАДИАНАХ Q'N
55 INPUT Q<N)SNEXT N
68 INPUT'ВВЕДИТЕ ЧАСТОТУ F='F
70 INPUT'ВВЕДИТЕ ВРЕМЯ T='TsLETC=2*#PI*F*TsLETS=0
80 FOR N=1 TO MsLETS=S+A(N)*COS<C*N+Q(N))sNEXT N
100 LETY=A/2+S:PRINT'Y(T>=' !F1.9!Ys&0T0 7©sENIl
Пример. Для Ло = 4, Л| = 10, Qi=0,
Л2 = 8, Q2 = 0,5, Лз = 5, фз = 0,8, Л4 = 2,
Q4 = 2, Л5 = 0,5, Q5 = 3 и fi = 1 будем полу-
чать: 1/(0) = 21,17690412; £/ (0,1) =4,223677837;
у (0,2) = -2,576641635.
Аналогичным образом осуществляется гар-
монический синтез при других тригонометри-
ческих рядах. Например, при ряде Котель-
никова с ограниченным числом членов [18]
V /I. АА Sin * (t/M — k)
У ~ Д У (k л (t/bt-k) ’
Л = 0
где А/ — шаг, с которым задаются отсчеты
y(k\t). В некоторых случаях гармониче-
ский синтез упрощается. Так, если предпо-
лагаемая функция у (/) симметрична отно-
сительно оси /, то амплитуды всех четных
гармоник равны нулю.
(полиномом) матрицы А. Уравнение Лх = Хх
эквивалентно уравнению (Л — ХЕ) х = 0. Урав-
нение det (Л—ХЕ) =0 называется характе-
ристическим многочленом матрицы Л:
det (Л-ХЕ)=Р (Х) =
= —— а2Х —язХ2 — ... — аА”-1+ Хл = 0.
Его корни определяют все собственные зна-
чения X,.
Каждому X, соответствует принадлежа-
щий ему собственный вектор Yi с компонен-
тами уп, у,2, ..., yin. Они удовлетворяют
решению системы уравнений ЛУ/ = Х,У,-.
Коэффициенты at характеристического по-
линома Р (X) находятся методом Данилев-
ского. Для этого рассматривается специаль-
ным образом преобразованная последова-
тельность матриц Л(1), Л(2), ..., А(Ы\ при-
117
Корни полиномов Р (Л) могут быть вы-
числены по программам, описанным в § 4.5.
Максимальное собственное значение ма-
трицы (действительное) и принадлежащий
ему собственный вектор могут вычисляться
степенным методом по следующему алго-
ритму.
1. По формуле где
“fl|| ai 2 ... Oln
<221 O22 . • • O2n
_ On I <2n2 • • • <2nn-
вычисляется вектор У*'* (перед началом вы-
числений задается произвольный исходный
вектор У*0)).
2. Находятся приближения к наиболь-
шему собственному значению
п
1-1
3. Вектор У^ нормируется, т. е. вместо
него получается вектор
рю=------!— УЧ
max У}с)
4. Проверяется выполнение условия
—Цг-11 <8,
где е — заданная погрешность вычисления
максимального по модулю собственного зна-
чения. Если это условие выполняется, счи-
таем р-с максимальным по модулю собствен-
ным значением, а вектор г® — принадле-
жащим ему собственным вектором. Если дан-
ное условие не выполняется, идем к п. 1,
приняв за У^Л — ° вектор
Программа 4.58.
твердого материала со всех сторон действуют
силы, которые в матричной форме записы-
ваются в виде (все элементы матрицы нор-
мированы, реальные усилия получаем их
умножением на 106 Н/м2)
Г 10 5 6 "
л_ 5 20 4
6 4 30 ’
При М = 3 и е = £=1*10~4 находим р,макс =
= £макс = 33,70906694. Кроме того, вычис-
ляется принадлежащий ему вектор: yi —
= 0,3408143922, t/2 = 0,4160822399 и у3=1.
Все действительные собственные значе-
ния симметричной матрицы (или заданное
их число) могут определяться методом ска-
лярных произведений, реализованным с по-
мощью следующего алгоритма.
1. Вычисляем вектор Y^-AiY^- °, где
k — номер итерации, Д,- — матрица Д.
Находим начальные приближения к мак-
симальному собственному значению
3. Нормируем вектор Y*k\ т. е. заменяем
его вектором
р)=у(*)/
4. Проверяем выполнение неравенства
|рЛ —ц*_|| <8.
Если оно выполняется, считаем ц* наи-
большим собственным значением матрицы
А„ а — принадлежащим ему собствен-
ным вектором. Если данное условие не
выполняется, повторяем ^вычисления с п. 1,
приняв за г*+,) вектор
5. Если задано число искомых собствен-
ных значений < = 1, 2, ..., k, то для каж-
дого i повторяем вычисления по п. 1—4, пре-
образовав матрицу Ai по формуле
Ai^Ai-y-K [Uh Ufi\, /=1, 2.......Л-1,
где [Uit U'i] — произведение вектора-столбца
на вектор-строку.
10 PRINT'ВЫЧИСЛЕНИЕ МАКСИМАЛЬНОГО СОБСТВЕННОГО ЗНАЧЕНИЯ'
15 PRINT'МАТРИЦЫ И ПРИНАДЛЕЖАЩЕГО ЕМУ НОРМИРОВАННОГО ВЕКТОРА'
20 INPUT'BBEAHTE Н,Е 'H,E«DIM ACN,N>«FOR I«1 ТО N«FOR J«1 TO N
30 PRINT'BBEAMTE A'12.0!I','J«INPUT ACbJMNEXT JiNEXT I
40 FOR 1-1 TO Hi PRINT 12.01'ВВЕДИТЕ Y0C'I')'
50 INPUT AC0,I>«NEXT I«LETW»0
60 LETL-0tLETC«0iLETR»0iFOR J-l TO N«LETS«0
70 FOR I«1 TO N«LETS«S+ACI,J>*AC0,I)«NEXT I
80 LETACJ,0>«SiIF ABSCS)>R THEN LETR»ABSCS>
98 IF S«0 THEN 120
100 IF AC0,J)«0 THEN 120
110 LETC«C+11LETL-L+ACJ,0)/AC8,J>
120 NEXT JiLETL»L/C
130 FOR J«i TO №LETACB,J>«ACJ,0>/R«NEXT J
140 IF ABSCL-W>>«E THEN LETW«L«60T0 68
150 PRINTIFl.9!'МАКСИМАЛЬНОЕ СОБСТВЕННОЕ ЗНАЧЕНИЕ L*'L
160 PRINT'ВЕКТОР'«FOR I«1 TO N
170 PRINTI2.0!'Y'I'«'IF1.9IAC0,I>«NEXT BEND
Пример. Для контроля этой программы Этот метод применим, если все собствен-
воспользуемся примером из [41]: на куб ные значения матрицы А действительны,
119
а наибольшее собственное значение не
кратно. Перед началом вычислений вводится
матрица А, задается погрешность вычисле-
ний е — Е, число искомых собственных зна-
чений и векторов К = и на-
чальный вектор У(|)=(7. Для экономии
памяти ПЭВМ симметричная матрица за-
дается своим нижним треугольником по-
строчно и занимает одномерный массив
с объемом элементов, равным А(А-|-1)/2.
Программа 4.59.
2. Вычисляем первую преграду
3. Находим внедиагональный элемент а,,,
по модулю превосходящий а* (k — 0, 1,2,...).
Если его нет, выполняем п. 5 алгоритма,
иначе идем к п. 4.
10 PRINT'ВЫЧИСЛЕНИЕ СОБСТВЕННЫХ ЗНАЧЕНИЙ И ПРИНАДЛЕЖАЩИХ ИМ'
15 PRINT'ВЕКТОРОВ АЛЯ СИММЕТРИЧНОЙ МАТРИЦЫ МЕТОДОМ СКАЛЯРНЫХ'
20 PRINT' ПРОИЗВЕДЕНИЙ С ИСЧЕРПЫВАНИЕМ'
25 INPUT'BBEAHTE N/E/K 'NtE/KsLETW=N*<N+l>/2lLETU=W+NsDIM A<U+N>
30 LETH=0sFOR 1=1 ТО NsFOR J=1 ТО DLETH-H+l
40 PRINT!2.0! 'ВВЕДИТЕ А' Г,' Js INPUT A(H\
50 NEXT JsNEXT Is FOR В=1 TO К
60 FOR 1=1 TO №LETA(W4-I)=1:HEXT IsLETF«0
70 FOR 1=1 TO HsLETA<U+I>=0sFOR J=1 TO I
80 LETA<U+I)=A<U+I)+A<I»<I-l)/2+J>»A<W+J)sNEXT J
90 NEXT isFOR J=1 TO N-18FOR I«J+1 TO N
100 LETA<U+J>«A<U+J>+A<I*<1-1)/2+j)*A<W+I)
110 NEXT I8NEXT J8LETP=0sLETR=0
120 FOR 1=1 TO N8LETP=P+A<U+I>*A(U+P
130 LETR=R+A<W+I!>»A<U+I):NEXT I
140 LETL=P/R8LETC«SQR<P>:LETP«0
150 FOR 1=1 TO NSLETA<W+I>«A<U+I>/C
160 IF ABS<A<W+I))>=P THEN LETP»ABS(A<W-H>)
170 NEXT 18 IF ABS<P-F>>E THEN LETF«Ps&OTO 70
180 PRINT 'СОБСТВЕННОЕ ЗНАЧЕНИЕ L И ЕГО ВЕКТОР V'
190 PRINT!2.0!'L'I'='!F1.9!L
200 FOR I«1 TO N8PRINT!2.0!'V'I'='!F1.9!A<W+I>
210 NEXT 18 IF B=K THEN 240
220 FOR 1=1 TO N8FOR J=1 TO BLETD=I«<I-l)/2+J
230 LETA<D>=A<D>-L»A<W+I)*A<W+J>8NEXT JsNEXT I
240 HEXT BsEND
Пример. Для матрицы из примера
к программе 4.58 получаем: 1) L = 33,70917846.
(/! =0,300158658, £/2 = 0,3664623805,
»3 = 0,8806872904; 2) £=19,14906125,
w, =0,1967307594, £/2 = 0,8796183084,
^=—0,4330919532 и 3) £ = 7,141760291,
£/,=0,933376197, £/2= -0,3032741433,
£/з = - 0,19192099959,
Для отыскания всех собственных значе-
ний матрицы применяется также метод
Якоби с преградами. Его суть заключается
в проведении цепочки преобразований подо-
бия, в ходе которых получается некото-
рая диагональная матрица А(Л): A(ft)=T’AT,
имеющая те же собственные значения, что
и матрица А. Матрица Т является произве-
дением всех матриц Tih где Тц — элементар-
ные матрицы вращения, имеющие вид
4. Анализируем элемент а,,. Для этого вы-
числяем
У~(ац — ап) /2,
{— £ если £/ = 0,
— sign (у) Д«/ л/а2 4-У2, если £/#=0,
S=х/ф (1—^1—х2), С = Vi -S2.
Затем преобразуем £-й и /-й столбцы матрицы
Л(Л) по формулам
В, = CAi- SAh В, = SAf + C A j
и заменяем £-й и /-й столбцы матрицы Л
столбцами В, и В,. В результате на месте
матрицы Л получаем матрицу В. Далее
£-ю и /*-ю строки матрицы В преобразуем
по формулам
Ci = CAi - SAh Cj = SA, + CAi
и заменяем £-ю и /-ю строки матрицы В
строками Ci и Cj. При этом вместо матрицы В
получаем матрицу A(ft + I). Столбцы i и j
матрицы Tij заменяем на столбцы В, и В/.
5. Находим новую преграду
ал+|==ал/л(2(^1)+«)
Алгоритм реализации метода Якоби с пре-
градами следующий.
1. Задаем Тм = Е, где Е — единичная
матрица порядка п.
и повторяем вычисления с п. 1, до тех пор,
пока все внедиагональные элементы не ста-
нут меньше числа Р = еао, где е — заданная
погрешность вычислений. В результате собст-
120
венные значения оказываются диагональ-
ными элементами матрицы А.
Ввиду симметрии матрицы она задается
построчно нижним треугольником и зани-
мает одномерный массив с числом элементов
ЛЦМ-Н)/2.
Программа 4.60.
Пример. Для матрицы А из примера
к программе 4.58 вычисления по программе
4.60 дают Li =7,14176, 19,14906 и
L3 = 33,70917 (tf = 3, t=E== 1.10-5).
Программы 4.57—4.60 получены перево-
дом программ. для ЭВМ «Мир-2» с языка
аналитик [24] на язык бейсик.
10 PRINT*ВЫЧИСЛЕНИЕ ВСЕХ СОБСТВЕННЫХ ЗНАЧЕНИЙ МАТРИЦЫ*
15 PRINT* МЕТОДОМ ЯКОБИ С ПРЕГРАДАМИ*
20 INPUT*ВВЕДИТЕ ПОРЯДОК МАТРИЦЫ N=*NsDIM A(H*(N+l)/2)
25 INPUT*ВВЕДИТЕ ПОГРЕШНОСТЬ ВЫЧИСЛЕНИЯ Е==*Е
30 LETH=0sFOR 1=1 ТО Ns FOR J=1 ТО I
40 LETH=H+1:PRINT!3.0!'ВВЕДИТЕ А'I','JsINPUT АСН)
50 NEXT JsNEXT IsLETH«08FOR P«2 TO N
60 FOR Q=1 TO P-lsLETH=Ht2*A<P*<P-l)/2+Q)~2
70 NEXT QSNEXT P:LETR»SQR<H)sLETA=E*R/N
80 LETR=R/N
90 LETB=0sFOR Q=2 TO NsFOR P=1 TO Q-l
100 IF ABS<A<Q*<Q-l)/2+P))<R THEN 275
110 LETK=P* < P-1)/2+Р s LETL=Q* < Q-1 >/2+Р
120 LETM=Q*< Q-1>/2+Q s LETB=1s LETU=A < К > sLETW=A < L)
130 LETF=A(M)8LETV=(U-F)/2sLETZ=VsIF V=0 THEN LETX=-lsGOTO 150
140 LETX=-SGN(Z > *U/SQR < ЫжЫ+V*V>
150 LE TS=X/SQR ( 2* (1+SQR (1 -X*X ) ) ) s LETC=SQR < 1 -S’*S >
160 FOR 1 = 1 TO Ns IF I<=P THEN LETY=P*<P-1)/2+IsGOTO 180
170 T.ETV=I*( 1-1 >/2+P
180 IF I<=Q THEN LETX=Q*<Q-l)/2+IsGOTO 200
190 LETX=I*<I-l)/2+Q
200 IF I=Q THEN 220
210 LETD=A(Y>*C-A<X>*S
220 LETA(X>=ACY>*S+A<X>»CsIF I=Q THEN 240
230 LETACY)=D
240 NEXT I
250 LETACK)=U*C*C+F»S*S-2*W*C*S
260 LETACM>=U*S*S+F»C*C+2*W*C*S
270 LETA C L >=C U-F)*S*C+W* C C*C-S»S >
275 NEXT PsNEXT Q
280 IF B=1 THEN 90
290 IF R>A THEN LETR=R/N:GOTO 80
300 FOR 1=1 TO N8LETH=A(I*(I-l)/2+I)
310 PRINT!2.0!'СОБСТВЕННОЕ ЗНАЧЕНИЕ L*I*=*!F1,9!H
320 NEXT IsEND
L...- -- —— ‘ ? • • -
ГЛАВА 5
СПЕКТРАЛЬНЫЙ, СТАТИСТИЧЕСКИЙ, КОРРЕЛЯЦИОННЫЙ
И РЕГРЕССИОННЫЙ АНАЛИЗ
§ 5.1. Спектральный анализ
на основе дискретного
преобразования Фурье
Спектром временной зависимости (функ-
ции) у (/) называется совокупность ее гар-
монических составляющих (гармоник), обра-
зующих ряд Фурье (см. § 4.11).
Спектральный анализ периодических функ-
ций заключается в нахождении коэффици-
ентов д*, bk ряда Фурье
оо
' O.Q у-"'
У (/) = -у- + ) (a* COS 2nkfit -|- bk sin 2n/zfit),
(5.1)
где /’i -- частота повторения (или частота
первой гармоники), k—номер гармони-
ки. Кроме ряда (5.1) широко использует-
ся ряд
оо
У (/)==“7г+^ М* cos (гл/г/^ + фл), (5.2)
л = I
где
Mk = ^dl + b2k (5.3)
— амплитуда и
<р* = —arctg (bk/ak) (5.4)
— фаза гармоник (косинусоид). Применяют-
ся также ряды с синусоидами под знаком
суммы.
Коэффициенты Фурье определяются вы-
ражениями
т
2 г
ak = Y~\У (^ cos (55)
т
2 Г
bk — yA у (/) sin 2nfit,
(5.6)
где T=\/f\ — период повторения периоди-
ческой функции у (/).
Спектральный анализ непериодических
(финитных) функций, т. е. функций, пол-
ностью определенных на отрезке [0, /о],
заключается в вычислении составляющих их
комплексной спектральной плотности
S (» =SC (ш) + (<о) =S (ш)
где (о = 2л/ — угловая частота,
S (<о) = V[SC (Ш)]2+ [Ss (<о)]2 (5.7)
и
ф (о>) = — arctg [Ss (<o)/Sc (и)] (5.8)
— модуль спектральной плотности и фаза на
частоте со. При этом
/о
У (0 cos со/, (5.9)
о
/о
У (0 sin со/. (5.10)
о
Численный спектральный анализ заклю-
чается в нахождении коэффициентов До, at,...
...» д*, bit b2....bk (или Mi, М2, ..., Mk,
(pi, ..., ср*) для периодической функции
у (/), заданной на отрезке [0, Т] дискрет-
ными отсчетами. Он сводится к вычисле-
нию (5.5) и (5.6) по формулам численного
интегрирования для метода прямоугольни-
ков (см. § 4.8)
N-\
У> cos 2nkfi i M, (5.11)
/ = о
N —I
2 v"*
) y, sin 2nkfd M; (5.12)
/ = o
где M — T/N — шаг, с которым расположе-
ны абсциссы у (/).
Для финитных функций
N —I
£С = Д/ 2L У1 cos (2л/ Ktl), (5.13)
z = 0
л/-1
Ss = M £ у, sin (2nf Mi). (5.14)
( = 0
Найденные по (5.11) и (5.12) коэффи-
циенты Фурье для m — N/2 гармоник при-
ближают у (/) рядом (5.1) или (5.2) с наи-
меньшей среднеквадратической погрешностью.
Следовательно, численный спектральный ана-
лиз, совместно со спектральным синтезом
(§ 4.11), является разновидностью метода
наименьших квадратов, когда у (/) прибли-
жается тригонометрическим рядом.
122
Обобщенный численный спектральный ана-
лиз базируется на том, что периодические
функции у (/) являются частными случаями
финитных функций. Действительно, полагая
to^T (этим мы условно приписываем фи-
нитным колебаниям период Т) и считая
f = kf\ (при финитных функциях k — любые,
а при периодических — целые числа), из
(5.11), (5.13) и (5.12), (5.14) получаем
с Л/-1
л v
2 у, cos 2nfi
I -0
(5.15)
0 /v-i
o bkN V О ГА,
s,n
‘-° (5.16)
Численный спектральный анализ повы-
шенной точности основан на априорном
представлении у (/) в промежутках между
узлами. Если такое представление невоз-
можно, используются формулы (5.15) и (5.16),
дающие наименьшую среднеквадратичную
погрешность (рис. 5.1, а). Если z; (/)== const
в промежутках между узлами (рис. 5.1,6),
а
Рис. 5.1. Задание y(f) решетчатой
то можно получить дли Ak, Bk точные зна-
чения Aki, Bk\, вычисляя их по формулам
Aki^KiAko, Bki^KiBko, (5.17)
где Л/ — 1 при f — 0,
/Q = (sin л/Д/)/л/Д/ при (5.18)
Формулы (5.17) с учетом Kf (5.18) полу-
чаются в результате аналитического интегри-
рования (5.5) и (5.6). Если в промежутках
между узлами функция у (t) аппроксими-
руется линейной зависимостью, то уточ-
ненные значения А и В будут равны
Д*2=К/Д«>, = (5.19)
Последовательный спектральный анализ
на ЭВМ выполняется по следующему алго-
ритму.
1. Вводим N — число интервалов разбие-
ния у (/), N\ — номер первого ненулевого
отсчета у (I) и номер последнего ненулевого
отсчета М.
2. Организуем цикл ввода ненулевых от-
счетов yt с управляющей переменной /,
меняющейся с шагом 1 от значения АП до М.
Использование только ненулевых отсчетов
позволяет уменьшить время анализа, если
у в начале или конце отрезка [0, Г]
или [0,/о]. Однако отсчеты yt — 0 при ЛЧ С
должны вводиться.
3. Задаем шаг Д/.
4. Переменным С и S присваиваем нуле-
вое значение, организуем ввод частоты f и
находим р = п[ Д/.
5. Находим Ло и. Во с помощью цикла,
в котором вычисляются
С в С 4~ z/z cos (2zp), S == S + yi sin (2ip),
где z —АП, /VI4-1, • ••» №. При выходе из
цикла До —С и Во==С.
6. Для заданного значения f находим нуж-
ные параметры a*, bk или Mk и <р*, Sc, Ss
или S и ф. Например, для вычисления S
и ср применяем формулы
S/д/ = ni =± -\/А о 4- В*,
фрад = <2= --arccos (Ao/m) приВ0>0,
(5.20)
(5.21)
при Во<0.
фрад — — Q
5
(а) и ступенчатой (б) функциями
Формулы (5.21) дают представление фрад
в пределах ±л рад (или ±180°, если ф рад
умножить на множитель 180/л). С помощью
(5.17) — (5.19) могут вычисляться уточнен-
ные значения А\, B\t Si — k[S и Л2, В2,
S2 = Zz2S при ступенчатой или кусочно-линей-
ной аппроксимации у (/).
7. Возвращаемся к п. 4 и повто-
ряем вычисления для нового значения
частоты f.
Таким образом, последовательный спект-
ральный анализ обеспечивает возможность
вычисления амплитуды и фазы любой гармо-
ники (или спектральной плотности на любой
частоте). При этом необходимо запоминание
всех отсчетов yi, кроме нулевых в начале
и в конце интервала дискретизации у (/).
Число отсчетов ограничено емкостью ОЗУ
ПЭВМ и достигает 100—250 у простых ПЭВМ.
Из-за резкого увеличения времени вычисле-
ний (оно пропорционально /V2) спектраль-
ный анализ описанным методом на ПЭВМ
при большем числе отсчетов нецелесооб-
разен.
123
Программа 5.1.
05 PRINT 'ПОСЛЕДОВАТЕЛЬНЫЙ СПЕКТРАЛЬНЫЙ АНАЛИЗ'
10 INPUT 'ВВЕДИТЕ ЧИСЛО ИНТЕРВАЛОВ РАЗБИЕНИЯ №'N
15 INPUT 'ВВЕДИТЕ НОМЕР ПЕРВОГО НЕНУЛЕВОГО ОТСЧЕТА N1='N1
20 INPUT 'ВВЕДИТЕ НОМЕР ПОСЛЕДНЕГО НЕНУЛЕВОГО ОТСЧЕТА №'М
30 DIM V<M>:FOR I=N1 ТО М
35 PRINT!3.0!'ВВЕДИТЕ ОТСЧЕТ V<'IINPUT YCI)
40 NEXT Is INPUT'ЗАДАЙТЕ ШАГ Т»*Т
50 INPUT'ВВЕДИТЕ ЧАСТОТУ Fa'FsLETC=0:LETS=0
60 LETP=#PI*F*TsLETU=2*PsF0R I=N1 TO M
70 LETZ=W* I: LETC«C+V< I > *COS < Z ) s LETS=S+Y < I) IN< Z ): NEXT I
80 LETR=SQR< C*C+S*S)s LETF=-ACS<C/R>-#PI*T*F
90 IF S<0 THEN LETF=-F
100 LETK=SIN <P)/Р s LETR1=K*R:L.ETR2~K*R1
110 PRINT!F1.9?'ПРИ РЕШЕТЧАТОЙ Y<T) S<F)=='R*T
120 PRINT'nPH СТУПЕНЧАТОЙ YCT) S1<F)='R1*T
130 PRINT'nPH КУСОЧНО-ЛИНЕЙНОЙ Y(T) S2(F)='R2*T
140 PRINT'ФАЗОВЫЙ УГОЛ В РАДИАНАХ F='F
150 PRINT'ФАЗОВЫЙ УГОЛ В ГРАДУСАХ F='DEG<F>
160 GOTO 50sEND
Пример. Найти спектральную плот-
ность прямоугольного импульса, заданного
отсчетами £/о— 1, у\ = 1, ..., ут— 1 при М = 32
и Д/ = 0,125-10~6 с для частоты / = 250 000 Гц.
Вводим эти данные (АИ=0, М = 7) и полу-
чаем^ S0 = 9,01764195-10~7; $, =9,003163162X
X10 7 (это значение полностью совпадает
с теоретическим, поскольку для прямоуголь-
ного импульса ступенчатая аппроксимация
у (/) является точной); S2 —8,98870762-10-7
и фазовый сдвиг <р=—39,375°.
При интерпретации результатов вычисле-
ния фазового сдвига следует помнить о ко-
нечной области определения углов (в данном
случае от —180° до -|-180о). Кроме того,
надо учитывать, что значения аргумента
у синусов и косинусов не должны выходить
за пределы, допустимые для данной ПЭВМ
(см. § 2.6). Из-за приближенности аппрокси-
мации у (/) значения <р могут сильно отли-
чаться от точных. Иногда это можно устра-
нить, введя поправку для <р, равную Дср =
— jif At (в радианах) или Д<р=180/Д/ (в гра-
дусах). Так, в примере к программе 5.1
Д<р= 180-2,5-105-0,125-106 = 5,625°. При
этом скорректированное значение угла
Ф= — (39,375-|-5,625) =—45° равно точно-
му значению.
Параллельный спектральный анализ на
ЭВМ заключается в одновременном (па-
раллельном) вычислении М гармоник. При
этом память ЭВМ нужна для запомина-
ния коэффициентов a*, bk (или Д*, В*),
однако запоминать все отсчеты у, не требуется,
поскольку каждый отсчет используется для
вычисления всех гармоник по мере его ввода.
Параллельный спектральный анализ про-
водится по следующему алгоритму.
1. Вводим нужное число гармоник М,
номер начальной гармоники kS, общее число
отсчетов у (/) У, номер первого ненулевого
отсчета IS и номер последнего ненулевого
отсчета IF,
2. Обнуляем переменные массивы A (k)
и В (k) и вычисляем Я = 2л/У.
3. Организуем цикл ввода #( = У с управ-
ляющей переменной /, меняющейся с шагом 1
от значения IS до IF. В этом цикле вво-
дим у,, вычисляем Z = RI и организуем
внутренний цикл (п. 4).-
4. Организуем цикл вычислений Ak, Bk
с управляющей переменной k, меняющейся
с шагом 1 от значения 0 до М— 1. В начале
цикла вычисляем UZ = Z (&-|-S), где S = /S,
и затем
A (k) = A (As)-h Y cos W,
В (fc)=B (k) 4- Y sin W.
Значения Ak соответствуют переменным мас-
сива А (/г), a Bk — переменным массива
В (k) после выхода из циклов. Для нулевой
гармоники /?-f-S = O вычисляем только До,
суммируя все у,.
5. Организуем цикл вывода Дл, Bk, M/t
и (pk = Qk (k = 0, ..., M — 1), учитывая сдвиг
индекса на величину 5, т. е. вывода вместо
индекса k значения k-]-S. В ходе вывода
вычисляем
М2 = £ M'f.
i = k+S
6. Если ЛП=0, т. е. вычисления начаты
с первой гармоники, находим коэффициент
гармоники:
kr = .... +М2м/М I =
=д/Л12-Л1?/Л4|.'
7. Если 5=1, можно проводить тригоно-
метрическую интерполяцию — экстраполяцию,
т. е. по заданным t вычислять
м
у ===~t"^~v( Ак cos 2л^
м •
с помощью усеченного ряда Фурье, ограни-
ченного М гармониками.
Когда по этому алгоритму надо вычислить
новый ряд гармоник, приходится повторять
124
ввод всех отсчетов yt. Если память ПЭВМ
достаточна, можно предусмотреть хранение
у, с помощью массива У (/), содержащего
действующие (т. е. #=#=0) отсчеты. Тогда,
предусмотрев в п. 3 алгоритма вместо руч-
ного ввода yi циклический вызов отсчетов
из массива У (/), получим вариант комбини-
рованного или последовательно-параллель-
ного спектрального анализа. В приведенной
ниже программе 5.2 реализован этот метод.
Кроне того, в ней предусмотрен ввод опор-
ной частоты fi = Fl. Это частота первой
гармоники при анализе периодических функ-
ций или частота, задающая масштаб сетки
частот kf\ при анализе финитных функций
(т. е. в последнем случае им придается
характер периодических функций с частотой
повторения fi). Коррекция Мк и фазового
сдвига в этой программе не предусмотрена
(но может быть легко введена).
Программа 5.2.
Значения М4 и S4 недостоверны ввиду
их малости (точные значения М4—О и S4==0).
Поэтому случайные значения Q4 из выдачи
исключаются. Для /==0,5* 10~6 по програм-
ме 5.2 получим у (t) = 1,07593, а для / =
= 3-10“6 получим у (t) =0,00852.
Спектральный анализ функций с ограни-
ченным спектром выполняется также непо-
средственно с помощью дискретного преоб-
разования Фурье над комплексными чис-
лами. Так, если задан массив и/=х=л;4-/У,
0 = 0, 1, 2, ..N— 1), то прямое дискретное
преобразование Фурье дает массив комплекс-
ных чисел
йь = V£'
i — 0
Соответственно массив чисел Vk при обрат-
ном дискретном преобразовании Фурье обра-
10 PRINT'ПОСЛЕДОВАТЕЛЬНО-ПАРАЛЛЕЛЬНЫЙ СПЕКТРАЛЬНЫЙ АНАЛИЗ*
15 PRINT*И ТРИГОНОМЕТРИЧЕСКАЯ ИНТЕРПОЛЯЦИЯ-ЭКСТРАПОЛЯЦИЯ*
20 INPUT* ЗАДАЙТЕ ОБЩЕЕ ЧИСЛО ОТСЧЕТОВ ФУНКЦИИ ¥<Т> N=*N
30 INPUT*ЗАДАЙТЕ НОМЕРА НАЧАЛЬНОГО И КОНЕЧНОГО ОТСЧЕТОВ IS/IF *U,6
40 LETG=6-UsDIM У<6Ъ A<N/2>/B<N/2)sLETR=2*#PI/N
50 FOR 1=0 TO G:PRINT!3.0!'ВВЕДИТЕ V*I+U:INPUT V<I>sNEXT I
60 INPUT*ЗАДАЙТЕ ЧИСЛО СОСТАВЛЯЮЩИХ СПЕКТРА М=*М
70 INPUT*ЗАДАЙТЕ НОМЕР ПЕРВОЙ СОСТАВЛЯЮЩЕЙ СПЕКТРА KS=*S
75 INPUT*ЗАДАЙТЕ ЧАСТОТУ F1=*F
80 LETA=0?LETB«05LETC«0sFOR К=1 ТО М
90 LETA<K)«08LETB<K>=0iNEXT К
100 FOR 1=0 ТО 6sLETA=A+Y<I)iLETZ=R*<I+U>
110 FOR К«1 ТО M«LETW=Z*<K+S-1>
120 LETA<K)=A<K>+Y<I>*COS<W>:LETB<K)=B<K)+V<I>*SIN<W>
130 NEXT K8HEXT IsLETM0«A/NiLETS0=M0/F
140 PRINT!Fl.9!'ПОСТОЯННАЯ СОСТАВЛЯЮЩАЯ M0«*M8
150 PRINT'СПЕКТРАЛЬНАЯ ПЛОТНОСТЬ НА НУЛЕВОЙ ЧАСТОТЕ S0«’S0
160 FOR К»1 ТО M8LETU=SQR<A<K>*A<K)+B<K)*B<K))
170 LETQ=~ACS<A<K)/U>:IF B<K)<0 THEN LETQ=-Q
180 LETO=K+S-lsLETB«B+U*U8IF K+S=2 THEN LETC=U
190 PRINT!3.0!'АМПЛИТУДА M*0!F1.9!*='U»2/N
200 PRINT!3.0!'СПЕКТРАЛЬНАЯ ПЛОТНОСТЬ S*0!F1.9!*=*U/N/F
210 PRINT!3.0!'ФАЗОВЫЙ СДВИГ Q*0!F1.9!*='DE6<Q>
220 NEXT KsIFSOl THEN 60
230 PRINT'КОЭФФИЦИЕНТ ГАРМОНИК КГ=*!F1.9!SQR<B-C*C)/C
240 INPUT'1-БУДЕТ ВЫЧИСЛЯТЬСЯ Y<T),0-HE БУДЕТ ?'D
250 IF DOI THEN 60
260 INPUT*ЗАДАЙТЕ ВРЕМЯ T«'T:LETY=0sLETP«2»#PI*T*F
270 FOR K«1 TO MsLETW=P*KxLETY=Y+A(K>*COS<W>+B<K>*SIN<W)
280 NEXT K8LETY=M0+Y*2/NlPRINT'ЗНАЧЕНИЕ Y<T>=*!F1.9!Y
290 60T0 260।END
Пример. Для примера к программе 5.1
(W = 32, уо — у7= 1, h =250 000), задав М = 5
и MS = 1, получим (даны 5 цифр после
запятой):
М0=0,25 S0=l-10-6
Ml =0,45088 SI =9,0176-IO-7
М2 = 0,32036 S2 = 6,40729-10“7
M3 = 0,15224 S3 = 3,0449-IO-7
M4 = 2,23345 • 10“12 S4 = 4,466892 • 10~18
M5 = 0,09375 S5= 1,87503-10-7
Kr=0,81369
QI = -39,375
Q2=- 78,75
Q3=-118,125
Q5=-16,875
зует массив комплексных чисел
N — 1
• 1 V • / (2«л//ло
fc = 0
Если Ui=Y (к), причем Re Ui = Xi=Y (/,•),
a Imui=y/ = 0, то прямое .преобразование
Фурье дает коэффициенты Ck—Ako — jBko —
= Vk/N усеченного тригонометрического ряда
Фурье в комплексной форме:
(/(/)=£ | С#| (2л*/,
k — — ОС
где IGI=^/X(+H, <р*=—arccos (X»/|Cj),
если Уа>0, и ф/г=— ср*, если У*<0. Пер-
125
вые Ы/2 Значений соответствуют поло-
жительным частотам f — остальные —
отрицательным.
Соответственно, идоея частотный спектр
в виде N значений = + jYk и подверг-
нув его обратному преобразованию Фурье,
получим N значений у, (ti) /N. Из них первые
N/2 значений соответствуют области времен
/>0, остальные-— /<0.
Указанные дискретные преобразования
вытекают из прямого преобразования Фурье
оо
S (<о) = y(t)e-ia‘dt
— сю
и из обратного преобразования Фурье
оо
— оо
выполняемых методиками приближенного чис-
ленного интегрирования для функций у (/),
определенных на конечном промежутке вре-
точно вычислять 2Л4 раз, поскольку они
периодически повторяются. Кроме того, вы-
числения можно проводить по рекуррентным
формулам (см. подробно в [5]). Выделив
четную и нечетную части разложений, уда-
ется уменьшить время вычислений еще вдвое;
в результате БПФ требует проведения
(N/2) iog2 N операций вместо № (при
Л/=1024 это уменьшает число операций бо-
лее чем в 200 раз!). Для ПЭВМ характерны
значения 64-г 256, а для профессиональ-
ных ПЭВМ — в несколько раз больше.
Выбор W из ряда 2м (2, 4, 8, 16 и т. д.)
является определенным неудобством БПФ.
Однако оно компенсируется заметным уже
при М = 8 или Л/= 16 сокращением времени
вычислений. Программы БПФ обычно позво-
ляют проводить как прямое, так и обратное
дискретное преобразование Фурье над мас-
сивами Xi + jYi и ui< = + обеспе-
чивая преобразование Xt -> Хь, Yi-* Yk, и на-
оборот.
Программа 5.3.
10 PRINT'ПРЯМОЕ И ОБРАТНОЕ БЫСТРОЕ ПРЕОБРАЗОВАНИЕ ФУРЬЕ'
20 INPUT'ДЛЯ N=2~M ВВЕДИТЕ M='MsLETN=INT(2~M+.DsDIM X<N-1)/Y<N-1)
30 INPUT'ЗАДАЙТЕ -1 ПРИ ПРЯМОМ БПФ И 1 ПРИ ОБРАТНОМ 'D
35 INPUT'ВВЕДИТЕ НОМЕРА НАЧАЛЬНОГО И КОНЕЧНОГО ОТСЧЕТОВ IS/IF '18/11
48 FOR lx© ТО I1-I0SPRINT13.0!'ДЛЯ I='I+I8
58 INPUT'ВВЕДИТЕ XI/VI 'X(I)/Y(I)sNEXT I
60 FOR L=1 TO M:LETE«INT(2^<M+1-L)+.1)sLETF=E/2:LETU=1sLETU=0
70 LETZ=#PI/FsLETC=COS<Z>sLETS=D*SIN<Z)’.FOR J=1 TO F
80 FOR I=J TO N STEP EsLETO=I+F-18LETP=X<I-l)+X<O)sLETQ=V<I-l)+V(O)
98 LETR=X <I-1)-X < 0)s LETT=V<I-1)-V < 0)sLETX < 0 ) =R*U-T*U
180 LETV<O)«T*U+R*UsLETX<I-l)=PsLETV<I“l)xQsNEXT I
110 LETW=U3KC-U*S8LETU=U*C+U«SsLETU=W:NEXT JsNEXT L
i28 LETJ=lsFOR 1=1 TO N-DIF I>=J THEN 158
130 LETJ1=J-18LETI1=I-18LETP=X<J1)SLETQ=V(J1)8LETX<J1)=X(I1>
148 LETV<JI>=V<IDsLETX<11)=PsLETV<11>=Q
158 LETK=N/2
160 IF K>«J THEN 180
178 LETJ=J-KxLETK=K/2sGOTO 160
188 LETJ»J+K8NEXT I
190 IF D=-l THEN PRINT'РЕЗУЛЬТАТЫ ПРЯМОГО БПФ'160Т0 248
208 PRINT'РЕЗУЛЬТАТЫ ОБРАТНОГО БПФ'sFOR K=8 TO N-l
210 LETX<K)=X<K)/NSLETVCK)=V(K)/N
220 PRINT»3.01'K='Ki1F1.5!' X='X<K)>' V='V<K)
230 NEXT K8STOP‘
240 FOR K=0 TO N-18LETA=SQR<X(K>*X<K)+V(K>*V(K>)
250 LETQ=08IF A=0 THEN 270
268 LETQ«ACS<X<K)/A)sIF V<K)<0 THEN LETQ=-Q
270 PRINT !3.d»'K='K;1F1.51' X='X<K);' V='V(K)j
288 PRINT' M='A*2/N;' Q='DEG<Q)8NEXT KsEHD
мени, и зависимостей S (w) .с ограниченным
спектром.
Дискретное преобразование Фурье тре-
бует числа операций порядка и ведет
к большим затратам машинного времени
уже при 104-20. Кроме того (при опе-
рациях с комплексными числами), прихо-
дится 2N раз вычислять тригонометрические
функции (sin и cos) — операции по разло-
жениям их в ряд выполняются на ЭВМ
довольно медленно.
Быстрое преобразование Фурье (БПФ)
позволяет резко уменьшить время проведе-
ния прямого и обратного дискретных преоб-
разований Фурье. При БПФ N выбирается из
условия N — 2M, где /И —1, 2, 3, .... При этом
значения тригонометрических функций доста-
Пример. В программе 5.3 предусмотрен
ввод только ненулевых отсчетов. Например,
для вычисления спектра прямоугольного им-
пульса, заданного при N = 32 (М = 5) во-
семью единичными отсчетами Y (/) Хо, Хь
%2, •.., Х7 и остальными нулевыми (все
К = 0), задаем номер начального отсчета
/5 = 0 и конечного 1F — 7 и указываем тип
преобразования. При прямом дискретном
преобразовании Фурье получаем спектраль-
ный состав (даны первые 6 значений из
таблицы результатов, выводимой на экран
дисплея):
К = 0 Х = 8 Y = 0
К=1 Х = 5,57659 Y=-4,57659
К = 2 Х=1 Y=-5,02734
126
К-3 Х= - 1.14828 Y=-2,14828
К^4 Х = 0 Y = 0
К -5 X* 1,43543 Y=- 1,43543
М = 0,25
М=0,45088
М = 0,32036
М = 0,15224
М = 0
М = 0,09375
Q = 0
Q=-39,75
-78,75
Q= —118,125
Q-0
Q=-16,875
Если дать команды D=1 GOTO 60, то после
прямого будет проведено обратное дискрет-
ное преобразование Фурье. Без учета малых
погрешностей округления, получим в итоге
значения XD-i-X7 = 1. X8-r X3i =0 и УьЧ- Y31 —
= 0 (т. е. исходный массив и,). Время
преобразования при Л4 = 5 около 2,5 мин.
Повышение точности БПФ достигается
специальной обработкой входных или выход-
ных данных. Обработка входных данных
заключается в умножении отсчетов на весо-
вые коэффициенты IF/, подобранные так,
чтобы обеспечить заданную аппроксимацию
У (/) в ходе интегрирования. Значения
IF/=1 соответствуют ступенчатой аппрокси-
мации Y (/) и интегрированию методом
прямоугольников. Если IF, = 1/2, 1, 1, ...
..., 1, 1/2, то У (/) в ходе БПФ аппрокси-
мируется кусочно-линейной функцией, т. е.
интегрирование происходит методом трапе-
ций. При IF, = 1/3, 4/3, 2/3, 4/3, 2/3, ...
..., 4/3, 1/3 аппроксимация У (/) будет
параболической, т. е. интегрирование проис-
ходит по методу Симпсона. При более
сложных последовательностях IF* возможна
аппроксимация У (/) полиномами более вы-
соких степеней.
Применим этот метод к примеру для
программы 5.3. Зададим 9 отсчетов Х() = 1/2,
Х,Ч-Х7=1 и Х8=1/2 (все Уоч-У8 = О).
С помощью программы 5.3 получим (пер-
вые 6 строк таблицы выходных данных):
К = 0 Х = 8 Y = 0
К-1 Х = 5,07659 Y=-5,07659
К-2 Х=—7-10~12 Y=-5.02734
К-3 X-1,64828 Y= —1,64828
К-4 Х = 0 Y = 0
К - 5 X = 0,93543 Y = - 0,93543
М—0,25
М = 0,44871
М = 0,31421
М = 0,14569
М = 0
М = 0,09268
Q—0
Q=—45
Q=-90
Q = -135
Q = 0
Q^-45
При параболической аппроксимации У (/)
задаем ее значениями Xq—1/З, Xi=4/3,
Хг = 2/3, Х3 = 4/3, Х4 = 2/3, Х5 = 4/3, Хб =
= 2/3, Х7 —4/3, Х8=1/3, X9-rX3i=₽0 и
Уо4-Хз1—0. Тогда получим:
К-0 Х = 8 Y = 0
К-1 Х = 5,0930 Y=-5,0930
К-2 Х = 6,6-10-*3 Y=-5,09364
К-3 Х= —1,69884 Y= —1,69884
К-4 Х = 0 Y = 0
К-5 Х= 1,02452 Y=-1,02452
М = 0
М = 0,45016
М = 0,31835
М = 0,15016
М = 0
М = 0,09056
Q = 0
Q--45
Q=—90
Q--135
Q = 0
Q=—45
Для данного примера точные результаты
вычисляются по формулам
X* = sin (л/г/2) Л//2л/г,
УА= — (1 —cos (л&/2)) N/2nky
Q*= — arccos (Хь/^+П)
и равны:
к=о Х = 8 Y-0
К—1 X —5,09296 Y—— 5,09296
К-2 Х-0 Y=- 5,09296
К-3 Х= —1,69765 Y=- 1,69765
К-4 Х = 0 Y = 0
К-5 Х= 1,01859 Y= — 1,01858
М = 0,25
М-0,45016
М = 0,31831
М = 0,15005
М = 0
М = 0,09003
Q-0
Q--45
Q——90
Q= —135
Q-0
Q=—45
Сравнение приведенных данных наглядно
иллюстрирует повышение точности БПФ по
мере увеличения порядка аппроксимирую-
щего у (/) полинома. Казалось бы, что для
прямоугольного импульса ступенчатая аппрок-
симация будет наилучшей. Однако при БПФ
производится приближенное численное инте-
грирование не самой зависимости у (/), а ее
произведения на быстроосциллирующие мно-
жители. Поэтому результирующая погреш-
ность интегрирования определяется не только
погрешностью аппроксимации у (/), но и
всей подынтегральной функции. В следую-
щем разделе описан метод спектрального
анализа, в котором по точным формулам
интегрируется произведение у (/) на осцил-
лирующие множители (при этом простейшая
кусочно-линейная аппроксимация у (t) с раз-
рывами позволяет получить точные резуль-
таты спектрального анализа).
Повышение точности БПФ путем обра-
ботки выходных данных сводится к умноже-
нию Хк и Yk на множитель /G —
= sin (л&/N) / (л/?/N) и введению поправки
на фазовый сдвиг Дф* = л£//У. В этом слу-
чае для рассмотренного примера будем
иметь точные значения X*, Yk, Mk и ф*.
Разумеется, нельзя использовать одновре-
менно оба способа повышения точности
БПФ, поскольку они являются альтернатив-
ными вариантами одного и того же под-
хода — улучшение аппроксимации Y (t).
Эффект Гиббса наблюдается при триго-
нометрической интерполяции усеченным ря-
дом Фурье функций с разрывами (в част-
ности, прямоугольного импульса). Он заклю-
чается в осцилляциях расчетной зависимо-
сти ряда Фурье, амплитуда которых может
127
достигать 18 %. Увеличение числа членов
ряда ведет лишь к уменьшению длитель-
ности осцилляций. Осцилляции значительно
снижаются (сглаживаются) при описанной
выше обработке данных (как обычного
спектрального анализа, так и с помощью
БПФ).
§ 5.2. Специальные виды
спектрального анализа
Метод пяти ординат обеспечивает вы-
числение постоянной составляющей Ус и
первых четырех гармоник УМ14- УМ4 реак-
ции системы с передаточной характеристи-
кой у (х) на гармоническое воздействие
х = хЛ1созш,/4-хо (см. рис. 5.2):
Уо = ((у\ 4-*/s) +2 (t/2+^4)]/6,
уМ1 == <У> —У5+У2 — У4)/3,
Ум2 = (У' + S/5 — 2(/з) / 4,
^мз== [(i/i — У*) ~2 (i/2 —£/4)]/6,
У М4 =7 [(*/i +</б) —4 (#2+у4)] /12,
Хг = л/^М2+ Умз+^ЛмАлП-
Метод широко применяется для расчета
радиотехнических систем с малой нелиней-
ностью зависимости у (х).
Программа 5.4.
Пример. Для у\ = 0,7; г/2 —2; ^З = 3,5;
1/4 —5,2 и 1/5 = 6 получим Уо = 3,516666667;
yM1 = -2,833333333; УМ2 = -0,075; yM3 =
= 0,1833333333; УМ4=-0,0916666667 и Кг =
= —0,07703412267. В программе 5.4 ампли-
туды гармоник Ум1~^л14 обозначены как
М14-М4.
Метод семи ординат аналогичен, по сути,
методу пяти ординат, но отличается боль-
шим числом ординат и позволяет найти
Уо и 6 гармоник [37]:
Уо=у, + (- 270аи+ 756а2 + 334а3) /2560,
УМ1 = (-180р, 4- 1008₽2+668Рз)/2560,
У М2 = (“ 1215а, + 486а2 + 559а3) /2560,
Ъиз = (— 6300, —36002 4-45003) /2560,
УМ4= (270а,-756а2 + ЗО6а3)/2560,
УМ5= (8100,-648р24- 16203)/256О,
УЛ16= (1215а,—486а2 4-81 аз)/2560,
где
он =*/5+ 1/3 —2t/4, а2 = 1/64-i/2 — 2i/4,
a3 = f/7-|-t/i—2(/4,
Pl=*/5 —*/3, р2 = 1/б —^2, Рз = //7 —t/1,
Кг = ••• + УМб/Ум 1 •
10 PRINT >СПЕКТРАЛЬНЫЙ АНАЛИЗ МЕТОДОМ 5-ТИ ОРДИНАТ'
20 INPUT 'ВВЕДИТЕ ПЯТЬ ОРДИНАТ ФУНКЦИИ 71,72,73,74,75* 71,72,73,74,75
30! LET 70=<71+75+2*<72+74))/6
40* PRINT 'СРЕДНЕЕ ЗНАЧЕНИЕ 7О«*70
50 LET Ml=<71-75+72-74)/3
60 PRINT 'АМПЛИТУДА ПЕРВОЙ ГАРМОНИКИ М1=*М1
?0 LET М2=<71+75-2*73>/4
80 PRINT 'АМПЛИТУДА ВТОРОЙ ГАРМОНИКИ М2='М2
90 LET M3S<71-75-2*<72-74)>/6
100 PRINT 'АМПЛИТУДА ТРЕТЬЕЙ ГАРМОНИКИ МЗ=*МЗ
110 LET М4=<<71+75)-4*<72+74)+6*73)/12
120 PRINT 'АМПЛИТУДА ЧЕТВЕРТОЙ ГАРМОНИКИ М4=*М4
130 LET K=*<SQR<<M2~2)+<M3~2)+<M4~2)))/M1
140 PRINT 'КОЭФФИЦИЕНТ ГАРМОНИК К=*К
150 60Т0 20 : END
128
Программа 5.5.
10 PRINT'СПЕКТРАЛЬНЫЙ АНАЛИЗ МЕТОДОМ 7-МИ ОРДИНАТ>
20 PRINT'ВВЕДИТЕ ОРДИНАТЫ VI/V2>.../Y7'
30 INPUT A,B>C,D,E/F/GsLETH=2560
40 LETW=2*DsLETI=E+C-WaLETJ=F+B-W
50 LETK=6+A-WsLETL=E-C8LETM=F-B
60 LETN=G-AsLETO»D+<756*J-270*I+334*K)/H
70 LETP=<1008*M-180*L+668*N)/H
80 LETQ=(486*J-1215*I+559*K>/H
98 LETR«<450*N-630*L-368*M>/H
100 LETS«(270*I-756*J+306»K>/H
110 LETT=<810*L-648*M+162*N>/H
120 LETU=<1215«I-486mJ+81*K)/H
130 LETU=SQR < Q~2+R~2+S~2+T~2HT2 > /Р
140 PRINT'КОЭФФИЦИЕНТ ГАРМОНИК КГ='Ц
150 PRINT*A0='Os PRINT'A1»'P*PRINT'A2='Q
168 PRINT'A3='Rs PRINT'A4='SsPRINT'A5='T
170 PRINT'A6='Us END
Пример. Для (/|=(/2 = £/з = 0; y4=l;
#5 = 2; i/6 = 3 и £/7 = 4 получаем Уо = 1,55625;
УМ1= 2,064375; УМ2 = 0,6265625; YM.=
= -0,2109375; УМ4=-0,05625; УМ5 =
= 0,1265625; yM6 =-0,1265625 и Кг =
=0,3297021676. В программе 5.5 Yq-~YMq
обозначены А0--А6.
Метод степенного полинома основан на
аппроксимации передаточной характеристики
полиномом
у (х) = ao4-aix4-a2x24- ... +апхп
и вычислении спектра у (/) при воздействии
в виде х (/) cos о)|/. При этом [37]
£/о (0 =an; yi (/) =an_14~* (0 ап\ ...;
л-1
£/л (/) =a„_fe4-x (/) £ Ajfe_,)cos£(Oi/ =
Л
“ Е A^COSlW-
i = 0
Коэффициенты А? последней формулы вы-
числяются по рекуррентным соотношениям
в следующей последовательности:
А^}=ап-k 4- хм А\*-1)/2;
А^=хм (АЬ‘-,)4-Лк-1)/2);
4^=хм(А^-,)4-А^-,))/2; ...;
Л<‘>=хм' (Л<‘_П '>+А%\ ”) /2; ...;
Л^1=хмЛ1‘_-2,)/2;
А?
Ввиду четности функции х (/) незави-
симо от вида нелинейности у (х) функция
у (/) также является четной и ее спектр
содержит только косинусоидальные составляю-
щие с фазой <р(=0 (и постоянную состав-
ляющую Ао/2). Число гармонических состав-
ляющих равно п, а коэффициент гармоник
Кг—д/^2 4"Аз4“ • • • -НА2 /А i.
Программа 5.6.
10 PRINT 'АНАЛИЗ РЕАКЦИИ НА ГАРМОНИЧЕСКОЕ ВОЗДЕЙСТВИЕ'
28 PRINT' НЕЛИНЕЙНОЙ СИСТЕМЫ С ПОЛИНОМИАЛЬНОЙ'
30 PRINT' ПЕРЕДАТОЧНОЙ ХАРАКТЕРИСТИКОЙ'
40 INPUT 'ВВЕДИТЕ СТЕПЕНЬ ПОЛИНОМА N='N
50 DIM D(N+bN+1ЪA<N>
60 PRINT 'ВВЕДИТЕ КОЭФФИЦИЕНТЫ ПОЛИНОМА'
70 FOR 1=0 ТО № PRINT‘2.8!'А'П INPUT A<I)s NEXT I
80 PRINT'ВВЕДИТЕ ПОСТОЯННУЮ СОСТАВЛЯЮЩУЮ ВХОДНОГО'
98 INPUT 'ВОЗДЕЙСТВИЯ Х0='В0
100 INPUT 'ВВЕДИТЕ АМПЛИТУДУ ВХОДНОГО ВОЗДЕЙСТВИЯ ХМ='В
110 FOR 1=0 ТО N+1: FOR J=0 ТО N+1
120 LET D<bJ)=0: NEXT Js NEXT I
130 LET D<0,0)=A<N)8 FOR 1=1 TO N
140 LET D<b0>=A<N-I)+B0*D<I-b0>+B*D(I-bl)/2
150 LET D<b l)=B0*D<I-b 1 >+B*<D< I-Ь 0)+D< I-Ь 2>/2)
160 FOR J=2 TO N
170 LET D<b J)=B0»D<I-b J>+B*<D<I-b J-l)+D<I-b J+i))/2
180 NEXT Js NEXT I
190 LET K«0s FOR J=2 TO N
200 LETK»K+D<N/J>*D<N/J>s NEXT J
210 LET K=SOR<K/<D<NM)*D<NM>)>
220 PRINT 'СПЕКТР ВЫХОДНОГО СИГНАЛА'
230 PRINT'ПОСТОЯННАЯ СОСТАВЛЯЮЩАЯ Y0='‘Fl.9‘D(N,8)
240 PRINT 'АМПЛИТУДЫ ГАРМОНИК'
250FOR J=1 TO Ns PRINT•2.0!'VM'J'='!F1.9‘D<N,J)sNEXT J
260 PRINT‘Fl.9!'КОЭФФИЦИЕНТ ГАРМОНИК КГ='К
270 GOTO 80s END
5 В. П. Дьяконов “ 129
Пример. Для у (х) = 1 1000х + 200х2+
+ 100х3 + 20х4 + 10х5; х0—0 и хм=4 полу-
чим Ао —3521; Л|« 15200; А2=4160; А3 =
=4800; А4=640, Аб=640 и Аг=0,42210395.
Амплитуды Ао-гАм в программе обозначены
ГО, YM1 + YMN.
Метод двенадцати ординат является про-
стейшей разновидностью БПФ и служит
для вычисления коэффициентов Фурье бо-гбв
и а। ~-аб функции у (х), заданной 12 равно-
отстоящими ординатами ух-т-у^. Алгоритм
расчета по этому методу следующий [1].
1. Вычисляем суммы и разности ординат
по схеме — суммы, di — разности):
4. Находим коэффициенты 6о4-6е и d|4
4-аб (Об=0):
е,/2+0з+02->/3/2
а,==---------------,
_ (’ll+ лг) л/3/2 . 01—Оз
а2=-------------, а3=—__
т/з, ;
“4=-у-(п1—пз); as
0|/2+0з-0г V3/2
6
о0 оI “Ь о2 Ч”
12
У12 l/l У11 У2 У10 Уз Уз У< Уз Уз У1 Уз ‘
So Si St S3 S4. $6 $6
di d* ds ds
62/2 + 60^6,73/2 t
2. Вычисляем суммы а* и разности
«0 Se Si Sfi Sa s4 S3
Сто Cl <J2 сгз
до 61 62
^2=з — СГ2/2 + а|/2 — О3
, 60 — 62
*3 = __
Сто—o2/2 — Oj/2 + оз
3. Вычисляем суммы 0/ и разности тр:
dx ds di d< ds
Oi 02 Оз
4i 42
, 62/2 + 60 “61 73/2
——6-----------'
go + q2 — (Oj+Оз)
Программа 5.7.
18 PRINT 'ГАРМОНИЧЕСКИЙ АНАЛИЗ МЕТОДОМ 12-ТИ ОРДИНАТ'
20 DIM Y(12)8F0RI=4 ТО 12
40 PRINT 12.0 Г ВВЕДИТЕ YCI')'8lHPUT V<I)8NEXT I
50 LET S0=Y(12) s LET S1«Y<1)+Y< 11 > 8 LET S2=*Y<2>+¥< 10)
60 LET S3sY(3)+V(9>8LET S4==Y<4>+Y<8>8LET S5»Y<5)+Y<7)sLET S6«Y<6)
90 LET D1SY(1>-Y<11) 8 LET D2«Y<2>-Y<10> 8 LET D3«Y<3)-V<9)
100 LET D4eV<4>-Y<8> 8 LET D5*Y<5>-Y<7>
130 LET 60-80+868LET 61«S1+S58LET G2=S2+S4sLET G3«S3
140 LET T0«S0-S6 8 LET T1«S1-S5 8 LET T2=S2-S4
170 LET Q1«D1+D5 8 LET Q2=D2+D4 8 LET Q3«D3
180 LET H1=D1-D5 8 LET H2«D2-D4
210 LET L»SQR<3>/2 8 LET Al=<<Ql/2>+Q3+Q2*L>/6
220 LET A2=<Hl+H2>*L/6 8 LET A3=(Ql-Q3>/6
238 LET A4=(Hl-H2)*L/6 s LET A5«<<Ql/2>+Q3-Q2*L>/6
240 LET B0=C60+62+61+G3)/12 8 LET Bl«<<T2/2>+T0+Tl*L>/6
250 LET B2«<60-<62/2)+(Gl/2)-63>/6 8 LET B3==<T0-T2>/6
260 LET B4»(G0-(G2/2)-<61/2>+63)/6
270 LET B5«<CT2z2>+T0-Tl*L>/6
280 LET B6«<60+G2-61-G3)/12
290 PR1NT!F1.9!'ЗНАЧЕНИЯ КОЭФФИЦИЕНТОВ*
300 PRINT 'A1»'A1 s PRINT 'A2»'A2 8 PRINT 'A3«'A3
310 PRINT 'A4«'A4 s PRINT 'A5='A5 s PRINT 'B0»'B0
320 PRINT 'B1«'B1 s PRINT 'B2®'B2 8 PRINT 'B3=»'B3
330 PRINT 'B4«'B4 8 PRINT 'B5«'B5 s PRINT 'B6«'B6
340 60T0 20 8 END
130
Пример. Для jFi = l; //2=4; //з = 5;
//4 = 4; i/5 = 3; //6 = 3,5; //7=3,5; //в = 3; //9 = 1;
//i0 = 0,5; //ц = 0,2 и //i2 = 0 получим
ai = 1,34118572; а2 = 0,5484827557;
а3=—0,6166666667; а4=—0,1732050808;
а6 = 0,04214761383; 60 = 2,391666667;
Ь\ = - 1,556655773; 62 = —0,733333333;
63=-0,1666666667; 64=-0,01666666667;
д5 = -0,02667755999; 66 = 0,1083333333.
Отметим, что в отличие от введенных в § 5.1
обозначений здесь использованы обратные
(а^ обозначено как bi, a bi как а(), что свя-
зано с применением ряда Фурье, у которого
члены ряда — синусы, а не косинусы.
Последовательный спектральный анализ
кусочно-линейных функций с разрывами
обеспечивает точное вычисление спектров
функций, которые могут быть синтезированы
из треугольников, прямоугольников и трапе-
ций. При этом каждый отсчет //< задается
моментом времени ti и двумя значениями:
//, (h—0) слева и //< (64-0) справа, где 0
понимается как бесконечно малое прираще-
ние h. Если у{ (ti — O)=yi (ti + 0), то в точке
ti зависимость у (ti) не имеет разрыва. Если
имеется разрыв, он задается соответствую-
щими значениями функции до и после раз-
рыва. Например, прямоугольный импульс
единичной амплитуды задается значениями
t\, у\ (t\—0) =0, у\ (ti 4-0) = 1, /2» У2 (t2 —
— 0) = 1 и у? (/240) =0. Нумерация отсче-
тов i далее идет с 1, число отсчетов у (t)
равно N. Отсчеты могут идти с произвольным
расположением точек 6 на оси времени.
На произвольном участке [6-ь6] функ-
ция у (0 аппроксимируется прямой, уравне-
ние которой
У (0 — </«-» _
yi—yt-l ti — ti-l
Следовательно, взяв отсчеты с соответ-
ствующей стороны, получим для у (t) в ин-
тервале (6_i40. 6—0) следующее выра-
жение:
!/(0 =
-U-l+0)-»|,'-°r*(,-l+M+
L 6—6-1 J
. //(6-0)-//(6-.4-0) t
6-6-1
Подставляя это выражение в (5.11) и (5.12),
получим (х = nfk А/):
С°=-^=-2У Е (6-.+0)-Н/ (6-0)},
4=»1
ЛГ
sin -
i = 1
—у (6-140) sin (2х (/—!))}—
N
sin х V z
4* ее 1
-у (6-!+0)) sin (х (24—1))},
1 N
ly cos (2х (»-«))-
1=1
N
—у (ti—Q) cos (2*0Е Кг/(6—0)—
4 = 1
-у (6-i+O)) cos (* (24—1))}.
Алгоритм последовательного спектраль-
ного анализа для данного случая подобен
описанному в § 5.1.
Программа 5.8.
10 PRIНТ'ПОСЛЕДОВАТЕЛЬНЫЙ СПЕКТРАЛЬНЫЙ АНАЛИЗ КУСОЧНО-ЛИНЕЙНОЙ'
20 PRIHT' ФУНКЦИИ»ЗАДАННОЙ Н ОТСЧЕТАМИ/НАЧИНАЯ С 1=0'
30 PRIHT' С ПРОИЗВОЛЬНЫМ РАСПОЛОЖЕНИЕМ ОТСЧЕТОВ'
40 IHPUT'ВВЕДИТЕ ОБЖУЮ ДЛИТЕЛЬНОСТЬ ВРЕМЕННОГО ИНТЕРВАЛА Т='Т
50 1НР11Т'ЗАДАЙТЕ ЧИСЛО ОТСЧЕТОВ H='HsDIM ЩНЪУСЬН)
60 FOR 1=1 ТО HsPRIHT!3.0!'ВВЕДИТЕ T'1-lslHPUT U<I>
70 1НРЦТ'ВВЕДИТЕ ЗНАЧЕНИЯ У(Т-0>/У<Т+0) 'V<0,IXVCl,IXHEXT I
90 IHPUT'ВВЕДИТЕ ЧАСТОТУ F='Fs IF F>0 60T0 150
100 LET A=0s FOR 1=2 TO H
110 LET A»A+<U<I)-U<I-l>>*<?<!.I-1)+V<0/I))/<2*T>iHEXT I
120 PRIHTIF1.9!'ПОСТОЯННАЯ СОСТАВЛЯЮЩАЯ M<8>='A:LETS=T*ABS<A>
130 PRIHT'СПЕКТРАЛЬНАЯ ПЛОТНОСТЬ S<0)='Ss 60T0 90
150 LET A=0SLET B«0sLET R=0«LET X0=#PI*F»TtFOR 1=2 TO H
160 LET X1=2m#PI*F*U<I-1)s LET X2=2*#PI*F*U<I)
170 LET X3»<V<0.I>-V<b1-1>>/<Х2-Х1>
175 LET D=F*U<I-l)sIF D-IHT<DXl.E-5 THEM LETX1=0
180 LET D=F*U<I)s IF D-IHT<DXl.E-5 THEM LETX2=0
185 LETSl»SIH<XlXLETS2=SIH(X2XLETCl=C0S<Xi>sLETC2«C0S<X2>
190 LET A»A+<X3*<C2-Cl>+V<0»IXtS2-V<bI-l>*Sl)/X0
280 LET B»B+<X3*<S2-Sl>-V<0»I)*C2+V<bI-l)*Cl>/X0
210 HEXT is LET 6=SQR<A*A+BmBX IF 6=0 60T0 230
215 LET Z=Az6i IF ABS<ZXi.E-U THEH LET Z=0
220 LET R=-ACS<Z): IF B<8 THEH LET R=-R
230 PRIHTIF1.9!' АМПЛИТУДА M<F>='6
248 PRIHT' СПЕКТРАЛЬНАЯ ПЛОТНОСТЬ S<F)='6*Tz2
250 PRIHT' ФАЗА В ГРАДУСАХ Q<F>='DE6<RX60T0 90s EHD
5*
131
Пример. Для примера к программе 5.1
(вычисление спектра прямоугольного им-
пульса) вводим 7 = 4-10-6 с, М = 32, /|=0,
F(/ —0)=0, F(/ + 0) = l, /2=Ы0-6 с,
F(/ —0) = 1, F(/ + 0)=0, / = 250000. Полу-
чим G(0)=0,25, S(0) = l-10~6, G(f) =
= 0,4501581581, S (/) =9,003163162-10“ и
Ф (/)==— 45° (эти значения совпадают с точ-
ными). В этой программе нумерация от-
счетов i идет с 1, у (/) shF (Г), М ({)=== G (F),
S(f)^S(F) Иф(/)^Ф(Г).
Параллельный спектральный анализ ку-
сочно-линейной функции с разрывами осно-
ван на применении описанной выше мето-
дики при одновременном вычислении рядов
a*, bk.
Программа 5.9.
л U) =л/А2с (/) +4 (/) , а ФЧХ ф (f) =
= —arctg (f)/Ac (/)]. Здесь a' (i) —
производная ПХ а (/), а (0) значение
а (/) при / = 0.
Численный метод расчета АЧХ и ФЧХ
по ПХ базируется на кусочно-линейной
аппроксимации а (/) в интервале между ее
отсчетами уь Тогда
/А (0 ~ а‘~ «-I
° (t)~ А/ ~ Д/ ’
При этом а' (/) представляется ступенчатой
линией, смещенной на 4-А//2, что создает
значительные погрешности в вычислении ФЧХ.
Сместив эту линию на — А//2, можно зна-
чительно уменьшить эти погрешности. Далее,
10 PRINT'ПАРАЛЛЕЛЬНЫЙ СПЕКТРАЛЬНЫЙ АНАЛИЗ И ТРИГОНОМЕТРИЧЕСКАЯ'
2© PRINT'ИНТЕРПОЛЯЦИЯ КУСОЧНО-ЛИНЕЙНОЙ ФУНКЦИИ С РАЗРЫВАМИ ПРИ'
30 PRINT' ПРОИЗВОЛЬНОМ РАСПОЛОЖЕНИИ ОТСЧЕТОВ'
40 PRINT"
50
60
INPUT'ЗАДАЙТЕ КРАТНОСТЬ ЧАСТОТ M='MsDIM А(М)/В(М)
INPUT'ЗАДАЙТЕ ЧАСТОТУ F='F
70 FOR К=0 ТО M8LETA(K)=0sLETB<K)=0:NEXT К
80 LETX«2»#PI*F8INPUT'ЗАДАЙТЕ ДЛИТЕЛЬНОСТЬ ВСЕГО ИНТЕРВАЛА
90 LETZ=X*T/2sINPUT'ЗАДАЙТЕ ЧИСЛО ОТСЧЕТОВ №='N
100 INPUT'ВВЕДИТЕ МОМЕНТ ВРЕМЕНИ Т 0='Т0
110 INPUT'ВВЕДИТЕ ЗНАЧЕНИЕ ФУНКЦИИ F(T 0+0)='Y0
120 FOR 1=1 ТО N-lsPRINT'ВВЕДИТЕ МОМЕНТ ВРЕМЕНИ Т'‘3.011
130 INPUT Т18 INPUT'ВВЕДИТЕ ЗНАЧЕНИЯ F(T-0)/F(T+0) 'YbY2
140 LETY=Yl-Y0sFOR К=1 ТО MsLETX0sX*K*T08LETXl=X*K*Tl
150 LETX2«Yz(X1-Х0)s LETD=Z*K s LETS0=SIN < X0)
160 LETS1=SIN <XI):LETC0=COS< X0)s LETC1«COS(Xi)
170 LETA(K)»A<K>+<Y1*S1-Y0«S0+X2*<C1-C0))/D
T='T
180 LETB(K)=B<K^+<V0*C0-Y1*C1+X2«S1-S0))/D8NEXT К
190 LETA(0>=A<0)+<Tl-T0)*<Y0+Yl)/2/T8LETY0=Y2
200 LETT0=T1sNEXT lsLETE=0
210 PRINT' К МОДУЛЬ M(K) СПЕКТР.ПЛОТН.З(К) ФАЗА 0<ГРАД)'
220 PRINT 13.010;' '!F1.5‘A<0>" 'A(0)*T
230 LETE=08FOR К=1 ТО MsLETG=SQR(A<K)*A(K)+B(K)*B(K)>
235 IF К=1 THEN LETG1=G
240 LETE=E+6*68LET6«08IF G=0 THEN 260
250 LETQ=-ACS(A<K)/G)8IF BCKX0 THEN LETQ=-Q
260 PRIHT13.0‘K;' '!F1.5‘G>' 'G*T/2>' 'DEG(Q)8NEXT К
265 PRINT'КОЭФФИЦИЕНТ ГАРМОНИК Kr='SQR(E-Gl*Gl)/Gl
270 PRINTS INPUT'ВВЕДИТЕ ВРЕМЯ TX='U8LETY=A(0)sLETP=X*U
280 FOR K=1 TO M8LETF«U*K8LETY«Y+A<K)*COS<W)+B<K)*SIN<W)8NEXT К
290 PRINT'ЗНАЧЕНИЕ Y(TX)='YsGOTO 270SEND
Эту программу можно проверить по при-
меру, приведенному к программам 5.1 и 5.2.
Программа 5.9 обеспечивает одновременно
и тригонометрическую интерполяцию, т. е.
вычисление у (/) для любого заданного t
с помощью гармонического синтеза.
Расчет амплитудно-частотной (АЧХ) и
фазо-частотной (ФЧХ) характеристик линей-
ной системы по ее переходной характери-
стике (ПХ) а (/) является одним из важных
практических приложений спектрального ана-
лиза. Он основан на следующей связи этих
характеристик:
4 (/(d) —а (0) Н~4С (ю) ~ЬМ$ ((d),
/о
где Ас ((d) =j a' (t) cos <о/ dt, 4$ ((d) =
/о О
=] а' (/> sin (о/ dt, причем АЧХ (/ = ю/2л)
о
применяя для вычисления Ас ((d) и As ((d)
метод численного интегрирования с попра-
вочными коэффициентами (см. § 5.1), полу-
чим [9, 10]:
Ac(f) =
N
sin (л/ А/) V /
= 1 -д/ /. (Ф-Ф-|) cos (л/ Д/ (2< —1)),
<=|
(/) =
sin (л/ А/) V г ч Р д
=------ > (az-az-Osm (л/ А/ (2Z— 1)).
л/ А/
По вводимым отсчетам ПХ af = a (6) нахо-
дим Ас (со), 4s ((d) для. заданных f и А/,
после чего находим точки АЧХ 4 (/) и ФЧХ
132
Программа 5.10.
05 PRIНТ'ВЫЧИСЛЕНИЕ АЧХ И ФЧХ ПО ПХ'
10 INPUT 'ЧИСЛО ОТСЧЕТОВ ПХ М='М
20 INPUT 'A='Xs LETM=M-1: DIM ACM)
30 FOR 1=1 TO Ms INPUT 'A='Y
40 LETACI)=Y-Xs LETX=Y
50 NEXT I: INPUT 'ШАГ T='T
60 LETC=0s LETS=0
70 INPUT 'ЧАСТОТА F='F
75 LETP=(#PI)*F*T
80 FOR 1=1 TO M
90 LETC=A(I)*C0SCP*(2*I-l))+C
100 LETS=ACI)*SIN<P*C2*I-1))+S:NEXT I
110 LETC1=C*SIN(P)/P! LETS1=S*SIN<P)/P
120 РР1НТ'К0ЭФ. ПЕРЕДАЧИ ФАЗОВЫЙ УГОЛ'
130 PRINT !2.3! SQR(C1~2+S1~2),DEG<-ATN<S/C>)
140 GOTO 60s END
Пример. Для ai==0,05; a2 = 0,4; аз =
= 0,75; a4=l; a5=l,16; a6=l,2; a7—1,16;
de =1,08; «9=1,02; aio = 1,0 и Д/ —0,1
получим A (2) = 0,2367203833, ф(2) =
= -160,4352421°.
Метод Берга служит для расчета спектра
усеченных косинусоид, получаемых при воз-
действии х (/) =хм cos (со/) 4-Хо, действую-
щем на входе системы с передаточной ха-
рактеристикой у=f (х), аппроксимированной
двумя отрезками прямых:
у (х) =0 при Х^Хо,
y(x)—Sx при х> Хо,
где S — крутизна передаточной характери-
стики. При этом косинусоидальный импульс
характеризуется амплитудой ум и углом от-
сечки
0 = arccos [ (хо —Хо)/хм].
Метод Берга сводится к расчетам по
формулам
^ — У^/Ум — (sin 0 — 0 cos 0)/л (1 — cos 0),
Ъ\—Ум\/Ум — (6— sin 0 cos 0)/л (1 — cos 0),
У Nik 2 sin kQ cos 0 — k cos sin 0
a*=-----=---------------------------.
Ум л k (k2 — 1) (1—cos0)
Программа 5.11.
Пример. Для заданной амплитуды
хЛ1=4 = 10, сдвига Х0 = Л=0 и порога х0 =
= Х0 = 0 получим угол 0 = Q = 9O°, ao =
= 40 = 0,3183098862, a, = 41=0,5 и a2 =
= 42 = 0,2122065908:
§ 5.3. Статистический анализ
и подготовка гистрограмм
Одномерный массив из N некоторых циф-
ровых данных х, характеризуется совокуп-
ностью статистических характеристик (одно-
мерная статистика), перечисленных ниже.
Начальные моменты k-vo порядка
Обычно k~\, 2, 3 и 4 (точность вычисле-
ния ink при /г> 4 низкая).
Центральные моменты /г-го порядка
N
Мк =4г У к—«I (•*)]*•
/V L—J
i= 1
Момент Mi (х)=0.
I© PRINT'РАСЧЕТ КОЭФФИЦИЕНТОВ БЕРГА'
20 PRINT'ВВЕДИТЕ КОД N'
30 PRINT' 0/ ЕСЛИ УГОЛ ОТСЕЧКИ НЕ ЗАДАЕТСЯ'
40 INPUT' Ь ЕСЛИ УГОЛ ОТСЕЧКИ ЗАДАЕТСЯ N='N
50 IF Н=0 GOTO 80
68 IF N»1 GOTO 125
70 PRINT'КОД НАБРАН НЕВЕРНО'sGOTO 15
80 INPUT'ЗАДАЙТЕ АМПЛИТУДУ A«'A
90 INPUT'ЗАДАЙТЕ ПОСТОЯННЫЙ СДВИГ F='F
100 INPUT'ЗАДАЙТЕ ПОРОГ X0='X
110 LETQ=ACS<CX-F)/A)
120 PRINT 1Fl.9!'УГОЛ ОТСЕЧКИ В ГРАДУСАХ Q«'DEG<Q)sGOTO 130
125 INPUT'BBEAHTE УГОЛ ОТСЕЧКИ В ГРАДУСАХ Q='QsLETQ=RAD<Q)
130 LETV0=(SIN<Q)-Q*COS<Q>)/(#PI*<1-COS<Q)>)
140 PRINT'КОЭФФИЦИЕНТ A0='V0
150 LETV1=<Q~SIN<Q)*COS<Q>>/<#PI*<l-COS(Q)> >
160 PRINT'КОЭФФИЦИЕНТ A1='Y1
170 INPUT'ЗАДАЙТЕ НОМЕР ВЫСШЕЙ ГАРМОНИКИ К>2 К='К
180 LET¥=2*<SIN<K*Q)*C0S<Q)-K*C0S<K*Q>*SIN<Q))
190 LETY=Y/<#PI*K*< <К~2)-1>ж(1-C0SCQ)))
200 PRINT’2.01'КОЭФФИЦИЕНТ А'К'='•1.9‘YsGOTO 170SEND
133
Связь центральных моментов с началь-
ными устанавливается соотношениями (аргу-
мент х в скобках опускаем)
М2 —m2 —т?, Л4з = т3—3mim24-2mi,
М 4 = m4—4m 1 шз 6m ? m2 — 3m t,
которые позволяют вычислять Мь по мере
ввода xi (без запоминания массива Xi).
Среднее значение
есть наиболее вероятное значение числа в
массиве.
Дисперсия смещенная
N
D~ X
|»1
является наиболее вероятной степенью откло-
нения xi от среднего значения х.
Стандартное отклонение смещенное
определяет среднеквадратичную погрешность
xi, если за точное значение принять х.
Дисперсия несмещенная
N
i =s 1
применяется при статистической обработке
чисел Xi с нормальным распределением.
Стандартное отклонение несмещенное о о =
вытянут правый, а при А <0 — левый участок
спада кривой Р (х).
Коэффициент эксцесса
N
e~~ncfL\ (х‘~х)=°Ж-3
характеризует степень остроты пика кривой
Р (х) в сравнении с Р (х) для нормального
распределения. Если Е> 0, Р (х) имеет более
острый пик, чем при нормальном распреде-
лении, если Е<0— пик менее острый.
Вспомогательные коэффициенты
.. / 6(Л’— 1)
= -у(дг+1)(ЛГ+3) .
g4_g4--J-2l(*-2} <^-з>
V (Я+5)
служат для приближенной проверки гипо-
тезы о нормальном распределении хь Если
Д<а:1/(2~3) и Е<а4/(2~3),
то распределение Р (х) для массива х/ можно
считать нормальным.
При программировании вычислений одно-
мерной статистики желательно предусмотреть
следующие возможности: 1) накопление сумм
х*; 2) возможность исключения ошибочно
введенного числа xf; 3) подсчет W в ходе
ввода xt\ 4) выдачу статистических характе-
ристик в любой момент (до окончания ввода
всех х<). Все это обеспечивает приведенная
ниже программа.
Программа 5.12.
1© PRINT'СТАТИСТИЧЕСКАЯ ОБРАБОТКА МАССИВА ЧИСЕЛ XI'
20 PRINT'ИНСТРУКЦИЯ» ДЛЯ ИСКЛЮЧЕНИЯ ОШИБОЧНО ВВЕДЕННОГО'
30 PRINT'ЧИСЛА НАЖМИТЕ КЛАВИШУ СБР И ДАЙТЕ КОМАНДУ GOTO ВО'
40 PRINT'ДЛЯ ВЫВОДА РЕЗУЛЬТАТОВ НАЖМИТЕ КЛАВИШУ СБР И'
50 PRINT'ДАЙТЕ КОМАНДУ GOTO 1О0'
55 LETA=0s LETB=0s LETC=0s LETD=0sLET1=0
60 PRINT‘4.01'ВВЕДИТЕ X'I+ls INPUT XsLETI=I+l
70 LET A=A+Xs LETB=B+X*X s LETU=X*X*X s LETC=C+Ws LETD=D+W*XsGOTO 60
80 LET1=1-18LETA=A-Xs LETB=B-X*Xs LETW=X*X*Xs LETC=C-W
90 LETD=D-W*XS6OTO 60
100 LETM1=Az1s LETM2=Bz1s LETM3=CzIs LETM4=Dz1
110 LETD1=M2-M1«M18LETD2=IH*Iz<1-1)
120 LETK=M3-3*Ml*M2+2*Mr*Ml*Ml
130 LETU=M1*M1 s LETL«M4-4*M1*M3+6*W*M2-3:*W*W
140 LETA1=KzD1л1.5s LETE«LzD1zD1-3
150 LETU3=SQRC6*<1-1)z<1 + 1)z<I+3>>
160 LETU4«SQR(24*I*(I-2>*<I-3>z(I+3>z<I+5>/<1-1>~2)
170 PRINT‘Fl.9‘'СРЕДНЕЕ Ml=*Ml SPRINT'ДИСПЕРСИЯ D«'D1
180 PRINT'ДИСПЕРСИЯ D0«'D2sPRINT'АСИММЕТРИЯ A='A1
190 PRINT'ЭКСЦЕСС E='EsPRINT'ЦЕНТРАЛЬНЫЙ МОМЕНТ M3='K
200 PRINT'ЦЕНТРАЛЬНЫЙ МОМЕНТ M4='LsPRINT'ВВЕДЕНО ЧИСЕЛ N='!4.0‘I
210 PRINT‘.Fl .9*' КОЭФФИЦИЕНТ U3«'U3
220 PRINT'КОЭФФИЦИЕНТ U4='U4sG0T0 60SEND
Коэффициент асимметрии
N
a==~nd^'L
i=l
характеризует скошенность графической функ-
ции плотности распределения -вероятностей
Р (х). При Л = 0 она симметрична, при Л> 0
134
Пример. Допустим, надо найти стати-
стические параметры массива из 10 чисел х/:
9, 8, 10, 9, 11, 12, 10, 10, 9 и 11. Пустив про-
грамму командой RUN, вводим числа xt.
При этом индицируется номер I. Если какое-то
число введено ошибочно, достаточно нажать
клавишу СБР и дать команду GOTO 80
(фиксируется нажатием клавиши ПС). По
окончании ввода всех чисел (или их части)
нажимается клавиша СБР и дается коман-
да GOTO 100. Для указанных выше чисел
получаем: среднее т\ =9,9; дисперсия D =
= 1,29; дисперсия Do = 1,433333333; А =
= 1,965657837 • 10"1; £ = - 7,539210384 • 10"1;
Мз = 0,288; М4 = 3,7377; W=10 (число вве-
денных чисел); D3 = 0,6145098678 и D4 =
= 0,9224435941. Сразу после получения ре-
зультатов можно продолжить ввод после-
дующих Xi.
Среднее геометрическое для N чисел xt
определяется как
Gm=(*i-*2- ... -xN)i/N.
Гармоническое среднее
Hm~N/(x~* 4-яГ1 -Ь ... +^^')-
Программа 5.13.
шинстве случаев отрезки [dudz], [d2, d3]
и т. д. имеют одинаковую ширину
С = Дх=(хЛ1-х0)/^ (5.22)
где хм — максимальное значение xt, хо —
минимальное значение х„ N — число интер-
валов. Тогда алгоритм ускоренной подго-
товки данных для построения гистограмм
будет следующий.
1. Вводим хм, хо и W.
2. Определяем массив счетчиков A (N),
вычисляем С по формуле (5.22) и полагаем
/=1.
3. Организуем ввод х/, вычисление 7 /4-
4-1 (формирование текущего номера i
каждого хд и вычисление вспомогатель-
ной переменной
У=int (СХ (х —хо)).
10 PRINT'ВЫЧИСЛЕНИЕ ГЕОМЕТРИЧЕСКОГО СРЕДНЕГО GM'
20 PRINT' И ГАРМОНИЧЕСКОГО СРЕДНЕГО НМ'
30 PRINT'ИНСТРУКЦИЯ! ДЛЯ ВЫВОДА РЕЗУЛЬТАТОВ ЗАДАЙТЕ'
40 PRINT' ПОСЛЕ ВВОДА ПОСЛЕДНЕГО XI НУЛЬ'
50 LETI=0“.LETS«0! LETR=1
60 PRINT'BBEAHTE X'!4.0! HD INPUT Xs IF X=0 GOTO S3
70 LETR=R*XsLETS=S+l/XsLETI=I+l:GOTO 60
30 LETG=R”( 1/D:PRINT!Fl.9!'СРЕДНЕЕ ГЕОМЕТРИЧЕСКОЕ 6M='G
90 LETH=I/3SPRINT'СРЕДНЕЕ ГАРМОНИЧЕСКОЕ HM='H:END
Пример. Для вычисления GM и Нм
по этой программе после ввода последнего
числа xN нужно ввести 0. Например, для
пяти чисел 2; 3,5; 6,1; 1,2 и 3,9 получим
GM — 2,88492645 и Нм = 2,45171074.
Гистограмма распределения характери-
зует количество чисел X/, попадающих в ин-
тервалы изменения х с границами do, di, da,...
..., dN. Гистограмма распределения графи-
чески строится в виде столбцов, высота кото-
рых соответствует количеству xit попавших
в интервал изменения х, на который опи-
рается столбик (на горизонтальной оси х).
Гистограмма интегрального распределения
характеризует количество чисел, попадающих
в интервалы ( —oo.di), (—00, da), ...
..., (-oo.dyv).
Значение У указывает на номер того
отрезка, в который попадает заданное зна-
чение Xi.
4. Вычисляем А (У) А (У) 4- 1 (т. е.
вносим 1 в содержимое счетчика Л (У)) и
возвращаемся к п. 3.
5. Вывод данных для построения гисто-
грамм организуем с помощью цикла с управ-
ляющей переменной 7, меняющейся от зна-
чения 1 до W с шагом 1. Числа попадания х,
в 7-й отрезок получаем выводом значений
А (7). Для получения данных для построе-
ния гистограммы интегрального распределе-
ния вычисляем 5^-5 + Л(7) при началь-
ном S — 0.
Программа 5.14.
10
15
20
30
40
50
70
80
90
МАССИВА ЧИСЕЛ X
REM'ПОСТРОЕНИЕ ГИСТОГРАММ ----------
PRINT'ДЛЯ ВЫВОДА РЕЗУЛЬТАТОВ ПОСЛЕ ВВОДА XI НАЖАТЬ
PRINT'КЛАВИШУ СБР И ДАТЬ КОМАНДУ GOTO 100'
INPUT'BBEAHTE X0«'X0sINPUT'BBEAHTE XK«'X1
INPUT'BBEAHTE ЧИСЛО ИНТЕРВАЛОВ ГИСТОГРАММЫ N»'N
DIM A<N)SLETI«1SLETC=<X1-X0)/N
PRINT 14.0!'ВВЕДИТЕ X<'I')='8 INPUT X
LETI»I+18 LETV=INT<C*(X-X0))
LETA<Y>»A<Y)+1sGOTO 70
100 LETS«08FOR Js0 TO N-lsLETS=S+A<J)
110 PRINT!4.0»'ДЛЯ J»'J' NJ«'A<d)' SJ«'S
120 NEXT JsPRINT'ВВЕДЕНО'1-1'ЧИСЕЛ'sGOTO 708END
Алгоритмы подготовки гистограмм. Про-
стейший алгоритм подготовки гистограмм
заключается в сравнении xt с сеткой границ
di, d-2, ..., d/у с помощью операций услов-
ных переходов и подсчете числа попада-
ний Xi в каждый интервал. Однако про-
грамма при большом числе интервалов полу-
чается громоздкой, а главное, большим полу-
чается время обработки каждого х». В боль-
Пример. После ввода всех х„ для
вывода данных к построению гистограмм
следует нажать клавишу СБР пульта дис-
плея и дать команду GOTO 100. Для х0 = 5,
хЛ1=10, W = 5 и х, = 6,2; 7,1; 9,6; 8,3; 7,4;
8,1; 6,7; 5,5; 7,2; 7,6; 7,9; 9,7; 8,5; 6,8 и 8,4
получим следующие результаты, которые
могут в дальнейшем использоваться для гра-
фического представления гистограмм:
135
J=0 NJ = 1 SJ = 1
J = 1 NJ=3 SJ=4
J=2 NJ = 5 SJ=9
J=3 NJ =4 SJ = 13
J=4 NJ = 2 SJ=15
Статистические расчеты на специализи-
рованных ПЭВМ обычно выполняются мик-
ропрограммно. Так, вычисление статистиче-
ских параметров для %/ —55, 54, 51, 55, 53,
54 и 52 на ПЭВМ FX==702P проводится
в следующем порядке.
1. Нажав клавиши F\ и SAC (стати-
стика, общее стирание), обнуляем накапли-
вающие регистры.
2. Вводим Xi набором каждого числа и
нажатием клавиши STAT (статистика). Если
набранное (но не обработанное) число оши-
бочно, его исключают нажатием клавиш АС
(полный сброс числа) или С (сброс послед-
ней цифры). Если ошибочно введенное число
обработано (была нажата клавиша STAT),
оно исключается нажатием клавиш Fi и
DEL/STAT.
3. Результаты вычислений получаем на-
бором операторов, выполнение которых фик-
сируется нажатием клавиши ЕХЕ:
Далее, вводя соответствующие операторы
(см. выше), получим
MX EXE 137.7142857 (среднее х)
Fi SDX ЕХЕ 18,42898069 (о)
Fi SDXNEXE 18,2968716 (а0)
Описанные операторы могут использо-
ваться и в программах, что упрощает их
построение при более сложных статистиче-
ских расчетах, например, если надо вычис-
лять. также коэффициенты асимметрии и
эксцесса. Микропрограммная реализация зна-
чительной части статистических расчетов су-
щественно повышает скорость статистических
вычислений и уменьшает вероятность оши-
бок.
§ 5.4. Реализация метода
Монте - Карло
Метод Монте-Карло заключается в ис-
пользовании случайных чисел для моделиро-
вания различных объектов, ситуаций и физи-
ческих явлений, реализации игр (подобных
игре в карты) и др.
Оператор Результат Наименование результата
CNT 8 Количество чисел W
SX 427 Сумма чисел х<
SX2 22805 Сумма xi
MX 53.375 Среднее х
SDX 1.407885953 Стандартное отклонение ао
SDXN 1.316956719 Стандартное отклонение а
Возможна обработка групп чисел, напри-
мер:
Номер группы 1 2 3 4 5
Число ПО 130 150 170 190
Количество чисел в 10 31 24 2 3
группе
В этом случае вводятся число, затем знак
ГП и количество чисел в группе. Например,
для ввода и обработки первой группы
вводим команды,
ПО □ 10 | STAT |
С помощью команды F\ ASTAT/STAT можно
(после ввода всех групп) обеспечить выдачу
в автоматическом режиме следующих дан-
ных .(пример для приведенной совокупности
чисел):
CNT = 70
SX =9640
SY =0
SX2= 1351000
SY2 = 0
SXY =0
(общее количество чисел)
(сумма Xi)
(сумма у, — 0)
(сумма х?)
(сумма д/? = 0)
(сумма Xii/< = 0)
В этом режиме выдаются также пара-
метры массива у^ элементы которого не
вводились (поэтому значения SY, SY2 и
SXY нулевые).
Равномерно-распределенные случайные
числа обычно генерируются ЭВМ в отрез-
ке значений [0; 1], причем любое значение
К< в этом интервале равновероятно. Обычно
для этого используется отделение дробной
части от сложного арифметического выра-
жения, содержащего предшествующее число
Vi. Например, может использоваться соотно-
шение вида
+ 1 = FRAC (kVi),
где fe=8/±3 и t — нечетное целое число
(при / = 5 k = 37 или k = 43). Обычно перед
использованием датчика случайных чисел за-
дается начальное значение Ко на отрезке
[0; 4-1]. Задание разных Ко позволяет фор-
мировать различные последовательности слу-
чайных чисел. В действительности полу-
чаются «квазислучайные» числа, т. е. спустя
некоторое количество циклов последователь-
ности чисел повторяются. Количество не-
повторяющихся чисел находится в пределах
от нескольких тысяч до сотен тысяч.
Перевод равномерно-распределенных слу-
чайных чисел на отрезке [а, 6] произво-
дится с помощью формулы
Х,+ 1=а+(*-а) Vi+i.
Случайные числа с различными законами
распределения получают с помощью формул
преобразования (см. [10, 38]).
136
Случайные числа с нормальным распре-
делением могут быть получены с помощью
/?»•—\/2 1п (1/К-) cos (2лVi-1),
/?<' =^2 In (1/V,) sin (2nV,_i).
При этом получается сопряженная пара чи-
сел, имеющих среднее значение ^ = 0 и сред-
неквадратичное отклонение о==1. При других
значениях R и о производится пересчет по
формуле
ft 4-1 = R 4“ Ri + 1 ® •
Обобщенный алгоритм реализации мето-
да Монте-Карло (рис. 5.3) обеспечивает мо-
делирование работы объекта и вычисление
основных статистических характеристик его
функциональных параметров.
Наглядным примером применения метода
Монте-Карло является программа 5.13 для
обучения школьников младших классов таб-
лице умножения. Программа генерирует два
случайных числа, переводит их в отрезок
[ 1; 9] и предлагает учащемуся перемножить
эти числа. Результат сравнивается с пра-
вильным. Оценка выставляется по резуль-
татам анализа десяти операций перемно-
жения. Читателю предлагается самостоя-
тельно разобрать эту программу.
Программа 5.15.
Рис. 5.3. Обобщенный алгоритм применения ме-
тода Монте-Карло
Корреляционный момент двух последова-
тельностей
N
— (х, —mu).
i = 1
05 PRINT'ОБУЧЕНИЕ ТАБЛИЦЕ УМНОЖЕНИЯ'
10 LETX=.7654321sLETN=8
20 FOR 1=1 TO 10
30 LET A=RND(X)sLET B=RND(X)
40 LET A=INT<A*9+1)sLET B=INT<B*9+1)
50 PRINT 12.01'СКОЛЬКО БУДЕТ' A' В' =?' s INPUT" С
60 LET D=A*Bs IF C=D THEN 80
70 PRINT'НЕВЕРНО'А'ж'B'='Ds LET N=N+ls&OTO 85
80 PRINT'ПРАВИЛЬНО'
85 NEXT I
90 IF N=8 THEN 140
100 IF N<»1 THEN 150
110 IF N<=3 THEN 160
120 PRINT'ВЫ HE ЗНАЕТЕ ТАБЛИЦУ УМНОЖЕНИЯ'
130 PRINT'ПОУПРАЖНЯЙТЕСЬ ЕШЕ':бОТО 18
140 PRINT'ОТЛИЧНО.ВСЕ РЕШЕНО ВЕРНО'S60T0 10
150 PRINT'ХОРОШО.ОДНА ОШИБКА'sGOTO 10
160 PRINT'ПОСРЕДСТВЕННО.ДОПУШЕНЫ' N ' ОШИБКИ'гБОТО 10
170 END
Отметим основные области применения
метода Монте-Карло: решение нелинейных
уравнений, вычисление экстремумов (в том
числе глобальных у многоэкстремальных
функций многих переменных), вычисление
определенных интегралов большой кратно-
сти и др.
§ 5.5. Корреляционный анализ
Корреляция является признаком, указы-
вающим на взаимосвязь ряда численных
последовательностей. Парная корреляция ха-
рактеризует взаимосвязь двух последователь-
ностей Xi и Уь
Коэффициент парной корреляции
R =
(5.23)
характеризует степень отклонения связи
между xt и у, от линейной. Если |/?( близок
к 1, то эта связь линейна, т. е. y^axj-j-b,
137
причем знак R определяет знак коэффициен-
та а. Если /?> О, то а> 0, и напротив, при
/?<0 а<0.
Программа 5.16.
описывающей связь между некоторым чис-
лом N пар значений xi и <//, обеспечивая
при этом наименьшую среднеквадратичную
погрешность. Графически эту задачу можно
05 PRINT'ВЫЧИСЛЕНИЕ КОЭФФИЦИЕНТА ПАРНОЙ КОРРЕЛЯЦИИ'
10 INPUT'ВВЕДИТЕ Ы»'Н
20 LETA=0!LETB«08LETC=0sLETD=0sLETE=0
30 PRINT'ВВЕДИТЕ ПОПАРНО XCI>,Y<I>'
40 FOR I«1 TO N:PRINT!3.0!'I»'I
45 INPUT'X<I)='XsINPUT'Y<I)e'Y
5© LETA^A+XsLETB«B+Ys LETC«C+X~2
60 LETD»D+Y^2:LETE=E+X*YsNEXT I
70 LETR=<E“A*B/N)/SQR< <C-<A~2)/N>*(D-<B~2>/N)>
80 PRINT IF1.9!'КОЭФ.КОРРЕЛЯЦИИ R='R
Пример. Для W=5 и yi (xt), равных
2(0,95); 4,05(2,1); 5,8(3); 8,1 (4,1) и 9,2 (4,9),
получим jR = 0,9987280191.
Порядковая корреляция по Спирмену
оценивается коэффициентом порядковой кор-
реляции [18]
N
I
где Ak и Bk — место (ранг), которое зани-
мают Xk и yk при убывании Xk.
Программа 5.17.
представить следующим образом — в облаке
точек x.yi плоскости ху (рис. 5.4) требуется
провести прямую так, чтобы величина всех
отклонений отвечала условию
N
У (x/)l2=min,
/ = I
где у (xi) — зависимость (5.24). Для этого
10 PRINT'ВЫЧИСЛЕНИЕ КОЭФФИЦИЕНТА РАНГОВОЙ КОРРЕЛЯЦИИ'
20 INPUT'ВВЕДИТЕ N«'NsLETS*8
30 FOR I«1 ТО № PRINT 14.0!'ДЛЯ 1='I
40 INPUT'ВВЕДИТЕ Ал В 'АлВ
50 LETS=$+<A-B)~2sNEXT I
68 LETR«1-6*S/N/<N~2-1)
70 PRINT!F1.9!'КОЭФФИЦИЕНТ R KOP»'RsEND
Пример. Для A=7 и А (В), равных
5(6), 4(7), 3(3), 7(5), 2(1), 1(2), 6(4), по-
лучим Rn=0,6428571429.
Вычисление коэффициента корреляции
на специализированных ПЭВМ выполняется
микропрограммно. Так, на ПЭВМ FX-702P
для этого выполняются следующие опера-
ции.
1. Нажатием клавиш F\ и SAC обну-
ляются ячейки памяти статистических рас-
четов.
2. По схеме
DEL
%, □»/< | STAT |
вводятся пары чисел х, и у,. Ошибочно вве-
денная и обработанная пара исключается
нажатием клавиш Fi и DEL/STAT.
3. Вводом команды COR вычисляется R,
§ 5.6. Регрессионный анализ
(приближение функций
по методу
наименьших квадратов)
Линейный парный регрессионный анализ
заключается в определении параметров эм-
пирической линейной зависимости
у (х)=61х4-^о, (5.24)
нужно приравнять нулю частные производ-
ные
N
1== 1
dU
-5^-= Д [у/— (6о + *|Х/) АС,],
I = I
что дает для определения неизвестных коэф-
фициентов Ьо и Ь\ систему линейных
Рис. 5.4. К линейной регрессии
138
уравнений
лг
boN+bi х>= Z У'<
1=1 1=1
N NN
bo Z x<+*i Z *?= Z *№
/ == 1 / «= 1 1 = 1
Решение этой системы:
NN N
Z xi I y>—N Z x>y>
. _< = 1 <i (.|
N N
Программа 5.18.
05 PRINT*ЛИНЕЙНАЯ РЕГРЕССИЯ*
10 INPUT 'ВВЕДИТЕ N=*N
20 LETA=0:LETB=0!LETC=08LETB=0
30 PRINT!3.0!*ВВЕДИТЕ X(I),Y<I>*
40 FOR 1=1 TO № PRINT *1=*I
50 INPUT *X<I)=*X5INPUT *V<I)=*Y
60 LETA=A+Xs LETB=B+YsLETC=C+X~2
70 LETP=D+X*YsNEXT I
80 ЕЕТВ1=(йжВ-НжИ>/<Ал2~НжС)
90 LETB0=<B-B1*A)/N
100 PRIHT»F1.9!*Y=*B0*+*B1*«X*
110 IHPUT*ВВЕДИТЕ X=*X
120 PRIHT*YCX)=*B0+Bl*XsGOTO 110--END
Пример. Пусть имеется совокупность
из А'=5 пар #,(х,): 5,5(2); 6,3(4); 7,2(6);
8(8); 8,6(10). Введя эти данные, получим
до = 4,75 и di =0,395. Следовательно, зави-
симость у (х) имеет вид
у (%) ==4,754- 0,395х.
Программа предусматривает вычисление у
по заданному значению х.
При необходимости программа может
быть легко дополнена вычислением коэффи-
циента парной корреляции R (5.23) или
среднеквадратичной погрешности
что позволит количественно оценивать сте-
пень приближения точек х(#( к прямой (5.24).
Линейная регрессия с помощью специа-
лизированных ПЭВМ выполняется микро-
программно. Так, у ПЭВМ FX-702P пре-
дусмотрены операторы LRA и LRB для вы-
числения параметров А = 6о и B = di линей-
ной регрессии у(х)=А + Вх, а также
операторы EOY для вычисления у по задан-
ному х и ЕОХ для вычисления х по задан-
ному у. Одновременно при этом вычисляется
коэффициент корреляции R и другие стати-
стические параметры массивов х, и опи-
санные ранее (всего 17 параметров).
Последовательность вычислений рассмот-
рим на примере к программе 5.18 (см. ниже).
Как показывает данный пример, ПЭВМ
FX-702P, специализированные на научно-
технические и статистические расчеты, обеспе-
чивают микропрограммное (т. е. без ввода
внешних программ) вычисление важнейших
характеристик двумерных массивов xf#/, а так-
же проведение корреляционного и линейного
регрессионного анализа. Указанные выше
операторы могут использоваться и в составе
внешних программ, что резко упрощает по-
следние.
Нелинейная парная регрессия сводится к
получению заданной нелинейной зависимости
у (х) (нелинейной по независимой перемен-
ной х, но линейной по параметрам этой
зависимости!), приближающей совокупность
Обнуление регистров памяти Fi SAC
Ввод 1 пары X/, у. 2, 5.5 STAT
Ввод 2 пары X/, у< 4, 6.3 STAT
Ввод 3 пары х/, yi 6, 7.2 STAT
Ввод 4 пары х/, у. 8, 8 STAT
Ввод 5 пары х/, у/ 10, 8.6 STAT
Вычисление А Fi LRA EXE 4.75
Вычисление В Fi LRB EXE 0.395
Вычисление ох Fi SDX EXE 3.16227766
Вычисление аох Fi SDXN EXE 2.828427125
Вычисление <зу Fi SDY EXE 1.251798706
Вычисление <тоу Fi SDYN EXE 1.1196428
Вычисление R F, COR EXE 0.9978438785
Вычисление W Fi ASTATCNT = 5
Вычисление суммы х/ SX = 30
Вычисление суммы yi SY=35.6
Вычисление суммы xf SX2 = 220
Вычисление суммы у? SY2 = 259.74
Вычисление суммы xiyi SXY = 229.4
Вычисление х MX EXE 6
Вычисление у MY EXE 7.12
Вычисление у при х = 5 EOY 5 EXE 6.725
Вычисление х при #=6,725 EOX 6.725 EXE 5
139
чисел х, и у, с наименьшей среднеквадратич-
ной погрешностью.
Сведение нелинейной регрессии к линейной
выполняется с помощью линеаризирующих
преобразований в ходе ввода Xi, у, и при
выводе Ьо и bi (см. табл. 5.1). Такое све-
дение целесообразно, если ПЭВМ имеет
микропрограммное вычисление параметров
Ьо и Ь\ линейной регрессии или в распоря-
жении пользователя имеется только такая
программа.
Пример. Зависимость yi (xi), заданная
числами 21,4(6,9); 15,7(12,9); 12,1(19,8);
8,5(26,7) и 5,2(35,1) близка к экспонен-
циальной у—АеЬх. Для нахождения А и В
ввод Xi и yi проводим по схеме (для
ПЭВМ FX-702P)
Xi LN yi STAT
т. e. вместо yi вводим In yi. Тогда константу
A =0,2388010829 получим, введя команды
EXP LRA EXE, а константу £ = 2,771866148
получим, введя команды LRB EXE.
В общем случае для нелинейной регрес-
сии более удобно использовать специальные
программы, не требующие специальных пре-
образований при вводе х(, у{, а также при
выводе результатов вычислений.
Гиперболическая регрессия заключается
в нахождении параметров функции
У (х)=5о + ^|/х
из решения системы уравнений
JV N
baN+tb £ 1/х(=£ У‘<
1=1 < = 1
N N N
Е '/*+*! Е •/*?= Е у*/*-
i — I i — 1 z ~ 1
Программа 5.19.
©5 PRINT‘ГИПЕРБОЛИЧЕСКАЯ РЕГРЕССИЯ'
10 INPUT’BBEAHTE H='N
20 LETA=0sLETB=0sLETC=05LETD=0
30 PRINT‘ВВЕДИТЕ ПОПАРНО Х(1Ъ¥<I>'
40 FOR 1=1 ТО № PRINT!3.0!'1='I
50 INPUT'X(I)='Xs INPUT'?<! >='V
60 LETA=A+1/Xs LETB=B+1/<X~2)
70 LETC=C+Vs LETD=D+Y/X:NEXT I
80 LETE=N«B-A~2: LETF=C»B-D*A
90 LETK=N*D-A*Cs LETF=F/E: LETK=K/E
100 PRINT!F1.9!'Y(X)='F'+'K'/X'
110 IHPUT'BBEAHTE X='X
120 PRINT'Y<X)='F+K/‘Xs GOTO 110SEND
Пример. Для W=8 и у,(xi), за-
данных значениями 12,2(1); 6,8(2); 5,2(3);
4,6(4); 3,9(5); 3,7(6); 3,5(7) и 3,2(8), по-
лучим Ьо =1,935761896 и bi = 10,16017523.
При х=2 получим у = 7,015849511.
Степенная регрессия обеспечивает нахож-
дение параметров функции
у=Ьохь'
по формулам
Н N N
X In Xi £ In — W £ In xi In yi
_________
/N \2 N
(|n x<) —N Z (lnx-)2
Таблица 5.1
Преобразования, сводящие нелинейную регрессию й линейной
(ее параметры помечены штрихами)
№ Функция у (х) x' y' bo bi
1 bo -f- b 1 х X У bo b\
2 l/(bo + bix) X Чу b'o b\
3 bo -р bi/x \/x У b'o b'l
4 x/(b0^bix) X */У b'o b'o
5 bob* X 1g!/ \Ob'o 10Ы
6 60exp (b\/x) X in X exp b'o b'i
7 bo 106,x X igy IO*0 b'i
8 1/(bo+ b\e~x) e~* Чу, bo bi
9 box'x Ig* Igy IO6" bi
10 bn + bi Ig x 1g* У b'o bi
И In x In X У b'o bi
12 bo/(bi+x) X Чу \/b\ b'o/bi
13 box/ (bi +x) \/x Чу \/b\ bo/bi
14 bo exp (bi/x) l/x In X. . exp b'o bi
15 bo 10fe,/x 4* Igx 106b bi
16 bo -|- b \xn xn У b'o bi
140
Программа 5.20.
05
10
20
30
40
50
60
78
80
90
PRINT'СТЕПЕННАЯ РЕГРЕССИЯ'
INPUT'ВВЕДИТЕ N='N
LETA=08LETB=0s LETC=0sLETD=0
PRINT'BBEAHTE ПОПАРНО X<I)>Y<I)'
FOR 1=1 TO № PRINT’3.0!'1='I
INPUT'X<I)='XsINPUT'Y(I)='Y
LETA=A+LOG<X)s LETB=B+LOG<Y)
LETC=C+LOG < X > «LOG < Y)sLETD=D+LOG < X)"28NEXT I
LETE=<A«B-N*C)/<A~2-N«D>
LETF=EXP<<B-E*A)/N)
100 PRINT1F1.9!'Y(X)='F'*X~'E
110 INPUT'ВВЕДИТЕ X='X
120 PRINT'Y<X)='F’*X~E5 GOTO 110SEND
Пример. Для W = 6 и у, (x.j, заданных
числами 3(1), 12(2), 27(3), 48(4), 75(5) и
108(6), получим ^0 = 2,999999987 и Ь\ =
= 2,000000004. Для х = 2 получим у =
= 11,99999998.
Показательная регрессия обеспечивает
получение параметров а и b показательной
функции
У (х) =abx
из решения системы уравнений
N
Nlga + igb £ £ ]%У1-
4=1 4=1
NN
lg« I x, + lg* £ x?=£ (xjgi//).
4=1 4=1 4=|
Экспоненциальная регрессия обеспечивает
получение параметров функции
у — bo ехр (Ь\х)
по формулам
N N N
Г х, £ Inj/i — Л/ £ X, Ini/,
й,=——1=2------1=2-----
/ N \2 N
(Ё ~N х'
Программа 5.21.
05 PRINT'ПОКАЗАТЕЛЬНАЯ РЕГРЕССИЯ'
10 INPUT'ВВЕДИТЕ N='N
20 LETA=0sLETB=05LETC=0!LETD=0
30 PRINT'ВВЕДИТЕ ПОПАРНО X<I)/Y<I)'
40 FOR 1=1 ТО №PRINT!3.0!' 1=' I
50 INPUT 'X<I)='Xs INPUT'Y<l)='Y
60 LETA=A+Xs LETB=B+X~2:LETC?C+LGT(Y)
70 LETD=D+X«LGTCY)s HEXT I
80 LETE=H*B-A~2! LETF=C«B-D*A
90 LETK=H«D-A«Cs LETF=EXT<F/E) s LETK=EXT(K/E>
100 PRINT‘F1.9!'Y<X)='F'«'K'~X'
110 INPUT'ВВЕДИТЕ X='X
120 PRINT'Y(X>='F*K~XsGOTO 110’.END
Пример. Для W = 5 и ytДх<), равных К программе 5.22.
6(1), 7(2), 8,7(3), 1Q,4(4) и 12,4(5), полу- Пример. Для /V = 9 и у>(х(), заданных
чим а = 4,941990005 и b = 1,202950112. Для значениями 3,5(2), 5(3), 6,2(4), 9(5), 13(6),
х = 2, у = 7,151499236. 16(7), 23(8), 30(9) и 40(10), получим 60 =
Программа 5.22.
05 PRINT'ЭКСПОНЕНЦИАЛЬНАЯ РЕГРЕССИЯ'
10 INPUT'ВВЕДИТЕ N='N
20 LETA=0sLETB=0sLETC=08LETD=0
30 PRINT'ВВЕДИТЕ ПОПАРНО X<I),Y<I)'
40 FOR 1=1 ТО № PRINT*3.0!'1='I
50 INPUT 'X(I)='Xs INPUT'Y<1)='Y
60 LETA=A+XsLETB=B+LOG<Y):LETC=C+X~2
70 LETD=D+X«LOG<Y>s NEXT I
80 LETB1=<A*B44*D)/<A~2-N*C)
90 LETB0=EXP<(B-B1«A)/N>
100 PRINT * Fl.9!'Y<X)='B0'«ЕХРС'Bl'*X>'
110 INPUT'ВВЕДИТЕ X='X
120 PRINT'Y<X>='B0*EXP<B1«X>8GOTO 1108END
141
= 1,939481364 и Z>i =0,305283305. При х = 5
получим г/= 8,924828629.
Логарифмическая регрессия дает пара-
метры а и b функции
у=а + Ь 1g х
из решения системы уравнений
ЛГ N
aN+b X lg*/= Z
/«I
NN N
a Z Z (|gx<)2=Z (yilgxi)-
1=1 i KB 1 i SBC 1
из решения системы из трех уравнений
N N N
boN+b, Z ъ + Ьг Z *? = Z У<\
1=1 /=1 ( = 1
N N N N
bn £ X/ + &I £ rf + b? £ Х?= £ куй
1=1 I! ж I I = I 1 = 1
N N N N
ь« Z *2+*i Z *'3+*2 Z *-=Z ^<У‘-
i=1 i=l i = 1 i=|
Программа 5.23.
05 PRINT'ЛОГАРИФМИЧЕСКАЯ РЕГРЕССИЯ'
10 INPUT'ВВЕДИТЕ N='N
20 LETA=0sLETB=0:LETC=08LETD=0
30 PRINT'BBEAMTE ПОПАРНО X<I),Y<I>'
40 FOR 1=1 TO NS PRINT!3.0!'1='I
50 INPUT 'X<I)='X8 INPUT'V<I)='V
60 LETA=A+LGT < X)8LETB=B+LGT< X )~28 LETC=C+V
70 LETD=D+Y*LGT(X>s NEXT I
80 LETE=N*B-A~2: LETF=C«B-D«A
90 LETK=N*D-A*C8 LETF=F/Es LETK=K/E
100 PRINTiFl.9!’Y<X>='F’+<'K'>*LGT<X>'
110 INPUT'BBEAMTE X='X
120 PRINT'V<X>='F+K*LGT<X>8GOTO 110SEHD
Пример. Для N=6 и у, (x,), равных
1(1); 1,451(2); 1,716(3); 1,903(4); 2,048(5)
и 2,167(6) получим а = 0,999931767; Ь =
= 1,499793742 и для х=4 получим у=
= 1,902897575.
Параболическая регрессия обеспечивает
получение трех параметров йо, Ь\ и Ьг при-
ближения параболической функцией
У (0 =6о + 5|х4-6гх2
Пример (к программе 5.24). Для W=7
и yi(xt), заданных значениями 3,76(2);
4,44(4); 5,04(6); 5,56(8); 6(10); 6,36(12)
и 6,64(14), получим 6о=3, Ь\ =0,4 и Ьг =
= —0,01. Для х=7 получим 1/=5,31.
Полиномиальная регрессия (аппроксима-
ция) обеспечивает нахождение коэффициен-
тов полинома
у (х) =аоЧ-0|х4-02Х2+ ... 4-атх'я (5.25)
Программа 5.24.
05 PRINT'ПАРАБОЛИЧЕСКАЯ РЕГРЕССИЯ'
10 INPUT 'ВВЕДИТЕ N='Hs LETA=N
20 DATA 0> 0,0/0, 0,0,0
30 READ В, С, F, М, Р, R, S
40 PRINT 'ВВЕДИТЕ ПОПАРНО X<I),Y(I)'
50 FOR 1=1 ТО Hs PRINT !3.0! ' 1='I
60 IHPUT 'X<I>='Xs INPUT ’V<I>=’V
70 LETB=B+Xs LETC=C+X''28 LETF=F+X"3
80 LETM=M+X~4: LETP=P+Y: LETR=R+X*Y
90 LETS=S+V*X~28 HEXT I
100 LETD=B8LETE=C8LETK=CsLETL=F
110 'LETQ=D/A:LET E=E-Q*B8LETF=F-Q*C
120 LETR=R-QBPsLETQ=K/AsLETL=L-Q*B
130 LETM=M-Q*CsLETS=S-Q*P: LETQ=L/E
140 LETB2=<S-R*Q)/<M-F*Q)s LETBi=<R-F»B2)zE
150 LETB0=<P-B*Bl-C*B2>zA8 PRINTiFl.9!'B0='B0
160 PRINT 'B1='B18PRINT 'B2=’B2
170 INPUT 'ВВЕДИТЕ X='X
180 PRINT'Y<X)=’B0+Bl*X+B2*X''2sEND
142
из решения системы уравнений
Соао4~С1Л|••• + Cm&m==rfo,
С|ао4-С201 4“СэЛ2 4” ••• -b'Cm+lCIm — di,
£flt<2o4-£m4-lGl ••• 4" —
где
N
с,= £х/, /=0, 1, 2, ..., 2m, (5.26)
I»!
d»= £ x?y„ 6=0, 1, 2............ m. (5.27)
(=1
Полином (5.25) степени m<.N. где N —
число nap Xi и yi, обеспечивает аппроксима-
цию (и интерполяцию) таблично заданной
функции у, (х^ с минимальной среднеква-
дратичной погрешностью
£=-д/ Ё е/7(^+1)- (5-28)
|а= 1
Если m~N, то имеет место обычная интер-
поляция, т. е. значения у (х) (5.25) при
х~х, точно совпадают с заданными yi. При
т<М такого совпадения в общем случае
нет. Таким образом, аппроксимация I/, (х,)
по методу наименьших квадратов имеет более
универсальный характер, чем обычная интер-
поляция «4.2).
Если достаточно ограничиться вычисле-
нием лишь коэффициентов ао, fli, ..., ат
полинома (5.25) без вычисления значения Е,
то нет необходимости в хранении массивов
Xi и yt. При этом достаточно вычислить С/
(массив из 2т чисел) и d* (массив из т чи-
сел) с помощью (5.26) и (5.27) и решить
полученную систему линейных уравнений
методом Гаусса (см. § 4.Г). Таким образом,
составлена программа 5.25. Помимо вычис-
ления коэффициентов ао, fli, ..., ат она
обеспечивает нахождение у (х) по задан-
ному х с помощью полученного полинома
(5.25).
Программа 5.25.
Пример. Используем пример к програм-
ме 5.24 (задаем т —Л4«2 и n = ^=7).
Получим следующий результат: ао=Л(О)==
= 3, а1==Д(1)=0,4 и 6г=Д (2) == —0,01.
Задав далее х=7, получаем у (х)~У (X) =
==5,31.
Время счета контрольного примера (без
учета времени ввода х( и yi) около 7 с.
Полиномиальная регрессия (аппроксима-
ция) с автоматическим выбором степени
полинома выполняется по следующему алго-
ритму. Вначале задается степень т=1 (ли-
нейная регрессия). Отсчеты х(-, у, вводятся
и запоминаются. После нахождения всех а2
(вначале Оо и Ci) с помощью (5.28) вычис-
ляется среднеквадратичная погрешность Е
и сравнивается с заданной £1. Если £>£1,
степень полинома т увеличивается на 1,
и т. д. Счет прекращается, как только дости-
гается £<£i. В программе 5.26 наряду с
этим алгоритмом возможна реализация алго-
ритма вычисления коэффициентов ао, аь ...
..., ат полинома заданной степенью т
с вычислением получаемой при этом погреш-
ности £. Обеспечивается также вычисление
у (х) по заданному х. Для повышения точ-
ности система уравнений для вычисления
ао, И|, ..., ат решается методом Гаусса
с выбором главного элемента.
. Программа 5.25.
05 PRINT'АППРОКСИМАЦИЯ ПОЛИНОМОМ ПО МЕТОДУ НАИМЕНЬШИХ КВАДРАТОВ'
10 INPUT'ВВЕДИТЕ СТЕПЕНЬ ПОЛИНОМА M='HsLETN=H+l
20 DIM АСЮН>,ВСЮ,СС2*Ю,ХСЮ
30 INPUT'BBEAHTE ЧИСЛО ПАР X, Y Н='Н
40 FOR 1=1 ТО № PRINT?3.0*'ДЛЯ 1 = 'IsINPUT'ВВЕДИТЕ X,Y 'X,Y
45 LETF=lsFOR J=1 TO 2*N-lsIF J>H THEN 55
50 LETBC J)=BCJ)+YsLETY=Y**X
55 LETCCJ)=CCJ)+FsLETF=F*X:NEXT JsNEXT I
60 FOR 1=1 TO №LETK=lsFOR J=1 TO H
65 LETACI,J)=CCK>sLETK=K+lsHEXT JsNEXT I
70 FOP 1=1 TO N-is FOR J=I + 1 TO N
75 LETACJ,I)=~ACJ,I)/ACI,I)sFOR K«I + 1 TO N
80 LETACJ,K)=ACJ,K)+ACJ,I)*ACI,K)s NEXT К
98 LETBCJ>=BCJ)+ACJ, I>жВСI)s NEXT Js HEXT I
100 LETXCH)=BCN)/ACN,N>
110 FOR I=N-1 TO 1 STEP -is LETH=BCI)
120 FOR J=I+1 TO Ns LETH=H-XCJ>*ACI,J>sNEXT J
130 LETXCI>=HZACI,DsNEXT I
140 PRINT'КОЭФФИЦИЕНТЫ ПОЛИНОМА'
150 FOR 1=0 TO N-tsPRIHT»3.0»'AC'I')«'1F1.91XCI+1>:HEXT I
160 IHPUT'BBEAHTE X='ZsLETS»0sFOR I=N TO 2 STEP -1
170 LETS=CS+XCI))*ZsNEXT I
180 PRINT'ЗНАЧЕНИЕ YCX>='«Fl.91S+XC1>s0OTO 1608END
143
Программа 5.26.
IQ PRINT'АППРОКСИМАЦИЯ ПОЛИНОМОМ ПО МЕТОДУ НАИМЕНЬШИХ КВАДРАТОВ*
15 PRINT'С ВОЗМОЖНОСТЬЮ АВТОМАТИЧЕСКОГО ВЫБОРА СТЕПЕНИ ПОЛИНОМА'
23 INPUT'ЗАДАЙТЕ ЧИСЛО УЗЛОВ ИНТЕРПОЛЯЦИИ Ы«'Н
25 DIM Х<Н>/У<Н)/2(Н>/В<Н>/б<Н)лА<Н>Н)яС<Н>Н)я
30 FOR 1*1 ТО Hs PRINT?2.0!'ВВЕДИТЕ X'I'/Y'I
35 INPUT X<I).»Y<I): NEXT I: LET N*1
40 PRINT'УКАЖИТЕ 0-ЕСЛИ ЗАДАНА ПОГРЕШНОСТЬ ИНТЕРПОЛЯЦИИ'
50 INPUT' 1-СТЕПЕНЬ ПОЛИНОМА 'Us IF U*8 GOTO 80
60 INPUT'ВВЕДИТЕ СТЕПЕНЬ ПОЛИНОМА M<N M='Ns GOTO 85
80 INPUT'ЗАДАЙТЕ СРЕДНЕКВАДРАТИЧНУЮ ПОГРЕШНОСТЬ E1='E1
85 LET N«N+ls FOR J=8 TO 2*N-ls IF J>N GOTO 95
90 LET B<J>«8
95 LET D(J)»05 NEXT Js FOR 1*1 TO Hs LET R«Y<I)sLET F=1
105 FOR J«1 TO 2*N-ls IF J>N GOTO 115
118 LET B<J>«B<J)+Rs LET R*R*X<I)
115 LET D<J>=D(J>+FS LET F=F*X(I)s NEXT Js NEXT I
120 FOR 1=1 TO Ns LET K=I: FOR J*1 TO N
130 LET A<bJ)«D<K)s LET K=K+1: NEXT Js NEXT I
140 LET Nl=N-ls FOR K=1 TO Hl
150 IF АВ8<А<КлК)>>0 GOTO 230
160 LETK1=K+1sFOR M=K1 TO Ns IF ABS<A<M/K))*0 GOTO 218
190 FOR L=1 TO Ns LET U«A<K/L)s LET A<K,L>*A<M,L>
200 LET A<M/L)=Us NEXT L
210 NEXT M
220 LET U®B<K>s LET 6(K)«6CM)s LET B<M)«U
230 LET G<K)«B<K)/A<K/K>s LET K1*K+1
248 FOR I=K1 TO Ns LET B(I>»B<I>-A<I>K)*G<K>
250 FOR J1*K TO Ns LET J*N-Jl+Ks LET C<K,J>=A(K/J>/A<K,K)
260 LET A<I,J>*A<bJ)-A<1/K)*C(K,J)sNEXT JlsNEXT I: NEXT К
280 LET M=N: LET Z<M>=B<M)/A<M,M)
290 LET M*M-1S LET 8*0: FOR L=M TO Hl
300 LET S»S+C<M/L+1>*2<L+1): HEXT L
310 LET Z<M)*G<M)-Ss IF M>1 GOTO 290
320 LET E«0s FOR 1*1 TO № LET S*Y(I)s LET R=1
330 FOR J*1 TO Hs LET S=S-R*Z(J): LET R=R»X<l>s NEXT J
348 LET E«E+S*8sNEXT I:LET E*SQR(E/H)s IF U«1 GOTO 378
350 IF E=<E1 GOTO 370
360 IF N<H GOTO 85
370 PRINT'СТЕПЕНЬ ПОЛИНОМА M*'N-1
380 PRINT!F1.9!'ПОГРЕШНОСТЬ ИНТЕРПОЛЯЦИИ E*'EsIF U«1 GOTO 398
385 PRINT'ЕСЛИ E БОЛЬШЕ ЗАДАННОЙ/УВЕЛИЧЬТЕ N И ПОВТОРИТЕ ВВОД'
390 PRINT 'КОЭФФИЦИЕНТЫ ПОЛИНОМА'
400 FOR 1=1 ТО NxPRINT!2.0!'А('1-1'>*'!F1.9Z<I>sNEXT I
410 INPUT'BBEAHTE Х='X:LETQ*0sFOR I*N TO 2 STEP -1
428 LETQ«(Q+Z<I)>*X:HEXT IsLETQ«Q+Z<1>
430 PRINT'ЗНАЧЕНИЕ Y(X>«'QsGOTO 410sEND
Пример. Используем пример, приведен-
ный к программе 5.24. Так, если задать
£— 1 • 10~6, программа (после примерно 1 мин
счета) выдаст: А4 = 2, £ = 0, Л (0) = 3,
Л (1)—0,4, Л (2) ——0,01 и У (X) =5,31 при
% = 7. Время счета существенно больше,
чем по программе 5.25, в связи с вычисле-
нием Е и автоматическим выбором степени
полинома /п.
§ 5.7. Сглаживание данные экс-
перимента
Сглаживание данных эксперимента яв-
ляется специальной операцией усреднения
с помощью интерполяционных полиномов,
обеспечивающей получение уточненного зна-
чения у, по заданному значению yt и ряду
близлежащих значений ь у,, ytr\,...),
известных со случайной погрешностью.
144
Л инейное сглаживание по трем точкам
реализуется с помощью следующих формул:
уо-- (5//o-|-2yi —£/г) /6,
^, = (yt~ j yi+i)/3, 1
yN~ (byN-\-2yN— I — yN—2)/&,
где N — номер последней точки (ордина-
ты уд.
Программа 5.27.
Пример сглаживания дан в табл. 5.2.
Линейное сглаживание по 5 точкам про-
водится с использованием формул
Уп — (Зуп -F2//1 Н-Г/2 — £/4 ) /5,
У\ — (4t/o-f-3i/i 4"2//2-}-//з)/10,
У‘ ~ (у> - 2 4~у, -1 4~ у, -J-yt +1 -j- yt + 2) /5,
2</XA/~2,
Уы-1 — (Ум-ъ + ^Ук—ъ + Зун_ i 4-4t//v)/10,
Ум — (Зум~\-2ум — I ~\~Ум~ 2 — Уы — 4) /5.
Программа 5.27.
I© PRINT!F1.9!'ЛИНЕЙНОЕ СГЛАЖИВАНИЕ ПО 3 ТОЧКАМ'
20 INPUT'ВВЕДИТЕ НОМЕР ПОСЛЕДНЕЙ ТОЧКИ N='N
30 PRINT'ВВЕДИТЕ ? 0's INPUT А
48 PRINT'ВВЕДИТЕ V 1':INPUT В
58 PRINT'ВВЕДИТЕ ? 2'sINPUT C
68 PRINT'S? 0='<5*A+2*B-C)/6
78 PRINT'S? l='<A+B+C>/3
SO FOR 1=2 TO N-lsLETA=BsLETB=C
98 PRINT‘3.0!'ВВЕДИТЕ ?'1+1'='SINPUT C
100 PRINT'S?'I' = '! 1.9! (A+B+O/3:NEXT I
118 PRINT!3.8!'S?'N'=' !F1.9!(-A+2*B+5*C)/6
120 END
Результаты линейного сглаживания по 3 и 5 точкам (JV = 9)
Таблица 5.2
i y> yi для сглажи- вания по 3 точкам yi для сглажи- вания по 5 точкам точное значение у — 10х i yi yi для сглажи- вания по 3 точкам yi для сглажи- вания по 5 точкам точное значение {/ = Юх
0 0,9 0,97 0,992 1 5 6,1 5,973333333 6,044 6
1 2,12 1,98 1,995 2 6 6,92 7,056666666 7,024 7
2 2,92 3,063333333 2,998 3 7 8,15 8,04 8,004 8
3 4,15 3,99 4,038 4 8 9,05 9 8,957 9
4 4,9 5,05 4,998 5 9 9,8 9,825 9,91 10
Программа 5.28.
10 PRINT'ЛИНЕЙНОЕ СГЛАЖИВАНИЕ ПО 5 ТОЧКАМ'
20 INPUT'ВВЕДИТЕ НОМЕР ПОСЛЕДНЕЙ ТОЧКИ N='N
30 PRINT!Fl.9‘'ВВЕДИТЕ ? 0='sINPUT A
48 PR I NT'ВВЕДИТЕ S' 1='sINPUT В
58 PRINT'ВВЕДИТЕ ? 2='sINPUT C
60 PRINT'ВВЕДИТЕ ? 3='sINPUT D
70 PRINT'ВВЕДИТЕ ? 4='sINPUT E
80 PRINT'S? 0='<3*A+2*B+C-E)/5
90 PRINT'S? 1='<4*A+3*B+2*C+D)zl0
100 PRINT'S? 2='(A+B+C+D+E)/5
110 FOR 1=3 TO N-2
120 LETA=BSLETB=CSLETC=I’SLETD=E
130 PRINT!3.8«'ВВЕДИТЕ ?'1+2'='sINPUT E
140 PRINT'S?'1'='!F1.9!<A+B+C+D+E)/5
150 NEXT I
160 PRINT13.0!'S?'N-1'='!F1.9!<B+2*C+3*D+4*E)/10
170 PRINT!3.0!'S?'H'='!F1.9!<3*E+2*D+C-A)/5
180 END
Контрольный пример см. в табл. 5.2.
Нелинейное сглаживание по семи точкам
обеспечивает усреднение на основе примене-
I ния полинома третьей степени и реализуется
применением формул
г/о = (39уо4-&/|—4 (уъ + уъ — у*) +{/5—2//6)/42,
у\ — (8i/o-|- 19z/i 4-16z/2 4-61/3 — 4^/4 — 7z/5~h
+ 4f/7)/42,
уч = (— 4t/o 4- 16z/i 4- 19f/2 4- 12i/3 4- 2i/4 — 4t/s 4~
+ Уб)/42,
f//= (7^4-6 (^-bi4-^.-i) 4-3 G//+24-4A-2) —
— 2 (£// + з4-^-з))/21,
yN-2— (УЫ-& — ^УЫ-5~^^У1>/-4 + 10 * 12^-з +
4- 19^-2+ 16уц_1 — 4yN)/42,
Уы- 1 = (4z//v_6 — 7ум-ь — 4yN_i 4-6r/AZ_34-
4- 1 Sijn _ 2 4- 191/y - i 4- 8i//v) /42,
Уы~ ( — 2z/y_6 4-4t//v„5 4-^-4"“4£/yv__3-~
~ tyu - 2 4- 8i//v -1 4- 39i//v) /42.
145
Программа 5.29.
10 PRINT'НЕЛИНЕЙНОЕ ОПЛАЧИВАНИЕ ПО 7 ТОЧКАМ'
20 INPUT*ЗАДАЙТЕ НОМЕР ПОСЛЕДНЕГО ОТСЧЕТА N='N
30 INPUT'ВВЕДИТЕ ОТСЧЕТУ ?0>V1... ,?6'A,B>C>D,E,F>6
40 PRINT'S? 0=' (38жА+8жВ-"4жС-4«11+Е+4жЕ~2ж6)/42
50 PRINT'S? 1='<8жА+19*В+16*С+6*С-4жЕ-7*Р+4*6)/42
60 PRINT'S? 2=' <-4жА+1бжВ+19жС+12жЦ+2*Е~4жЕ+6>/42
70 PRINT'S? 3='<--2жА+ЗжВ+6жС+7жР+бжЕ+ЗжЕ-2ж&>/21
80 FOR 1=4 TO N”35LETA=BsLETB=C5LETC=DsLETD=E
98 LETE=FsLETF=G:PRINT’S.©I'ВВЕДИТЕ ?'1+3'=':INPUT 6
100 LETS=~2*A+3*B+6*C+7*Ii+6*E
110 PRINT»3.0»'S?'I'='»1.9!(S+3*F~2»6)/21!NEXT I
128 LETS=A~4*B+2*C+12жЦ+19*E+16*F-4*G
130 PRINT!3.0!'S?'H“2'='1F1.9! S/42
148 LETS=4*A-7*B-4*C+6*D+16*E+19*F+8*G
150 PRINT’S.©’'S?'N-1'='!F1.9! S/42
160 LETS=-2*A+4«B+C-4*D-4»E+8*F+39*G
170 PRINT’3.0!'S?'N'='!F1.9! S/42sEND
Контрольный пример см. в табл. 5.3, грубо заданной нелинейной функции
где представлены данные сглаживания z//=ln (f+2).
Результаты нелинейного сглаживания по семи точкам (А^=1)
Таблица 5.3
i У1 yi Точное значение In- 0*4-2) / yi yi Точное значение jh=ln (i+2)
0 0,7 0,70114285714 0,6931471806 5 1,99 1,950952381 1,945910149
1 1,08 1,08714286 1,098612289 6 2,04 2,073333333 2,079441542
2 1,39 1,385 1,386294361 7 2,22 2,191428571 2,197224577
3 1,64 1,624285714 1,609437912 8 2,28 2,302857143 2,302585093
4 1,76 1,79952381 1,791759469 9 2,42 2,412619048 2,397895273
ГЛАВА 6
ВЫЧИСЛЕНИЕ СПЕЦИАЛЬНЫХ ФУНКЦИЙ
$ 6.1. Методы вычисления
специальных функций
Специальными функциями обычно назы-
ваются функции, которые в общем случае
нельзя выразить через элементарные функ-
ции. Большинство из них являются реше-
ниями дифференциальных уравнений специ-
ального вида и могут быть представлены
в виде интегралов. Однако эти интегралы
нередко являются несобственными и имеют
особенности подынтегральной функции на
пределах или в промежутке между ними.
В этой главе перечислены основные методы
вычисления специальных функций.
Решение порождающих дифференциаль-
ных уравнений позволяет иайти ряд значе-
ний специальных функций при заданных
начальных условиях. Для этого могут исполь-
зоваться программы, описанные в § 4.10. При
описании специальных функций далее при-
водятся порождающие их дифференциальные
уравнения. Однако этот метод (особенно
при вычислениях с заданной точностью)
сопряжен с применением сложных ^программ.
Если требуется вычисление значений спе-
циальных функций при произвольных или
часто сменяемых значениях аргумента, этот
метод может привести к недопустимо боль-
шим затратам машинного времени.
Вычисление специальных функций числен-
ным интегрированием является универсаль-
ным и достаточно эффективным методом.
Для его реализации могут использоваться
программы численного интегрирования, опи-
санные в § 4.9^ 4.10. Следует учитывать, что
в них аргумент подынтегральной функции
обозначен через X, тогда как у специальных
функций возможно иное обозначение, на-
пример t. Следовательно, в этом случае
/=Х. Подынтегральные выражения должны
вычисляться по соответствующим подпрограм-
мам (ввиду простоты тексты подпрограмм
не приводятся). В целом программы вычис-
лений специальных функций численным инте-
грированием достаточно громоздки и вычис-
ления требуют значительных затрат машин-
ного времени (в сравнении с изложенными
ниже методами).
Вычисление специальных функций по
рекуррентным соотношениям является сред-
ством сравнительно быстрого получения
численных значений нужных специальных
функций. Примером может служить вычисле-
ние значений ортогональных многочленов
в § 3.4. Однако этот метод применим при
следующих условиях: имеются исходные
значения функций или простые формулы для
их вычисления, рекуррентный процесс яв-
ляется устойчивым (т. е. не ведет к накоп-
лению ошибок), число циклов вычислений
ограничено разумными пределами.
Вычисление специальных функций по их
разложениям в ряд является в большинстве
случаев наиболее удобным при машинных
расчетах. Многие специальные функции
имеют представления в виде сходящихся ря-
дов. Вычисления должны вестись с контро-
лем суммы членов ряда либо значений
последнего члена (если есть гарантия, что
они по модулю мойотонно убывают) до тех
пор, пока результат не будет получен с за-
данной погрешностью.
Вычисление специальных функций по их
аппроксимациям является, как правило, мето-
дом, обеспечивающим получение результата
за минимальное время. В большинстве слу-
чаев аппроксимация получается путем раз-
ложения функции в ряд (например, Тейло-
ра) с удержанием конечного числа членов,
достаточного для вычисления значений функ-
ции с заданной точностью. Сокращение
времени вычислений обусловлено предвари-
тельным вычислением входящих в члены
ряда выражений, например факториалов,
значений тригонометрических функций и т. д.
Однако достаточно простые аппроксимации
получаются, как правило, при погрешности
вычислений, заметно превосходящей предель-
ную для ПЭВМ. Кроме того, вид аппрокси-
мации обычно не имеет ничего общего
с видом функции и для описания аппрокси-
мации приходится использовать большое
число численных констант с большим числом
цифр. Поэтому вычисления по аппроксима-
циям следует рассматривать как дополнение
к другим методам вычислений.
§ 6.2. Интегральные
показательные функции
Интегральная показательная функция
Еп (х) = EN (X) = ? dt
147
вычисляется с помощью рекуррентного соот-
ношения
Еп+1 (х) = -- [е~х — хЕп (х) ], л = 1, 2, 3,...,
при £о (х) — ехр (— х)/х и с помощью функ-
ции Е\ (х), вычисляемой разложением в ряд:
Е\ (х) = — у —In х— £ ( — \)lxl/i-i\,
i==i
где у = 0,57721156647 — постоянная Эйлера.
Программа 6.1.
05 PRINT'ВЫЧИСЛЕНИЕ ФУНКЦИИ ЕН<Х)'
10 INPUT 'ВВЕДИТЕ Н='Н
20 INPUT 'ВВЕДИТЕ N=='N
30 INPUT 'ВВЕДИТЕ Х='Х
40 LETK=EXP<-X):LETE=K/X
50 IF N>0 THEN 70
60 PRINT 'E8<X)='E:G0T0 30
70 LETP=1:LETR=1:LETS=0SLETI=0
80 LETI=I+1sLETP=<-X)*P:LETR=I*R
85 LETC=P/<I*R)s LETS=S+C
90 IF ABS<C>>H THEN 80
100 LETE=-S-.5772156647-L0G<X)
110 FOR 1=1 TO N-lsLETY=<K-E*X)/I
120 LETE=Ys NEXT I
130 PRINT 'EN<X)='EsGOTO 30SEND
Пример. Для x = 0,5 имеем £0 (0,5) =
= 1,213061319, E\ (0,5) =0,5597736065,
E2 (0,5) =0,3266438565, £10 (0,5) =
= 0,0634583004.
Интегральная показательная функция
оо
Ei (х) =EI (X) = - up ( dt, x> 0,
вычисляется разложением в ряд
сю
Ei (х)=у + 1пх+^ -i—-.
< —I
Программа 6.2.
85 PRINT'ВЫЧИСЛЕНИЕ ФУНКЦИИ ЕКХ)'
10 INPUT 'ВВЕДИТЕ Н='Н
20 INPUT 'ВВЕДИТЕ Х='Х
30 LETP=1•LETR=1:LETS=0sLETN=8
40 LETN=N+1:LETP=P*XsLETR=R*N
50 LETC=Pz < N*R)sLETS=S+C
60 IF OH THEN 40
70 LETY=S+.5772156649+L0G<X)
80 PRINT 'EI<X)«'Y
90 GOTO 20s END
Пример. Для x = 0,5 получим Ei (0,5) =
= 0,4542199049.
Функция
оо
an (x) = AN (X) = $ tne"xi dt, n =0, 1, 2,...,
1
вычисляется по рекуррентной формуле
art (x) = [e~x + nan~i (x) j /x
при ao (x) =e“x/x.
148
Программа 6.3.
05
10
28
30
40
45
58
PRINT'ВЫЧИСЛЕНИЕ ФУНКЦИИ AN<X)
INPUT'ВВЕДИТЕ N='N
INPUT'ВВЕДИТЕ X='X
LETK»EXP < -X > sLET A=K/X
IF N>0 THEN 50
PRINT'AN<X) = 'As GOTO 20
FOR 1=1 TO NsLETA«<K+I*A>/X
60 HEXT I SPRINT 'AH<X)»'A
70 GOTO 20sEND
Пример.' Для x = 2 получим a0 (2) =
= 0,0676676416 и a6 (2) =5,99497344.
Функция
1
P„ (x)=BN (X) = j t"e-x,dt, «=0,1,2,...,
-I
вычисляется по рекуррентной формуле
₽n « = [(-1)йех-ехЧ-пр«-! (x) J/х
при Po (x) = (ex —e~x)/x.
Программа 6.4.
05 PRIНТ'ВЫЧИСЛЕНИЕ ФУНКЦИИ BN<X)'
10 INPUT 'ВВЕДИТЕ N='N
20 INPUT 'ВВЕДИТЕ X='X
30 LET K=EXP<X)sLFTB«<K-l/K>/X
40 IF N>0 THEN 50
45 PRINT 'BN<X)»'B8GOTO 28
50 LETR=18FOR 1=1 TO NsLETR=-R
60 LETB=<R*K-<1/K>+B*I)/X
70 NEXT is PRINT'BN<X)='B
80 GOTO 20s END
Пример. Для x = 4 получим p0 (4) =
= 13,6449586, pi (4) = - 10,24287677, p3 (4) =
= -7,261476257.
§ 6.3. Интегральные синус
и косинус
Интегральный синус
Si (x)=SI
вычисляется разложением в ряд
о°
«= X (-1)"^”+7(2«+1) (2« +1)1
п = 0
Ряд прерывается, если абсолютная величина
последнего члена становится меньше е =
= 1-10~9.
Программа 6.5.
05 PRINT'ВЫЧИСЛЕНИЕ ФУНКЦИИ 81<Х)'
10 INPUT 'ВВЕДИТЕ Х='Х
20 LETB=XsLETC=X
30 LETD=-CX'%2)/2sLETI=0
40 LETI=I+1sLETE=<2*I+1)~2
50 LETB=<<2*1-1)*D*B)z<I*E>
60 LETC=C+Bs IF ABSCBX IE-9 THEN 80
70 GOTO 40
80 PRINT 'SI<N)«'CsGOTO 10sEND
Пример. Для х=0,1 получим Si (0,1) =
= 0,0999444611, а для x = 10 получим Si (10)=
= 1,658347594.
Интегральный косинус
Spnc /- 1
—-------dt .
затем формулы Стирлинга
(6Л)
вычисляется разложением в ряд
ОО -
Е( ] ) ” х2л
2п-(2л)! '
л = 0
Программа 6.6.
65 PR I NT ' ВЫЧИСЛЕНИЕ ФУНКЦИИ СИХ)'
10 INPUT ‘ВВЕДИТЕ Х='Х
20 LETS=X~2:LETI=0:LETA=0
30 LETB=1:LETC=1
48 LETI-I+1:LETD=2*I
50 LETC=(D-1 )*D*<-C) : LETB=B*S
60 LETE=B/(C*D)sLETA=A+E
70 IF ABSCEH1E-9 THEN 90
80 SOTO 40
90 PRINT 'CI(X)='A+.5772156649+L0G<X)
100 GOTO 10: END
Пример. Для x—\ получим C7(l) =
= 0,337403923.
Вычисление Si (x) и Ci (x) численным
интегрированием целесообразно лишь при
малых значениях х. При больших х> 8 су-
щественное уменьшение времени вычисле-
ний достигается при использовании асимпто-
тических выражений [36].
§ 6.4. Гамма-функции (включая не-
полные)
Гамма-функция
оо
Г (х)=Г (X) =5 e-'f-' dt
о
является одной из наиболее распространен-
ных специальных функций. Поэтому целе-
сообразно рассмотреть различные алгоритмы
ее вычислений.
Для — 18<х<49 с погрешностью поряд-
ка 1-10"5 Г (х) может быть вычислено
с помощью 20-кратного преобразования по
формуле Г (x-f-1) =хГ (х) и с применением
Такое преобразование необходимо для умень-
шения погрешности (6.1). Алгоритм вычис-
ления Г (х) при этом следующий.
1. Вводим х и полагаем Z = x, X — Z и
А = 1.
2. Вычисляем (X-{-/), где / =
= 1, 2, ..., 20.
3. Полагаем B = X-f-21 и вычисляем
vG = exp(B(ln В-1) + 1/(12В)) V2n7B~/Z2o.
Программа 6.7.
Пример. Для различных х получаем
Г ( — 1,5) =2,363272685 (2,363271801),
Г (- 0,5) = - 3,544908843 (- 3,544907702),
Г (1,5) =0,8862271413 (0,886226926). Г (40) =
= 2,039788231 • 1046 (2,039788208-104*). В скоб-
ках указаны точные значения Г (х).
Более высокую точность при — 10<х^70
имеет метод, в основе которого лежит сле-
дующий алгоритм.
1. Вводим х = ^ и задаем А=А —1.
2. Полагаем Z — A— 64.
3. Если Z<0, идем к п. 4, иначе задаем
D— 1 и идем к п. 6.
4. Вычисляем B=|int (Z—1)| и полагаем
С=А, A=A-f-B и £>=1.
5. Находим
С/ = С/_1 + 1, Di — Dj_x/C,
где / = В, В—1, В —2, .... 2, 1.
6. Вычисляем G = Г (х) по формуле Стир-
линга в следующей ее модификации:
/ А
GA~) *(1/(12А))Ял/2^Г
При этом алгоритме формула Стирлинга
используется при аргументе, значения кото-
рого превышают 64, что дает меньшие
погрешности. Однако при х< —10 корректи-
рующий множитель D<1-10“99 и ему, как
и значению Г (х), приписывается нулевое
значение.
Программа 6.8.
Пример. Г ( — 1,5) =2,363271825,
Г (- 0,5) = - 3,544907737, Г (1,5) =
= 0,8862269342 и Г (40) =2,039788229-1046.
Программа 6.7.
10 PRINT'ВЫЧИСЛЕНИЕ ГАММА-ФУНКЦИИ Г<Х)'
20 INPUT'ВВЕДИТЕ X='Z:LETX=Z:LETA=1
30 FOR 1=1 ТО 20
40 LETZ=Z*<X+I):NEXT I
50 LETB=X+21
60 LETG»EXP<B*<LOG<B)-1)+l/12/B)*SQR<2*#PI/B)/Z
70 PRINT'ЗНАЧЕНИЕ Г<Х)='6?60Т0 20:END
Программа 6.8.
10 PRINT'ВЫЧИСЛЕНИЕ ГАММА-ФУНКЦИИ Г(Х)'
20 INPUT'BBEAHTE X='X:L.ETA=X-l:LETZ=A-64: IF Z<0 THEN 40
30 LETD=l:GOTCi 60
40 LETB=ABS<INT<2-l>>5LETC=AsLETA=A+BsLETD=l:FOR I=B TO 1 STEP -1
50 LETC=C+1:LETD=D/C:NEXT’I
60 LETG= < < A/EXP <1))"A)*EXP<1/12/A)*SQR< 2*#PI*A)*D
70 PRINTT(X)='G:GOTO 20:END
149
Наименьшее время вычислений обеспе-
чивает алгоритм, основанный на аппрокси-
мации Г (х) на отрезке [0, 1] степенным
полиномом.
1. Из аргумента |х| последовательно
вычитаем 1 для того, чтобы В попал в отре-
зок [0, 1]. Одновременно подсчитываем
произведение D-=B (В— 1) (В —2) ... (В —
— /О, где К — число вычитаний 1 из В.
2. Если г> 0, вычисляем Г (х) по форму-
лам Y—B — K. Г=Г(74-1) =
= (((((((0,0358683437 - 0,193527818) Y 4-
4- (0,482199394) Y - 0,756704078) Y 4-
-4- 0,918206857) Y - 0,897056937) Y 4-
+ 0,988205891) К - 0,577191652) 7 4-1,
Г (X)=DF/X.
3. Если х<0, вычисляем 7 и F по п. 2
для |х|, после чего находим
Г (х) =___5_________!___л . 1
sin лх Г (х— 1) sin лх DF *
Программа 6.9.
Пример. ф (1,5) =0,03648992674,
ф (50) =3,901989672.
Неполные гамма-функции задаются соот-
ношениями
X
у (а, х) (а, х) Г (а) =$ е~‘Г-' dt.
Г (а, х) = Г (а) —у (а, х) =$ 1 dt,
о
у* (а, х) =х"Р (а, х) =х"°у (а, х)/Г (а).
В качестве основной можно выбрать функ-
цию у (°, х), легко вычисляемую разложе-
10 PRINT'ВЫЧИСЛЕНИЕ ГАММА-ФУНКЦИИ Г<Х> ПО АППРОКСИМАЦИИ'
20 INPUT'BBEAHTE X='XsLETB«ABS(X)sLETH==l
30 IF В<=1 GOTO 50
40 LETD=Ii*B:LETB=B-l:60T0 30
50 LETF=< (.03586S343*B~. 193527818)жВ+. 482199394>*B
60 LETF=<(<F-.75670407S)*B+.91820685?)*B-.897056937)жВ
70 LETF=(< F+.988205891)жВ-.577191652)*B+1
80 LETG=F*.Ii/X: IF X<0 GOTO 100
90 PRINT'Г<Х)='G«GOTO 20
100 LETG=#PI/SIN<#PI*X)/D/F:GOTO 90SEND
Пример. Г (- 3,2) = 0,6890562856,
Г (- 2,5) = — 0,9453086453, Г (2) = 1,
Г (0,5) = 1,772453992 и Г (50) =6,082818641 X
X 10 . Погрешность вычислений в этом ме-
тоде не превышает 3-10~7.
Логарифмическая производная гамма-
функции (диагамма-функция)
♦ w 1|пГ«1
с погрешностью менее 2-10~5 для х> 20
может вычисляться по асимптотическому
разложению ф (х) = In х — 1 / (2х) —
— 1/(12х2) 4- • • • С помощью рекуррентной
формулы ф (х4-1) — Ф (х) 4-1 Iх значения
ф (х) при х<20 можно найти, вычисляя
ф (х+20) и последовательно применяя эту
формулу в направлении уменьшения х.
Программа 6.10.
нием в ряд (х>0, а>0)
V (а, х) =
(а+1) (а + 2)...(а4-0
где N=int (2х + 8) и 0уу+ f — корректирую-
щий член. Зная у (а, х) и Г (а), можно
вычислить любую другую из приведенных
неполных гамма-функций. Вычисление у (а, х)
реализуется программой 6.11.
Программа 6.11.
Пример. У (2; 8) =0,9969825948,
у (0,5; 1) = 1,493648313.
Неполная гамма-функция у (а, х) может
вычисляться также* численным интегрирова-
10 PRINT'ВЫЧИСЛЕНИЕ ЛОГАРИФМИЧЕСКОЙ ПРОИЗВОДНОЙ'
15 PRINT'ГАММА-ФУНКЦИИ D<LOG Г(Х>)/ЛХ'
20 INPUT'BBEAHTE X^'XHF Х>20 THEN 40
30 LETC=20+<X-INT<X))sGOTO 56
40 LETX=X+1sLETC=X
50 LETA=1/2/С s LETA=-АжA/3-A+LOG< C)
60 LETC=C-1"LETA=A-1/С
70 IF X<C THEN 60
80 PR I NT'ЗНАЧЕНИЕ DCLOG Г(ХП/РХ='А
98 GOTO 20sEND
Программа 6.11.
10 PRINT'ВЫЧИСЛЕНИЕ НЕПОЛНОЙ ГАММА-ФУНКЦИИ G(A,X>'
20 INPUT'BBEAHTE АлХ 'А/XsЦЕТВ=1НТ(2жХ+9)sLET7=8
30 FOR I«B TO 1 STEP -1:ЕЕТУ«УжХ/(1+А)+1:НЕХТ I
40 LETG=Y*EXP(-X)*X-*A/AsPRINT'G<A/X) = '6sGOTO 20sEND
150
нием— см, формулу (6.2). Так, используя
программу 4.42 численного интегрирования
методом Гаусса и задав а = 2, В = х = 8,
А = 0 и М = 8, получим у (а, х) = 0,9969832028
при /с «20 с.
§ 6.5. Функции Бесселя
(включая модифицированные)
Функции Бесселя являются решениями
линейного дифференциального уравнения вто-
рого порядка
d2u I
dx2 + х
Здесь v — порядок функции. Функции Бес-
селя могут быть первого J±v (х), второго
y±v (х) и третьего H±v (х) родов. Они свя-
заны следующими соотношениями:
yv (х) =s= (Jv (х) COS (vjt) — J-v (х) ) /sin (vn),
(6.3)
Hl'2 (x) =/v (x) ±/Tv (x).
Соотношение (6.3) справедливо при дробном
порядке v. При целых v оно заменяется пре-
дельным переходом.
Решениями дифференциального уравнения
d2a 1 dm /, v2\ Л
——Н------j----1 Н—т-) (о = 0
dx2 х dx \ х2 /
являются модифицированные функции Бес-
селя /v (х) и Kv (х):
. (6.4)
2 sin (vji)
Функции Бесселя первого рода Л (х) и
1п (х) при целом порядке v = n (п = 0, 1,2,...)
могут вычисляться разложениями в ряды
оо
(—хг/4)'
»!(« + »)! ’
1 = 0
(xW
i\ (/ + «)!
Пример. /о (0,5) =0,9384698072,
/зо (20) = 1,240153633-10~4, /о (2) =
= 2,279585302 и /, (2) = 1,590636855.
Функции Бесселя Д (х) и Д (х) при
дробном порядке v вычисляются по следую-
щим разложениям в ряд:
Л (х)
. (~х74)К
К!Г (v + K+l)
(х2/4)*
К!Г (v+K+1)
Для вычисления функции Г (v-f~#+!)==
= Г (v) -v (v-|- 1) (v-j-2) ... (vH- К) должна
использоваться часть программы для вычис-
ления гамма-функции, например, по аппрок-
симации. Вычислив функции 1±у (х) и-
/±v (х) по формулам (6.3) и (6.4), находим
функции Бесселя второго рода (х) и
Kv (х).
Программа 6.13.
Пример. Для v=V=l/3 и х=1,5,
задав код 0, получим Г (v) =2,678938244,
Д (х) =0,6371327061, Г (—v) = —4,062354258,
J_v (х) =0,2348995028 и Д (х) =0,09661015701.
Задав код 1, получим /v (х) = 1,501429163,
/_v (х) = 1,62280812 и /Д (х) =0,2201570763.
Вычисление функций Бесселя Kv (х) и
Kv (х) при целых v = n невозможно. На прак-
тике приближенные значения этих функций
можно найти, задав v = n±6, где 6 — малая
величина (6« 1 • 10“3-j-1 • 10“4). Результат
можно уточнить, взяв среднее при v =
= п -|- 6 и v==n — 6. Следует отметить, что
при v^0 значения х^9 для функций
А. (х), при этом погрешность вычислений не
превышает 2-10~б (с ростом v диапазон
значений х расширяется и при v = 100 х<50).
Погрешность вычисления Y„ (х) и Kv (х)
выше; например, в приведенном примере
Kv (х) верны 4 цифры после запятой.
Частными решениями дифференциального
уравнения
Ряды для Jn (х) и In (х) различаются лишь
знаком у члена (х2/4). Это позволяет вычис-
лять данные функции по одной программе.
Программа 6.12.
d2(i) 2
da)
~dt
I x J
м == 0, ± 1, zb 2 ...,
05 PRINT 'ВЫЧИСЛЕНИЕ ФУНКЦИЙ JNCX) И IN<X)'
10 INPUT 'ВВЕДИТЕ -1 ДЛЯ JN<X> ИЛИ 1 ДЛЯ IN<X)'Z
20 INPUT 'ВВЕДИТЕ N='N
30 INPUT 'ВВЕДИТЕ X='X
40 LETS=0s LETA=1
50 IF N<=1 THEN 70
60 FOR 1=1 TO Ns LETA=A*Is NEXT I
70 LETV= <X/2 > л2:LETI«0:LETB=1:LETC=1s LETR=1
80 LETI=I+HLETB=I*BS LETC=<N+I>*C
98 LETR=Z*R* LETE=<V'‘I>*R/B/C: LETS=S+E
100 IF ABS<E>>iE-9 THEN 80
110 LETJ=<1+S>*<<X/2>~N)/A
120 IF Z>0 THEN 140
130 PRINT 'JN<X)='Js GOTO 38
140 PRINT ,'IN<X>='Js 60T0 38SEND
151
Программа 6.13.
10 PR I NT' ВЫЧИСЛЕНИЕ ФУНКЦИЙ БЕССЕЛЯ *
15 PRINT* JU<X),YU<X)HU(X),KU<X>*
20 INPUT‘0 ДЛЯ JU(X),YU(X) И 1 ДЛЯ IU(X)fKUCX) ?*K
30 INPUT*ВВЕДИТЕ ПОРЯДОК ФУНКЦИИ U«*U
40 INPUT*ВВЕДИТЕ АРГУМЕНТ ФУНКЦИИ Х=*Х
50 LETU=X*X/4:IF К=0 THEN LETU=-W
60 GOSUB 200!LETJ=F
70 PRINT*ЗНАЧЕНИЕ ГАММА-ФУНКЦИИ G<U)«*G
80 IF K=1 THEN 100
90 PRINT*JU(X)=* J--GOTO 110
100 PRINT*IU(X)=*J
110 LETU=-U:GOSUB 200
128 PRINT*ЗНАЧЕНИЕ ГАММА-ФУНКЦИИ Г(-Х>=*6
130 LETA=-U*#PI:IF K=1 THEN 178
140 PRINT*J-U(X)=*F
150 LETY=.J*COS<A)/SIN<A)-F/SIN(A)
160 PRINT*YU<X)=*Y:GOTO 40
170 PRINT*I-U<X)=*F
180 LETK=#Pr«F-J)/2xSIN<A>
190 PRINT*KU<X)=*KsGOTO 48
200 LETB=ABS<U):LETD=1
210 IF B<1 THEN 230
220 LETD=D*B:LETB=B-l:60T0 210
238 LETF=<<.035868343*8-.193527818)*B+.482199394)*B
240 LETF=< < < F-.756704078)*B+.918206857)*B-.897056937 > *B
25© LE TF= < < F +.988205891)*B-.577191652)*B+1
260 LETG=F*H/U:IF U>=0 THEN 280
270 LET&=#PIzSIN<#PI*U)/D/F
280 LETF=l/&/UsLETR=F:LET1=0
298 LET I=I+1 : LETR=RW/1 / < U+1) s LETU=F
300 LETF=F+RsIF ABS<F-U)<>0 THEN 290
310 LETF=F*<X/2>"U: RETURN:END
являются сферические функции Бесселя
первого рода
/п (х) =^/й/(2х) /п+1<2 (х),
второго рода
Уп (х) =-\/2л/(2х) У«+1/2 (х)
и третьего рода
hn (х) =^/2л/(2х) Н,г4-1/2 (х).
Эти функции можно найти по программам,
вычисляющим функции Jv (х) и Yv (х) при
v = n-}-l/2. Вычисления облегчаются тем, что
при этом достаточно дасполагать известным
значением Г (1/2)
Пример (в скобках указаны точные
значения). /0 (2) =0,4546487134 (0,45464871),
/8 (10) =0,1255780237 (0,12558), /ю (1) =
= 7,11655264-10"11 (верны все цифры),
i/o (1) = - 0,5403023059, у2 (2) =
= —0,7339914247, е/ю(5) = -26,6561144. Вре-
мя счета от 3 до 12 с.
Функции Бесселя могут вычисляться также
по их аппроксимациям степенными полино-
мами (см. [36]). Однако программы вычис-
ления при этом получаются громоздкими
из-за необходимости применения одновре-
менно нескольких полиномов при изменении
аргумента х от 0 до оо.
Программа 6.14.
10 PRINT*ВЫЧИСЛЕНИЕ СФЕРИЧЕСКИХ ФУНКЦИЙ*
28 PRINT* БЕССЕЛЯ J(N,X) И YCN/X)*
30 INPUT*ВВЕДИТЕ X=*X:LETA=1
46 INPUT*ВВЕДИТЕ N=*W
50 FOR Н=0 ТО bJsLETA=A/<2*N+l):NEXT N
60 LETS=1:LETC=0:LETD=-X*X/2:LETF=1
70 LETC=C+1:LETB=B*C:LETE=2*C+1
80 LETF=F*.D/C/<2*W+E): LETUPS
90 LETS=S+F:IF ABS<S-U)O0 THEN 70
100 LETJ=A*S*X~WsPRINT‘Fl.9!*J(Nr X) = *J
110 LETA=1:FOR N=8 TO W
120 LETA=A*<2*N~1)sNEXT N
130 LETS=1:LETC=05LETF=1
140 LETC=C+1:LETE=2*C-1:LETF=F*D/C/<E-2*W)
150 LETU=S:LETS=S+F:IF ABS<U-S><>0 THEH 140
160 LETY=АЖ8/(X-<Ы+1)):PRINT * Y< N/X) = * Y
170 GOTO 20SENH
152
i 6.6. Функции Эйри
Решению дифференциального уравнения
удовлетворяет пара независимых решений
А} (х) и В, (х), являющихся функциями
Эйри.
Функции Эйри могут вычисляться разло-
жением в степенные ряды
Л, (х) = cj (х) —c2g (х),
В, (х)=д/3 [cj (x)+c2g (x)J,
f (x) = 1+_5f х,+Аи~х6+-~5Г~-х9+
2 4 2-5 7 . 2 • 5 • 8 । ()
g (x)=x+^j-x + — * +—ГоГ-* +
где с, =0,355028054, c2 = 0,258$ 19404. По-
скольку для x<lO члены рядов оказываются
знакочередующимися, при х<—7 сходи-
мость их резко ухудшается.
Программа 6.15.
Для вычисления С (х) можно применить
программу 4.42, вписав в нее подпрограмму
вычисления подынтегральной функции
cos (л/2/2) при t — X. Задав 4=0, В—х —
= 2 и М = 8, получим С (2) =0,4882522862
при точном, значении 0,4882534.
Для вычисления S (х) также можно ис-
пользовать программу 4.42. Задав 4=0,
В = х = 2 и Л4 = 8, получим S (2) =0,3434145829
при точном значении 0,3434157.
При х<3 для вычисления С (х) и S (х)
могут использоваться следующие разложения
в ряд:
оо
• С(х)=у
L (2л)! (4л + 1)
л —0
оо
S(x) = y
' ' L (2л + 1)!(4л + 3)
н--0
При х> 3 эти ряды плохо сходятся и для
вычисления С (х) и S (х) целесообразно
10 PRINT’ВЫЧИСЛЕНИЕ ФУНКЦИЙ ЭЙРИ АКК) И &К/??
28 INPUT-‘ВВЕДИТЕ ПОГРЕШНОСТЬ Е=‘Е
36 INPUT-‘ВВЕДИТЕ Х= -‘ X s LET I-й
4й LEIP-1sLETK-1:LETL=X‘”3!LETJ=1sLETR«1
5U LET I -1 +3: LETK=k *L*J: LETN-F s LET P -R* I * I - D ж •: I - 3 :•
BO LETF=F+K/p!LET.J=.J+3s IF hB5< F-pD >E THEN 50
7Й LET 1 = 1:LET6=1:LETK=1:LETR=1
86 LET I = I +3 s LETK=K* ( I -2 )*L 5 LETM=6: LETP=R* I * < I -1 > * :. I -2
80 LET6=6*MRs IF АВ8<6-Ю>Е THEM 80
100 LET6=6*X•LETC=.355028654: LETU=.25881с4й4
110 LE T4=C *F -D*6: LETB= (C*R +0*6)*SOR •' 3 ’
120 PR 1 НТ? AI OO = -‘ A 5 PR I NT •* BI (X) = -‘ 8: COT 0 70: EHD
Пример. При погрешности E=l-10 6
получим 4, (1) =0,1352924154, В, (1) =
= 1,207423594 (tc« 3 с), А, (- 5) =
= 0,3507610391 и В, (-5) = -0,1383692054
(/с«18 с).
использовать асимптотические приближения
С
/ ч __ 1 । sin (л*72)
лх
cos (лх2/2) А 5 \
л2х3 \ (лх2)2 /
§ 6.7. Интегралы Френеля
Интегралами Френеля называются инте-
гральные функции
С (х) =^ cos (у*2) 5 (*) = sin
о о
Они могут вычисляться непосредственно
численным интегрированием.
S(x) = y
cos (лх2/2) / ] _ 3 \
ЛХ \ (лх2)2 /
cos (лх2/2) / _ 5 \
л2х! \ (лх2)2 /
Погрешность вычислений не превышает
5/(л4х7), что при х^4 дает не менее 5 вер-
ных знаков после запятой.
Программа 6.16.
05 PRINT‘ВЫЧИСЛЕНИЕ ИНТЕГРАЛОВ- ФРЕНЕЛЯ COD И W-‘
10 INPUT -‘ВВЕДИТЕ Х=-‘ X: LETA=#PI:*>T2
2й IF Х>3 THEN 150
30 LETS=0s LETC=05LETN=0sLETZ=-1s LETR=1
40 60T0 80
56 IF N>1 THEN 70
60 LETR=2! OCTO 80
70 LETR=R*2*:N* 2*N-1 >
153
80 LETZ=-Z: LbTV=4.*H
90 LETB=Z* < < #P I /2 > - < 2*N > > * < X"V ) •'R
100 LETD=B/<4*H+1)s LETOC+D
110 LEtE=B/<4*N+3)z<2*N+l)s |_ETS=S+E
120 LETN=N+1!IF ABS<ID>1E-10 THEN 50
130 LETOC*X: LETS=S*4PI*<X'3)-'Z
140 PRIHT'C<X>x'CsPRINT'S<X>='Si60T0 10
150 LETE=CSIH<A/2>>/#PI/Xs LETF=<C0S<A/2))/#PI/X
160 LETK=l-3/<A"2)’ LETL=l-5/(A-2)
170 LETC=.5+E*K-F*L/A
180 LET'5=.5-F*K-E*L-’As60TO 140JEND
П p и м e p. C (0,2) =0,1999210576, S (0,2) =
—0,004187609162 (/C«6c), C(2) =
=0,4882534059, S (2) =0,3434156788 (время
счета »20 с), C (4) =0,4984199894, S (4) =
= 0,4205170154 (время счета менее 2 с).
$ 6.8. Эллиптические интегралы
Полные эллиптические интегралы первого
К (пг) и второго Е (т) рода- определяются
как
л/2
К (т) == у (1 — ли sin2 0)“i/2 d0,
о
л/2
Е(т)=} (1 — т sin2 0)1/2 d0
о
и могут вычисляться непосредственно с по-
мощью численного интегрирования.
Для вычисления К (т) можно использо-
вать программу 4.42. Задав т = 1/2, Л = 0,
5 = л/2иМ=4, получим К (1/2) —1,854074665
при точном значении 1,8540746733 и /с~15 с.
Вычисление Е (т) также выполняется чис-
ленным интегрированием. Задав т = 1/2,
А=0, В — л/2 и М = 4, получим Е(1/2) =
= 1,350643882 при точном значении 1,350643881.
Эллиптические интегралы К (т) и Е (т)
могут вычисляться также по их разложениям
в ряд:
к (т) =-1 [ 1 + (I)2 m+(2±)2 m* +...]
/ 1 -3-5 \2 ап3
\2-4-6/ 5
Программа 6.17.
Пример. К (0,1) = 1,612441349 (/С«6с),
К (0,5) = 1,854074676 (/с«20 с), Е (0,2) =
= 1,489035058 \tc«9 с).
С погрешностью менее 2-10”8 полные
эллиптические интегралы К (т) вычисляются
с помощью полиномиальной аппроксимации
[36]:
К ('w) = ((('(a4mi-ha3) ahi+M mi+ai) аиН-
+ М 4- ((((Ь4аП1 Ч~6з) ahi-|-M mi-|-6i) АП|4-
4-М in (1/m,),
где ai = 0,44325141463, а2=0,0626060122, а3 =
= 0,09666344259; а2 = 0,03590092383; а3 =
= 0,03742563713; а4 = 0,01451196212; Ьо =
= 0,5; Ь» =0,12498593597; b2 = 0,06880248576;
Ь3 =» 0,03328355346; Ь4 = 0,00441787012.
Аналогично
£ (ли) = ((((a4mi4-a3) mi4-a2) ahi4-
4-М гп\4-1) 4” (((Ь4т\4-М /П|4~М т\4-
4-М т\ In ( 1/zhi),
где ai х^О,44325141463, а2 = 0,0626060122, а3 =
= 0,04757383546, а4 = 0,01736506451, b, =
= 0,24998368310, Ь2 = 0,09200180037, Ь3 =
= 0,04060697526 и Ь4 = 0,00526449639.
Программа 6.18.
Пример (в скобках даны точные значе-
ния). К (0,1) = 1,6124441352 (1,612441349),
Е (0,1) = 1,530757641 (1,530757637), К (0,9) =
= 2,578092105 (2,578092113), Е (0,9) =
= 1,104774722 (1,104774733).
Неполные эллиптические интегралы
Е(ф1ап)=) (1 — т sin2 0)_,/2 d0,
о
ф
E(qp|m)=j (1 — т sin2 0)1/2 dQ
о
также могут вычисляться по программам
численного интегрирования. В этом случае
полагают В = ф.
01 PRINT'ВЫЧИСЛЕНИЕ ПОЛНЫХ ЭЛЛИПТИЧЕСКИХ ИНТЕГРАЛОВ КСЮ И ЕСЮЛ
05 INPUT-1 ИНТЕГРАЛ ЭЛЛИПТ. КАКОГО РОДА 1 ИЛИ 2 ?ЛС
IS INPUT'ВВЕДИТЕ М=’М! LET1=0
20 LETA=1: LETB=1: LETS=ls LETR=1
30 LET1=1+1: LETA=A*C2*I-1>!LETB=B*I*2
35 IF C=1 THEN 45
40 LET£=-1/<2*I-1>
45 LETR=r*1*Rs LETD=C*R*( A/В) ~2
50 LETS=S+H: IF ABSCD)>lE-9 THEN 30
60 LETK=#PI*S/2sIF C=1 THEN BO
70 PRINT'ECM)=‘Ks GOTO IO
BO PRINT'К(Ю = 'К: СОТО 10! END
154
Программа 6.18.
10 PRINT'ВЫЧИСЛЕНИЕ ПОЛНЫХ ЭЛЛИПТИЧЕСКИХ ИНТЕГРАЛОВ КСЮ И Е(Ю'
15 PRINT' С ПРИМЕНЕНИЕМ АППРОКСИМАЦИИ'
29 INPUT'ВВЕДИТЕ М< = 1 М=' Ms LETM-1-M
30 LETK=< <.01451196212*М+.03742563?13 >*М+.03590992383)жМ
35 LETKXK+. 09666344259 )*М+1.38629436112
40 LETW=<.09441787012*М+.03328355346)*М
45 LETU=< <Ы+. 06880248576)*М+. 12498593597)*И+.5
50 LETK»K+W*LOfc<1/М ) s PR1NT'К < М) ='К
60 LETE* <.01736506451*М+.84757383546)*М
65 LETE®< < Е+.0626068122 > *М+.44325141463)*4+1
70 LET№=( . 80526449639*1*1+. 84869697526 >*М
75 LETW-C <Ы+.89288188837)*М+.2499836831
80 LETE»E+U*L06<1/ЮsPRINT'ЕСМ)='EsВСТО 28sEND
§6.9. Функции Струве, Ангера
и Вебера
Функции Струве Н? (х) входят в общее
решение (х) +bYv (х) +HV (х) диф-
ференциального уравнения второго порядка
вида
2 d?(i) I . / 9 2\
х -d?+x-d7+(x -v)w
4 (x/2)v+‘
VSr(v+l/2)‘
Функции Hv (x) вычисляются разложе-
нием в ряд [42]:
Hv (х) -
(x/2)v+{
Г (*4-3/2)
____Z______L
3-(2v + 3)
знаком. В программу для вычисления этих
функций нужно включать фрагмент, вычис-
ляющий Г (v 4-1,5), например, по аппрок-
симации гамма-функции полиномом.
Программа 6.19.
Пример. Погрешность £ = 1 • 10~г,
Я, (5) =0,8078118816, Яо (0,5) =0,30955589,
Я„8 (4) = —8,249323233, L\ (0,5) =
=0,05394217833 и £„6 (6) =3,327822061.
Функции Струве могут вычисляться также
с ромощью численного интегрирования с
применением интегральных представлений
(Rev> — 1/2):
//v (х) =
+ 3-5-(2v+3) • (2v+5)
___2 (x/2)v
Г (v4~ 1/2)
(1 —/2)v-*/2 sin (X/) dt,
Lv (x) =
Модифицированные функции Струве Lv (x) =•
= — je~jva/iHv (jx) можно разложить в ряд
вида
L (х}- 2 Ь । »
v() r(v + 3/2)[1+3.(2v + 3) +
J----------2__________
3-5-(2v-b3) • (2v+5)
—^Д-i^Z2}----- ( sh (jr cos 0) sin2* 0 40.
ул Г (v 4-1/2)
Однако и в этом случае необходимо вычис-
ление гамма-функции Г (v4-l/2).
Функции Ангера Jv (х) имеют интеграль-
ное представление вида
Таким образом, разложения в ряд (х)
и (х) различаются лишь тем, что члены
в квадратных скобках у ряда Hv (х) знако-
чередующиеся, а у ряда Lv (х) — с одним
Jv (х) ==~Ц cos (vO —х sin 0) 40.
При целом v = m Д(х)=/„(х). В общем
Программа 6.19.
10 PRINT'ВЫЧИСЛЕНИЕ ФУНКЦИЙ СТРУВЕ HUCX) И LUCX)’
15 INPUT'ВВЕДИТЕ 8 ДЛЯ HUCX) И 1 ДЛЯ LUCX) 'К
20 INPUT'ВВЕДИТЕ LUX ='U>YsLETA=Y*Y:IF K=8 THEN LETA=-A
38 LETX=U+ 1.5s LETH= 1 s LET I = 1 s LET .> 1
48 LETB=ABS<X)sLETD=l
58 IF B<1 THEN 78
68 LETD=D*BsLETB=B-ls60T0 58
70 LETF=<<.©35868343*6-. 193527818)*B+.482199394):*B
80 LETF=< < <F-.756704078)*B+.91828685?)*8-.897856937)*B
98 LETF=< <F+.98828589 D *B-.577191652 >*B+1
180 LET6=F*D/XSIF X<0 THEH LET6=#PI/$IN<#PI*X>/I«/F
110 LETI = 1+2sLETH=H*A/1/<2*U+1)s LETW«J
120 LET«J=J+Hs IF ABS(J-W)>S1E-18 THEH 118
138 LET<<Y/2)-<U+1))*2*J/6/SQR<#PI)
148 IF K=1 THEN 168
158 PRINT'HU<X)='Ws60T0 20
160 PRINT'LU<X)='W?GOT0 20SEHD
155
случае функции Ангера удобно вычислять
с помощью численного интегрирования. Так,
для V—1, А=0, В = л,. х = 0,5, М — 4 полу-
чим Ji (0,5)—0,5844468394 при /С~Ю с.
Аналогичным образом несложно органи-
зовать вычисления функций Вебера
л
Ev (х) ==-L( sin (v0 —х sin 0) d&.
л J
§ 6.10. Гипергеометрические
функции
Гипергеометрические функции F (a, 6, с, х)
являются частным решением дифференциаль-
ного уравнения
.. . б/2ю . г . ... ,. . da
х О ~~х) ——Ь Iе ~~ (a"b6-h О Х1 —
— аЬы — О.
Они могут вычисляться с применением сле-
дующего ряда:
F (а, Ь,с, х) — 1 +
+ у | п . е
+ 2.L11 (1+/) (c+j) xJ+e«+b
i —0 / —0
где А —22, 0д/_|_] — поправка. Значения
|х| < 1, с=/=0, — 1, — 2, ... При 0< (а, Ь)
и — 0,1 <х< 0,8 погрешность 6<5-10”2,
но обычно существенно ниже.
Программа 6.20.
решение
г, / . ч я ( F (а, 6, х)
(а, ’ ~~ sin | Г (!-|-а4-Ь) • Г (Ь)
_xi-ь F (1+а —6,2 —6, х) 1
Г (а).Г (2-6) ’
Вырожденная гипергеометрическая функ-
ция F (а, 6, х) вычисляется разложением
в ряд
, (а + /)
(1+/)(6 + /)
4-fyv+i,
дающем при N = 22 погрешность 6<l*10“4
для 0<а<6 и — 5<х<10.
Программа 6.21.
Пример. F (1; 1; 0,5) = 1,648721721 при
точном значении 1,648721271.
С помощью гипергеометрических функций
можно найти большинство элементарных
и специальных функций [36, 42]. Например,
функция F (а, а, х) при Ь = а дает значение
ех. Так, в приведенном примере при.6 = а5^1
и х = 0,5 получаем F (1; 1; 0,5) — е0 5=.
= 1,648721271. Аналогичный результат дает
вычисление F (3; 3; 0,5) при а — Ь — 3.
§6.11. Дилогарифм
Дилогарифм — интегральная функция
» / \ f In i
/ (*) — —। dt, может вычисляться с
1
10 PRINT'ВЫЧИСЛЕНИЕ ГИПЕРГЕОМЕТРИЧЕСКОЙ ФУНКЦИИ F<A>B.>C/X)'
20 INPUT'BBEAHTE А/В/С'А/В/С
30 INPUT'BBEAHTE Х='XsLETF=L6T<23)
40 FOR 1=23 ТО 1 STEP -lsLETD=I-l
50 LETF=F*<D+A)*<D+B)/<H*C>/I.*X+1
60 NEXT IsPRINT'F<AfB/C>X)='F:GOTO 30SEND
Пример. F (1; 1; 2; 0,5) = 1,386294358
при точном значении F (1; 1; 2; x) =
=—x_| In (1—x) —1,386294361 и /с«8 с.
Первым независимым решением уравне-
ния Куммера
t/2co , .. . dm ~
х---т- + (6 — х) —----П(1) — 0
dx2 dx
является вырожденная гипергеометрическая
функция F (а, Ь, х) (а, Ь, х). Через нее
и гамма-функцию может быть найдено второе
помощью численного интегрирования мето-
дом Гаусса (программа 4.42). Задав А=1,
В—х и М = 8 для х = 0,4, получим f (х) =
= 0,7275863075 при точном значении
0,727586308 и /с«10 с.
Дилогарифм *может вычисляться и по раз-
ложению в ряд:
Программа 6.21.
10 PRINT'ВЫЧИСЛЕНИЕ ВЫРОЖДЕННОЙ ГИПЕРГЕОМЕТРИЧЕСКОЙ'
15 PRINT' ФУНКЦИИ F<A/B/X>'
28 INPUT'BBEAHTE A/B'ArB
30 INPUT'BBEAHTE Х='XsLETF=LBT<23>
40 FOR 1=23 TO 1 STEP -1:LETD«I-1
50 LETF=F*<D+A>*X/<D+B>/I+1
60 NEXT ISPRINT'ЗНАЧЕНИЕ F<A/B/X)='F
< 70 GOTO 308END
156
Программа 6.22.
й5 PRINT-‘ВЫЧИСЛЕНИЕ ДИ ЛОГАРИФМА-’
10 INPUT-’ВВЕДИТЕ Х='Х5 LETV==X~1
20 LET 1=0! LETS=0! LETP=1: L£TP=1
30 LET 1=1+1: LETR=-R: LETP=P*’r’
40 LETD=R*P/r-2! LETS=S+D
50 IF ABS<D>>lE-9 THEN 30
60 PRINT*ДИЛОГАРИФМ F(X)=-‘S
70 GOTO 10: END
Пример. Для x —0,i получим f (x) =
= 1,299715.
Пример. При заданной погрешности
£ = 1. Ю~6 получим Ьегг (1,55) =0,059944 и
beia (1,55) =—0,259803 (все цифры верные).
§ 6.13. Функции Дебая и Зиверта
Интегральная функция Дебая Dn (х) =
f tndt
\ —dt легко находится численным
f 6.12. Функции Кельвина
Функции Кельвина относятся к классу
функций Бесселя и являются решениями
дифференциального уравнения
2 d2(l) , rf(O . . о । л
х -Т-2- + Х'Х (/*+'’) “ = °-
dx dx
записываемыми в виде
(D = berv (x)-hjbeiv (х).
Функции Кельвина вычисляются разложе-
нием их в следующие ряды [36]: г
berv (х) —
/ x\v у4 cos [(3v/4-4-Ze/2) л] / x2 \fc
~ \t) L *!Г (v + ^4-1) Vu ’
k^Q
beiv (x) =
_/x\v V sin [ (3v/4-f-fc/2) л] (x2\k
\2J L *!Г (* + *+!) \4 )'
R = 0
Для практики интерес представляют в основ-
ном функции Кельвина целого порядка
v = n (п = 0, 1, 2, ...), в частности функции
Ьегх и bei х (л = 0). При целом v — n имеем
Г 1) = (п + k)!, что упрощает вычис-
ления, поскольку отпадает необходимость
определять гамма-функцию Г (v 4- & ~Н) для
каждого члена ряда.
Программа 6.23.
интегрированием с помощью программы 4.42.
Так, для А =0, В=х = 1 ип=М=1 приМ = 4
получим D\ (х) =0,7775046341 при точном
значении 0,777505, аналогично £>4(1) =
= 0,6137185176 (время счета менее 10 с).
в
Интеграл Зиверта Ziv (z) =^ e~z/cosx дх
о
также легко находится численным интегри-
рованием. Для z=l, /4=0, В —0 = л/2 и
Л1 =8 получим Ziv (1) =0,3282894817 при точ-
ном значении 0,328286 и 16 с.
§6.14. Интеграл вероятности и
родственные ему функции
U (* 2
Интеграл вероятности erf х=-— i e~l dt
уп п
желательно вычислять с высокой точностью.
Это возможно с применением разложения
erf х в ряд [36]:
erfx=— V
/п L п! (2«+1)
* и —0
Дополнительный интеграл вероятности
ею
2 С _ •>
erfc х=-—- I е dt~- 1 —ert х.
у я J
10
20
30
40
45
50
55
60
PRINT’ВЫЧИСЛЕНИЕ ФУНКЦИЙ КЕЛЬВИНА BER(X), ВЕИХ)’
INPUT’ВВЕДИТЕ 0 ДЛЯ ВЫЧИСЛЕНИЕ ВЕЕ<Х) И 1 ДЛЯ ВЕКХ) ?’Г
INPUT’ЗАДАЙТЕ ПОГРЕШНОСТЬ Е=’Е
INPUT ’ ЗАДАЙТЕ U, X ’ U.» Xs LETA= < X/2 ) "U s LETB=X»X/4s LET I =0 s L ETP=1
LET 1=1 + 1:LETP=P*I: IF I<U THEN 45
LETR=1/P:LET6=<3«U/4)*#PI:IF C=0 THEN FA
LETZ=SIN<Q):60T0 70
LETZ=C0S<0)
70 LETS=R*ZsLETK=0
80 LETK=K+1s LETR=R*B/Kz(K+U >!LETQ= < 3*U/4+K/2> *#PI
82 IF Q<2*#PI THEN 90
85 LETQ=Q-2«#PIsGOTO 82
90 IF C=0 THEN 110
100 LETZ=SIN(Q)86OTO 120
110 LETZ=COS(Q)
120 LETW=S!LETS=S+R*Z
125 IF ABSCZXE THEN 80
130 IF ABS<S-W)>=E THEN 80
140 LETS=S»A!IF C=1 THEN 160
150 PRINT’BERU<X)=’Ss0OTO 40
160 PRINT’BEIUCX)=’S’BOTO 40SENTJ
157
Программа 6.24.
10 PRINT'ВЫЧИСЛЕНИЕ ФУНКЦИЙ ERFCX) И ERFC(X)'
20 INPUT'BBEAHTE Х='ХгLETR=1:LETS=X:LETN=0
30 LETN=N+1: LETK=2-*N+1sLETR=-R/N
40 LETUPS s LETS=S+< X’“K >*R/K
50 IF ABS(W-S>>=1E-10 THEN 30
60 LETE=2*S/SGR(#PI):PRINT'ERF(X> -' E
70 LETF=1-EsPRINT'ERFC<X)'F8GOTO 202END
В программе 6.24 вычисления заканчи- После этого находятся связанные с ней
ваются, когда очередной член ряда по абсо- функции Q (х) и А (х).
лютной величине становится меньше е =
05 PRINT'ВЫЧИСЛЕНИЕ ФУНКЦИЙ 2<Х)лР<ХЪQCX) И Й<Х)'
10 PRINT' С ПОМОЩЬЮ РАЗЛОЖЕНИЯ Р<Х> В РЯД'
20 INPUT'BBEAHTE Х='Х:LETZ=EXP<-X*-X/2>/SG!R<2*#PI)
30 PRINT'Z < X > ='Z:LETRS12 LETS=O:LETN=O
40 LETK=2*H+lsLETR»R*K:LETUPS
50 LETS=SKX~K)/R2LETN=N+1
60 IF 8-Ы>= IE-IS THEM 40
70 LETP=.5+S*Z2PRINT'P<X)='P
80 LETQ=1-P2PRINT'Q<X)='Q
90 LETA=2*P-12PRINT'A<X)='A:СОТО 20гEND
П p и м e p. erf (1) =0,842700793; erfc (1) =
= 0,1572992071 (/c«5 c), erf (2) =0,995322265
и erfc (2) =0,04677734976 (/c«12 c).
Интеграл вероятности erf x находится
также численным интегрированием. Так,
используя программу 4.42 и вводя Л=0,
В = х=0,5иМ=4, получим erf х=0,5204998779
при /с«6 с (неверен лишь последний знак).*
Гауссовское (нормальное) распределение
вероятности характеризуется следующими
основными функциями [36]:
Z(x)=—L_е-'2/2, Р (х) =-Z=- ( е~,2/2 dt,
. л/2Н J
Q(x) = l—Р(х) =
е~‘2/2 dt.
X
А (х)=2Р (х)-1=—L- f e~‘2/2dt.
Функцию Р (х) удобно вычислять раз
ложением в следующий ряд:
р (x)=y+Z (X) £ 1.3.5..... (2П-4-1) •
п — 0
Пример. Z (1) =0,2419707275, Р(1) =
= 0,8413447461, Q (1) =0,158655239, А (1) =
=0,6826894921 (/с«4 с), Z (5) = 1,486719515X
X Ю“6, Р (5)-= 0,9999997133, Q (5) =2,8668&Х
ХЮ"7 и Л (5) =0,9999994266 (/с«20 с).
Для уменьшения времени счета функции
erf х и Р (х) могут вычисляться с помощью
полиномиальной аппроксимации. Для функ-
ции erf х с погрешностью не- выше 1,5* 10“7
справедлива аппроксимация
erf х= 1 — (аи/Ч-аа/2-}- ... 4*йб/6) е~*2,
где /==1/(14-рХ), р=0,3275911, at =
= 0,254829592, а2 = — 0,284496736, аз ==
= 1,421413741, а4= —1,453152027 и аб =
= 1,061405429.
С погрешностью менее 7,5*10 8 Р (х)
вычисляется по формуле
P(x) = l-Z(x) (6,/ + W2+ ... +Ы5),
где /= 1/(1 -£рх), р=0,2316419, д| =
= 0,31938153, 62 = - 0,356563782, Ь3 =
= 1,781477937, ^=-1,821255978 и />3 =
= 1,330274429.
С помощью программы 6.26 с примене-
нием этих аппроксимаций вычисляются сле-
дующие функции: Р (X)ssZ (х), Ф (X) =
«erf х, П(Х)зшР(х), Q(X)»Q(x) и
А (Х)^А (х).
Программа 6.26.
05 PRINT 'ВЫЧИСЛЕНИЕ ФУНКЦИЙ Р(ХЪ Ф(Х)л П<ХЪ QCX> И А(Х)'
10 INPUT 'ВВЕДИТЕ X='Xs LETY®l/<1 + -327591 Г*Х)
20 LETZ= < <1.0614054*V-1.453152)*Y+1.4214137 > *V
30 LETZ= <(< Z—.28449673)*Y+.2548295)* Y)/ЕХР(X^2)
40 LETF^l-Zfi LETY»1/<1+.2316419*X)
50 LETP=EXP<-X^2/2)/SQR<2*#PI)
60 LETZ=(<1.3302744*Y-1»821256>*Y+1«7814779>*Y
7© LETZ=< < < Z-.35656378> *Y+.31938153 >*Y)*P
80 PRINT!1.7!'Р(Х)='РгPRINT'Ф<Х)='F:LETZ=1-Z
90 PRINT'H(X>='Z2 PRINT'Q<X)='1-Z
100 PRINT'A(X)='2*Z-ls60T0 1©:END
158
Пример. Р (1) ==0,2419707245, Ф (1) =
=0,8413447497, П (1) =0,8413447497, Q (1) =
=0,1586552503 и Я (1) =0,6826894994.
§6.15. Некоторые статистические
функции
К основным статистическим функциям
относятся плотности вероятности и функции
распределения для различных законов рас*
пределения. В большинстве своем эти функ-
Таким образом, для реализации этих вы-
числений необходимо вычисление гамма-
функции Г (v/2). Поскольку указанные выше
функции обычно вычисляются при целых
v=l, 2, Г (Л) = Г (v/2) можно вычис-
лить по следующему алгоритму.
1. Если v = 1, А = 1/2 и Г (Л) =^.
2. Если v—четное число, то Г(Л) =
= (Л —1)!
3. Если v — нечетное число, то Г(Л) =
= (Л-1) (А—2) ... (1/2) ^л.
Программа 6.27.
85 PRINT*ВЫЧИСЛЕНИЕ ФУНКЦИЙ Х~2 РАСПРЕДЕЛЕНИЯ*
18 INPUT* ВВЕДИТЕ X~2,U 'ХлV:LETA=Uz2sLETB=X/2sLETC=A
28 LET6=lsIF INT<A>=8 THEN 48
38 FOR 1=1 TO A-1:LET6=6*IsNEXT Is GOTO 55
48 LET6=SQR(#PI)sIF C<1 THEN 55
58 LETD=D*C8LETC=C-ls6OTO 48sLETG=G*H/X
55 LETF«(X~<A-l)>/6/EXP<A>/<2~A>
68 PRINT'ЗНАЧЕНИЕ F<X~2/U)='F
78 LETS«88 LETK=8s LETW=8S LETZ«8: LETG=1
88 LETK=K+1s LETW=W+2s LETZ=Ss LETG=G*<U+W)
90 LETS=S+(XZ’K)/Gs IF SOZ THEN 88
180 LETP«2*X*F*<1+8)/UsLETQ=l~P
118 PRINT*ЗНАЧЕНИЕ Р<Хл2лU>=*P
128 PRINT'ЗНАЧЕНИЕ Q<X~2,U>='QsGOTO 18SENH
ции выражаются через элементарные и спе-
циальные функции включая последние для
нормального распределения (§ 6.14). В пер-
вом случае вычисление основных статисти-
ческих функций не представляет труда, а во
втором требует применения некоторых спе-
циальных приемов.
Распределение х2 характеризуется плот-
ностью вероятности
/ (х) «F (X) =xv/2“7(2v/2r (v/2) ev/2)
и функциями распределения (х=х2)
Р <Х- V) 2./2Г (v/2)
Пример. F (1,1) =0,2419707245,
Р (1,1) =0,6826894921, Q (1,1) =0,05121793333
(/с«4 с) и F (30,30) =0,05121793333,
Р (30,30) =0,534346291, Q (30,30) =0,465653709
(/с«20 с).
/-распределение характеризуется функцией
Для v четных функция / (х, v) вычисляется
разложением в ряд:
[1 |. я
14--у cos2 04-—cos4 04- ...
Q (х, v) =1 — Р (x/v) =
1-3-5
+ 2-4.6
(V-3)
(v-2)
cosv 2 0
_________!_____I f/2 -1 e - dt
~ 2,/2Г (v, 2) Г e
Вычисление P (x/v) выполняется разложе-
нием в ряд:
P(xA)=~f (X)[l +
а для v нечетных (кроме v=l, когда
/ (х, v) =20/л)
20 2 Г Г 2
/ (х, v) =——}----cos 0 < sin 0 I 1 cos2 04--.
л л ( I о
, 2>4... (v-3)
1-3... (v-2)
kL{ (v + 2) (v+4) ..
где 0 = arctg (x/^Jv).
Программа 6.28.
18 PRINT*ВЫЧИСЛЕНИЕ ФУНКЦИЙ I(X>U) Т-РАСПРЕДЕЛЕНИЯ*
28 INPUT*ВВЕДИТЕ X»U *Xz№LET6=1:LETF-1гLETA=1:LETE=8
30 LE I X=ATN < XzSQR c U ) ) J LETCCOS < X > “’2
40 IF U/2-INKU/2)«0 THEN 90
50 LETB=2*X/#PI:IF U«G THEN 148
68 LETG=U-1sLETD=3
78 LETE=E+3sIF E=G THEN 150
159
80 LETF»F*E/D*C>LETA*A+FtLET0»D*2iG0T0 70
98 LET6«UiLETD«l
100 LETE®E*2tIF EM* THEN 130
110 LETF«F*D/E»C
120 LETA«A+FlLET0«D+2»60T0 180
130 LETZ«SIN<X>«A:GOTO 160
140 LETZ«BiGOTO 160
1S0 LETZ«2z#Pl*C0S<X>»SIN<X)»A+B
160 PRINT*ЗНАЧЕНИЕ I(X,U>*'Z160T0 208END
Пример. Для x = 2,13 и v= 10 получим
I (x, v) = 0,940978732.
Функция распределения Q (x) для F-pac-
пределения
Q W-
г pl±2L^(v,/2-,) (vi/v2)(v«/2) '
dy
пртгцелых vi вычисляется разложением в ряд
Q (х)=Г2/ф+-^(1-04~Ц£^х
V2 (v2~|~2) ... (v2-f-V| —4)
2.4..,(vi—2) X
x (i—o(v,"2)/2
а при целых v2
Q (x) = l-=-(l—0,|/i![l+-^-<+ V' 2.'4+2)X
I I v.» (v»...(vi 4~V2 —4) /(V2_2)/2
2-4...(v2 —2)
где / = v2/(v24-vix).
Если целыми являются vi и v2, берется
ряд для меньшего из них.
Программа 6.29.
Пример. Для х = 2,71, vj=6 и v2 = 7
получим Q (х) =0,1090775999, а для х=4.12,
vi = 4 и v2=10 получим
Q (х) = 0,03158204352.
В ряде случаев необходимо найти зна-
чение аргумента по заданному значению функ-
ции вероятности. Общим методом решения
этой задачи является решение нелинейного
уравнения F (х) — F0 = 0, где F (х) — функ-
ция и Fn — ее заданное значение. Однако
значительное сокращение времени вычисле-
ний достигается, если использовать аппрокси-
мацию для зависимости х от Fo. Например,
значение х=хр для заданной функции
Q (х) с погрешностью менее 4,5«10~4 вычис-
ляется с помощью следующей аппроксима-
ции [36], справедливой для нормального
распределения:
х о»-1-а।/4~а2Г
1+Ы+Ы2 + Ы3 ’
где
/=л/ЧтГ
P=Q(xP),
а0 = 2,515517,
а\ =0,802853, а2 = 0,010328, 6, = 1,432788, 62 =
= 0,189269 и />з = 0,001308. Если задана функ-
ция Р(хр)=ро, то вычисляется Q (хр) =
= 1—До, после чего находится хр.
1© PRINT*ВЫЧИСЛЕНИЕ ФУНКЦИИ Q<X> ^-РАСПРЕДЕЛЕНИЯ*
2© INPUT'ВВЕДИТЕ X,UbU2 *Х>В,С
30 LET GO< С+ХЖВ >:LETА®1s LETJ=1s LETK=1sLETK=1s LETI«0
40 LETFO25IF B/2-INT<B/2)=0 THEN 70
50 IF F-INT<F>=0 THEN 130
60 LETZ=0sGOTO 220
70 IF F-INT(F)=0 THEN 90
80 GOTO 100
90 IF B-C>»0 THEN 130
100 LETX=0!LETF=0SLETE=CSLETH^1-G
110 IF<B-2>/2=K THEN 190
120 LETK=(B-2)/2:GOTO 168
130 LETX=l!LETF=0sLETE=RsLETH=6
140 IFCC-2)/2=K THEN 19©
150 LETK«<C-2)/2
160 LETI«I+1SIF I=K THEN 190
170 LETF=F+2sLETJ=J*EzF*H!LETA==A+d
180 LETE«E*2sG0T0 160
190 LETA=A+J*E/<F+2>*HsIF X=8 THEN 210
200 LETH=l-GsLETZ=l-A*H^<Bx2)sG0T0 220
210 LETZ»A*G^<C/2)
220 PRINT'Q<X/UbU2)=*ZsGOTO 20SEND
160
Программа в.30.
10 PRI нт•• ВЫЧИСЛЕНИЕ ХР ПО ЗАДАННОМУ ЗНАЧЕНИИ» Р^Р»: ХР • '
20 INPUT-‘ВВЕДИТЕ Р>=1/2 Р=-‘ Р: LETO=1-Ps LElT=8QR(LUb( 1/0'0 ) ?
30 LET А= (.010328*Т+.802353)*Т+2.51551?
40 LETB= ((.001388#Т+. 189269 > =* Г+1.432788 .:» *Т
50 LETX=T-А/(1+8)SPRINT!1.4! ’ХР=‘Х:0ОТО 20:END
Пример. Для Р (х) =0,84134 получим
хр = 0,999 (точное значение 1), а для Р (х) —
= 0,53983 получим хр = 0,0998 (точное зна-
чение 0,1).
Через описанные выше специальные функ-
ции могут быть выражены и многие другие ста-
тистические функции для различных законов
распределения вероятностей. На основе при-
веденных выше программ могут быть состав-
лень! подпрограммы для вычисления спе-
циальных функций. Для современных ПЭВМ
с большим объемом ОЗУ (32 Кбайт и выше)
можно составить единую библиотеку подпро-
грамм специальных функций, что значи-
тельно расширяет функциональные возмож-
ности ПЭВМ в выполнении сложных мате-
матических и статистических расчетов. Для
ПЭВМ с графическими возможностями с по-
мощью описанных программ можно организо-
вать вычисление координат точек, необходи-
мых для построения графиков функций.
Следует отметить, что приведенные выше
расчеты не исчерпывают всего разнообразия
вычислительных задач, связанных с вычис-
лением специальных функций, применяемых
в различных сферах науки и техники.
6 В. П. Дьяконов
ГЛАВА 7
ПРИКЛАДНЫЕ ПРОГРАММЫ ТЕХНИЧЕСКИХ
И ЭКОНОМИЧЕСКИХ РАСЧЕТОВ
{7.1. Типовые электротехнические
расчеты
Расчет ослабления А (в децибелах)
Т- и Tl-образных аттенюаторов при произ-
вольных сопротивлениях Zo генератора и Z\
Преобразование звезды в треугольник
(рис. 7.1) и наоборот выполняется по фор-
мулам
R^ = R/R6, R3 = R/R4,
R = R4R5 Ч-
A~*Y
R4 = R\R2/R, R3==R2R3/Rf
Rb^RtRl/R', /? = /?i+/?2-F/?3.
Программа 7.1.
Пример. Для /?i = 12 Ом, /?2 = 47 Ом
и /?3 = 82 Ом (треугольник) получим /?4 =
= 4 Ом, = 27,333 Ом и R6 = 6,979 Ом
(звезда). Для /?4= 100 Ом, /?5=150 Ом и
/?6 = 220Ом (звезда) получим Ri =466,667 Ом,
Я2== 318,182 Ом и /?з = 700 Ом (треугольник).
Расчет сопротивлений аттенюаторов (рис.
7.2) при радных активных сопротивлениях
генератора Zo = Z и нагрузки Z»=Z по задан-
ному ослаблению А (в неперах):
5
Рис. 7.1. Звезда (а) и треугольник (б), составлен-
ные из резисторов
Тип аттенюатора
1 /? = Zsh А 21F = Z/th (Л/2) 2 fl/2 = Zth (Л/2) U7 = Z/sh Л 3 J? = Zth(4/2) 1F=Z/th(4/2) 4 K=eA — \
Программа 7.2. Пример. Для Z = 100 Ом и 4 = 1 неп получим нагрузки выполняется по формулам 4T=201g (((1 +AR1/R2) BR3+ARt)/C), 4„=2oig (((i+4«2/Zo) ад>+лг,)/с). где A = 1 A-Zq/Ri, B~ 1 + Zi//?3, C = Zo4-Zi.
Тип аттенюатора
1 2 3 4
Я= 117,520 Ом 21F=216,395 Ом Я/2 = 46,212 Ом W = 85,092 Ом Я = 46,212 Ом № = 216,395 Ом 1,718 ZX=171,818 Ом Z/K = 58.198 Ом
162
Программа 7.1.
10 PR I НТ'ПРЕОБРАЗОВАНИЕ ТРЕУГОЛЬНИКА В ЗВЕЗДУ-КОД ’*>
20 PRINT'ПРЕОБРАЗОВАНИЕ ЗВЕЗДЫ В ТРЕУГОЛЬНИК-КОД 1'
30 INPUT'ВВЕДИТЕ КОД ПРЕОБРАЗОВАНИЯ ? 'Ks IF K==l THEN ВО
40 INPUT'ВВЕДИТЕ R1/R2/R3 'R1/R2/R3
50 LETR=Rl+R2+R3sLETR4=Rl#R2zR
60 LETR5«R2*R3zR: LETR6=R3*R1/R
70 PRINT'R4='R4' R5«'R5' R6='R6:60T0 30
B0 INPUT'ВВЕДИТЕ R4/R5/R6 'R4/R5/R6
90 LETR=R4*R5+R5*R6+R6*R4
100 LETR1«R/R5s LETR2=R/R6sLETR3=RzR4
110 PRINT'R1='R1' R2«'R2' R3='R3:60T0 38SEND
R^Rfe R^R/2
Рис. 7.2. Резистивные аттенюаторы четырех типов
Программа 7.2.
IO PRINT'РАСЧЕТ СОПРОТИВЛЕНИЙ АТТЕНЮАТОРОВ'
15 PRINTI5.3!' ПО ЗАДАННОМУ ОСЛАБЛЕНИЮ А'
20 INPUT'ВВЕДИТЕ ВХОДНОЕ И ВЫХОДНОЕ СОПРОТИВЛЕНИЯ Z='Z
25 INPUT'BBEAHTE ОСЛАБЛЕНИЕ В НЕПЕРАХ А='AsLETB=Az2
30 INPUT'ВВЕДИТЕ ТИП АТТЕНЮАТОРА Ь2/3 ИЛИ 4 ?'С
40 IF С=1 THEN 80
50 IF С=2 THEN 90
60 IF С=3 THEN 100
78 PRINT'AIТЕНЮATOP 4 ТИПА'
75 PRINT'R='Z*HTN<B>' ON W«'Z/HTN<B>' OM'sGOTO 20
80 PRINT'АТТЕНЮАТОР 1 ТИПА'
85 PRINT'R='Z*HSN<A)' ON 2*W='ZzHTN(B)' 0M's60T0 20
90 PRINT'АТТЕНЮАТОР 2 ТИПА'
95 PRINT'R/2='Z*HTN(B)' ОМ Ы='Z/HSN<A)' OM'SSOTO 20
100 PRINT'АТТЕНЮАТОР 3 ТИПА':LETK=EXP<A)-1
110 PRINT'K«'K' Z*K»'Z*K' OM Z/K='Z/K' OM'sfcOTO 208END
Программа 7.3.
IO PRINT'РАСЧЕТ ОСЛАБЛЕНИЯ T- И П-ОБРАЗНЫХ АТТЕНЮАТОРОВ'
2© INPUT'ЗАДАЙТЕ В ОМАХ 20/Z1 'K/L
30 INPUT'ЗАДАЙТЕ В ОМАХ R1/R2/R3 'H/bJ
40 LETА=1+КУ№LETB=1+Lz.J:LETC=K+L
50 LETF=20i*L0T < 1+AmH/I )*B+A*H)/C)
60 LET6=20#L6T <(K*(1+A*I/К > *B+A#L> zC >
70 PRIHT'ОСЛАБЛЕНИЕ AT='F' ДБ'
80 PRINT'ОСЛАБЛЕНИЕ АП='Б' ДБ'вВОТО 20SEHD
Пример. Для Zo —2i=50 Ом, #i =
= 75 Ом, R2 = 38 Ом и #з=19 Ом получим
Дт= 11,469 дб, Дп= 14,560 дб.
Расчет сопротивлений согласующего де-
лителя (рис. 7.3) и вносимого им ослабления
выполняется по формулам
Ri—Zo^/T—Zi/Zo, #2 = Z]/’\/l Zi/Zo,
Lmhh = 20 log (V-Zo/Zi — 1).
6*
Рис. 7.3. Согласующий резистивный делитель
163
Программа 7.4.
10 PRINT*РАСЧЕТ СОПРОТИВЛЕНИЙ И ОСЛАБЛЕНИЯ РЕЗИСТОРНОГО ДЕЛИТЕЛЯ*
20 INPUT*ВВЕДИТЕ В ОМАХ СОПРОТИВЛЕНИЯ ZO/ZI *20/31:LETK=Z1/ZO
30 LETR1=Z0*SQR<1-К):LETR2=Z1#SQR< 1 -К)
40 LETL=20*L6T < SQR <1/К>+SQR<1/К-1)> s PRINT’5.31 * R1 = * R1 * OM*
50 PRINT*R2=*R2* OM*sPRINT*ОСЛАБЛЕНИЕ L MIN=*L* ДБ*:БОТО 20sEND
Пример. Для Zo = 5OO Ом и Z\ =200 Ом
получаем #i =387,298 Ом, #2 = 258,199 Ом
и Амин = 8,961 дб.
Расчет сопротивлений Т- и П-образного
аттенюаторов по заданным входному Zo и
выходному Z\ сопротивлениям и коэффи-
циенту ослабления мощности N выполняется
с помощью следующих выражений:
Т-образный аттенюатор
Sl=z,(^±L)_fc.
где #з= V^ZoZi,
П-образный аттенюатор
1 __ 1 ( Af-hl \ 1
Я, “ Zo \ Af-l J Яз ’
1 1 / Af-H \ 1
/?2 Zi\N-\) #з ’
= 50 Ом и М=100 для П-образного атте-
нюатора /?1 = 136,147 Ом, #2 = 56,990 Ом и
#з = 350,018 Ом.
Сопротивление последовательной (рис.
7.4, а) и параллельной (рис. 7.4, б) RCL
цепей рассчитывается по формулам (ш = 2л/,
где f — частота).
Цепь последовательная
Z=^R±]uL = X + jYy
|Z|=-Vtf2+(<oL-l/<oC)2,
n . / oiL— 1 /о)С \
0==arCtg(-----R^-----) '
Цепь параллельная
Ъ—j (u>C—l/<aL)
Z = *----------------=X +/Y.
‘ + (<oC—1/<oL)2
R
|2|=717₽2+(<оС-1/ш£)2 ,
1 2 П\Г
#3“ К-1 V ZoZi
Программа 7.5.
0 = arctg
Mi-#
10 PRINT*РАСЧЕТ T- И П-ОБРАЗНЫХ АТТЕНЮАТОРОВ*
20 PRINT*ПО ЗАДАННОМУ ОСЛАБЛЕНИЮ МОЩНОСТИ N*
30 INPUT*ВВЕДИТЕ В ОМАХ СОПРОТИВЛЕНИЯ 20/ZI *Z0/Z1
40 INPUT*ВО СКОЛЬКО РАЗ (Ю ОСЛАБЛЯЕТСЯ МОЩНОСТЬ Н=? *Н
50 LETK=<N+l)z<N-i)
60 INPUT*ЗАДАЙТЕ КОД 0-Т И 1-П ? *С
?0 IF С=1 THEN 100
SO LETR3=2:*SQR<N*Z0*Z1>/(N-1)
90 LETR1=Z0*K-R3:LETR2=Z1*K.-R3S6OTO 130
100 LETO=2*S6R<N/Z0/Zi:)/<N-l)’.LETR3=l/&3
110 LET61=K/Z0-h3:LET&2=KzZl-&3
120 LETRl=lzGl;LETR2=b-B2
130 PRINT•5«3!*Rl=*R1* P2=*R2* R3=*R3:60T0 4©SEND'
Пример. При Zo = 2OO Ом, Zi = 100 Ом
и W = 50 для Т-образного аттенюатора на-
ходим R\ —167,347 Ом, /?2== 63,265 Ом и
Яз = 40,816 Ом, а при Zo=lOO Ом, Zi =
где |Z| —модуль полного (комплексного)
сопротивления, 0 — угол сдвига фаз, X —
действительная и Y — мнимая составляю-
щие Z.
11
а
R2
Рис. 7.4. Последовательная (а) и параллельная (б) LCR цепи и колебательный контур (в)
164
Программа 7.6.
10 PRINT'СОПРОТИВЛЕНИЕ LCR ЦЕПЕЙ'
20 PRIНТ'ЗАДАЙТЕ КОД О-ЕСЛИ ЦЕПЬ ПОСЛЕДОВАТЕЛЬНАЯ'
30 INPUT'И КОД 1-ЕСЛИ ЦЕПЬ ПАРАЛЛЕЛЬНАЯ ? 'К
40 INPUT'ВВЕДИТЕ В ОМАХ СОПРОТИВЛЕНИЕ R='R
5© INPUT'ВВЕДИТЕ В МИКРОФАРАДАХ ЕМКОСТЬ С='С:LETC=C/1E6
60 INPUT'ВВЕДИТЕ В МИЛЛИГЕНРИ ИНДУКТИВНОСТЬ L='LsLETL=L/1E3
65 INPUT'ЗАДАЙТЕ В ГЕРЦАХ ЧАСТОТУ F«'F
70 LETW=2*#PI*F:IF К»1 THEN 10О
80 LETX=R:LETV= < W*L-1/М/С)s LETG=ATN <V/X>
90 LETZ=SQR<X*X+Y*V):GOTO 130
100 LETA«W*C-1/W/L s LETB=1/R/R+АжA
110 LETXM/R/B8LETY=-A/BsLETZ==l/SQR(B)
120 LET6=ATN<A*R>
130 PRINT'КОМПЛЕКСНОЕ СОПРОТИВЛЕНИЕ Z«'X' +
140 PRINT'МОДУЛЬ /Z/='Z' OM'
150 РВ1МТ'ФА30ВЫй УГОЛ &='6*180/#PI' ГРАДУСОВ'
160 60T0 65’. END
Пример. Для последовательной RCL
цепи при R = 10 Ом, 6 = 5 мкФ, 6 = 20 мГн
и f = 60 Гц получим Х=10 Ом, Y —
= —522.977 Ом, \Z\ =523,072 Ом и 6=6 =
= —88,905°. Для параллельной RCL цепи
при /? = 47 Ом, 6=1 мкФ, 6 = 30 мГн и
f = 50 Гц получаем X = 1,827 Ом, Y = 9,085 Ом,
IZI =9,267 Ом и 0=6 = 78,628°.
Сопротивление резонансного контура (рис.
7.4, в) Z и его резонансная частота fo вы-
числяются по формулам (ш = 2л/)
fo=l/2n \jLC,
Z = X + jY =
__R1R2 (/?i “Ь R2) И- R1 (<oL — 1 /<oC)2 .
(/?i+/?2)2+(<»Z.-1/wC)2 +
/?? ((oZ.-1/toC)
+ ‘ (/?,+/?2)2+(o>£-1/<oC)2 ’
IZI =л/х2+У2, 6 = arctg (Y/X).
Программа 7.7.
Пример 1. Определить токи /ь /2 и /3
в мостовой схеме (рис. 7.5), содержащей три
контура. Применяя метод контурных токов,
задаем произвольные направления токов и
составляем уравнения для контуров. Каждое
уравнение базируется на том, что сумма
э. д. с. и падений напряжения на резисторах
каждого контура равна 0.
в 1
10 PRINT'ВЫЧИСЛЕНИЕ СОПРОТИВЛЕНИЯ РЕЗОНАНСНОГО КОНТУРА'
15 INPUT'ВВЕДИТЕ В ОМАХ СОПРОТИВЛЕНИЯ RbR2 'R,S
20 INPUT'ВВЕДИТЕ В МИЛЛИГЕНРИ ИНДУКТИВНОСТЬ L='L5 LEHM Z1E3
30 INPUT'ВВЕДИТЕ В МИКРОФАРАДАХ ЕМКОСТЬ C='CS LETC=C''1E6
40 INPUT'ЗАДАЙТЕ В ГЕРЦАХ ЧАСТОТУ F='F
50 LETbJ=2*#PI*F
60 LETU==W*L-1/W/С8 LETT=(R+S>~2+W~2
70 LETX=<R*S*<R+S)+R*U*W)/T
80 LETY=R*R*W/TsLETZ»SQR<X'*X+Y*Y>sLETS=ATN<V/X)
90 PRINT'РЕЗОНАНСНАЯ ЧАСТОТА FO='l/2/#PI/SQR(L*C>
100 PRINT'КОМПЛЕКСНОЕ СОПРОТИВЛЕНИЕ Z='X' «• J*('V'>'
110 PRINT'МОДУЛЬ zZ/='Z' OM'
120 PRINT'ФАЗОВЫЙ УГОЛ Q='180*S/#PIs60T0 408END
Пример. Для Ri=20 Ом, R2 — 15 Ом,
6 = 0,5 мкФ, 6 = 20 мГн, f = 60 Гц находим
/0 = 60 =1591,549 Гц, Х = 20,000 Ом, Г =
= —0,076 Ом, \Z\ =20,000 Ом и 0 =
= -0,216°.
Расчеты сложных цепей выполняются на
постоянном токе методами контурных токов
и узловых потенциалов. В конечном счете
они сводятся к решению линейных или нели-
нейных систем уравнений.
Койтур Уравнение контура
1 4/1 — 4/2 -I- 15/i - 15/з — 40 = 0
2 4/г — 4/14-8/2+Ю/2 — 10/з — 0
3 10/з — IO/2 + 1 /з + 15/з 15/1=0
В этих уравнениях коэффициенты перед
/1, /2, /з — сопротивления соответствующих
резисторов схемы (рис. 4.5).
165
После простых преобразований из этих
уравнений получаем систему линейных урав-
нений:
19/j — 4/2—15/3=40,
— 4/, 4-22/г— Ю7з = 0,
-15/14-10/2 4-26/3 = 0.
Решая ее, например, с помощью программы
44, получаем: /| = 7,860 А, /2 = 4,230 А и
/з=6,192 А.
Пример 2. Определить ток /к в инте-
гральной схеме токоотвода (стабилизатора
тока) (см. рис. 7,6). В общем случае это
достаточно сложная задача, требующая при-
менения громоздкой эквивалентной схемы
транзистора. Однако нормальная работа токо-
отвода обеспечивается при работе транзистора
в линейном режиме, когда /к = В/2 и /э =
= (В-|-/) /2 и напряжение база-эмиттер
,/ . (B4-1J/2
ибз = Шфт in ——-— --,
'эо
где т&2— константа, учитывающая реком-
формулы
//д = £/и<рт1п 4-1
\ <0
где /о — обратный ток диодов.
Итак, применяя метод узловых потенциа-
лов, получаем для токов Л и /2 следующую
систему нелинейных уравнений:
— /Лфт In---J-------Яэ (В4-1) /2п
I *30
1.^----------------------------------------,
где (Лм । = femq>T In ( — у Эта си-
стема непосредственно пригодна для реше-
ния ее методом простых итераций (см. § 4.4).
Учитывая самостоятельное значение рассчи-
тываемого узла, составим для решения -этой
системы отдельную программу.
Программа 7.8.
10 PRINT'РАСЧЕТ ТОКОВ В Сг.ЬИЕ ТОКООТВОДА'
20 INPUT'ВВЕДИТЕ K/FT/E/R1/R2/R3'K/F/E/R/Z/ Ы
30 INPUT'ВВЕДИТЕ М/10/1Э0/В'М/I/J/B
35 INPUT'ЗАДАЙТЕ ПОГРЕШНОСТЬ РЕЗУЛЬТАТА Н='Н
40 INPUT'ЗАДАЙТЕ НАЧАЛЬНЫЕ ТОКИ 110/128'Х/YsLETB=B+l
50 LETA=N*F!LETH=A*K
60 LETC=D*L06<<X-Y)zl+1>
70 LETX=<E-C)zRsLETT=Y
80 LET Y= < C-A*LOG < B*Yz J ) -WB*Y > zZ
80 IF ABS<Y-T)>H THEN 60
10© PRINT'TOK 11='Xs PRINT'TOK 12='Y
110 PRINT'НАПРЯЖЕНИЕ НА ДИОДАХ UH='C
120 PRINT'ТОК КОЛЛЕКТОРА IK='Y*<B-1)
130 END
бинацию носителей в эмиттерном переходе,
^r — kT/q — тепловой потенциал (k — посто-
янная Больцмана, Т — температура, q —
заряд электрона), В — коэффициент передачи
тока базы и /эо — обратный ток эмиттерного
перехода.
Рис. 7.6. Интегральная схема токоотвода
Падение напряжения на k диодах цепи
базового смещения можно найти с помощью
166
Пример. Для k — 2, <рт = 0,025 В, Е = 5 В,
Я| = 2 кОм, Я2 = 20 кОм, Яэ==0,1 кОм, /п = 2,
/о=Ь1О 6 мА, /Эо-М0"7 мА, В = 50,
погрешности //=1-10’6, начального значе-
ния /2о = 0,01 мА, /ю=1 мА получаем:
/1 = 1,781 мА, /2 = 0,02472 мА, (/д= 1,4379 В
и /к = 1,2358 мА.
§ 7.2. Расчет индуктивных
элементов
Расчет индуктивных элементов сводится
к расчету индуктивности L элемента задан-
ной конструкции или какого-либо парамет-
ра последней при заданной индуктивности.
Для большего числа индуктивных элементов
существуют достаточно простые формулы
для практических расчетов индуктивности L.
Приводим для справок основные из них
с контрольными примерами (L в наногенри,
размеры в сантиметрах) [22].
1. Индуктивность отрезка круглого про-
вода длиной / и диаметром d
L=.2/(arshl- + 4-^/(?j"+l)-
Для /=1 см и i/=0,1 см L = 4,186 нГн.
2. Индуктивность отрезка провода прямо-
угольного сечения (ширина Ь, толщина /)
длиной / L = 2/(ln-^-+0,4471±£-+-1).
Для 6 = 0,1 см, / = 0,001 см и /=1 см L —
= 7,017 нГн.
3. Индуктивность одиночного круглого
витка диаметром D и диаметром провода ч!
£ = 2ло(1п-^—1,75). Для £> = 2 см и
d = 0,l см L = 41,785 нГн.
4. Индуктивность тонкопленочного круг-
лого витка диаметром D и шириной полоски
6»/ (/ — толщина полоски) £ = 2л£>Х
Х^1п ^-—^-^ — 2,450. Для 6 = 0,01 см и
D—\ см L = 25,083 нГн.
5. Индуктивность тонкопленочного квад-
ратного витка со стороной квадрата I и
шириной полоски 6>/ £ = 8/ ^1п —2,583^ .
Для /=1 см и 6 = 0,01 см £ = 30,653 нГн.
6. Индуктивность однослойной катушки
круглого сечения со средним радиусом R и
длиной катушки / £=4лш2 R I |п ( 1 —5- )_[_
2,3+ 1,6///?4-0,44 (//Я)2]’ Фо₽мула обес'
печивает погрешность менее 0,1 %. Для
R=\ см, / = 2 см и о) = 10 имеем £ =
= 1359,627 нГн.
7. Индуктивность однослойной катушки
квадратного сечения со средней длиной
стороны квадрата 2Q и длиной всей
намотки / £=16» (о2а Г1 n f 1 -|- +
L \ (Ь/а) )
+ 3,64 + 2 (//а)+0,51 (//а)2 ] 'Для а = 1 см’
/ = 2 см и (о = 4О имеем £ = 26816 нГн.
8. Индуктивность тороидальной однослой-
ной катушки с тором круглого сечения со
средним диаметром тора D и диаметром
сечения Dr.
£ = 2лй)2 (D-VD2-D?). (7.1)
Для £> = 3 см, £>i = l см и to = 300 имеем
£ = 83486 нГн.
9. Индуктивность тороидальной однослой-
ной катушки квадратного сечения с внутрен-
ним диаметром тора £>i, наружным D2 и
высотой h
L = 2<^h In (£)2/£>i). (7.2)
Для £>2 = 3 см, D| = 1 см, h~\ см и to =100
имеем £ = 21972 нГн.
10. Индуктивность многослойной торо-
идальной катушки со средним диаметром
тора Р (включая обмотку) и диаметром
сечения тора D\
£ = 2n£>(o2Qn-^--l,75
(7.3)
Формула справедлива при плотной намотке
и при условии, что толщиной изоляции про-
вода можно пренебречь. Для £> = 4 см,
£>i=0,8 см и о)= 100 имеем £ = 487293 нГн.
11. Индуктивность многослойной короткой
цилиндрической катушки со средним диа-
метром £>, длиной 1<.D и толщиной обмот-
, 25лю2 (D2)
КИ С L 3D+91+Юс '
Для £> = 2,5 см, /=1 см, с=1 см и
о) = 100 имеем £=185235 нГн.
12. Индуктивность катушки на тороидаль-
ном ферромагнитном сердечнике прямоуголь-
ного сечения с плотной намоткой
, 4р£ (dH — da) со2 , . , . _ . _ ..
L= (d.+d.) при 1,5^2, (7.4)
£ = 2(o2|a£ In (dH/dB) при dH/dB> 1,54-2, (7.5)
где p, — магнитная проницаемость сердеч-
ника, h — его высота, d„ и dB — наружный
и внутренний диаметры кольца. Для dH =
= 4 см, dB — 2 см, 6=1 см, р=1000, to =120
имеем £=19962638 нГн, а при dB = 3 см и
(о = 200 (остальные данные прежние) £ =
= 22857142 нГн.
13. Индуктивность катушек на П- и 111-
образных замкнутых ферромагнитных сердеч-
, 4nu,Fc(ir
никах £= -.., где Fc — пло-
Im ( 1 + Щк/alm)
щадь поперечного сечения сердечника, di —
толщина зазора, 1т — длина магнитной линии
сердечника, а— 1 — 2 — поправочный коэффи-
циент на рассеивание в зазоре.
Для А=1 см2, (£ = 0,05 см, £п=10 см,
а =1,5, р= 1000 и (о = 400 имеем £ =
= 46398906 нГн.
Рис. 7.7. Броневой цилиндрический сердечник
14. Индуктивность катушки в броневом
цилиндрическом сердечнике (рис. 7.7)
j _ 19,74И(о2
Л4-В ’
(7.6)
где
А = (Л, +/12) ( ' + . (7.7)
\(/4 —аз d2 — d\J
В= 1 г In (
{ h2 — hi \ d\-\-d2 /
(7.8)
167
Для di = 1 см, dz — 2 см, d$ —4 см, 4/4 = 5 см,
hi =3 см, Аг=4 см, ц=10 и (0 = 100 имеем
Л = 468914 нГн.
15. Индуктивность тонкопленочных кату-
шек L=ki (4н+Лв11) о>5/31п (k2 -41+ \ ,
\ Аи— Двн /
где А| = 2,33 и А2=4 для спиральной (круг-
лой) катушки, ^1 = 12,05 и А2=8 —для
квадратной, Ан и Ави — наружный и внут-
ренний размеры. Для спиральной катушки
с (о = 5, Лн = 1 см и Двн = 0,5 см получим
L = 126,972 нГн.
16. Взаимная индуктивность двух тонких
проводов длиной /, расположенных парал-
лельно на расстоянии /г, At = 2/ ^arsh
+т~~\Кт) +1) • Для Л=1 см и
/=10 см £=41,865 нГн.
17. Взаимная индуктивность двух тонких
проводов длиной а и 6, расположенных на
одной прямой с расстоянием между стыкуе-
мыми концами A, А4= (а + 64-Л) In (аЧ-
+ &Ч-А) + A In A—(a-f-A) 1п“(а4-А) — (А +
-j-A) In (A-hA). Для а=10 см, 6 = 5 см и
А=1 см At = 7,234 нГн.
18. Взаимная индуктивность двух прово-
дов длиной /, сходящихся в одной точке
с расстоянием между сходящимися концами
и углом между ними <р, At = 2/ cos <р In (1 +
+ 2Z/C).
Для /=20 см, с = 5 см и ф=30° полу-
чим At = 76,l 14 нГн.
19. Взаимная индуктивность двух тонких
круглых катушек с диаметром D и средним
расстоянием между ними Я At = 0,6(О1(й2П4/Я3,
няющей весь сердечник), / — длина средней
окружности тора.
Однократные расчеты по приведенным j
формулам целесообразно выполнять в каль- 1
куляторном режиме. |
Пример 3. Определить взаимную ин- |
дуктивность катушек (см. 20), если <di =200, j
(о2 = 50, Fcep= 1 см2 и /=8 см. Обозначив -
(oi = Wl, <o2 = W2, Fcep = F и /=Я, выполняем ;
следующие операции:
Wl=200 ПС
W2 = 50 ПС
F=1 ПС
Н = 8 ПС
(ввод (01)
(ВВОД (О2)
(ввод Fccp)
(ввод /)
PRINT 4*#PL*W1*W2*F/H ПС
Получаем значение £=15707,96327 нГн.
При многократно повторяющихся вычис-
лениях и при громоздких формулах расчеты
L, «о или других параметров катушек целе-
сообразно выполнять по программам. По-
скольку составление программ формульного
счета достаточно просто, ограничимся при-
ведением нескольких характерных примеров.
Пример 4. Составить программу для
расчета числа витков, необходимых для полу-
чения заданной индуктивности L для трех
типов тороидальных катушек: 1 — однослой-
ной круглого сечения, 2 — однослойной прямо-
угольного сечения и 3 — многослойной круг-
лого сечения. Необходимо использовать фор-
мулы (7.1) — (7.3), разрешив их относи-
тельно (о, и предусмотреть выбор типа
катущки и расчет по соответствующей для
нее формуле. Это можно сделать вводом
кода, указывающего на тип катушки, и ис-
пользованием в программе условных пере-
ходов для выбора нужной формулы.
Программа 7.9.
10 PRINT 'ЧИСЛО ВИТКОВ ТОРОИДАЛЬНОЙ КАТУШКИ'
20 PRINT ‘ОДНОСЛОЙНОЙ/ КРУГЛОГО СЕЧЕНИЯ КОД 1'
30 PRINT 'ОДНОСЛОЙНОЙ/ ПРЯМОУГОЛЬНОГО СЕЧЕНИЯ КОД 2'
40 PRINT лМНОГОСЛОЙНОЙ/ КРУГЛОГО СЕЧЕНИЯ КОД 3'
45 INPUT ‘ВВЕДИТЕ КОД' N. IF N=1 THEN 70
50 IF N=3 THEN 70
60 INPUT 'ВВЕДИТЕ ВЫСОТУ СЕЧЕНИЯ Н='Н
70 INPUT ‘ВВЕДИТЕ ДИАМЕТР D='D
80 INPUT ‘ВВЕДИТЕ ДИАМЕТР Х=‘Х
90 INPUT 'ВВЕДИТЕ ИНДУКТИВНОСТЬ L='L
100 IF №1 THEN 140
110 IF N=2 THEN 160
120 IF N=3 THEN 180
130 PRINT 'КОД НАБРАН НЕВЕРНО' : GOTO 45
140 LET W=SQR<Lz<2*#PI«(D-SQR<D'’'2*-X’'2>) ) >
150 GOTO 190
160 LET W=SQR(L/C2*H»L0G<D/X>))
170 GOTO 190
180 LET W=SQR(L/<2*#PI*D*(L0G<8*D/X>F1.75)>)
190 PRINT ‘ЧИСЛО ВИТКОВ H=‘W
200 GO10 90 s END
где «л и (o2 — число витков катушек. Для
(01==Ф2 = 5О, D — 2 см и Я=0,5 см А4 =
= 192000 нГн.
20. Взаимная индуктивность двух коакси-
альных катушек, намотанных на общий
тороидальный сердечник (материал не ферро-
магнитный), М = 4«(ol(o2Fccp//. где Fccp — пло-
щадь среднего поперечного сечения (с учетом
толщины обмотки первой катушки, запол-
Пример.
Код 1
D = 3 см
D1 =Х=1 см
L== 1 -105 нГн
со = W = 304,569
Код 2
А = Н = 1 см
D = 3 см
D1=X=1 см
L=l-106 нГн
a) = W = 213,335
168
Код 3
D = 4 см
Dl=X = 0,8 cm
L=l-107 нГн
w = W = 453,007
В ряде случаев зависимость L от со или
от другого параметра х неразрешима отно-
сительно искомого параметра х при задан-
ном Lq. В этом случае значение х может
быть получено из решения нелинейного урав-
нения
Пример 5. Составить программу для
расчета числа витков катушки на тороидаль-
ном сердечнике, используя при dH/dB<l,75
формулу (7.4), а при dH/dB^l,75— фор-
мулу (7.5).
Программа 7.10.
Lq — Е (х) =0
(7.12)
подходящим численным методом. Удобным
является метод поразрядного приближения,
при котором не требуется анализа, сходи-
мости и приближение L (х) к значению /о
10 PRINT'РАСЧЕТ L ИЛИ Ы КАТУШКИ НА ТОРОИДАЛЬНОМ'
20 PRINT' ФЕРРОМАГНИТНОМ СЕРДЕЧНИКЕ'
30 PRINT'НЕИЗВЕСТНОМУ L ИЛИ Ы ЗАДАЙТЕ НУЛЕВОЕ ЗНАЧЕНИЕ'
35 INPUT'ВВЕДИТЕ ВНЕШНИЙ И ВНУТРЕННИЙ ДИАМЕТРЫ ТОРА D/D1 'ПИ
40 INPUT'ВВЕДИТЕ ВЫСОТУ ТОРА Н='Н
50 INPUT'ВВЕДИТЕ ОТНОСИТЕЛЬНУЮ МАГНИТНУЮ ПРОНИЦАЕМОСТЬ М=='М
60 INPUT'ЗАДАЙТЕ ИНДУКТИВНОСТЬ КАТУШКИ L='L
70 INPUT'ЗАДАЙТЕ ЧИСЛО ВИТКОВ КАТУШКИ Ы«'Ы
80 LETK=D/ISLETA=0SIF К<1.75 THEN LETA==1
90 IF А=0 THEN 110
100 LETF«<D+IV4/M/H/<D-I)sGOTO 120
110 LETF=l/2/M/H/L0G<D/I)
120 IF Ы«0 THEN 140
130 PRINT'ИНДУКТИВНОСТЬ L='W*W/FsGOTO 60
140 PRINT'ЧИСЛО ВИТКОВ Ы='SQR(L*F)sGOTO 60s END
Для dH = D~4 cm, dB = D\ = 2 cm, h = H =
= 1 см, p =/4 = 1000, L = 2-107 нГн полу-
чим 0 = 1^=120,112, а для Z) = 4 см, Dl =
= 3 см, H=\ cm, /4=1000 и L = 2• 107 нГн
получим W— 187,083.
Пример 6. Составить программу для
расчета L по заданному со или со по задан-
ному L для катушки на броневом сердеч-
нике. Для этого формулу (7.6) представим
в виде
L — w2/F, (7.9)
w = (7.10)
Г=(4+В)/(19,74И), (7.11)
где А и В определяются выражениями (7.7)
и (7.8). Для вычисления Е (по заданному со)
или со (по заданному L) удобно неизвест-
ному параметру задавать при вводе нулевое
значение и с помощью оператора условного
перехода задавать вычисления по нужной
формуле— (7.9) или (7.10).
Программа 7.11.
происходит при увеличении х с 0. Последнее
исключает необходимость в задании началь-
ного интервала изменения L (х), который за-
ведомо неизвестен.
Пример 7. По технологическим сообра-
жениям внутренний размер ЛВН = Л и шаг
витков Z тонкопленочных катушек должны
быть заданными величинами. Найти число
витков тонкопленочной катушки для этого
случая при заданной индуктивности /о.
Зависимость L (со) в этом случае имеет
вид
£(<») =
^.+1„ [.(.+□],
Приведенная ниже программа решает урав-
нение (7.12) при х —со методом поразряд-
ного приближения и выдает результат
с заданной погрешностью решения e = Q (это,
однако, не означает, что погрешность расче-
10 PRINT'РАСЧЕТ L ИЛИ Ы КАТУШКИ НА БРОНЕВОМ'
20 PRINT' ФЕРРОМАГНИТНОМ СЕРДЕЧНИКЕ'
30 INPUT'ВВЕДИТЕ ДИАМЕТРЫ DbD2/D3,D4 'O/P/Q/R
40 INPUT'BBEAMTE РАЗМЕРЫ НЬН2 'НИ
50 INPUT'ВВЕДИТЕ ОТНОСИТЕЛЬНУЮ МАГНИТНУЮ ПРОНИЦАЕМОСТЬ М='М
60 LETА= < Н+1)ж <1/< РжР-0ж0 у+1х <РжР-ОжО))
70 LETB=LOG<(R+Q >/< Р+О)> х(I-Н):LETF== < А+В)/19.74/М
80 PRINT'НЕИЗВЕСТНОМУ L ИЛИ Ы ЗАДАЙТЕ НУЛЕВОЕ ЗНАЧЕНИЕ'
90 INPUT'ВВЕДИТЕ L/Ы 'L/WiIF Ы=0 THEN 110
100 PRINT'ИНДУКТИВНОСТЬ L=' WW/Fs GOTO 80
110 PRINT'HMCflO ВИТКОВ W='SQR(L*F):GOTO 80SEND
Для Z)1 = 1 cm, D2 = 2 cm, D3 = 4 cm,
Z)4=5 cm, //1=3 cm, /72 = 4 см, p=10,
/ = 5«10-5 нГн, задав U7 = 0, получим W —
= 103,261, а задав Ц7=100 и / = 0, получим
/ = 468914 нГн.
та со также равна е,— последняя прежде
всего зависит от погрешности исходной фор-
мулы для L, которая может быть сущест-
венно выше е).
169
Программа 7.12.
10 PRINT 'ЧИСЛО ВИТКОВ ТОНКОПЛЕНОЧНОЙ КАТУШКИ С ЗАДАННЫМ ШАГОМ'
20 INPUT'КРУГЛОй-КОД ЬКВАДРАТНОй-КОД 2. ВВЕДИТЕ КОД 'N
50 IF N=1 THEN 70
60 GOTO 80
78 LET К1=2.33 : LET K2=4 s GOTO 110
80 IF NO2 THEN 100
90 LET Kl=12.05 s LET K2=8 : GOTO 110
100 PRINT'KOA НАБРАН НЕВЕРНО':GOTO 20
110 INPUT 'ВВЕДИТЕ ВНУТРЕННИЙ РАЗМЕР A='A
120 INPUT 'ВВЕДИТЕ ШАГ Z='Z
130 INPUT 'ЗАДАЙТЕ ТОЧНОСТЬ РЕЗУЛЬТАТА Q='Q
140 INPUT'BBEAHTE ИНДУКТИВНОСТЬ L='LsLETW=0:LETH=1
160 IF ABS(H)<6 THEN 200
170 LETW=W+HsGOSUB 210s IF F/H>=0 THEN 170
190 LET H=-H/10 s GOTO 160
200 PRINT 'ЧИСЛО ВИТКОВ Ш='Ы : GOTO 140
210 LETV=<2*A/(W*Z))+1!LETF=L-K1*Y*Z*<W’<8/3))*LOG(K2*?>
220 RETURN : END
Для квадратной катушки (код 2) с А —
= 0,2 см, Z — 0,005 см, Л = 100нГни8=1-10~3
получим 1Г = 6,935.
Программная реализация расчетов индук-
тивных элементов целесообразна также, если
расчеты проводятся по многим сопряженным
формулам. Ниже даны два таких примера.
Пример 8. Расчет дросселя фильтра
на стальном О-, П- или Ш-образном сердеч-
никах. Задается индуктивность дросселя L
и рабочий ток обмотки I.
1. Определяется ширина стержня а —
= 2,6^/ZT^, на котором находится обмотка,
и сечение его Q=l,5a2.
2. Выбирается стандартный сердечник со
значениями а и Q, равными полученным
или несколько большими их. Для выбран-
ного сердечника известны ширина окна /?,
высота окна h и длина магнитной линии 1т.
3. Вычисляем толщину набора c — Q/a.
10 PRINT'РАСЧЕТ ДРОССЕЛЯ ФИЛЬТРА'
20 INPUT 'ВВЕДИТЕ ИНДУКТИВНОСТЬ L='L
30 INPUT 'ВВЕДИТЕ ТОК 1='I
40 LETA=2.6*<<L*(1Л2))Л<1/4)>
45 PRINT 'ШИРИНА СТЕРИНЯ А='А
58 LET Q=(A~2)*1.5
4. Вычисляем коэффициент k — LI2/aclni.
5. Используя аппроксимацию зависимости
оптимальной толщины воздушного зазора
/z% (в % от 1т) от находим по фор-
муле lz%~ (3304’ —15-10V).
Аналогично эффективную магнитную про-
ницаемость материала сердечника определяем
так: М—ц7— (114 ехр ( -4014) 4-50).
6. Находим половину длины оптималь-
ного зазора 1//2 — 1г%‘м/20-
7. Задав допустимую плотность тока в про-
воде обмотки, находим диаметр провода
rf=1.13 V/o/ft
8. Определяем число витков обмотки
о) = 10 ifLim/ 1,26|xzac.
9. Вычисляем коэффициент заполнения
окна сердечника 4М — 0,008о)(У2/6/г.
10. Находим омическое сопротивление об-
мотки дросселя г = 0,000225(о «2 (а 4-с) 4
4-л6/<А
Программа 7.13.
55 PRINT 'СЕЧЕНИЕ СЕРДЕЧНИКА Q='Q
60 PRINT 'ВЫБИРИТЕ СТАНДАРТНЫЙ СЕРДЕЧНИК ПО ЗНАЧЕНИЯМ А И Q'
70 INPUT 'ВВЕДИТЕ ШИРИНУ СТЕРШНЯ А И ОКНА В' Ал В
80 INPUT 'ВВЕДИТЕ ВЫСОТУ ОКНА Н='Н
90 INPUT 'ВВЕДИТЕ ДЛИНУ МАГНИТНОЙ ЛИНИИ L1='L1
95 INPUT 'ВВЕДИТЕ СЕЧЕНИЕ СЕРДЕЧНИКА Q='Q
100 LET C=Q/A
105 PRINT 'ТОЛЩИНА НАБОРА С='С
110 LET K=(L*< Г 2) )/<A«C*Ll >
115 PRINT 'ВСПОМОГАТЕЛЬНЫЙ КОЭФФИЦИЕНТ К='К
120 LET Х=330*К-15000*(К~2)
125 PRINT'ОПТИМАЛЬНАЯ ДЛИНА ВОЗДУШНОГО ЗАЗОРА Х='Х
130 LET М=114жЕХР(-401*К)+50
135 PRINT 'ЭФФЕКТИВНАЯ МАГНИТНАЯ ПРОНИЦАЕМОСТЬ М='М
140 LET Y=X*Ll/20
150 INPUT 'ВВЕДИТЕ ДОПУСТИМУЮ ПЛОТНОСТЬ ТОКА В ПРОВОДЕ Р='Р
160 LET D=SQR(I/P)*1.13
165 PRINT 'ДИАМЕТР ПРОВОДА D='D
170 LET U=10000‘*SQR<L*Ll/< 1.26*M*A*C) )
180 PRINT 'ЧИСЛО ВИТКОВ ДРОССЕЛЯ Ы='Ы
198 LETK1=0.008*W*<D~2)/< В*Н)
200 PRINT 'КОЭФФИЦИЕНТ ЗАПОЛНЕНИЯ ОКНА СЕРДЕЧНИКА ДРОССЕЛЯ К1='К1
210 LET R=0.000225W*(2*(A+C>+#PI*B)/(H'-2)
220 PRINT 'ОМИЧЕСКОЕ СОПРОТИВЛЕНИЕ ОБМОТКИ ДРОССЕЛЯ R='R
230 GOTO 10 s END
170
Для L —3-10 "4 Гн и /=15 А получаем
а~А —1,325 см и Q — 2,634 см2. Выбираем
из стандартного ряда сердечник, имеющий
а=1,6 см, Q = 2,65 см, 6 = 1,6 см, 6 = 4 см,
/т=13,7 см. Введя эти данные, получаем
С= 1,656 см, pz= 104,089 и /z/2 = 0,385 см.
Далее, введя 6 = 3 А/мм2, получаем d —
= 2,527 мм, <0 = 34,388, kM — 0,274 и г =
= 0,014 Ом.
Пример 9. Расчет силового трансфор-
матора, работающего от промышленной сети
переменного тока (частота 50 или 60 Гц).
10. Определяем число витков первичной
обмотки Д[/1)//.
Если трансформатор имеет несколько
вторичных обмоток, то их отдаваемые в на-
грузку мощности суммируются, так что
1 N
Ргаб~/1^7|=----- / где А — общее чис-
Т'ТР ( = 2
ло обмоток. При этом расчет ш,- и d, (i>2)
повторяется для каждой обмотки.
Программа 7.14.
10 PRINT'РАСЧЕТ СИЛОВОГО ТРАНСФОРМАТОРА'
20 INPUT'ВВЕДИТЕ ГАБАРИТНУЮ МОЩНОСТЬ Р='Р
30 INPUT'ВВЕДИТЕ МАКСИМАЛЬНУЮ ИНДУКЦИЮ В СЕРДЕЧНИКЕ !='!
40 INPUT'ВВЕДИТЕ ЧИСЛО СТЕРЖНЕЙ СЕРДЕЧНИКА С ОБМОТКАМИ S='S
50 INPUT'ВВЕДИТЕ ДОПУСТИМУЮ ПЛОТНОСТЬ ТОКА ПРОВОДОВ Р='Х
60 INPUT'ВВЕДИТЕ КОЭФФ. ЗАПОЛНЕНИЯ ОКНА СЕРДЕЧНИКА МЕДЬЮ КМ»'К1
70 INPUT'ВВЕДИТЕ КОЭФФ. ЗАПОЛНЕНИЯ СЕРДЕЧНИКА СТАЛЬЮ КС='К2
80 INPUT’ЗАДАЙТЕ К.П.Д. ТРАНСФОРМАТОРА N=’N
90 INPUT'ЗАДАЙТЕ ЧАСТОТУ СЕТИ F='F
100 INPUT'ВВЕДИТЕ ДЛЯ ПЕРВИЧНОЙ ОБМОТКИ UbU 'U1/I1
110 INPUT'ВВЕДИТЕ ДЛЯ ВТОРИЧНОЙ ОБМОТКИ U2,12 'U2,12
120 LETV=PzF/S/I/X/NzKl/K2z.0222sPRINT 16.3!'QCT*Q0»'V
130 PRINT'ПОДБЕРИТЕ ПОДХОДЯЩИЙ ТИП СЕРДЕЧНИКА И ДЛЯ НЕГО'
148 INPUT'ВВЕДИТЕ ПАРАМЕТРЫ А,В,С 'А,В,С
158 LETE=F*A*C*I*K2*444E-6SPRINT'Э.Д.С ОДНОГО ВИТКА Е='Е
160 LETW2=U2/EsLETWl=Ul/EsLETD2=l.13*SQR<I2zX>
170 LETC1=1.13*SQR<IlzX>sLETLl=Wl*<2*<A+C>+#PI»B)/100
180 LETU=2.25E-2*I1*L1/<D1''2)SLETM=<U1-U>/E
190 PRINT'ДИАМЕТР ПРОВОДА ПЕРВИЧНОЙ ОБМОТКИ B1='D1
200 PRINT'ДИАМЕТР ПРОВОДА ВТОРИЧНОЙ ОБМОТКИ D2='D2
210 PRINT'ЧИСЛО ВИТКОВ ПЕРВИЧНОЙ ОБМОТКИ Ы1='М
220 PRINT'ЧИСЛО ВИТКОВ ВТОРИЧНОЙ ОБМОТКИ U2='W2:ENB
При таких частотах несущественны индук-
тивности рассеивания и расчет может прово-
дится по следующей методике.
1. Задаем габаритную мощность транс-
форматора РГаб, максимальную индукцию
в сердечнике Вт, частоту сети Д число стерж-
ней сердечника с обмотками s, допустимую
плотность тока 6, к. п. д. трансформатора
цТр, коэффициент заполнения окна медью
/гм, коэффициент заполнения сердечника
сталью kc, напряжение U\ и (У2, первичную и
вторичную обмотки, токи Л и /2 этих обмоток.
2. Находим произведение сечений стали
Q„ и окна Qo: QCTQo = Pra6/(O,O222fBm6T)Tps/ec6M).
3. По значению QCTQo выбираем подходя-
щий тип магнитопровода, уточняем значения
Qct и Qo и определяем для выбранного сер-
дечника ширину стержня а, ширину окна b
и толщину набора с.
4. Находим э. д. с., наводимую в одном
витке e = 4,44fBmQCTfcc-10“4.
5. Вычисляем чИсло витков вторичной
обмотки (1)2=(/2/е.
6. Находим первое приближение для
числа витков первичной обмотки —
7. Находим диаметр проводов первичной
и вторичной обмоток (/, = 1,13 d? =
= 1,13у/7^6.
8. Вычисляем длину провода первичной
обмотки /1 = (О| [2 (а-|-с) Ч-лб] -10“ 2.
9. Вычисляем падение напряжения на оми-
ческом сопротивлении первичной обмотки
АС/, =2,25-
Для Ргаб = 215 Вт, Вт — 1,2 Тл, S = 2, Г =
= 50 Гц, 6 = 2 А/мм2, £с = 0,95, /гм=0,32,
т)тр = 0,96, (Л = 127 В, Z72 = 450 В, /, = 1,7 А
и /2 = 0,475 А находим QCTQ0 = 138,270 см2.
Подходящим является ленточный магнито-
провод (сердечник) ПЛ25Х50 —60 с сече-
нием стержня 25X50 мм и размерами окна
40X65 мм (а = 2,5 см, 6 = 2 см и с = 5 см).
У этого сердечника QCTQ0=162 см4. Введя
эти данные, получим d2 = 0,551 мм2, di =
= 1,042 мм, <о2= 1422,475 и со 1 =391,396.
§ 7.3. Расчет емкостных элемен- _
тов и конденсаторов
Для емкостных элементов известны выра-
жения, определяющие емкость (далее в пико-
фарадах) как функцию их геометрических
размеров (в сантиметрах) и относительной
диэлектрической проницаемости диэлектри-
ка Ед. Ниже приведены формулы для емкости
наиболее распространенных элементов (кон-
денсаторов) [22].
1. Плоский конденсатор в виде пластины
диэлектрика с нанесенными с двух сторон
металлическими обкладками: С = 0,0886ед5/6,
где S — площадь обкладок, h — толщина
диэлектрика. Для S=1 см2, 6 = 0,1 см, ед=1
(воздух) имеем С = 0,886 пФ. Формула не
учитывает краевые эффекты.
2. Дисковый конденсатор с электродами
одинакового размера, занимающими всю
171
поверхность диэлектрика:
С = 0,0695едП/Л. (7.13)
Для. £>=1 см, Л = 0,1 см и ед = 4,7 получим
С = 3,266 пФ.
3. Коаксиальный (трубчатый) конденса-
тор с электродами и диэлектриком одинако-
вой длины /: С = 0,241 ед//1 g (£>н./£>в), где
£>н — наружный и DB — внутренний диаметры
трубки. Для 1 — 2 см, DH = 0,5 см, £>в = 0,4 см
и ед = 4,7 С = 23,376 пФ. Формула не учиты-
вает краевые эффекты.
4. Коаксиальный (трубчатый) конденса-
тор с электродами одинаковой длины I и ди-
электриком, длина трубки которого больше /:
0,2418д/ + 0,08Г>н п / о п
С = , * /А ' " Для Z = 2 СМ’ =
= 0,5 см, Z)B = 0,4 см и ед = 4,7 получим
С = 23,789 пФ.
5. Коаксиальный (трубчатый) конденсатор
с электродами разной длины (меньшая —/):
д„
(Dh/Dq)
= 2 см, Рн = 0,5 см и £>в = 0,4 см получим
С = 24,370 пФ.
6. Шаровой конденсатор: С =
= 0,555ед£>н/(/)н/1>в-- 1), где £>н и /Л — внеш-
ний и внутренний диаметры шара. Для D» —
= 10 см, Дв = 9 см и 8д = 4,7 получим С =
= 234,765 пФ.
8. Шар в свободном пространстве, запол
ненном диэлектриком: С = 0,555едЛ, где D-
диаметр шара. Для £) = 10 см и ед =
получим С — 5,55 пФ.
9. Емкость между двумя одинаковым
шарами диаметром D и расстоянием межд
центрами tz> D:
С — 0,278eaD
Г, D (4q2-P2) 1
L 2а (4а2 —2aD —Р2) J '
(7.1
Для Р—10 см, а=15 см и ед=1 получи
С = 4,263 пФ.
10. Круглый диск в свободном простра!
стве: С=0,353едр(ц-^^-У где Р-
диаметр и Л — толщина диска. Для D = 10 ci
А=1 см, 8Д=1 получим С = 3,755 пФ.
11. Емкости проводников в свободно
пространстве: C = ^iefl//lg (k?x/d), где зн<
чения коэффициентов kг и kz и расшифров!
параметра к даны в табл. 7.1, / — длиг
проводника и d — его диаметр.
Пример 10. Составить программу д;
вычисления емкости проводников, указаннь
в табл. 7.1. Выбор варианта расчета мож1
обеспечить вводом кода и применением к
манд условных переходов.
Программа 7.15.
10 PRINT >ЕМКОСТЬ ПРОВОДНИКОВ В СВОБОДНОМ ПРОСТРАНСТВЕ*
20 PRINT >ЕМКОСТЬ МЕЖДУ ДВУМЯ ПРОВОДАМИ ВДАЛИ ОТ ЗЕМЛИ/ КОД 1'
30 PRINT 'МЕЖДУ ГОРИЗОНТАЛЬНЫМ ПРОВОДОМ И ЗЕМЛЕЙ/ КОД 2'
40 PRINT 'МЕЖДУ ВЕРТИКАЛЬНЫМ ПРОВОДОМ И ЗЕМЛЕЙ ПРИ H>L/4/ КОД 3'
50 PRINT 'МЕЖДУ ВЕРТИКАЛЬНЫМ ПРОВОДОМ И ЗЕМЛЕЙ ПРИ H<L/4/ KOD 4'
68 PRINT 'МЕЖДУ ПРОВОДОМ И КОРПУСОМ/ КОД 5'
70 INPUT 'ВВЕДИТЕ ОТНОСИТЕЛЬНУЮ ДИЭЛЕКТРИЧЕСКУЮ ПРОНИЦАЕМОСТЬ Е='Е
80 INPUT 'ВВЕДИТЕ ДИАМЕТР ПРОВОДА H='D
90 INPUT 'ВВЕДИТЕ КОД' N
100 IF N=1 THEN 150
110 IF N*2 THEN 160
120 IF N=3 THEN 170
130 IF N=4 THEN 180
140 IF N=5 THEN 190
150 LET K1=0.12 s LET K2=2 s GOTO 210
160 LET Kl=0.24 s LET K2=4 s GOTO 215
170 LET Kl=0.24 s LET K2=l : GOTO 230
180 LET Kl=0.24 s LET K2=1.15 s GOTO 238
190 LET Kl=0.24 : LET K2=2 s GOTO 205
200 INPUT 'КОД НАБРАН НЕВЕРНО' s GOTO 90
205 INPUT 'ВВЕДИТЕ ДИАМЕТР ОТВЕРСТИЯ X='X 5 GOTO 220
210 INPUT 'ВВЕДИТЕ РАССТОЯНИЕ МЕЖДУ ПРОВОДАМИ Х='Х 5 GOTO 228
215 INPUT 'ВВЕДИТЕ ВЫСОТУ ПОДВЕСКИ Х«'Х
220 INPUT 'ВВЕДИТЕ ДЛИНУ ПРОВОДА L='L •: GOTO 240
230 INPUT 'ВВЕДИТЕ ДЛИНУ ПРОВОДА Х='Х s GOTO 250
240 LET C=<K1*E*L>/LGT(K2*(X/D)) : GOTO 268
258 LET C=<K1»E*X)/LGT(K2»X/D)
260 PRINT 'ЕМКОСТЬ ПРОВОДНИКА В СВОБОДНОМ ПРОСТРАНСТВЕ С='С
270 GOTO 90 s END
7. Горшковый конденсатор в виде ци-
линдра длиной /, заканчивающийся внизу
полушаром с наружным диаметром £)н и
_ г Г 0,241/ ,
внутренним £)в: С = ед , п +
+. . Для /=10 см, £>„ = 5 см,
£)в = 4 см и 8д = 4,7 получим С — 143,014 пФ.
Для /=103 см, d = 0,2 см, х = 200 см
8Д=1 получим С = 66,629 пФ (код 2).
Более полные данные о расчете емкое
можно получить из специальной литерату
[13]. Часто необходимо не значение емкое
конденсатора, а определение по заданн
емкости его электрофизических или геомет(
ческих характеристик. Приведем приме
таких расчетов.
172
Таблица 7.1
Значения k\, kz и наименование х для расчета емкости проводников
в свободном пространстве
Код Емкость С ki kz Наименование х
1 Между двумя проводами от земли 0,12 2 Расстояние между прово- дами
2 Между горизонтальным проводом и зем- лей 0,24 4 Высота подвески
3 Между вертикальным проводом и зем- лей при расстоянии от земли до нижнего конца 1/4 0,24 1 Длина провода
4 Между вертикальным проводом и зем- лей при расстоянии от земли до нижнего конца й<//4 0,24 1,15 Длина провода
5 Между проводом и корпусом при вводе провода через отверстие 0,24 2 Диаметр отверстия
Пример 11. Определить диэлектриче-
скую проницаемость диэлектрика ед. Для
этого удобно использовать дисковый конден-
сатор специальной конструкции — (см. рис.
7.8). Такой конденсатор имеет охранное
кольцо, которое должно иметь потенциал,
равный потенциалу верхней обкладки кон-
денсатора. Это резко ослабляет проявление
краевых эффектов и позволяет пользоваться
формулой (7.13) для нахождения ед по
заданному значению С: ед = СЛ/0^)695£).
Пусть конденсатор с емкостью С = 32 пФ
имеет £) = 10 см и h = 0,1 см. Тогда диэлек-
трическая проницаемость диэлектрика ед =
= 4,604.
Пример 12. Составить программу для
расчета тонкопленочных конденсаторов за-
данной емкости С. Методика расчета сле-
дующая [9].
1. Задаем число обкладок т, толщину
диэлектрика d и его диэлектрическую прони-
цаемость ед.
2. Вычисляем удельную емкость (приходя-
щуюся на 1 см2) тонкопленочного конден-
сатора Со = О,О885ед — необходимую
площадь обкладок S — C/Cq.
3. Задаем отношение сторон Q=A/B
прямоугольника обкладок и находим стороны
A=4QS и b=^s/q.
Программа 7.16.
Основной электрод
Общая обкладка
Рис. 7.8. Дисковый конденсатор с охранным коль-
цом для уменьшения краевых эффектов
Для т = 3, б/ = 0,01 см, ед = 4,7 и С —
= 100 пФ получаем С0 = 83,19 пФ/см2,
5 = 1,202 см2 и при Q = 2 получаем
>4 = 1,550 см и В = 0,775 см.
Пример 13. Найти расстояние а между
центрами двух шаров, имеющих диаметр
£)=10 см, при котором емкость между ними
составляет Со = 5 пФ. Непосредственное при-
менение формулы (7.14) в данном случае
невозможно, поскольку ее разрешимость от-
носительно параметра а не является очевид-
ной. В связи с этим целесообразно найти а
из решения нелинейного уравнения С (а) —
— Со = О, учитывая, что при а D шары
соприкасаются и емкость С -> оо. Поэтому,
применяя метод поразрядного приближения,
нужно увеличить а с начального значения
18 PRINT "РАСЧЕТ ПЛЕНОЧНЫХ КОНДЕНСАТОРОВ"
20 INPUT "ВВЕДИТЕ ЕМКОСТЬ С="С
30 INPUT "ВВЕДИТЕ ЧИСЛО ОБКЛАДОК М="М
40 INPUT "ВВЕДИТЕ ТОЛЩИНУ ДИЭЛЕКТРИКА D='D
50 INPUT "ВВЕДИТЕ ОТНОСИТЕЛЬНУЮ ДИЭЛЕКТРИЧЕСКУЮ ПРОНИЦАЕМОСТЬ Е="Е
60 LET C0=0.0885*E*(M-1>/D
70 PRINT "УДЕЛЬНАЯ ЕМКОСТЬ С0="С8
80 LET 8=С/С0
80 PRINT "ПЛОЩАДЬ ОБКЛАДОК 8= "8
100 INPUT "ВВЕДИТЕ ОТНОШЕНИЕ СТОРОН Q=A/B" О
110 LET A=SQR<Q*S) s LET B=SQR(S/Q)
120 PRINT "СТОРОНА ОБКЛАДКИ A="A
130 PRINT "СТОРОНА ОБКЛАДКИ B="B
140 GOTO 20 s END
173
a~ D. Приведенная ниже программа (в ней ния 2Л. Ниже рассматривается комплекс
а^Х) реализует такой подход. программ для таких расчетов.
Программа 7.17.
10
20
30
40
50
60
70
PRINT
INPUT
INPUT
INPUT
INPUT
fРАССТОЯНИЕ МЕЖДУ ЦЕНТРАМИ ДВУХ ШАРОВ ПО ЗАДАННОЙ ЕМКОСТИ’
'ВВЕДИТЕ ОТНОСИТЕЛЬНУЮ ДИЭЛЕКТРИЧЕСКУЮ ПРОНИЦАЕМОСТЬ Е='Е
'ВВЕДИТЕ ДИАМЕТР ШАРОВ D='D
'ВВЕДИТЕ ТОЧНОСТЬ РЕЗУЛЬТАТА Q='Q
'ВВЕДИТЕ ЕМКОСТЬ С='С
LET Х=П : LET №10
80
IF ABS<HXQ THEN 110
90
LET X=X+H : GOSUB 120
IF FzH>=0 THEN 80
100 LET H=“H/10 s GOTO 78
110 PRINT 'РАССТОЯНИЕ X='X s GOTO 50
120 LETF=. 278*E'*D*<1 + < D*( 4*X*X-D*D ) / < 2*X* < 4*X*X-Ii*D-2i*X*D)) ) > -Г:
130 RETURN ’ END
Для C = 5 пФ, D=10 см, ед=1 и погреш-
ности вычислений Q=l«10"3 получим а —
= Х= 12,26 см.
ПЭВМ можно использовать и для сущест-
венно более сложных вычислений емкости,
описанных в [13] и требующих применения
специальных методов расчета. Ограничимся
одним примером такого рода.
Пример 14. Вычислить емкость на еди-
ницу длины Ci между двумя компланарными
(т. е. находящимися на одной плоскости
параллельно друг другу) пластинами беско-
нечной длины шириной а = 9 см и с расстоя-
нием между ними d — 2 см. В соответствии
с [13] ата емкость определяется точной
формулой С//ед=/г (m')/k (т), где tn — k2 =
= 1/(1 +2a/d)\ k (т) —полный эллиптиче-
ский интеграл первого рода, k. (rri') — пол-
ный эллиптический интеграл от параметра
т'—\ — т. При заданных а и d имеем
/тг = О,О1 и т' = 0,99. Воспользовавшись про-
граммой 6.18, вычисляем k (т) (0,01) =
==1,5745568 и k (т') = £>(0,99) =3,695637369.
Следовательно, Ci = Eak (m')/k (т)=едХ
X 2,346815539 пФ/см. Это совпадает с при-
веденным в [13] значением С/, но исклю-
чает необходимость применения таблиц зна-
чений эллиптических интегралов и их интер-
поляции и экстраполяции при произвольных
значениях т и т'.
§ 7.4. Расчет линий передачи
и задержки
Линии передачи могут быть проводными,
коаксиальными (кабельными), ленточными
и полосковыми. Важнейшим параметром та-
ких линий является волновое сопротивление
гл = -7£1/С|, где L\ и С1 — индуктивность
и емкость линий на единицу длины, фазовая
скорость движения волны в линии Ц =
= сгде с — скорость света и ед — от-
носительная диэлектрическая проницаемость
диэлектрика линии.
В справочной литературе [22] обычно
приводятся формулы для инженерного рас-
чета Zn линий. Однако в большинстве слу-
чаев значение Zn бывает задано и требуется
определить конструктивные параметры линии,
обеспечивающие получение нужного значе-
174
Для ряда проводных линий обобщенный
конструктивный параметр
D ехр (Лл V®?/60)
*~~~d~ k ’
где d — диаметр круглого проводника, a D
и k определяются следующим образом.
1. Для линии в виде круглого провод-
ника, расположенного в середине между
плоскопараллельными проводящими плоско-
стями с расстоянием между ними D,
k = 1,27.
2. Для линии в виде проводника, разме-
щенного в центре экрана с квадратным
сечением и стороной £>, £=1,08.
3. Для коаксиальной линии в виде экрана
с круглым сечением (диаметр D) и провод-
ником, расположенным в центре, £=1.
4. Для линии в виде проводника, распо-
ложенного на биссектрисе прямого угла,
образованного двумя полубесконечными про-
водящими плоскостями, на расстоянии D/2
от каждой плоскости, £=1,4.
В приведенной ниже программе вычис-
ляется параметр любой из этих четырех
линий. Тип линии задается кодом.
Программа 7.18.
Для Лл = 300 Ом и ед = £=1 получим
X = 116,861 при коде 1, X = 137,420 при коде 2,
X —148,413 при коде 3 и Х= 106,009 при
коде 4. Выбрав заданным один из парамет-
ров (D или d), по значению X легко найти
другой параметр.
Если выражение Zn (х) неразрешимо от-
носительно требуемого расчетного парамет-
ра х, то для нахождения , х по заданному
41 = 2ло решается нелинейное уравнение
2ло--гл (х)=0. (7.15)
Например, для линии в виде двух провод-
ников одинакового диаметра D, расположен-
ных на расстоянии А друг от друга и на
расстоянии L от проводящей плоскости,
^=-^-[archA_ln д/,+(1гУ[
а для линии в виде двух проводников раз-
личного диаметра (D и X), расположенных
Программа 7.18.
10 PRINT'РАСЧЕТ ПАРАМЕТРА X ПРОВОДНЫХ ЛИНИЙ'
40 PRINT'ЛИНИЯ - КРУГЛЫЙ ПРОВОДНИК/ РАСПОЛОЖЕННЫЙ'
50 PRINT'В СЕРЕДИНЕ МЕЖДУ ПРОВОДЯЩИМИ ПЛОСКОСТЯМИ/КОД 1'
60 PRINT'В ЭКРАНЕ С КВАДРАТНЫМ СЕЧЕНИЕМ/ КОД 2'
70 PRINT'В ЭКРАНЕ С КРУГЛЫМ СЕЧЕНИЕМ/КОД 3'
80 PRINT'НА БИССЕКТРИСЕ ПРЯМОГО УГЛА/ КОД 4'
90 INPUT'BBEAHTE КОД" N
180 IF N=1 THEN 150
110 IF N=2 THEN 160
120 IF N=3 THEN 178
130 IF N=4 THEN 180
140 PRINT'КОД НАБРАН НЕВЕРНО': GOTO 90
150 LET K=1.27s GOTO 198
160 LET K®1.88: GOTO 198
178 LET K=l: GOTO 198
188 LET K=1.4
198 INPUT'BBEAHTE ВОЛНОВОЕ СОПРОТИВЛЕЙИЕ ЛИНИИ Z='Z
195 INPUT'BBEAHTE ОТНОСИТЕЛЬНУЮ ДИЭЛЕКТРИЧЕСКУЮ ПРОНИЦАЕМОСТЬ E='E
280 LET X=<EXP<<Z»SQRCE>)/68))/K
218 PRINT'X='X: GOTO 98: END
на расстоянии А в свободном пространстве,
60 u 4/42-£>2-Г
2DX
Если необходимо определить расстояние А
по заданному Z,10, то это можно сделать
с помощью приведенной ниже программы,
обеспечивающей решение (7.15) методом
подекадного приближения.
Программа 7.19.
а для £> = 0,1 см, Х = 0,05 см, Z = 300 Ом
(код 2) получим А— 0,434 см.
Линия из двух проводников одинакового
диаметра £>, расположенных на расстоянии А
друг от друга в свободном, пространстве,
имеет волновое сопротивление (Z)—
120
= ——arch X, где X = A/D. Аналогично для
Vе
линии в виде проводника с диаметром D,
расположенного над проводящей плоскостью
10 PRINT 'РАССТОЯНИЕ МЕЖДУ ПРОВОДАМИ ДВУХПРОВОДНОЙ ЛИНИИ’
20 PRINT 'МЕЖДУ ДВУМЯ ПРОВОДАМ^ С ОДИНАКОВЫМ ДИАМЕТРОМ, КОД 1'
30 PRINT 'МЕЖДУ ДВУМЯ ПРОВОДАМИ С РАЗНЫМИ ДИАМЕТРАМИ, КОД 2'
40 INPUT 'ВВЕДИТЕ ОТНОСИТЕЛЬНУЮ ДИЭЛЕКТРИЧЕСКУЮ ПРОНИЦАЕМОСТЬ Е='Е
50 INPUT 'ВВЕДИТЕ ВОЛНОВОЕ СОПРОТИВЛЕНИЕ Z='Z
60 INPUT 'ВВЕДИТЕ ТОЧНОСТЬ РЕЗУЛЬТАТА Q='Q
70 INPUT 'ВВЕДИТЕ КОД' N
80 IF N=1 THEN 110
90 IF N=2 THEN 210
100 PRINT 'КОД НАБРАН НЕВЕРНО' s 60T0 70
110 INPUT 'ВВЕДИТЕ ДИАМЕТР D='D
120 INPUT 'ВВЕДИТЕ РАССТОЯНИЕ L='L
130 LET A=0 : LET H=1
140 IF ABS<HXQ THEN 180
150 LET A=A+H s GOSUB 190
160 IF FzH>=0 THEN 150
170 LET H=-H/10 • GOTO 140
180 PRINT 'РАССТОЯНИЕ A='A ! GOTO 70
190 LET F=Z-<120/SQR<E)>*<AHC<A/D>-LOG<SQR<1 + (A/<2*L))''2))>
200 RETURN
210 INPUT 'ВВЕДИТЕ ДИАМЕТР D='D
220 INPUT 'ВВЕДИТЕ ДИАМЕТР X='X
230 LET A=0 • LET H=1
240 IF ABSCHXQ THEN 280
250 LET A=A+H s GOSUB 290
260 IF FzH>=0 THEN 250
270 LET H=-H/10 s GOTO 240
280 PRINT 'РАССТОЯНИЕ А»'A l GOTO 70
290 LET F=Z-(60zSQR(E) )*<AHC< <4*(A''2)-<D~2>-<X''2> )z(2*D*X>) >
300 RETURN s END
Для e=£=l, Z.1o = Z = 200 Ом погреш- на расстоянии А от нее,
ность вычислений Q=1 • IO'4, D = 0,l см,
£=1,5 см (код 1) получим Л =0,2753 см, Zj (Л) =60 arch Х/-уе.
175
Программа 7.20.
10 PRINT 'РАСЧЕТ ПАРАМЕТРА X'
28 PRINT 'ДВУХПРОВОДНАЯ ЛИНИЯ/ КОД 1'
30 PRINT 'ЛИНИЯ В ВИДЕ КРУГЛОГО ПРОВОДНИКА НАД ПЛОСКОСТЬЮ/ КОД 2'
40 INPUT 'ВВЕДИТЕ ДИЭЛЕКТРИЧЕСКУЮ ПРОНИЦАЕМОСТЬ Е='Е
50 INPUT'ЗАДАЙТЕ ПОГРЕШНОСТЬ РЕЗУЛЬТАТА Q=*'Q
60 INPUT 'ВВЕДИТЕ ВОЛНОВОЕ СОПРОТИВЛЕНИЕ Z='Z
70 INPUT'ЗАДАЙТЕ КОД ЛИНИИ '№LETK=120s IF N=2 THEN LETK=68
В© IF N=1 THEN 110
90 IF N=2 THEN 110
100 PRINT 'КОД НАБРАН НЕВЕРНО' : GOTO 70
110 LET X=8 : LET H=18
120 IF ABSCHXQ THEN 160
130 LET X«X+H s GOSUB 170
140 IF F/H>=0 THEN 130
150 LET №-H/10 I GOTO 128
160 PRINT'ЗНАЧЕНИЕ X='X:GOTO 70
170 LETF=Z-< K/SQR < E >)*AHC(X)sRETURN s END
Для 7ло = ЗОО Ом, e = /:=l и погрешно-
сти e = Q= 1 • 10 ~4 получим X =-6,1322 (код I)
и Х = 74,2099 (код 2).
Большие £л имеют коаксиальные линии,
у которых внутренний проводник выполнен
в виде спирали. Волновое сопротивление та-
При заданных Fw — Fwo, N и D пара-
метр X находится из решения нелинейного
уравнения
Fw0-Fw (Х)=0.
Программа 7.21.
10 PRINT'РАСЧЕТ ПАРАМЕТРА X СПИРАЛЬНОЙ КОАКСИАЛЬНОЙ ЛИНИИ'
20 INPUT'ВВЕДИТЕ N/D/E 'N/D/EsLETM»N*N
30 INPUT'BBEAHTE FU='AsLETX=0:LETH=«1
40 IF ABSCHXE THEN 70
50 LETX=X+HsGOSUB 80s IF F/H>=8 THEN 58
68 LET№-Hzl05 6OTO 48
78 PRINT'X»'Xs GOTO 38
88 LETF=A-SQR<1+M* < #PI«X >~2* < 1 - < X./D ) ~2 >/2/LOG < D/X))
98 RETURN:END
ких линий Zn — ZJlKFWy rue ZJ1K — волно-
вое сопротивление обычной коаксиальной
линии со сплошным внутренним проводни-
ком, имеющим диаметр, равный внешнему
диаметру спирали, а -- поправочный
множитель
где D — внутренний диаметр внешнего труб-
чатого проводника, X — внешний диаметр
спирали, М — число витков спирали на еди-
ницу длины линии.
Для F-^ — Ъ, W = 4, D—\ см и погреш-
ности вычислений Е=1-10~3 получим X —
= 0,349 см.
Волновое сопротивление коаксиальной ли-
нии с внутренним проводником (диаметр X),
смещенным от центра на расстояние L,
7 .... 60 , £>2 + %2-4Z?
И ----2ХР-----’ где D~
внутренний диаметр внешнего проводника.
В этом случае параметр X при заданных
Хл = Хло, D, L и е находится из решения
нелинейного уравнения Хл0 — Zn (Х)=0.
Программа 7.22.
18 PRINT'РАСЧЕТ ПАРАМЕТРА X КОАКСИАЛЬНОЙ ЛИНИИ'
28 PRINT'СО СМЕЩЕННЫМ ВНУТРЕННИМ ПРОВОДНИКОМ'
30 INPUT'ВВЕДИТЕ ВНУТРЕННИЙ ДИАМЕТР ВНЕШНЕГО ПРОВОДНИКА D='D
48 INPUT'ВВЕДИТЕ РАДИАЛЬНОЕ СМЕШЕНИЕ ВНУТРЕННЕГО ПРОВОДНИКА L='L
58 INPUT'ЗАДАЙТЕ ОТНОСИТЕЛЬНУЮ ДИЭЛЕКТРИЧЕСКУЮ ПРОНИЦАЕМОСТЬ Е='Е
68 INPUT'ЗАДАЙТЕ ПОГРЕШНОСТЬ РЕЗУЛЬТАТА Gh='Q
78 INPUT'ВВЕДИТЕ ВОЛНОВОЕ СОПРОТИВЛЕНИЕ ЛИНИИ Z='Z
88 LETX=8:LETH=«1
98 IF ABSCHXQ THEN 128
108 LETX*X+H:GOSUB 130:IF F/H>=8 THEN 188
118 LETH=-H/'10:GOTO 90
128 PRINT'ДИАМЕТР ВНУТРЕННЕГО ПРОВОДНИКА X»'Xs GOTO 78
125 PRINT F/Z-F
138 LETF=60*-AHC< <D*D+X*X-4*L*L)/2/X/D>/SQR<E)
140 LETF=F-Z:RETURN:END
176
Для 2л0—100 Ом, D—1 см, А —0,25 см,
е=1 и погрешности Q=l-10-5 получим X —
=0,14038 см.
Весьма широкое распространение находят
полосковые несимметричные (рис. 7.9, а) и
симметричные (рис. 7.9, б) линии. Микро-
полосковые линии (МПЛ) изготавливаются
при
W 1
h 2л ’
Рис. 7.9. Полосковая несимметричная (а) и симметричная (б) линии передачи (в разрезе)
в виде тонкопленочного печатного или на-
пыленного проводника, нанесенного на ди-
электрическую подложку с металлизирован-
ной нижней плоскостью (структура таких
линий соответствует показанной на рис. 7.9, а).
Расчет Zn для таких линий довольно сложен,
и в специальной литературе описан ряд
формул, обеспечивающих расчет с различной
погрешностью.
Расчет 7.л несимметричных микрополос-
ковых линий с конечной толщиной t полоски
может проводиться по формулам [2]
8эф
при
8д+1 , 8д-1 / |2 у'/’
2 2 \ "Г IF/ft)
Еэф —
Ед+1
2
+
60
7л= —
уСэф
У?.
8 №эф\
——4-0,25—
и^эф/Л h /
при W/h<l И
с_. «д —1 t/h
4,6 ‘
Программа 7.23.
10 PRINT'РАСЧЕТ ВОЛНОВОГО СОПРОТИВЛЕНИЯ НЕСИММЕТРИЧНОЙ'
20 PRINT' ПОЛОСКОВОЙ ЛИНИИ'
30 INPUT'BBEAHTE ШИРИНУ ПОЛОСКИ Ы~'Ы
40 INPUT'BBEAHTE ТОЛЩИНУ ПОЛОСКИ Т='Т
50 INPUT'BBEAHTE ТОЛЩИНУ ДИЭЛЕКТРИКА Н='Н
55 INPUT'BBEAHTE ДИЭЛЕКТРИЧЕСКУЮ ПРОНИЦАЕМОСТЬ EPS='E
60 LETK=W/HSLETP=HsIF K<=l/#PI/2 THEN LETP=2*#PI*W
70 LETM=K+<1.25*T/#PI/H>*<l+L0G<2*PzT))
80 LET№0i IF K>=1 THEN LETN=.04«<1-K>''2
90 LETF=(E+1>/2+<E-l>*< <1+12/K)"<-.5>+N>/2
100 LETF=F-< E-1> ЖТ/Н/4.6/SQR < К)
110 IF K>=1 THEN 120
115 LET2=60*LO6<8/M+M/4>zSQR<F)s6OTO 140
120 LETZ=120ж#РI/< M+1.393+.667*L0G< M+1.444>)
130 LETZ=Z/SQR<F)
140 PRINT'ВОЛНОВОЕ СОПРОТИВЛЕНИЕ Z0='ZsEND
z._l^r^t+l,393+
Л/еэф L П
4- 0,667 In +1 >444^1 При №//i>l,.
U?9 U7 . 1,25/ Д , , 4л№\
где -—^-=—-4--— ( 14-In—-—)
h h nh \ t )
Контрольные примеры.
UZ, см /, см А, см Zo, Ом
1 0,01 1 М7 44,653
1 0,05 1 4,3 69,223
0,1 0,01 1 1 250,426
2 0,05 1 1 87,086
W 1
h """ 2л
Ширину W и отношение фазовой ско-
рости к скорости света с для отмеченных
выше линий при заданных Z^ t, h и ед
при
177
с точностью, достаточной для инженерных
расчетов, можно вычислить с помощью
формул [9]
IF = 1 25 Г_______________________/1
’ L ехр [гл(ед+ 1,41)1/2/87 ]’
У/с= 1/[(0,475ед + 0,67),/2]
для несимметричной линии и
1T=0,59f------^-7=------2,1/1,
Lexp (2Л Тёд/бО) J
— для симметричной. В этих формулах h
и t задаются в миллиметрах.
Программа 7.24.
систему телеграфных уравнений
ox dt дх dt
Если на входе линии действует синусо-
идальный сигнал, то решение телеграфных
уравнений имеет вид U=Ае~ух+ Веух, где
А и 6 — постоянные интегрирования, а
V=л/(Я+7^) (G +7“ С) (7,16)
— постоянная распространения. Ток в любой
• А В
точке линии /=— еух, где
2,л
R -|- /<о£
G /<оС
(7.17)
10 PRINT'PAC4ET U И U/C ПОЛОСКОВЫХ ЛИНИЙ'
20 PRIHT 'ЛИНИЯ ПОЛОСКОВАЯ НЕСИММЕТРИЧНАЯ/ КОД 1'
30 PRINT 'ЛИНИЯ ПОЛОСКОВАЯ СИММЕТРИЧНАЯ/ КОД 2'
40 INPUT 'ВВЕДИТЕ КОД' N
50 INPUT
60 -INPUT
70 INPUT
80 IF N=1
'ВВЕДИТЕ ТОЛЩИНУ ПОЛОСКИ Т«'Т
'ВВЕДИТЕ ОТНОСИТЕЛЬНУЮ ДИЭЛЕКТРИЧЕСКУЮ ПРОНИЦАЕМОСТЬ Е='
'ВВЕДИТЕ ВОЛНОВОЕ СОПРОТИВЛЕНИЕ ЛИНИИ Z«'Z
THEN 120
Е
90 IF N»2 THEN 160
180 PRINT 'КОД НАБРАН НЕВЕРНО' s GOTO 40
120 INPUT 'ВВЕДИТЕ ШИРИНУ ПОЛОСКИ H»'H
130 LET Ы=1.25ж<((5.98жН>/(ЕХР(2ж<(Е+1.41>~(1/2))/87)>>-Т)
140 LET Y«l/SQR<0.4?5«E+0.67)
158 GOTO 198
160 INPUT 'ВВЕДИТЕ ШИРИНУ ПОЛОСКИ B='B
MI A=EXP<Z«SQR<E)/60) s LET Ы=0.59ж<<<4жВ)/А>-2.1*T>
180 LET Y«1/SQR<E>
190 PRINT 'ШИРИНА ПОЛОСКИ W«'W
280 PRINT'ОТНОШЕНИЕ ФАЗОВОЙ СКОРОСТИ К СКОРОСТИ СВЕТА U/C='Y
210 GOTO 40 : END
Для Z.a —75 Ом, /=0,05 мм, h — \ мм и
ед=4,7 получим IF=0,825 мм и и/с=0,587
для несимметричной линии, а при 2л = 50 Ом,
/=0,5 мм, А=2,5 мм и вд=4,7 получим
IF=0,349 мм и w/c=0,461 для симметричной
линии.
Для реальных длинных линий с распре-
деленными параметрами существенны по-
тери, связанные с конечным погонным
последовательным сопротивлением R (на еди-
ницу длины) и конечной погонной шунти-
рующей проводимостью G. При этом элемен-
тарный участок линии длиной dx представля-
ется эквивалентной схемой (рис. 7.10),
где Lu С — погонные индуктивность и емкость
линии.
Для определения напряжения и и тока /
в любой точке линии, лежащей на расстоя-
нии х от ее начала, необходимо решить
— это характеристическое сопротивление
линии.
Из (7.16) следует, что у = а4-/р, где а —
постоянная затухания и р — фазовая посто-
янная. Постоянная а показывает, на сколько
непер затухает сигнал на единицу длины
(в километрах) линии, а постоянная р пока-
зывает, на сколько радиан (или градусов)
изменяется фаза на единицу длины линии.
Если обозначить <pi = arctg ((oL/R) и q>2 =
= arctg (юС/G), то
<*= (^Л2 + coS(^l+£2) ,
P = ( V/?2 + w2L2 Vg^+Pc2) '/2 sin(
Характеристическое сопротивление линии
(7.17) можно выразить в виде
2Л = |2Л|А
Рис. 7.10. Схема замещения элементарного уча-
стка длинной линии
где |Z| = (V/?2 + <»2i.7VG2 + <o2C2),/2, <р=
= (<Р1—ф2)/2.
Программа 7.25.
Для линии с У? = 167 Ом/км, L —
= 0,49 мГн/км, С = 0,05 мкФ/км И 6 =
= 1,66 мкСм/км на частоте / = 1000 Гц
получим |7Л| =729,150 Ом, <р= —44,321 град/км,
а = 0,161 нп/км, р = 0,163 рад/км.
При использовании линий в качестве
элементов задержки или накопления электри-
178
Программа 7.25.
10 PRINT'РАСЧЕТ ПОСТОЯННЫХ РАСПРОСТРАНЕНИЯ ВОЛНЫ В ДЛИННОЙ ЛИНИИ'
26 INPUT'ВВЕДИТЕ ПОГОННОЕ СОПРОТИВЛЕНИЕ (ОМ/КМ) R='R
30 INPUT'ВВЕДИТЕ ПОГОННУЮ ИНДУКТИВНОСТЬ (МГН/КМ) L='L
40 INPUT'ВВЕДИТЕ ПОГОННУЮ ЕМКОСТЬ (МКФ/КМ) С='С
50 INPUT'ВВЕДИТЕ ПОГОННУЮ ПРОВОДИМОСТЬ(МКОМ/КМ) 6='6
60 LETL=L/1ЕЗ5 LET6=6/1Е6sLETC=C/1E6
70 INPUT'ЗАДАЙТЕ ЧАСТОТУ (ГЦ) F='F: LETW=2*#PI*F
80 LETU=SQR< R*R+ < U*L) ~2 ): LETX=SQR(6*6+ < Ы*С)~2>
90 LETA=ATN(W*L/R)5IF 6=0 THEN LETB=#pi/2
100 IF 600 THEN LETB=ATN(U*C/6)
120 PRINT'МОДУЛЬ СОПРОТИВЛЕНИЯ /2/='SQROVX)' OM'
130 PRINT'ФАЗОВЫЙ СДВИГ ='DE6<(A-B)/2)' ГРАД'
140 LETY=SQR< U*X)s LETZ= < A+B)/2
150 PRINT'ПОСТОЯННАЯ ОСЛАЕЛЕНИЯ АЛЬФА='Y*COS(Z)
160 PRINT'ФАЗОВАЯ ПОСТОЯННАЯ ВЕТА='Y*SIN(Z) •
170 60Т0 70!END
ческой энергии часто применяются линии
с сосредоточенными постоянными, т. е.
элементами L и С (рис. 7.11), в виде дискрет-
ных катушек индуктивности и конденсаторов.
моиндукции). Линии типа М имеют наилуч-
шие характеристики при М — 1,27. .
Расчет искусственных линий проводится
по заданному волновому сопротивлению
Рис. 7.11. Искусственные линии К-типа (а) и М-типа (б)
При заданном времени задержки tj — n^LC,
где п — число звеньев линии, такие искус-
ственные линии имеют существенно меньшие
габариты и массу, чем линии с распреде-
ленными постоянными. Если между смежными
индуктивностями звеньев нет магнитной связи,
линии относятся к типу К, в противном
случае — к типу М (М — коэффициент взаи-
/л=пД/С, времени нарастания импульсов
на выходе линии /ф при ее возбуждении
прямоугольными импульсами и времени за-
держки /3. При этом для /?, С и L мож-
но использовать следующие выраже-
ния [9]: n==Xi (/3//ф)3/2, С = /з//<2п7.п и /,=
Программа 7.26.
10 PRINT 'РАСЧЕТ ПАРАМЕТРОВ ИСКУССТВЕННЫХ ЛИНИЙ ЗАДЕРЖКИ'
20 PRINT 'ЛИНИЯ НА ФИЛЬТРАХ К-ТИПА/ КОД 1'
30 PRINT 'ЛИНИЯ НА ФИЛЬТРАХ М-ТИПА/ КОД 2'
40 INPUT 'ВВЕДИТЕ КОД' N
50 IF N=1 THEN 60
55 60Т0 70
60 LET Kl=l.l s LET K2=1.07 s 60T0 100
70 IF NO2 THEN 90
80 LET Kl=0.94 • LET K2=1.2 s 60T0 100
90 PRINT 'КОД НАБРАН НЕВЕРНО' s 60T0 40
100 INPUT 'ВВЕДИТЕ ВРЕМЯ ЗАДЕРЖКИ TZ='T1
110 INPUT 'ВВЕДИТЕ ДЛИТЕЛЬНОСТЬ ФРОНТА TF='T2
120 INPUT 'ВВЕДИТЕ ВОЛНОВОЕ СОПРОТИВЛЕНИЕ Z='Z
130 LET Н=К1*((Т1/Т2)Л1.5)
135 PRINT 'ЧИСЛО ЗВЕНЬЕВ N='N
140 INPUT 'ВВЕДИТЕ УТОЧНЕННОЕ ЗНАЧЕНИЕ N='N
150 LET L=(T1*Z)/(N*K2>
160 LET C=T1/(K2*N*Z)
170 PRINT 'ИНДУКТИВНОСТЬ ЗВЕНЬЕВ L='L
180 PRINT 'ЕМКОСТЬ ЗВЕНЬЕВ C='C
190 60T0 40 s END
179
Пример. Для 2л=600 Ом, /3— 1 • 10-6 с
и /ф = 5*10~® с получим « = 84,076. Округлив
п до 85, находим (код 2) £ = 5,882-10~6 Гн
и С = 1,634- 10“11 Ф. Если при тех же исходных
данных указать код 1 (линия типа К), то
получим л=98,384. Округлив п до 100,
находим £=5,607-10~6 Гн и С— Г,558-10~11 Ф.
§ 7.5. Расчет усилителей
При расчете усилителей на биполярных
транзисторах бывает необходимо вычислять
физические параметры транзистора по А-па-
раметрам (табл. 7.2) и наоборот (табл. 7.3)
134].
= Я = 23,333 Ом, гб = /?В =83,333 Ом, гк =
= ЯК = 3,3325-105 Ом и а = 4=0,97999.
Для схемы с общим эмиттером (код 2) при
Ап = 2800 Ом, А12 = 2-10~3 См, A2i=60 и
А22 = 5-10~5 См получим гэ = Я = 40 Ом,
гб==ЯВ = 360 Ом, гт = ЯЛ4 = 1,22-106 Ом и
р = 4=0,9836.
Программа 7.28.
Пример. Для схемы с общим эмиттером
(код 1) при r3 = R\ =25 Ом, гб==Я2 = 400 Ом,
Гк —ЯЗ=1-106 Ом и а—А =0,985 получим
Ан =2,064-103 Ом, А|2= 1,664-10“3, А2! =
= 65,556 и А22 —6,656-10-5 См. Для схемы
с общей базой (код 2) и указанных выше
исходных данных получим Ли =30,998 Ом,
Т а б л и ц а 7.2
Формулы для расчета физических параметров биполярного транзистора
по h-параметрам соответствующей схемы включения
Физический параметр Схема с общей базой Схема с общим эмиттером
Сопр’отивление эмиттера гэ (1 4“Л2|) А|2 Л"= Л12/Л22
Сопротивление базы г6 hwlh-n hi2 (1 4-h2t) hti— . . h22
Сопротивление коллектора гк 1 — Al2 1 4~h2i
h22 /^22
Сопротивление г„ — агк hi 2 4~ A2i hi2 -|- h2i
A22 h22
Коэффициент передачи тока hi24~h2i Ai24~A2i
эмиттера а " 1-Л.2 1 4"h2i
Таблица 7.3
Формулы для расчета h-параметров биполярного транзистора по физическим параметрам
h-параметр Схема включения
с общим эмиттером с общей базой с общим коллектором
r j , (1 —а) гбгк Гэ+ Гб4-^к
Гэ4-Гк-ОГк гх_|
An * о _ । г»4-г« — агк
hi2 Г» Гб гк — агк
г, + Г|-агк Гк±Г6 Гэ4-Гк — агк
а г к — гэ _ Гб + <*ГК Гк
r»4-G — агк Гб + Гк г» +гк~ а гк
A22 1 1 1
Г,4-Гк — агк Гк 4“ гб Гэ4-'’к — агк
Программа 7.27.
Пример. Для схемы с общей базой
(код 1) при Аи =25 Ом, А12=0,25-10“3 См,
A2i = —0,98 и А22=3-10“б См получим лэ =
180
Ai2 = 3,998-10-4, Л21 = —0,985 и Л22 =
= 9,996-10“7 См. Наконец, для схемы с общим
коллектором (код 3) получим Ац =
= 2,064-103 Ом, Ai2 = 0,9983, Л21=-66,556
и Л22 = 6,656-10~5 См.
Программа 7.27.
10 PRINT 'РАСЧЕТ ФИЗИЧЕСКИХ ПАРАМЕТРОВ ТРАНЗИСТОРА ПО Н-ПАРАНЕТРАМ'
20 PRINT 'СХЕМА С ОБШЕЙ БАЗОЙ, КОД 1'
30 PRINT 'СХЕМА С ОБШИМ ЭМИТТЕРОМ, КОД 2'
40 INPUT 'ВВЕДИТЕ ВХОДНОЕ СОПРОТИВЛЕНИЕ Н11='Н1
50 INPUT 'ВВЕДИТЕ КОЭФФИЦИЕНТ ОБРАТНОЙ СВЯЗИ ПО НАПРЯЖЕНИЮ Н12«'Н2
60 INPUT 'ВВЕДИТЕ КОЭФФИЦИЕНТ ПЕРЕДАЧИ ПО ТОКУ Н21='НЗ
70 INPUT 'ВВЕДИТЕ ВЫХОДНУЮ ПРОВОДИМОСТЬ Н22»’Н4
80 INPUT 'ВВЕДИТЕ КОД' N
90 IF №1 THEN 120
100 IF Н=2 THEN 180
110 PRINT 'КОД НАБРАН НЕВЕРНО' : 60Т0 80
120 LETR1=Н1-<1+НЗ > ЖН2/Н41LETR2-H2/H4:LETR2=H2/H41LETR3-<1-H2)/Н4
150 LETR4«=-<H2+H3)/H4:LETA=-CH2+H3)/<l-H2>:60T0 230
180 LETR1=H2/H4:LETR2==H1-H2*<1+H3)/H4:LETR3«=<1+H3)/H4
200 LETR4=<H2+H3)/H4:LETA*<H2+H3>z<l+H3>
230 PRINT 'СОПРОТИВЛЕНИЕ ЭМИТТЕРА R='R1
240 PRINT 'СОПРОТИВЛЕНИЕ БАЗЫ RB»'R2
250 PRINT 'СОПРОТИЕЛЕНИЕ КОЛЛЕКТОРА RK=’R3
268 PRINT 'СОПРОТИВЛЕНИЕ R№'R4
270 PRINT 'КОЭФФИЦИЕНТ ПЕРЕДАЧИ ТОКА ЭМИТТЕРА А*'А
280 60Т0 40:END
Программа 7.28.
10 PRINT 'РАСЧЕТ Н-ПАРАМЕТРОВ ПО ФИЗИЧЕСКИМ ПАРАМЕТРАМ ТРАНЗИСТОРА'
20 PRINT 'СХЕМА С ОБШИМ ЭМИТТЕРОМ, КОД 1’
30 PRINT 'СХЕМА С ОБШЕЙ БАЗОЙ, КОД 2'
40 PRINT 'СХЕМА С ОБЩИМ КОЛЛЕКТОРОМ, КОД 3'
50 INPUT 'ВВЕДИТЕ СОПРОТИВЛЕНИЕ ЭМИТТЕРА R='R1
60 INPUT 'ВВЕДИТЕ СОПРОТИВЛЕНИЕ БАЗЫ RB»'R2
70 INPUT 'ВВЕДИТЕ СОПРОТИВЛЕНИЕ КОЛЛЕКТОРА RK='R3
80 INPUT 'ВВЕДИТЕ КОЭФФИЦИЕНТ ПЕРЕДАЧИ ТОКА ЭМИТТЕРА А-'А
90 INPUT 'ВВЕДИТЕ КОД’ N
100 IF N=1 THEN 140
110 IF N=2 THEN 190
120 IF N=3 THEN 240
130 PRINT 'КОД НАБРАН НЕВЕРНО' s 60T0 90
140 LET ¥=R1+R3-A*R3 : LET H1»R2+R1«R3/V
150 LETH2=R1/Y:LETH3=<A*R3-R1>/¥:LETH4®1/V:GOTO 280
190 LET M=R2+R3 : LET Hl«Rl+<<1-A>*R2*R3)/M
208 LETH2=R2/M:LETH3=-<R2+A*R3)/M:LETH4=l/M:60T0 280
240 LET V=R1+R3-A*R3 : LET H1=R2+R1*R3/V
250 LETH2=R3*<1-A)/V:LETH3=-R3/V:LETH4»1/V
280 PRIHT 'ВХОДНОЕ СОПРОТИВЛЕНИЕ НЦ='Н1
290 PRIHT 'КОЭФФИЦИЕНТ ОБРАТНОЙ СВЯЗИ ПО НАПРЯЖЕНИИ Н12='Н2
300 PRINT 'КОЭФФИЦИЕНТ ПЕРЕДАЧИ ПО ТОКУ Н21='НЗ
310 PRINT 'ВЫХОДНАЯ ПРОВОДИМОСТЬ Н22=’Н4
320 60Т0 90:END
Параметрами элементарных усилительных
каскадов (см. рис. 7.12 и эквивалентные
схемы рис. 7.13) на средних частотах явля-
ются: входное сопротивление R„ = Ua./l3K,
коэффициент усиления по току
коэффициент усиления по напряжению
= сквозной коэффициент усиления
по напряжению • К£= С/Вых/£вх .и выходное
сопротивление /?вых = ДС,вых/Д/вых, где Д/,Ых —
изменение выходного тока, вызванное изме-
6
Рис. 7.12. Элементарные каскады на биполярных транзисторах с общей базой (а)\ общим эмитте-
ром (б) и общим коллектором (в)
181
Рис. 7.13. Эквивалентные схемы каскадов с общей базой (а), общим эмиттером (6) и общим коллек-
тором (в)
нением нагрузки. Резистивные цепи питания
каскадов на рис. 7.12 и 7.13 не показаны,
их учет на параметры каскада тривиален.
Приведем формулы для расчета указанных
параметров для каскада с общей базой:
Rax — G “F'/'б
— a} rK + RH
Г к 4” ''б 4“ Я и
К _______________гк Rh____________
и~гк (Гэ4-Ян)-4-Мгк(1-а)4-ГэЯн] ’
К __________ гкЯн
Е Гк(г, 4~ Ян)4“(го 4~ Ян) [Гк(1 —Л)-[-Гэ4-/?и]’
Гк 4“'*б4'*Яи
_____________(агк-Иб) Ян______________
Гэ(Гк4-Гб4“^н)4“/’б[(1 —й)гк-}“/?н]
___________________(дгк4~гб) R*_________________
Е (Rh 4“ г К 4" Гб + Rh) “I- гб[( 1 — Д) Г к 4“ Ян]
Явых — Г|( 4“ ^б
агк4-Гб \
r»4- ns 4- Яи /
для каскада с общим эмиттером:
Явх = Гб4"
Гэ(Гк4-/?н)
гк(1 —о)4-б4-^н
„ ~(агк~г3}
1 (1 —л)Гк4-гэ4"^н
„ —(ОГк — Гэ) Rh
и Гэ(гк 4-#и)4-''б[(1 —a)r* 4" Гэ 4“ Ян]
—(агк —гэ) R,
Гэ(гк4-Яи)4-(Ян 4-гб)[(1 —д)гк 4~ гэ 4-Ян)
/?вих = Гк(1 -а)+г,( 1 ч---а-Гк^,% ) ,
для каскада с общим коллектором:
Явх= Гб 4-
Гк(Гэ4~Ян)
Гк (1 — а) 4~ г, 4- Ян
г к
Гк(1—а)4-г,4-/?н '
Программа 7.29.
Пример. Для схемы с общей базой
(код 1) при Гб = 400 Ом, гэ = 25 Ом, гк —
= 1-106 Ом, /?н =34,946 Ом, а = 2,534-105 Ом
получим /0 = 0,9751, Ки= 139,519 и /<£ =
= 36,130. Для схемы с общим эмиттером
(код 2) при гб = 400 Ом, г, = 25 Ом, гк =
= 1-10* Ом, /?и=1000 Ом, а=0,98 и /?н =
= 5000 Ом расчет дает Явх= 1403,996 Ом,
/?вых = 3,722-104 Ом, /<,= -39,16, Ки =
= — 139,459 и /<£=—81,447 (знак — ука-
зывает на инвертирование фазы выходного
сигнала по отношению к фазе входного
сигнала). Для схемы с общим коллектором
(код 3) при Гб = 400 Ом, г, = 25 Ом, гк =
= 1-106 Ом, Яи = 1-104 Ом. а = 0,98 и /?н =
= 500 Ом получаем RBX = 2,598-104 Ом,
Явых = 2,309-102 Ом, /<, = 48,721, /<,, = 0,9377
и /<^ = 0,6771.
Расчет по приведенной методике дает
параметры каскадов в области средних
частот. Искажения в области низких и высоких
частот при активной нагрузке легко учиты-
ваются (см. [34]). Если нагрузка комплекс-
ная, расчет несколько усложняется. В ка-
честве примера рассмотрим инженерный ра-
счет параметров каскадов с общим истоком и
стоком на полевых транзисторах [40].
Каскад с общим истоком (рис. 7.14, а)
рассчитывается по следующему алгоритму.
1. Задаем исходные данные: сопротивление
затвора • /?3, сопротивление стока Rc, выход-
ное сопротивление транзистора RCi1, сопротив-
ление генератора /?г, сопротивление нагрузки
182
Программа 7.29.
10 PRINT 'РАСЧЕТ МАЛОСИГНАЛЬНЫХ УСИЛИТЕЛЬНЫХ КАСКАДОВ'
20 PRINT 'КАСКАД С. ОБЩЕЙ БАЗОЙ, КОД 1'
30 PRINT 'КАСКАД С ОБЩИМ ЭМИТТЕРОМ, КОД 2'
40 PRINT 'КАСКАД С ОБЩИМ КОЛЛЕКТОРОМ, КОД 3'
50 INPUT 'ВВЕДИТЕ СОПРОТИВЛЕНИЕ БАЗЫ R1='R1
60 INPUT 'ВВЕДИТЕ СОПРОТИВЛЕНИЕ ЭМИТТЕРА R2='R2
70 INPUT 'ВВЕДИТЕ СОПРОТИВЛЕНИЕ КОЛЛЕКТОРА R3='R3
75 INPUT 'ВВЕДИТЕ СОПРОТИВЛЕНИЕ ИСТОЧНИКА R='R
80 INPUT 'ВВЕДИТЕ КОЭФФИЦИЕНТ ПЕРЕДАЧИ ТОКА ЭМИТТЕРА А='А
85 INPUT 'ВВЕДИТЕ СОПРОТИВЛЕНИЕ НАГРУЗКИ RH='R0
90 INPUT 'ВВЕДИТЕ КОД' N
100 IF Н=1 THEN 140
110 IF N=2 THEN 200
120 IF N=3 THEN 260
130 PRINT 'КОД НАБРАН НЕВЕРНО' s GOTO 90
140 LET Y=R3+R1+R0 "• LET R4=R2+R1*< < l-A>*R3+R0>zY
150 LET X=A*R3+R1 ! LET Kl=XzY
160 LET K2=<X*R0)z<R2*Y+Rl*R3*<l-A>+R0*Rl)
170 LET K3=X*R0z<<R+R2)*Y+R1*R3*<1-A)+R0*R1>
180 LET R5=R.3+Rl*<l-Xz(R2+Rl+R))
190 60T0 310
200 LET M=R3*<1-A)+R2+R0 :LET R4=Rl+R2*<R3+R0)zM
210 LET N=A*R3-R2 s LET Kl=-NzM
220 LET K2=-N*R0z<R2*<R3+R0>+Rl*M)
230 LET K3=-N*R0z<<R2*<R3+R0)+<R1+R>*M>)
240 LET R5=R3*<1-A)+R2*<l+<A*R3+R2)z(R2+Rl+R))
250 GOTO 310
260 LET X=R2+R0 : LET Y=R3*<1-АЭ+Х ! LET R4=Rl+R3*Xz?
270 LET Kl=R3zy
280 LET K2=R3*R0z<R3i*X+Rl*Y>
290 LET K3=R3*R0z<R3*X+<Rl+R)*Y)
300 LET R5=R2+<R1+R)*<R3*(1-A>z<R3+R1+R>)
310 PRINT 'ВХОДНОЕ СОПРОТИВЛЕНИЕ R='R4
320 PRINT 'ВЫХОДНОЕ СОПРОТИВЛЕНИЕ R='R5
330 PRINT 'КОЭФФИЦИЕНТ УСИЛЕНИЯ ПО ТОКУ KI='K1
340 PRINT 'КОЭФФИЦИЕНТ УСИЛЕНИЯ ПО НАПРЯЖЕНИИ KU='K2
350 PRINT 'СКВОЗНОЙ КОЭФФИЦИЕНТ УСИЛЕНИЯ ПО НАПРЯЖЕНИИ KZ='K3
360 GOTO 90 : END
Рис. 7.14. Каскады с общим истоком (а)
и общим стоком (б) на полевых тран-
зисторах
RH, сопротивление в цепи истока RH, входную
емкость Сэи, проходную емкость Сзс, выход-
ную емкость Сен, емкости разделительных
конденсаторов С\ и Сг, емкость шунти-
рующего Rh конденсатора Си и крутизну
транзистора S в рабочей точке.
2. Вычисляем входное RBX — R3 и выходное
/?вых = RchII Rc = ReH Rc/(Rch 4- Re) сопротивления
каскада.
3. Вычисляем коэффициенты усиления
„ ____ Ун____ с Ren Rc Rh
Rc.R<- + Rc«R« + ReR« '
_UK_ R.
4. Находим характеристические постоян-
ные времени для области малых времен:
твх = |Сзи-4~Сзс(1 + R„0)| Rr R3/(R, 1- RaL
Тцых — (Re II Rh II Ron) (Сзс-рСси),
Твх о ~ Rr[C3H + C3C Сси/(Счс 4" СГц)|,
Тэкв — Твх -j- Твых.
5. Вычисляем коэффициент ш =
= твх.о Твйх/Тэкв, характеризующий режим р.а-
боты каскада.
Для данного каскада при больших Си
(Си выбирается исходя из подавления
отрицательной связи на низких частотах)
значения т<с0,25 и режим каскада аперио-
дический.
183
6. Вычисляем времена нарастания кас-
када /h = 2,2t9kBV^ ““2m и добротность D —
=5/2,2 (Сзи + Сси).
7. Переходная характеристика каскада
в области малых времен в операторной
форме имеет вид Л(р)=(1 Ч-ртэкв+рМкв/п)"1-
8. Находим постоянные времени каскада
в области больших времен ti = (ЯгЧ~Яз) Ci,
Т2= (ЯсЧ“Ян) ^2, Тн=(Яи||1/5) Сн.
9. По заданной длительности импульсов /н
оцениваем спады вершины импульсов Д| =
= /и/Т|, Л2 —/и/Т2, Дз = /и/Тн и общий спад
Д — Ai Д2-|-Лз. Если задано Яи = 0, то
следует полагать Дз = 0.
Программа 7.30.
3. Находим характеристические постоян-
ные времени в области малых времен твх =
= Яг[Сзи (1 - К и J + Сас), Твых - (Ян II Ян II1 /5) Ся,
Твх0 = Яг (Сэи “Ь Сзс) И Тэкв = ТЯХ 4“ Твых-
4. Определяем коэффициент режима
m = Твх0Твых/Тэкв-
5. Если т^0,25, режим работы является
апериодическим (при т=0,25— критиче-
ским), причем время нарастания каскада
/н = 2,2тЭКвл/1 2m.
6. Если т> 0,25, режим работы является
колебательным и операторное выражение для
переходной характеристики имеет вид h(p)=
=(14-ртЭкв4-рМквт)~1, где значения тЭКв
и т соответствуют полученным выше.
10 PRINT'УСИЛИТЕЛЬ С ОБШИМ ИСТОКОМ'
20 INPUT'ВВЕДИТЕ R3/RC/RCH'RbR2/R3
30 INPUT'BBEMMTE Rr,RH/RH'R4/R5,R8
40 INPUT'ВВЕДИТЕ СЗИ/СЗС,ССИ'СЬС2/СЗ
45 INPUT'ВВЕДИТЕ С1/С2/СИ'С4,С5/С6
50 INPUT'ВВЕДИТЕ S='S
60 LET R6=R1!LET R7==R3*R2/<R3+R2)
70 PRINT'R BX0AA='R6sPRINT'R ВЫХОДA='R7
80 LET A=R2*R3*R5/<R2*R3+R2*R5+R3*R5>
90 LET K=<R1/<R1+R4))3*S*A5PRINT'KU='K
100 LET K1=S*A5LET T1 = <C1+C2*<1+K1))5*R4^R1z(R4+RD
110 LET T2=<C2+C3>*A:LET T3=R4*<C1+C2:*C3/<C2+C3>)
115 PRINT'ТВХ='ТЬ'ТВЫХ='Т2
120 LET T4=Tl+T2sLET №T3*T2/T4~2
130 PRINT'H < P >=1/<1+РжТ4+Рл2*Т4л2*М Ъ ГДE'
140 PRINT'T4='T4:PRINT'M='M
150 LET T5=2.2*T4*SQR<l-2*M)sLET D=S/2.2/CC1+C3)
160 PRINT'T HAPACTАНИЯ='Т5:PRIНТ'ДОБРОТНОСТЬ ПТ='В
170 PRINT'ДЛЯ ОБЛАСТИ БОЛЬШИХ ВРЕМЕН'
180 LET T6e<R4+Rl)**C4sLET T7=<R2+R5)*C5
190 LETT8«C6*R8z < R8*S+1)
200 PRINT'TBX='T6/'TBNX='T7/'T ИСТ.ЦЕПИ='Т8
210 INPUT'BBEAHTE T ИМПУЛЬСА='Т0
228 LETZ1=T0/T6:LETZ2=T0/T7:LETZ3==05 IF T8>8 THEH LETZ3=T0/T8
230 LET Z=Z1+Z2+Z3
240 PRINT'СПАД ПЛОСКОЙ ВЕРШИНЫ ИМПУЛЬСА Z='Z
258 GOTO 2105 END
Пример. Для Яз=1*Ю6 Ом, Яс=
=2-103 Ом, Яси=Ы05 Ом, Яг=Ь103 Ом,
Ян = 1 • 104 Ом, Ян = 1 • Ю3 Ом, Сзи = 10-10~12 Ф,
Сзс=1.10-12 Ф, Ссн = 5.10-12 Ф, Ci =
= 0,1.10“6 Ф, С2 = 1.10-6 Ф, Сй = 100-10~6 Ф,
S = 5.10“3 A/В получим Явх = Ы06 Ом,
Явых = 1,96Ы О3 Ом, /^=8,189, твх =
= 1,918.10“8 с, твых=9,836-10“9 с, тЭЯв =
= 74 = 2,901 • 10“8, т = М= 1,266-10“’, /и =
= 5,516.10-® с, D= 1,515-108 1/с, л =
= 1,001.10-’ с, Т2=1,2.10-2 с, ти =
= 1,667-10"2 с, для /и=Ю0.10“6 с, А =
= Z = 1,533-10~2.
Каскад с общим стоком (истоковый
повторитель), работающий на емкостную
нагрузку (рис. 7.14,6), рассчитывается по
следующему алгоритму.
1. Задаем исходные данные: сопротив-
ления затвора Яз, истока Ян, генератора Яг,
нагрузки Ян, емкости СЭи, Сзс и С« (емкость
Сн включает и емкость Сси) и крутизну 5.
2. Находим коэффициенты передачи по
напряжению К и = 5ЯЯн/(1 Ч-ЗЯнн), где Яни =
«ЯиЯи/(Ян“ЬЯи), и Кц = ЯзКу0/(Яз И” Яг), вход-
ное Явх = Я3 и выходное Явых = Яя||(1/5)=
= Ян/(14“5Ян) сопротивления.
При необходимости могут вычисляться
постоянные времени в области больших времен
Т1 = С1(Яг4-Яз), Т2 = С2(Явых + Ян) И относи-
тельный спад вершины импульса Д = /и/т|Ч-
-Ни/т2 заданной длительности /и-
Программа 7.31.
Пример. Для Яз=Ы06 Ом, Яя =
=2-103 Ом, Яг=Ы03 Ом, Яи=1.Ю4 Ом,
C3h=10.10-12 Ф, Сзс=ЬЮ-‘2 Ф, Сн =
= 100.10-12 Ф и 5 = 5. КГ3 A/В получим
Явх=Ы06 Ом, Явых= 1,818-102 Ом, Яу=
= 0,892, твх = 2,071 -10“9 с, твых = 1,790• 10“8 с,
тЭкв= 1,993-10 8 с, режим работы колеба-
тельный при т = 0,495 (программа выдает
формулу ДЛЯ Л(р) ПрИ Т9кв = 74).
Для усиления импульсных сигналов с ма-
лыми временами нарастания и спада (поряд-
ка 1 нс) применяются усилители с распре-
деленным усилением. Расчет такого усили-
теля на мощных СВЧ МДП-транзисторах
с микрополосковыми линиями задержки
(рис. 7.15) производится по алгоритму.
1. Задаем исходные данные: входное
и выходное сопротивления линий ZBX и ZBbIX,
число транзисторов в каскаде /V, их кру-
184
Программа 7.31.
10 PRINT‘РАСЧЕТ ИСТ0К080Г0 ПОВТОРИТЕЛЯ'
20 INPUT'ВВЕДИТЕ R3,РИ>RF/RH'RbR2>R3/R4
30 INPUT'BBEAHTE СЗИ/СЗС/СН'СЬС2/СЗ
40 INPUT'ВВЕДИТЕ S='S
50 LETR5=R1:LETR6=R2/<R2*S+1)
60 PRINT'R BX0AA='R5sPRINT'R ВЫХОДА*'R6
70 LET A=S«R2*R4/(R2+R4+S*R2*R4>
80 LET K=R13kA/(R1+R3)sPRINT'KU='K
90 LET K1=A:LET T1=R3*<C1*(1-K1)+C2)
100 LETT2*C3*R6*R4z <R6+R4 ) 5 LETT3=R3* < C1+C2 )
110 LET T4=T1+T2’.LET M=T3*T2/T4~2
115 PR INT' TBX*' T15 PR I NT' ТВЫХ*' T2 5 PR I NT' ТЭКВ*' -T4
120 IF M>«25 THEN 18©
130 IF M<.25 THEN 150
140 PRINT'PEHHM РАБОТЫ КРИТИЧЕСКИЙ'sGOTO 160
150 PRINT'РЕНИИ РАБОТЫ АПЕРИОДИЧЕСКИЙ'
160 LET T5«2.2*T4*SQR<1-2*M>
170 PRINT'T НАРАСТАНИЯ*'T5sGOTO 190
180 PRINT'РЕНИИ РАБОТЫ КОЛЕБАТЕЛЬНЫЙ'
190 PRINT'H < P)=1/<1+P*T4+P~2*T4~2»M)л ГДЕ'
200 PRINT'T4='T4sPRINT'M='Ms END
Рис. 7.15. Усилитель с распре-
деленным усилением на мощ-
ных МДП-транзисторах с микро-
полосковыми линиями задержки
тизну S, емкость нагрузки Си, выходную
СВых = Сси и проходную Спроход = Сзс емкости
транзисторов, диэлектрическую проницаемость
е — Е и толщину И диэлектрика печатной
платы, толщину металлических полосок микро-
полосковых линий D.
2. Вычисляем коэффициенты усиления
кУс=^гВЫх2и/(г вых + Z„), Кус макс — 2VSZBbIx.
3. Находим время установления в режиме
согласования (ZH = ZBUX), где Со = С3и4-Сзс
/у= 1,1ZBWx(C3h4-C3c) -у/ТГ при сн = о,
~ 2,2ZBbix *\/Л^Со -|- Си при Сн^> 0. 10
4. Находим ширину полоски линий
= 1,25 Г------$’9^—.. 1-0, где Z=Z,X
L exp (Z V е 4-1,41/87 J
для входной и Z=Z,UX для выходной линий.
5. Находим относительную скорость рас-
пространения сигнала в линиях v/c=*
= 1/-\/0,475е-|-0,67, где с — скорость света.
Расстояние I между транзисторами должно
быть таким, чтобы время прохождения сигна-
ла между ними было равно или превышало
значение- ty при Си=0.
Программа 7.32.
10 PRIHT'PPP НА МОЩНЫХ МДП-ТРАНЗИСТОРАХ И МЛЗ'
20 INPUT'ВВЕДИТЕ ВОЛНОВЫЕ СОПРОТИВЛЕНИЯ ZBX/ZBMX'ZbZ2
30 INPUT'ВВЕДИТЕ ЧИСЛО ТРАНЗИСТОРОВ В КАСКАДЕ Н'Н
40 INPUT'ВВЕДИТЕ КРУТИЗНУ ТРАНЗИСТОРА 8'8
50 INPUT'ВВЕДИТЕ ПАРАМЕТРЫ СХЕМЫ RH, CH'R1/C1
60 INPUT'ВВЕДИТЕ СВЫХ/СПРОХОД ТРАНЗИСТОРА'С2,СЗ
70 INPUT'ВВЕДИТЕ ДИЭЛ.ПРОНИЦАЕМОСТЬ Е'Е
80 INPUT'ВВЕДИТЕ ТОЛЩИНУ ДИЭЛЕКТРИКА Н'Н
90 INPUT'ВВЕДИТЕ ТОЛЩИНУ МЕТАЛ.ПОЛОСКИ D'DsPRINT
100 LET K=H*S*Z2*Rl/<Z2+Rl)sLET K1=N*S*Z2
110 PRINT'KyC='Ks PRINT'КУС MAKC='K1
120 LET C=C2+C3s IF C1=0 THEN 140
130 LET Tl=2.2*Z2*SQR<H»C''2+Cl''2)sG0T0 150
140 LET Tl»l.1*Z2*C»SQR<H)
150 PRINT'ТУСТ='TlsLET A1=EXP<Z1*SC!R<E+1.41)z87)
160 LET A2=EXP<Z2*SQR(E+1.41>/87)
170 LET Ul=1.25*(5.98*HzAl-D)sLET bJ2=1.25*<5.98*H/A2-D)
180 PRINT'UIHPHHA BX.ЛИНИИ»'Wli'ШИРИНА ВЫХ. ЛИНИИ»'Ы2
190 LET U=1/SQR<.475ЖЕ+.67)
200 PRINT'ОТНОСИТ.СКОРОСТЬ РАСПРОСТРАНЕНИЯ»'UsEND
185
Пример. Для ZBX==50 Ом, ZBblx —75 Ом,
Л/ = 5, S== 0,025 A/В (транзисторы КП905),
/?я = 75 Ом, Сн = 0, Свых = 1,6-10~12 Ф,
С«Роход==0,4-10~12 Ф, е = 4,7, //-—1 мм и
—0,1 мм получим: Кус = 4,6875, Кус макс —
=9,375, <уст=3,690 • 10~10 с, и7вх=1,68 мм,
И7Вых=0,76 мм и у/с = 0,587
§ 7.6. Расчет активных фильтров
Активные фильтры (АФ) широко приме-
няются в технике связи и в измерительной
технике. Они строятся на основе RC цепей
и на активных (усилительных) элементах
в виде интегральных операционных усили-
телей. Отсутствие в АФ громоздких индук-
тивностей обеспечивает их малые габариты
и массу, высокую надежность и техноло-
гичность.
Сложные фильтры проектируются в виде
последовательного (каскадного) соединения
элементарных фильтров второго порядка.
В зависимости от характеристик элементар-
ных фильтров могут быть получены фильтры
с различными АЧХ и ФЧХ, аппроксими-.
руемыми по Баттерворту, Бесселю, Чебышеву
и т. д. [23, 35]. Каскадированию элементарных
фильтров и выбору их параметров посвящена
обширная справочная литература, причем
большинство данных для этого табулировано.
В связи с отмеченным, для разработчи-
ков фильтров представляет интерес расчет
на ЭВМ функционально полного комплекта
элементарных фильтров второго порядка.
Такой расчет для каждого фильтра прихо-
дится, как правило, выполнять неоднократно
при различных сочетаниях исходных данных
с тем, чтобы получить приемлемые значения
расчетных параметров. Таким образом, обеспе-
чивается многовариантный расчет и выбор
оптимального варианта фильтра. Методика
и алгоритмы подобного расчета подробно
описаны в [23].
Ниже приводится существенно усовершен-
ствованная, в сравнении с описанной в [23],
система автоматического проектирования
электрических схем элементарных АФ. Си-
стема состоит из 24 взаимосвязанных про-
грамм, обеспечивающих расчет всех 23 эле-
ментарных схем АФ. В отличие от [23]
система обеспечивает:
1. Информацию пользователю о класси-
фикации фильтров и их «меню» (програм-
ма 7.33), а также о виде АЧХ и ФЧХ.
2. Автоматический поиск выбранного ва-
рианта фильтра (все программы 7.34—7.56
записаны на одной кассете и пронумерованы
кодами от 1 до 23). Расположение программ
на магнитной ленте, т. е. в ПЗУ, а не в ОЗУ
ЭВМ, обеспечивает разгрузку ОЗУ, позволяет
увеличить объем информации, предоставляе-
мой пользователю, уменьшает время ввода
программы и увеличивает надежность про-
граммного поиска.
3. Выдачу стилизованной принципиаль-
ной схемы выбранного варианта фильтра
с обозначениями ее элементов и выдачу
уравнения для операторной функции пере-
дачи T(s) (как и в [23] оператор /со обозначен
буквой s).
Программа 7.33.
001© PRINT'КОМПЛЕКС ПРОГРАММ ДЛЯ АВТОМАТИЧЕСКОГО'
0020 PRINT'ПРОЕКТИРОВАНИЯ АКТИВНЫХ ФИЛЬТРОВ.'
0030 PRINT'РАССЧИТЫВАЮТСЯ СЛЕДУЮЩИЕ ВИДЫ ФИЛЬТРОВ.'
0040 PRINT'НИЗКОЧАСТОТНЫЕ'
0050 PRINT' Ал ДБ (А-КОЭФФИЦИЕНТ УСИЛЕНИЯ) <QP=2) .» Л
0060 PRINT' !
0070 PRINT' ‘ жж 0080 PRINT' К |жжжжжжжж! ж 0090 PRINT' » I ж 0100 PRINT' ’ ! ж 0110 PRINT' ! ! » ж L6T у > > }
0120 PRINT' ЫМ ЫР 0130 PRINT' F(W) (F-ФАЗА) 0140 PRINT' ! 0150 PRINT' О ‘жжжжжжжж 0160 PRINT' ‘ Ж 0170 PRINT' -90 I ж 0180 PRINT' ! ! жжжжжжжж f Л Л Л Л Л
0190 PRINT'-180 ! ! LGT Ы Л
0200 PRINT' ЫР 0210 PRINT" 022© INPUT X 0230 PRINT' 0240 PRINT'ВЫСОКОЧАСТОТНЫЕ' 0250 PRINT' А/ДБ (А-КОЭФФИЦИЕНТ УСИЛЕНИЯ) Л Л Л
0260 PRINT' ! <QP=2) Л
0270 PRINT' ! жж 0280 PRINT' ! ж! ж 0290 PRINT' К • ж-1—жжжжжжж 0300 PRINT' ! ж i 0310 PRINT' I ж 1 0320 PRINT' ‘ж ! 0330 PRINT' ж 1 LGT Ы Л л • Л Л Л Л
©340 PRINT* WP л
0350 PRINT* F(W) (F-ФАЗА) >
0360 PRINT* i >
0370 PRINT* 180 ! жжжж >
0380 PRINT* ! ж >
0390 PRINT* 90 i ж л
0400 PRINT* ! ! ж л
0410 PRINT* 0 1 i ^жжжжжжжж — L6T W л
0420 PRINT* WP л
0430 PRINT* л
0440 INPUT X
0450 PRINT* л
0460 PRINT* л
0470 PRINT* ПОЛОСНО-ПРОПУСКАЮШИЕ*
0480 PRINT* A/ДБ <а-коэффициент i УСИЛЕНИЯ) л
0490 PRINT* i (ОР=10) л
0500 PRINT* К ! ж л
0510 PRINT* ! ж|ж л
0520 PRINT* ! ж|ж л
0530 PRINT* ! ж!!!ж л
0540 PRINT* ! ж ! ! ! ж л
0550 PRINT* ! ж । ! ! ж л
0560 PRINT* 1* И ! ж л
©570 PRINT* ж 1 1 1 ж< LOT W л
0580 PRINT* W1 UP W2 л
0590 PRINT* F(W) (F-ФАЗА) л
0600 PRINT* I л
0610 PRINT* 90 !жжжжж л
0620 PRINT* ! ж л *
0630 PRINT* 0 1 ж л
0640 PRINT* ! ж л
0650 PRINT* -90 ! ! -жжжжжжжжжж- L6T W л
0660 PRINT* WP л
0670 INPUT X
0680 PRINT* л
0690 PRINT* л
0700 PRINT* П0Л0СН0-ЗАГРАЖДАЮШИЕ *
0710 PRINT* ' А/ДБ (А-КОЭФФИЦИЕНТ УСИЛЕНИЯ) 1 *
0720 PRINT* л
0730 PRINT* К !жжжжжжжж жжжжжжжж
0740 PRINT* ! ж ж л
0750 PRINT* ! ж л
0760 PRINT* КжОР/QZ’ ж л
0770 PRINT* । I л
0780 PRINT* i i L6T W л
0790 PRINT* lip л
0800 PRINT* F(W) (F-ФАЗА) л
0810 PRINT* 90 ! л
0820 PRINT* i л
0830 PRINT* i ж л
0840 PRINT* ! ж ж л
0850 PRINT* 0 !жжжжжж ж жжжжжж л
0860 PRINT* ! жж! л
0870 PRINT* ! ж ! л
0880 PRINT* ! I л
0890 PRINT* -90 ! ! LGT W
0900 PRINT* WP * sINPUT
0910 PRINT* л
0920 PRINT* л
187
1 р. 40 к.