- •Оглавление
- •Введение
- •1. Программирование задач на языке basic
- •Программирование линейных вычислительных процессов
- •1.1.2. Справочный материал.
- •1.1.5. Вопросы для самопроверки
- •1.2.3. Пример:
- •20 Input “a b “ ; a , b input “a b “ ; a , b
- •1.2.4. Задание к лабораторной работе.
- •Определённые циклы
- •1.3.4. Задания к лабораторной работе.
- •Определённые циклы. Суммирование членов функционального ряда
- •Input “X, m%, h% “ ; X , m% , h%
- •1.4.4. Задания к лабораторной работе.
- •Файлы прямого и последовательного доступа
- •Input “X m h “ ; X , m% , h
- •Программирование итерационных вычислительных процессов
- •10 Input "Введите значения X,r,k,e" ; X,r,k,e
- •1.6.5. Вопросы для самопроверки
- •1.7.5. Вопросы для самопроверки
- •Формирование и обработка одномерных массивов
- •1.8.5. Вопросы для самопроверки
- •Формирование двумерных массивов и выполнение операций с матричными элементами
- •160 Next I
- •160 Next j
- •150 Next j
- •1.9.5. Вопросы для самопроверки
- •Программирование сложных программ с использованием подпрограмм
- •40 Read X( I ) : next I
- •45 Data 1, 2.1, -3, -4.1, 1.7, 1.8, 1.9, 14.2, -5, -4.3, 11.2, 10.8
- •140 Return
- •90 Read X( I ) : next I
- •100 Data 1, 2.1, -3, -4.1, 1.7, 1.8, 1.9, 14.2, -5, -4.3, 11.2, 10.8
- •1.10.5. Вопросы для самопроверки
- •Программирование цепочек текстовых переменных
- •1.11.5. Вопросы для самопроверки
- •Литература к главе 1
- •2.1.5. Вопросы для самопроверки
- •Решение нелинейного уравнения графическим методом
- •2.2.5. Вопросы для самопроверки
- •Решение НелинейноГо уравнениЯ МетодОм простых итераций
- •2.3.5. Вопросы для самопроверки
- •Решение нелинейного уравнения методом касательных
- •2.4.3. Пример.
- •2.4.5. Вопросы для самопроверки
- •Решение систем Нелинейных уравнений графическим методом
- •2.5.5. Вопросы для самопроверки
- •Решение систем Нелинейных уравнений методом пРостых итераЦиЙ
- •2.6.3. Пример.
- •2.6.5. Вопросы для самопроверки
- •Численное интегрирование:метод прямоугольников и трапеций, формула симпсона
- •2.7.5. Вопросы для самопроверки
- •Численное решение обыкновеНноГо дифференциального уравнениЯ МетодОм эЙлера и рунге-кутта
- •2.8.5. Вопросы для самопроверки
- •Численное решение систем обыкновеНнЫх дифференциальных уравнениЙ МетодОм эЙлера
- •3. Математическое моделирование на пэвм
- •3.1. Системы тел сосредоточенными массами
- •3.1.1. Математическое моделирование теплообмена для тел сосредоточенных масс с окружающей средой
- •3.1.2. Собственные колебания
- •Лабораторная работа № 3.1 исследование автономной линейной системы уравнений
- •Лабораторная работа № 3.2 исследование автономной нелинейной системы уравнений
- •Лабораторная работа № 3.3 решение жестких систем обыкновенных дифференциальных уравнений (оду)
- •3.1.3. Математическая модель стабильности позвоночника
- •Результаты численных расчетов
- •3.2. Системы с распределенными параметрами
- •3.2.1. Математическое моделирование процесса переноса частиц
- •3.2.2. Математическое моделирование процесса прерванного посола рыбы
- •Отметим, что критерий устойчивости счета методом прогонки к ошибкам округления выполнен, так как
- •Как следует из рекуррентных соотношений (3.2.32), для начала расчета необходимо иметь значения e1 и w1, которые определяются с помощью левого граничного условия (3.2.23)
- •3.2.3. Моделирование процесса переноса частиц на основе гиперболической системы уравнений
- •3.2.4. Математическое моделирование нестационарного двумерного процесса переноса частиц (теплопереноса)
- •Система разностных уравнений (3.2.45) дополнялась начальными и граничными условиями (3.2.40 – 3.2.44) и решалась методом обыкновенной прогонки попеременно в двух направлениях.
- •3.3. Повышение порядка точности аппроксимации дифференциальных уравнений
- •3.3.1. Повышение порядка точности аппроксимации обыкновенных дифференциальных уравнений
- •3.3.2. Повышение порядка точности аппроксимации дифференциальных уравнений гиперболического типа
- •3.4. Интерполяция функций
- •3.4.1. Линейная интерполяция
- •3.4.2. Квадратичная интерполяция
- •3.4.3. Интерполяционная формула Лагранжа
- •3.4.4. Сплайны
- •3.4.5. Алгоритм решения обратных задач по заданным показателям качества
- •Литература к главе 3
1.8.5. Вопросы для самопроверки
1. Что такое массив ?
2. Для чего в алгоритмическом языке БЭЙСИК служит оператор DIM ?
3. Могут ли быть индексы дробными числами ?
4. Как определяется среднее арифметическое значение положительных (отрицательных) элементов массива ?
5. На чем основывается поиск минимального и максимального элемента массива ?
6. Построить блок-схему алгоритма формирования одномерного массива.
Лабораторная работа № 1.9 ( C:\USER\GROUP\NOF\lab 9.bas )
Формирование двумерных массивов и выполнение операций с матричными элементами
1.9.1. Цель работы. Получение практических навыков алгоритмизации и программирования процесса формирования и обработки двумерных массивов.
1.9.2. Справочный материал. При формировании двумерных (многомерных) массивов используются вычислительные процессы, содержащие два и более включенных друг в друга циклов, которые являются сложными (вложенными) циклическими процессами. В них выделяются внешние и внутренние циклы. Цикл, который не входит в другие циклы, называется внешним. Цикл, который включается в другие циклы, называется внутренним. Участок алгоритма или программы, включающий в себя внешний и один или несколько внутренних циклов, называется сложным циклом.
При алгоритмизации и программировании сложных циклических процессов используются в основном те же приемы, что и при подготовке вычислений, содержащих один цикл (простой цикл). Иными словами, каждый цикл сложного циклического процесса содержит этап подготовки этого цикла, тело цикла, этап изменения значений исходных переменных данного цикла, этап проверки окончания и управления им. Особенность выполнения сложного цикла состоит в том, что за одно исполнение внешнего цикла внутренний цикл повторяется многократно. Для правильной работы сложного цикла необходимо при очередном выполнении внешнего цикла восстанавливать начальные значения исходных переменных внутреннего цикла.
1.9.3. Пример. Подготовить и организовать вычисления на ПЭВМ значений элементов матрицы Zij (двумерного массива) по формуле:
( 1.9.1)
где Xi = 0.25; -3.41; 2; -1.14; -1.53; Yj = 1.25; 0; -0.25; 1 , а также предусмотреть вычисления количества отрицательных элементов в каждой строке и столбце и произведение положительных элементов главной диагонали матрицы Z.
1.9.3.1. Алгоритм формирования матрицы Z должен предусматривать вычисление двадцати элементов, состоящих из пяти строк, так как i = 1,...,5 ( массив Xi содержит пять компонент ), и четырех столбцов j = 1,...,4 (массив Yj содержит четыре компоненты). При этом нумерация элементов массивов Х и Y начинается с единицы. Нумерация и вычисления матричных элементов Zij достигается с помощью построения сложного циклического вычислительного процесса ( см. раздел 1.9.2 ).
Внутренний цикл по j = 1,...,4 при фиксированном значении параметра внешнего цикла i вычисляет элементы i строки матрицы Z ( Zi,1; Zi,2; Zi,3 ; Zi,4 ). Внешний цикл по i = 1,...,5, наложенный на внутренний цикл по j ( следует помнить, что для каждого значения индекса i индекс j пробегает значения от 1 до 4), обеспечивает формирование всех строк матрицы Z, т. е. формирование элементов всей матрицы. Отметим, что элементы, лежащие на главной диагонали, имеют одинаковые индексы i= j, над главной диагональю - i< j, а под главной диагональю - i > j.
Текст БЭЙСИК- программы алгоритма формирования матрицы Zi,j для примера (1.9.3) приводится ниже :
10 DIM X( 5 ), Y( 4 ), Z( 5 , 4 )
20 FOR I = 1 TO 5
30 READ X( I ) : NEXT I
40 DATA 0.25 , -3.41 , 2 , -1.14 , -1.53
50 FOR J = 1 TO 4
60 READ Y( J ) : NEXT I
65 DATA 1.25 , 0.1 , -0.25 , 1
70 FOR I = 1 TO 5
80 FOR J = 1 TO 4
90 Z( I , J ) = X( I ) * Y( J ) / SQR( X( I )^2 + Y( J )^2 )
100 PRINT USING “ ###.##” ; Z( I , J ) ;
110 NEXT J : PRINT : NEXT I
Результаты расчета:
0,25 0,09 0,18 0,24
-1,17 -0,10 0,25 -0,96
1,06 0,10 -0,25 0,89
-0,84 -0,10 0,24 -0,75
-0,97 -0,10 0,25 -0,84
При вводе одномерных массивов Х и У применена в строках 30-65 блочная структура ввода данных, а в строках 100-110 используется форматированный вывод элементов матрицы Z, при этом комбинация ###.## задает формат вывода чисел с плавающей запятой - три символа до запятой и два после. В конце 100-й строки после Z(I,J) ставится “;”с целью печати всех элементов матрицы Zij в одну строку, но в строке 110 после оператора завершения цикла по j (NEXT J) имеется “пустой” оператор PRINT, позволяющий после формирования очередной строки матрицы Zij переводить курсор в начало следующей строки экрана ПЭВМ и тем самым формировать двумерный массив Zij в виде структуры матрицы.
1.9.3.2. Вычислим количество отрицательных элементов в каждой строке матрицы Zij .Так как индекс i ( см. 70 строку) является номером строки матрицы Zij ,то необходимо для каждого значения индекса i “обнулять” начальное значение числа отрицательных элементов L, тогда блок программы вычисления количества отрицательных элементов в каждой строке имеет вид:
120 FOR I = 1 TO 5
130 L = 0 : FOR J = 1 TO 4
140 IF Z( I, J )< 0 THEN L = L + 1
150 NEXT J: PRINT “Колич. отриц. эл-тов=“;L;”в строке-”;I