Загрузил Arsen Arsenov

МетодичкаБобарыкинаИнформатика

Реклама
КАЛИНИНГРАДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ
ИНФОРМАТИКА И МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ
ФУНКЦИОНАЛЬНЫХ СИСТЕМ
Учебное пособие для инженерно-технических специальностей
Калининград
Издательство КГТУ
2009
УДК 551.510.001.57(06)
Бобарыкин Н.Д., Смертин В.М., Графова Е.Н.,Седов Р.Л. Информатика и математическое моделирование функциональных систем.
На основе обобщения опыта проведения теоретических и практических занятий
со студентами инженерно-технических специальностей по курсам «Информатика» и
«Математическое моделирование на ПЭВМ» приводятся образцы выполнения характерных лабораторных работ по этим дисциплинам, а также излагаются вопросы и методы их решения, возникающие в большинстве задач математического моделирования функциональных систем.
Учебное пособие предназначено для студентов и специалистов, занимающихся
информатикой и математическим моделированием, включая численные методы решения дифференциальных уравнений.
Рецензенты: Сердобинцев С. П. – д.т.н., профессор, заведующий кафедрой автоматизации производственных процессов Калининградского государственного технического университета;
Латышев К. С. – д.ф.-м.н., профессор, заведующий кафедрой вычислительной
математики Российского государственного университета им. И. Канта.
Учебное пособие рекомендовано к печати методическим советом факультета
фундаментальной подготовки Калининградского государственного технического
университета 1 июня 2009 г., протокол № 7
 ФГОУ ВПО Калининградский государственный технический университет,
2009 г
 Бобарыкин Н.Д., Смертин В.М., Графова Е.Н, Седов Р.Л. 2009 г.
ISBN 5-94826-033-X
2
Оглавление
Введение ……………………….………………………………….................................. 6
1. Программирование задач на языке BASIC ………….…………………………… 9
1.1. Лабораторная работа № 1. Программирование линейных
вычислительных процессов ……………………………………………………….. 9
1.2. Лабораторная работа № 2. Программирование разветвляющихся
алгоритмов ……………………………………………………………………….… 14
1.3. Лабораторная работа № 3. Определённые циклы ..................................... 18
1.4.Лабораторная работа № 4. Определённые циклы. Суммирование членов
функционального ряда ……………………….......................................................... 21
1.5 . Лабораторная работа № 5. Файлы прямого и последовательного
доступа ……………………………………………………………………………. 23
1.6. Лабораторная работа № 6. Программирование итерационных
вычислительных процессов .................................................................................... 26
1.7. Лабораторная работа № 7. Вычисление на ПЭВМ сумм бесконечных
числовых рядов с заданной точностью ….............................................................. 30
1.8. Лабораторная работа № 8. Формирование и обработка одномерных
массивов .................................................................................................................... 34
1.9. Лабораторная работа № 9. Формирование двумерных массивов и
выполнение операций с матричными элементами ........................................... 38
1.10. Лабораторная работа № 10. Программирование сложных программ
с использованием подпрограмм .............................................................................. 44
1.11. Лабораторная работа № 11. Программирование цепочек
текстовых переменных ........................................................................................... 52
Литература к главе 1 ......................................................................................................... 55
2. Программирование задач в системе MATH CAD ……....…………………….. 56
2.1. Лабораторная работа № 1. Решение систем линейных алгебраических
уравнений методом обратной матрицы ..…………….………………………… 56
2.2. Лабораторная работа № 2. Решение нелинейного уравнения
графическим методом …………………………………………………………… 59
2.3. Лабораторная работа №3. Решение нелинейного уравнения методом
3
простых итераций ……………………………………………………………….. 62
2.4. Лабораторная работа №4. Решение нелинейного уравнения методом
касательных ………..……………………………………………………………… 69
2.5. Лабораторная работа №5. Решение систем нелинейных уравнений
графическим методом ……………………………………………………………. 74
2.6. Лабораторная работа №6. Метод простой итерации решения систем
нелинейных уравнений …………………………………………………………… 79
2.7. Лабораторная работа №7. Численное интегрирование: метод
прямоугольников и трапеций, формула Симпсона……………………………… 84
2.8. Лабораторная работа №8. Численное решение обыкновенного
дифференциального уравнения методом Эйлера и Рунге-Кутта ………………..87
2.9. Лабораторная работа №9. Численное решение систем обыкновенных
дифференциальных уравнений методом Эйлера .…..……….………………… 91
Литература к главе 2 ......................................................................................................... 93
3. Математическое моделирование на ПЭВМ ……….………….…………………. 94
3.I. Системы сосредоточенными массами…………………………….…………… 94
3.1.1. Математическое моделирование теплообмена для тел
сосредоточенных масс с окружающей средой……………….………………….... 94
3.1.2. Собственные колебания…………………………………………………... 98
3.1.3. Математическая модель стабильности позвоночника…………………... 107
3.2. Системы с распределенными параметрами……………………………….…. 123
3.2.1. Математическое моделирование процесса переноса частиц……….…... 123
3.2.2. Математическое моделирование процесса прерванного
посола рыбы………………………………………………………………….. 130
3.2.3. Моделирование процесса переноса частиц на основе
гиперболической системы уравнений……………………………………… 138
3.2.4. Математическое моделирование нестационарного
двумерного процесса переноса частиц (теплопереноса)………………….. 144
3.3. Повышение порядка точности аппроксимации
дифференциальных уравнений………………………………………………. 151
3.3.1. Повышение порядка точности аппроксимации обыкновенных
4
дифференциальных уравнений………………..……………………………. 151
3.3.2. Повышение порядка точности аппроксимации
дифференциальных уравнений гиперболического типа………………… 155
3.4. Интерполяция функций……………………………………………………. 159
3.4.1. Линейная интерполяция…………………………………………….. 161
3.4.2 Квадратичная интерполяция…………………………………………. 161
3.4.3. Интерполяционная формула Лагранжа…………………………….. 162
3.4.4. Сплайны………………………………………………………………. 163
3.4.5. Алгоритм решения обратных задач по
заданным показателям качества ………………………………………. 165
Литература к главе 3 ……………………………..…………………………………… 167
5
ВВЕДЕНИЕ
Широкое применение компьютеров в инженерной практике сделало необходимым изучение приближенных методов
вычислений
и
их реализации. Поэтому
важное значение приобрели численные методы решения инженерных задач. Под ними понимаются методы решения задач, сводящиеся к арифметическим и некоторым
логическим действиям над числами,
ЭВМ. Быстрое развитие
т.е. тем действиям,
вычислительной, техники
которые выполняются
существенно
повышает
требования к математической подготовке инженеров, которая в настоящее время
не может ограничиться
только традиционными, разделами математики.
Как правило, сложную вычислительную задачу можно разбить на ряд элементарных, так называемых типичных задач вычислительной математики,
вычисление интеграла,
таких как
решение дифференциального уравнения и т.п. Многие
элементарные задачи являются несложными и хорошо изученными. Современный
инженер обязан владеть основными численными методами вычислительной математики и уметь выбирать из них наиболее подходящий для решения конкретной
инженерной задачи. Поэтому настоящее учебное пособие включает рассмотрения
наиболее значимых задач математического моделирования и их численное решение,
овладение которыми позволит студентам решать и прикладные задачи, возникающие при изучении специальных дисциплин и дипломном проектировании, а также
в последующей инженерной деятельности.
Для освоения материала, охваченного настоящим методическим пособием достаточно знаний, полученных при изучении информатики и математики, включающей
основы дифференциального и интегрального исчисления, а также курса лекций по
высшей математике.
Широкое применение персональных электронных вычислительных машин
(ПЭВМ) в инженерной практике сделало необходимым уже на первом курсе КГТУ
изучать дисциплину "Информатика". Целью изучения этой дисциплины является
овладение новейшими техническими и программными средствами ПЭВМ для различных инженерных и управляющих функций. В то же время использование ПЭВМ
в учебно-педагогическом процессе позволяет существенно повысить эффективность
преподавания всех без исключения дисциплин, начиная с младших курсов. Примене6
ние ПЭВМ позволяет проводить углубленное изучение процессов и явлений, пользуясь более сложными и точными методиками. Использование ПЭВМ при выполнении
различных домашних заданий, курсовых и дипломных работ высвобождает значительное количество времени, которое затрачивалось раньше на выполнение рутинных расчетов. Это позволяет ставить перед студентами задачи исследовательского
характера.
В результате освоения курса студент должен:
- выполнить требования Государственного образовательного стандарта ЕФ.Ф.02
(см. пункт 4).
- иметь представление о способах и процессах обработки информации, о технических и программных средствах реализации этих процессов;
- знать о моделях решения функциональных и вычислительных задач, включая
алгоритмизацию и программирование, в том числе на языках программирования высокого уровня;
- иметь представление о базах данных и о программном обеспечении и технологии программирования, использования электронных сетей;
- уметь решать практические задачи, связанные с математическим моделированием технико-технологических процессов и их алгоритмизацией и численными методами;
-знать основные виды алгебраических и дифференциальных уравнений (включая
начальные и граничные условия), методы их решения, а также методы и основные
этапы формализации и алгоритмизации задач математического моделирования физических процессов (объектов);
-уметь практически реализовывать разработанные алгоритмы математических
моделей с использованием программно – технических средств современных персональных компьютеров (ПК);
-планировать эксперимент с математической моделью и интерпретировать результаты, полученные на ее основе;
-иметь представление об автоматизации проектирования, обеспечивающих и
функциональных подсистем АСУ, с помощью пакетов прикладных программ имитации и оптимизации диалоговых систем моделирования объектов.
Для успешного усвоения курса необходимы знания по дисциплинам:
7
-информатика в части Бэйсик, Excel, MathCad, Word, Access и других программ
пакета Microsoft Office;
-численные методы решений уравнений;
-теория вероятностей и математическая статистика;
-теория автоматизированного управления и др.
Предпочтение при программировании алгоритмов численного решения систем
моделирующих уравнений отдается блочной структуре программирования в системе
MathCad. Такой подход позволяет в полном объеме использовать имеющиеся в этой
системе программные средства интерполяции и экстраполяции функций во внутренних и граничных точках искомых функций, а также ряд преобразований, например,
быстрое преобразование Фурье и ряд других математических операций (построение
графиков, матричные и векторные операции и т. д.).
8
1. ПРОГРАМИРОВАНИЕ ЗАДАЧ НА ЯЗЫКЕ BASIC
Программное обеспечение: MS DOS, Norton Commander, трансляторы
1.1.
Лабораторная работа № 1 (C:\USER\GROUP\NOF\lab1.bas)
ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ
1.1. Цель работы. Освоить приёмы алгоритмизации и программирования линейных вычислительных процессов, применение встроенных математических функций.
1.2. Справочный материал.
1.2.1. Линейный вычислительный процесс можно определить как последовательность операторов, которые выполняются строго друг за другом сверху вниз.
1.2.2. Встроенные математические функции.
Функция
Ключевое слово
x
абсолютное значение
ABS( x )
ex
экспонента
EXP( x )
ln x
натуральный логарифм
LOG( x )
x
корень квадратный
SQR( x )
arctg x
арктангенс
ATN( x )
cos x
косинус
COS( x )
sin x
синус
SIN( x )
tg x
тангенс
TAN( x )
9
Для вычисления остальных элементарных функций можно использовать выражения с функциями имеющимися в BASIC’е :
lg x 
ln x
;
ln 10
arccos x 
arcctgx 
sec x 

2

2
arcsin x  arctg
x
;
1 x 2
x
 arcsin x  2arctg (1)  arctg
1 x 2
;
 arctgx  2arctg (1)  arctgx ;
1
;
cos x
e x  ex
;
sh x 
2
cos ecx 
1
sin x
;
e x  e x
;
ch x 
2


arcsh x  ln x  x 2  1 ;
e x  ex
;
th x  x
e  ex


arcch x  ln x  x 2  1
e x  ex
;
cth x  x
e  ex
.
1.2.3. При программировании сложных арифметических выражений необходимо:
- проводить анализ исходных данных, т.к. переменные вводятся с помощью оператора INPUT, а постоянные - оператором присвоения (=);
- правильно расставлять круглые скобки, так например, если числитель или знаменатель дроби имеют больше одного слагаемого, то необходимо их заключать в
скобки;
- избегая повторяющихся вычислений необходимо вводить обозначения.
1.3. Пример программы для вычисления выражения


 
cos 3   x  2
2

lg
a

bx
3
  a  bx
 .
y

3
2


a

x



a  bx  ax
cos 3   x  1

3



Введём обозначения
10


c  cos 3   x ;
3 
q  a 2  bx .
Теперь
 q
lg q 

 .

c  1 
q  ax  a  x
c
y
3
Программа:
a = 1.72 : b = 2.21 : x = 0.7
p = ATN(1) * 4 / 3 - x
c = COS(p) ^3
q=a*a+b*x
f = SQR(q) / ( a + x ) + LOG(ABS(q)) / (LOG(10) * (c + 1))
y = c * f / (q ^ (1 / 3) - a * x)
PRINT “ y = “ , y
END
Результаты:
y = 2.292244
1.4. Задание к лабораторной работе. Подготовить и организовать на ПЭВМ
вычисления выражений .
1. z  sin
2
x y  3xy
2
arctg
2

x 2 y  3xy 2
2x 3  y
arctg 2
y  2x
2x  y
 x 4 sin 2 y  y 2 sin x
y  2x
2.
z
3.
cos 3x  5y  1 
z
x 4 sin 2 y  y 2 sin x
3
cos 3  3x  5y  1
x  3.2 ;
;
;
x  4.1 ;
y  6.84 .
y  0.75 .
2
 ln x 2 y  3xy 2 ;
11
x  342
. ;
y  0.6 .
4.
5.
6.
z
z
z
x  3y
x  3y
 arctg
2 y  3x
2 y  3x
 lg 4 x  y
2 x  3y
sin
2 y  3x



sin 3 4 x 2 y  6x 3 y 2  cos 4 x 2 y  6x 3 y 2

4 x y  6x y  ln x y  3 x
2
3
2
3
sin 3 8x  2 y  x 4 sin 2 y  8x  2 y
;
x 4 sin 2 y  8x  2 y  1
sin 2 8x  y 
z
8.
z  arctg
9.
x  2y
x y  3xy 2
z
 lg x 2 y  3xy 2 ;
x  2y
arcsin 2
1
x y  3xy 2
z
;
2x  y
2 x 2  3x  1 sin x
;

y  2x
2 x 2  3x  1  4
arcsin
10.
sin 2 8x  y   1
2

 5y 
ln x 2 y  4 xy  cos 2 3x 2  5y

cos 3x
2
;
y  7.36 .
x  2.16 ; y  0.08 .
x  05
. ;
y  10.6 .
x  16
. ; y  5.4 .
7.
x3
arctg 2
2y

sin 2 8x  y  1
x  051
. ;
;
;
2x  y
x  2y
;
x 2 y  3xy 2 
2x  y
arcsin
1
x  2y
x  312
. ; y  8.5 .
x  8.41 ; y  31
. .
x  2.4 ;
y  35
. .
x  0.48 ;
y  6.3 .
arcsin
11.
z
12
12.
z  x sin 2 y  y cos x 
2
2
x 2 sin 2 y  y 2 cos x
x y  3xy
2
13.
z
cos3 (3x  5 y )  ln x 3  y 2
;
x  0.65 ;
y  12.4 .
2
x  217
. ;
y  36 .
sin 2 8 x 3  y
5x  8 y

;
2 x 2  y sin 2 8 x 3  y  3
x  7.32 ;
y  0.81 .
2 x 4  4 x 3  5x 2  x
;
4 x 3  5x 2  x
x  6.25 ;
y  12.3 .
x
cos (3x  5 y )  arctg
xy
;
3
14.
z  arctg
15.
z  lg x  y  ln
1.5. Вопросы для самопроверки
1.5.1. Назовите встроенные математические функции BASIC;
1.5.2. Каким оператором форматируется выводимый результат?
1.5.3. Каков алгоритм программирования арифметических выражений?
13
1.2.
Лабораторная работа №2 (C:\USER\GROUP\NOF\lab 2.bas)
ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ
2.1. Цель работы. Освоить програмирование разветвляющихся конструкций.
2.2. Справочный материал. Ветвление программы осуществляется условными
операторами
IF . . . THEN . . . ELSE
если . . . то . . . иначе
SELECT CASE . . . END SELECT
выбор ветви по значению параметра
2.2.1. Оператор IF . . . THEN можно записать в блочной или линейной форме.
Линейная форма используется, если проверяется одно или два условия:
IF c$ = “ y “ THEN PRINT h ELSE INPUT d$
если c$ = “y”, то печать h,
иначе ввод d$.
IF x < 10 THEN y = 1 ELSE IF x < 100 THEN y = 2 ELSE y = 3
Если предполагается проверять больше, чем два условия, то желательно применять блочную форму, используя метки (номер строки или букву с двумя точками,
например - а:):
10 IF x < 10 THEN 40
если x < 10, то идем в 40 строку
20 IF x < 100 THEN 50
если x < 100, то идем в 50 строку
30 y = 2: GOTO 60
если не выполнены условия 10 и 20, то y = 2
40 y=1: GOTO
если выполнено условие 10, то y = 1
60
50 y = 3
если выполнено условие 10, то y = 3
60 PRINT “y=”; y
печать результата «у= …»
70 END
Структура считается линейной, если после первого THEN в строке есть метка ли
арифметический оператор.
14
2.2.2. При проверке сложных условий можно использовать более современную
конструкцию SELECT . . . END SELECT :
выбор по значению параметра “a”
SELECT CASE a
для случая a = 1
CASE IS = 1
x=y*z
x=y* z
для случая a > 10
CASE IS > 10
x=a*z
x=a* z
для случая 30  a  50
CASE 30 TO 50
x=a+z*y
x=a+z* y
CASE 50 TO 70 , 150 TO 200
x=y/a
для случая 50  a  70 и 150  a 200
x=y/a
CASE 70 TO 90 , IS > 200
x=a+y
для случая 70  a  90 и a > 200
x=a+ y
для всех остальных значений a
CASE ELSE
x=a
x=a
конец выбора по параметру
END SELECT
2.3. Пример:
x lg(a  b ),

z  ( a  b ) x ,
 0,

ab
a b;
x  3;
ab
 0.77

a  12.83;
0.03

.
 138

b   7.81
0.03

Программа:
2.3.1
2.3.2
10 x = 3
x=3
20 INPUT “a b “ ; a , b
INPUT “a b “ ; a , b
30 c = a - b
c=a-b
40 IF c > 0 THEN 70
SELECT CASE a
50 IF c < 0 THEN 80
CASE IS > b
15
60 z = 0 : GOTO 90
z = LOG(c) / LOG(10) *x
70 z = LOG(c) / LOG(10) *x: GOTO 90
CASE IS < b
80 z = c ^ x
z=c^x
90 PRINT «z=”;z
CASE ELSE
100 END
z=0
END SELECT
PRINT “z=”;z
END
Результаты:
a  0.77,
b  138
. ,
a  12.83,
z  0.226981
b  7.81,
a  0.03,
z  2.102111
b  0.03,
z0
2.4. Задание к лабораторной работе.
1.
2.
3.
4.

a 2 sin b  e ,

z   x  a 2 sin b ,

a

 lg( x  b ),
x0
0 x5;
x5
a 3 cos a  b  x ,

z  0,
a 3 cos a  ln( x  b ),


ab
,
cos x 
a

b

 ab
z
,
a

b


ab
,
ln x 
ab

 sin a
 x ,

z  x sin a ,

 x  sin a ,

a  15
.
b  4.8
xb
xb
;
xb
2.3

x  61
. .
15
 .
;
16.2

a  1.34 ; b  3.6 ;
011
 .
4.8

x  3.6 .
20

x0
x0 ;
a  0.45
;
b  15
x0
x  sin a
x  sin a ;
x  sin a
a

6
16
;
3.4

.
x  0
2.3

0.5

x  18
. .
15

5.
6.
7.
x  ab ,

z  ( x  ab ) 2 ,

 x  ab ,
0,

z  be x  x b ,
0,

x  ab  10
10  x  ab  0 ;
a  2.5
;
b  1.2
0  x  ab
x  2
2 x  4 ;
b  5.13 ;
x  4

 0,

z   a ln( x  b ),
 2( x  b ) 2

,
a

xb  0
0 xb  2 ;
2 xb
8.
9.
ax 2  bx  c ,

z  0,
ax 2  bx  c ,

10.
 ax 2 , x  a

z  0,
xa ;
ax 2 , x  a

11.
a  sin 2 x ,

z  b  sin 2 x ,
b ,

12.
a  2.1
5  x  5 ;
b  0.15 ;
c3
x  0, a  b
x  0, a  b ;
x  5.38 ;
14.6

x  1 .
7.5

4.3

x  1.3 .
43

a  18 ;
x  0
x a  b , a  b

z  x b  a , a  b ;
x ab , a  b

6.4

x  2.5 .
1.3

9.
5.


x  0.2 ; a  3.5 ; b  0.8 .
0.7
018

 .
x  5
a  1.3 ;
.
015

x  2.73 .
6.8

4.4

a  0.63 ; b  1.2 ;
64

( a 2  b 2 ) x  3 ,

a2  b2  1
2
2
 a  b
z
,
1  a 2  b 2  100 ;
x

a 2  b 2  100
x a 2  b 2 ,

x5
9.

x  2.8 .
16

.
61

a  3.8 ;
1.7

17
4.

b  18. ;
18.

3.6

.
x  015
.
45.

2.5

b  7.4 .
1.7

Лабораторная работа № 3 (C:\USER\GROUP\NOF\lab3.bas)
1.3.
ОПРЕДЕЛЁННЫЕ ЦИКЛЫ
3.1. Цель работы. Освоить программирование алгоритмов с определённым числом повторений группы операторов.
3.2. Справочный материал.
Определённый цикл в BASIC ’е реализован опе-
ратором FOR . . . NEXT и шагом цикла STEP (по умолчанию шаг равен 1). С целью
экономии памяти и увеличения быстродействия ПЭВМ, используемые вели-чины в
зависимости от их типа описываются символами:
- ! или по умолчанию – числа с плавающей запятой;
- % - целые числа;
- $ - текстовые величины.
3.2.1. Задание. Вычислить сумму целых чётных чисел от 56 до 110 :
m% = 0
FOR k%= 56 TO 110 STEP 2
m% = m% + k%
NEXT k%
PRINT “ сумма = “ ; m%
END
3.2.2. Вычислить квадраты чисел между 10 и 15 с шагом 0.5 :
FOR x = 10. TO 15. STEP .5
PRINT “ квадрат “ , x , “ = “ , x * x
NEXT x
END
3.3. Пример. Найти множество значений функции у(х) и занести их в таблицу
y i  a ( x i  bx i ) sin cx i  ab
2
на области определения
1  xi  3;
xi  xi 1  0.5
18
при a  1.65,
b  0.81,
c  0.75 .
Программа:
10 a=1.65 : b = .81 : c = .75 : d = a * b: N=0
20 PRINT “!---------------------!-------------------------!---------------------------!»
30 PRINT “!
N
!
X
!
Y
!»
40 PRINT “!---------------------!-------------------------!---------------------------!»
50 FOR x = 1 TO 3 STEP .1
60 s = sin( x*c): N=N+1
70 y = (x + b) * x * a * s + d
80 PRINT «!»; N, «!»; x, “!”;y,”!”
90 NEXT x
END
Результаты:
N
X
Y
1
1.0
3.37
2
1.5
6.49
3
2.0
10.59
4
2.5
14.36
5
3/0
16.01
3.4 Задания к лабораторной работе.
1.
yi   xi  b ;
2.
yi  a
3.
yi  a 1  xi ;
4.
yi  xi  1 sin(bxi );
5.
yi  c sin xi ;
2


3
2
b  0.5;

xi  b ;

ô  0.5;
 2.5  xi  2.5;
b  3.;
a  5.7;
b  2.0;
c  0125
. ;
9  xi  27;
 1  xi  1;
1  xi  2;
   xi   ;
19
xi  xi 1  0.5 .
xi  xi 1  2 .
xi  xi 1  0.2 .
xi  xi 1  01
. .
xi  xi 1 

6
.
a  xi
2
a  xi
2
6.
yi  arccos
7.
yi  a bxi  c sin xi ; a  2;
b  16
. ;
8.
yi  ce xi  a;
c  0.5;
9.
yi  a cos xi ;
a  12
. ;
a  36
.;
10. yi  b sin xi  axi 2  b;
11.
a  105
. ;
;
c  54;
1  xi  2;
xi  xi 1 
b  0.5;
a  2;
xi  xi 1  0.2 .
 4  xi  4;
   xi   ;
a  1.76;
yi  a bxi  c cos xi  abcxi ;
0  xi  18
.;
xi  xi 1  1 .

8
.
   xi   ;
b  2.7;
xi  xi 1  01
. .
c  18;
xi  xi 1 

6
.
0.5  xi  3;
xi  xi 1  01
.
12. yi  ae x 1  ln xi 2  b;
i
a  0.6;
b  4.5;
20
 3  xi  3;
xi  xi 1  1 .
.
Лабораторная работа № 4 (C:\USER\GROUP\NOF\lab4.bas)
1.4.
ОПРЕДЕЛЁННЫЕ ЦИКЛЫ.
СУММИРОВАНИЕ ЧЛЕНОВ ФУНКЦИОНАЛЬНОГО РЯДА
4.1. Цель работы.
Используя оператор определённого цикла, просуммировать
члены функционального ряда.
4.2. Справочный материал в описании лабораторной работы №3.
4.3. Пример. Просуммировать ряд для нескольких наборов входных параметров
x, m, h (шаг) :
s
2x  n
m

n1
 n  x
n1
x
;
m h
12
.
9
1
0.7 15 2
Программа:
INPUT “x, m%, h% “ ; x , m% , h%
s=0
FOR n% = 1 TO m% STEP h%
t = x + n%
y = ( x + t) / ( t* SQR( n%+1))
s=s+y
NEXT n%
PRINT s
END
Результаты:
для x = 1.2, m = 9, h = 1
s = 5.144
для x = 0.7, m = 15, h = 2
s = 3.624
4.4. Задания к лабораторной работе.
1.
s
m

n 1
x 3 cos x n
;
e xn  sin xn
x
0.5
m
h
21 2
1.75 13 1
21
2.
s 
m

n 1
3.
s
xn
;
 2n !
m
n
n 1
x
m
h
15
.
8
1
2
19 2
x
x2
;
3
m
7.6
n
25 1
12.5 37 3
1 n x 2n
s 
n  1 nn  1n  2
m
4.
5.
s
m

n 1
6.
s

s
n 1
8.
s
m

n 1
10.
s
m

n 1
11.
s
m

n 1
12.
s
m

n 1
3
7
1
2 15 2
x

n  1
e
m h
nx nx ;
m
h
0.55 29 2
x
x2  n2
xn  1
x 2 n  1
m
;
x
0.76 35 1
m
n 1
7.

x3
n
h
xn

;

h
0.55 29 2
0.76 35 1
x
 n2  1
m
;
2.4
x
nx  nx
;
n
10 1
m h
15
. 19 2
31
. 17 1
x
cos(xn  1)  x n
;
e x  n 2  15
.
xn  1
;
ln
xn  1
n
h
0.65 13 2
x 2 sin(2n  1)
;
2n 2  xn  2.5
x
m
m
h
0.75 17 1
0.5
x
22 3
m h
16
. 21 2
55
. 19 3
x
m
h
0.82 25 1
0.46 37 3
22
1.5.
Лабораторная работа № 5 (C:\USER\GROUP\NOF\lab5.bas)
ФАЙЛЫ ПРЯМОГО И ПОСЛЕДОВАТЕЛЬНОГО ДОСТУПА
5.1. Цель работы. Получить практические навыки работы с файлами прямого и
последовательного доступа.
5.2. Справочный материал. На внешних носителях информация хранится в файлах. В зависимости от способа доступа к ним различают файлы прямого и последовательного доступа. При последовательном доступе приходится просматривать все записи, предшествующие искомой. В файлах с прямым доступом записи имеют порядковый номер, которому операционная система ставит в соответствие адрес. Доступ к
этому адресу прямой и в качестве внешних носителей используются диски или дискеты. В BASIC’е работа с файлом начинается с его открытия опратором OPEN:
OPEN файл [FOR тип] [ACCESS доступ] AS [#] номер [LEN= длина],
где
файл - символьное выражение, определяющее имя файла или устройства;
Тип
Описание
OUTPUT
определяет последовательный вывод
INPUT
определяет последовательный ввод
APPEND
определяет последовательный вывод с добавлением
RANDOM
определяет прямой ввод/вывод (умалчиваемый)
BINARY
определяет двоичный ввод/вывод
Доступ
Описание
READ
только для чтения
WRITE
только для записи
READ/ WRITE
чтение и запись
номер - целое выражение от 1 до 255, номер файла;
23
длина - длина записи, по умолчанию равна 128 байтам для файлов прямого доступа и 512 для файлов последовательного.
Заканчивается работа с файлом оператором CLOSE :
CLOSE номер [I, 1, 3-6].
5.3. Пример. Проиллюстрировать использование файлов можно на предыдущих
программах, записав результат в файл последовательного доступа (работа № 7):
INPUT “x m h “ ; x , m% , h
OPEN “result” FOR OUTPUT AS #1
s=0
FOR n% = 1 TO m% STEP h
t = x + n%
y = ( x + t) / ( t* SQR( n%+1))
s=s+y
NEXT n%
PRINT s
WRITE #1, “s = “, s
CLOSE #1
END
На файле с последовательным доступом можно организовать простую базу данных:
OPEN “товар” FOR OUTPUT AS #3
INPUT “ имя товара :”,it$
WHILE it$ <> “zzz”
INPUT “код и цена”, cod$, price$
WRITE #3, it$, cod$, price$
INPUT “имя товара :“, it$
WEND
CLOSE #3
END
24
Здесь использован неопределённый цикл WHILE . . . WEND, цикл по условию,
который повторяет выполнение операторов тела цикла пока имя товара “it$” не равно
“zzz”.
Эту же задачу можно реализовать с файлом прямого доступа:
TYPE buf
описание пользовательского типа данных,
goods AS STRING *25
имеющего смысл записи в файл. Этому типу
code AS STRING *10
присвоено имя buf и в нём определены поля
price AS SINGLE
записи
END TYPE
CLS
очистка экрана
DIM recb AS buf
описаниие переменной recb как записи buf
OPEN “goods.db” FOR RANDOM AS #1 открытие файла прямого доступ
INPUT “goods :”,goods$
ввод наименования товара
WHILE goods$ <> “zzz”
пока goods$  “zzz”
INPUT “code , price”, code$,price$
ввод кода товара и цены
I=I+1
увеличение номера записи
recb.goods = goods$
присвоение полям записи
recb.code = code$
соответствующих значений
recb.price = price
переменных
PUT #1 , I , recb
передача записи в файл
INPUT “goods :”,goods$
ввод след. наимен. товара
WEND
конец цикла
CLOSE #1
закрытие файла
END
конец программы
5.4. В качестве задания составьте программу “Записная книжка” в файле прямого
доступа с тремя полями: имя, адрес, телефон.
25
1.6.
Лабораторная работа № 6 (C:\USER\GROUP\NOF\lab6.bas)
ПРОГРАММИРОВАНИЕ ИТЕРАЦИОННЫХ ВЫЧИСЛИТЕЛЬНЫХ
ПРОЦЕССОВ
6.1. Цель работы. Получение практических навыков алгоритмизации и программирования простых циклических процессов , число повторений которых не задано.
6.2. Справочный материал. В основе простых итерационных вычислений некоторой величины Y лежит рекуррентная формула для которой каждое последующее
приближение определяется через предыдущее, а начальное - задается
Yi+1 = f( Yi ) , i=0,1,...,N-1,
(1.6.1)
где i-номер итерации; N - номер итерации, на которой обрывается процесс вычислений.
При этом начальное приближение Y0 ( нулевая итерация ) выбирается по
определенным правилам или задается заранее.
Численное значение N определяется из выполнения условия cходимости итераций
| Yi+1 - Yi | ≤Е ,
(1.6.2)
и считается, что величина Y = YN вычислена с заданной точностью Е [I, 1-2].
6.3. Пример. Подготовить и организовать на ПЭВМ итерационные вычисления
по рекуррентной формуле
Yi+1 = 1 / 2 * (Xi / Yi + Yi ) , i=0,1,...,N-1
(1.6.3)
с заданной точностью E. Значение аргумента X, начальное приближение Y0 и точность вычислений Е, задается следующим образом:
X = 4.5 ; Y = 0.9 * X ; E = 10-3;
X=2;
Y=1;
( 1.6.4a )
( 1.6.4б )
E = 10-2 .
26
Для удобства программирования запишем Y в виде
Y0 = R * X k ,
(1.6.5 )
тогда для случая (6.4а) значения множителя R и степени k соответственно равны
R = 0.9 ; k = 1 , а для случая ( 6.4б ) R = 1 ; k = 0 .
Алгоритм решения задачи основывается на циклических вычислениях по рекуррентной формуле (6.3) и проверки выполнения условия (6.2).При этом алгоритм решения задачи должен предусматривать запоминание значений Y на i+1 и i итерациях
(Y и Z).Текст БЭЙСИК - программы алгоритма решения задачи для примера 6.3 приведен ниже
10 INPUT "Введите значения X,R,K,E" ; X,R,K,E
20 I = 0 : Y = R * X ^ K
30 Z = Y
40 Y = (X / Y + Y ) / 2 : I = I + 1
50 IF ABS(Y - Z) > E THEN 30
60 PRINT "ЧИСЛО ИТЕРАЦИЙ ="; I
70 PRINT "ЗНАЧЕНИЕ Y ="; Y
80 END
Ввод данных :
Введите значения X,R,K,E ? 4.5,0.9,1,1E-3
Введите значения X,R,K,E ? 2,1,0,1E-2
Результаты :
ЧИСЛО ИТЕРАЦИЙ = 4
ЗНАЧЕНИЕ Y = 2.12132
ЧИСЛО ИТЕРАЦИЙ = 3
ЗНАЧЕНИЕ Y = 1.414216
27
6.4. Задание к лабораторной работе. Подготовка и организация на ПЭВМ итерационных вычислений по рекуррентной формуле и исходным данным из табл. 6.1.
(вариант соответствует порядковому номеру фамилии студента в списке группы).
Таблица 6.1
Номер
Значение
Рекуррентная формула
аргумента приближ
варианта
1
2
ние
Y0
Y
0=0.5X
ний Е
0.001
X = 19.2
X = 898
Y0 = X
Y0 = 0.4X
0.0001
0.0001
X =186
Y0 = X
0.001
X = 9.3
Y0 = 0.5X
0.001
X = 15.6
Y0 = 2
0.0001
X = 4.7
9Y0 = 0.5X 0.001
X =3.69
Y0 = 2.4
0.0001
X = 14.6
Y0 = X
0.001
X = 19.7
Y0 = 0.3X
0.0001
Y0 = 2.5
0.001
Yi+1 =  1.3Yi + 2.4
Y0 = 1.3
0.0001
2
Y0 = 0.4
0.001
Y0 = 0.5
0.0001
Y0 = 3.8
0.001
Y0 = 5.2
0.01
Y0 = 25
0.001
Y0 = 35
0.0001
3
Y0 = 2.0
0.01
Yi+1 = ( Yi / ( Yi +1 ) + Yi ) / 2
Y0 = 3.0
0.001
2
Y0 = 4.0
0.01
Yi+1 = ( Yi / ( Yi + 2 ) +Yi ) / 3
Y0 = 5.0
0.001
Y0 = 1.3
0.01
Yi+1 = ( 4Yi + X / Yi) / 5
Yi+1= ( 6Yi + X / Yi) / 7
Yi+1 = ( 1.5 - Yi / ( 2 X ))
2
4
2
Yi+1 = Yi ( Yi + 3X ) / ( 3Yi + X )
2
5
Yi+1 = Yi / 2 + 1.5 X / ( 2 Yi +X / Yi )
_____
6
7
Yi+1 = 5.7 + 1.2 / Yi
___
8
2
Yi+1 = 0.4 (  Yi / ( Yi + 0.2 Yi )
2
9
10
11
вычисле
X
X = 226
2
3
Начальное Точность
__
Yi+1 = 0.5 ( 1.5 / ( Yi + 1 ) +  Yi )
2
4
__
28
12
Yi+1 = ( ( Yi +1) / ( Yi +4.5 ) +  Yi ) / 3
3
13
3__
Yi+1 = ( (Yi + 2 X ) / (Yi +2.3 )+Yi ) / 4
Y0 = 2.9
X = 1.2
Y0 = 4.9 X 0.001
X = 3.6
Y0 = 13.2
0.0001
Y0 = 5.8
0.001
Y0 = 4.5
0.0001
Y0 = 5.2
0.001
2
14
Y i+1 = ( ( Yi - 1 ) / (Yi + 2 ) + 1 ) / 2
_____
15
0.001
Yi+1 = ( ( 1.8 / ( Yi +1 ) + 2  Yi + 1 ) / 2
Y0 = 4.3
где i = 0 , 1 , ... , N- 1
6.5. Вопросы для самопроверки
6.5.1. Какие вычислительные процессы называются итерационными ? Приведите
примеры.
6.5.2. Что является условием окончания итерационных вычислений ?
6.5.3. Какому оператору передается управление , если условие, проверяемое в
операторе IF, выполняется и не выполняется ?
6.5.4. Почему в условии сходимости разность между Yi+1 и Yi берется по абсолютной величине для сравнения с E ?
6.5.5. Пояснить принцип работы счетчика итераций.
6.5.6. Если итерации не сходятся, какой условный оператор, ограничивающий
число итераций, необходимо записать и в какое место программы его вставить?
29
1.7.
Лабораторная работа № 7 (C:\USER\GROUP\NOF\lab7.bas)
ВЫЧИСЛЕНИЕ НА ПЭВМ СУММ БЕСКОНЕЧНЫХ ЧИСЛОВЫХ
РЯДОВ С ЗАДАННОЙ ТОЧНОСТЬЮ
7.1. Цель работы. Получение практических навыков алгоритмизации и программирования сумм числовых бесконечных рядов с заданной точностью с использованием вычислительных циклов, число повторений которых не задано.
7.2. Справочный материал. Вычисление сумм бесконечных числовых рядов
S

f
n 0
( xn )
( 1.7.1)
с заданной точностью E ,строится на основе циклических вычислений, число повторений которых не задано. При этом используется принцип накопления суммы (последовательное нахождение частичных сумм Sn ; начальное значение суммы ряда S0
обычно задается равным нулю):
Sn+1 = Sn +f ( xn ) , где n =0,1,...,N-1 ,
( 1.7.2 )
где n - текущий номер члена ряда; N- число удержанных членов ряда. Вычисления заканчиваются при выполнении условия сходимости числового ряда:
| S n - S n-1 | ≤ E,
(1.7.3 )
где Е - точность вычислений. С учетом формулы (1.7.2 ) и, вводя обозначения
Yn = f ( xn ), неравенство ( 1.7.3 ) записывается в виде :
| Y n| ≤ E ,
( 1.7.4 )
Таким образом , вычислительный процесс завершается тогда , когда абсолютная величина очередного члена ряда станет не больше заданной точности вычислений Е,
при этом считается, что сумма бесконечного числового ряда S = S n  E .
30
7.3. Пример. Подготовить и организовать на ПЭВМ вычисление суммы бесконечного числового сходящегося ряда с точностью Е:
S
n
 x
 
n0 n!
x 2 х3
хk
1 x    
2! 3!
k!
(1.7.5)
Значения аргумента X и точность вычисления Е задаются следующим образом:
X = 0.15 ;
E = 0.001;
X = 0.21 ;
E = 0.0001.
В основу алгоритма решения задачи положена типовая структура циклического вычислительного процесса “повторять до”. Как и любой циклический вычислительный алгоритм, данный алгоритм предусматривает следующие три этапа:
1) подготовку цикла, т.е. задание начальных значений параметра цикла n,
суммы S0 и факториала P0, а также точности вычисления E и аргумента X ;
2) тело цикла: вычисление очередного члена числового ряда Yn, накопление
суммы и переменной цикла n и проверку условия окончания цикла (7.3 ) ;
3) вывод значений вычисленной суммы числового ряда и числа удерживаемых членов ряда в этой сумме.
Текст БЭЙСИК - программы для примера 7.3 приводится ниже :
10 INPUT “ Введите значения E , X= “ ; E ,X
20 N = 1 : S = 1 : P = 1
30 Y =X ^ N / P : N = N + 1
40 S = S + Y : P = P * N
50 IF ABS ( Y ) > E THEN 30
60 PRINT “ СУММА РЯДА = “ ; S ,“ЧИСЛО УДЕРЖ. ЧЛЕНОВ РЯДА =“ ; N - 1
70 END
Ввод данных :
Введите значения Е , Х = ? 0.15, 1E-5
Введите значения Е , Х = ? 0.21, 1Е-5
31
Результаты :
СУММА РЯДА = 1.161834
ЧИСЛО УДЕРЖ. ЧЛЕНОВ РЯДА = 6
СУММА РЯДА = 1.233675
ЧИСЛО УДЕРЖ. ЧЛЕНОВ РЯДА = 5
Следует отметить, что в данной программе начальное значение суммы ряда
S0 равно 1, так как необходимо учесть в сумме ряда “нулевой” член этого ряда (счет
начинается с первого члена ряда n = 1, см. строку № 20 ). Также, очень полезно, с целью проверки правильности вычисления факториала n! проводить “вручную” расчет
факториала и сравнивать эти расчеты с расчетами значений n!, согласно форме, приведенной ниже:
n
P=P*n
n!
1
1
1
2
2
2
3
2*3=6
4
2*3=6
2 * 3 * 4 = 24
2 * 3 * 4 = 24
7.4. Задание к лабораторной работе. Подготовить и организовать на
ПЭВМ вычисление суммы бесконечного сходящегося ряда по формуле из табл. 7.1
(вариант соответствует порядковому номеру студента в группе ).
Таблица 7.1
Номер
варианта
1
Исходная формула

xn
S =  (-1)
2n + 1
n 1
n

S =
2
2(x - 1) 2n+1

2n+1
n 1 (2n + 1)(x + 1)

3
2x 2n+1
S = 
n 1 2n + 1

S =
4
 (-1) n+1
n 1
xn
n!
32
Значени Значени
е-0.0476
е 10-5
0.655
x
0.324
10-6
10-6
1.36
0.278
10-4
10-5
0.536
0.198
10-6
10-4
0.567
10-5

S =
5
1

2n+1
n 1 (2n + 1)x

S =
6
cos(nx)
e nx
n 1


S =
7
nx
e
n 1
nx

S =
8

n 1
S =
9
nx
(n  1) n 2  2
2

n(x 2  1)
n 1
(n 4  2) n 3  1


S =
10
cos(2nx)
2
n 1 4n  1


S =
11
sin(2n - 1)x
2n - 1
n 1


S =
12
x
 (n + 1)
n 1

S =
13

14

n 1

S =
15
x
 (n + 1)ln
n 1
S =
n+1
e
x
n
ln
2
(n  1)
n 1
2n  1
 xn 2
n 1
1.33
10-4
2.57
0.5
10-5
10-3
2.75
1.3
10-4
10-3
2.1
0.755
10-3
10-4
0.052
0.35
10-6
10-6
0.87
1.1
10-4
10-3
2.2
1.01
10-3
10-3
3.08
1.24
10-4
10-3
2.53
1.5
10-2
10-3
2.73
1.07
10-2
10-3
2.6
0.9
10-4
10-4
0.5
10-3
7.5. Вопросы для самопроверки
7.5.1.В чем заключается принцип накопления суммы?
7.5.2. Что является условием завершения вычисления суммы числового ряда?
7.5.3. Какому оператору передается управление, если условие, проверяемое в условном операторе, выполняется и не выполняется?
7.5.4. Приведите примеры использования бесконечных числовых рядов для вычисления функций.
7.5.5. Назовите три основных этапа построения алгоритмов вычисления сумм числовых рядов с заданной точностью.
33
1.8.
Лабораторная работа №8 (C:\USER\GROUP\NOF\lab8.bas)
ФОРМИРОВАНИЕ И ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ
8.1. Цель работы. Получение практических навыков алгоритмизации и программирования одномерных массивов по заданным формулам и нахождения максимальных и минимальных значений элементов массивов.
8.2. Справочный материал. При описании алгоритмов для ссылки на массивы
и компоненты индексированных переменных используют буквы с индексами ( Xi , Xj,
Yi , Aj , Zij и т.д. ). Буквы при этом являются наименованиями массивов, а индексы
определяют элементы этих массивов. Буква с цифровым индексом указывает конкретный элемент массива , например, Х2 - второй элемент массива Х ; Z23 - элемент
массива Z , стоящий на пересечении второй строки и третьего столбца. Размер массива определяется числом его компонент, например, массив Хi : 0.21; -1.7; 3.5; 0.08; 2.76
имеет 5 компонент ( i = 1, 2,...,5 ), при этом Х1 = 0.21; Х2 = -1.7,..., X5 = 2.9. В алгоритмическом языке БЭЙСИК для описания массивов используется оператор DIM ( от
английского слова DIMENSION - размерность ). В данном примере для описания массива Х необходимо записать следующий оператор:
DIM X( 5 ) ( резервирование памяти под 6 чисел , так как Х( 5 ):= Х( 0:5 )).
При формировании одномерного массива ( ряда значений функции) по заданному закону , если аргумент задан своими численными значениями, используется
оператор цикла FOR, и значения исходных и искомых переменных изменяются при
каждом повторении цикла.
8.3. Пример. Подготовить и организовать вычисление на ПЭВМ ряда значений функции Yi по формуле:
Yi = SIN( Qi ) / Qi + Qi / SIN( Qi )
( 1.8.1 )
и четырех заданных значений аргумента Qi := 0.36; 1.85; 2.14; 3.57 , где i = 1,...,4 ,
а также найти значения максимального и минимального элемента и определить среднее арифметическое значение положительных элементов массива Y.
34
Алгоритм решения данного примера основывается на циклических расчётах,
число повторений которых задано ( N = 4 ).Текст БЭЙСИК - программы алгоритма
решения примера 1.8.1 приведен ниже:
10 DIM Q( 4 ) , Y( 4 )
20 REM Ввод элементов исходного массива Q
30 FOR I = 1 TO 4
40 PRINT “ Ввод элемента массива Q( “ ; I ;” ) = “
50 INPUT Q( I ) : NEXT I
60 REM Формирование и печать элементов массива Y
70 FOR I = 1 TO 4
80 A = SIN( Q( I )) / Q( I ) : Y( I ) = A + 1 / A
90 PRINT “Y (“ ; I ;” ) =“; Y( I ): NEXT I
100 REM Нахождение максимального и минимального эл-та массива Y
110 MIN = Y( 1 ) : MAX = Y( 1 )
120 FOR I = 2 TO 4
130 IF Y( I ) < MIN THEN MIN = Y( I ) : J = I
140 IF Y( I ) > MAX THEN MAX = Y( I ) : K = I
150 NEXT I
160 PRINT “Значение миним. эл-та массива Y =“; MIN; ” № эл-та =“ ; J
170 PRINT “Значение максим. эл-та массива Y =“;МАХ;” № эл-та =“ ; K
180 REM Вычисление среднего арифм. значения полож. эл-в массива Y
190 S = 0 : K = 0
200 FOR I = 1 TO 4
210 IF Y( I ) > 0 THEN S = S +Y( I ) : K = K + 1
220 NEXT I
230 PRINT “Среднее арифм. значение полож. эл-тов массива Y=“ ; S / K
240 END
35
Ввод данных:
Ввод элемента массива Q( 1 )=? 0.36
Ввод элемента массива Q( 2 )=? 1.85
Ввод элемента массива Q( 3 )=? 2.14
Ввод элемента массива Q( 4 )=? 3.57
Результаты:
Y( 1 ) = 2.00042
Y( 2 ) = 2.44414
Y( 3 ) = 2.93418
Y( 4 ) = -8.71002
Значение миним. эл-та массива Y = -8.71002
№ эл-та = 4
Значение максим. эл-та массива Y = 2.93418
№ эл-та = 3
Среднее ариф. значение полож. эл-тов массива Y = 2.459579
8.4. Задание к лабораторной работе. Подготовить и организовать на
ПЭВМ вычисление ряда значений функций Yi для заданных значений аргумента
выбираемых из таблицы 8.1 (вариант соответствует порядковому номеру фамилии
студента в списке группы).
Таблица 8.1
Номер
вариа-
Исходная формула
нта
1
yi  1  3 xi
2
bi  arctg ai2  3ai  2
3
zi  lg ti  cos ti 
4
5


3

yi 
2 sin 2 ai
cos 2ai
di  3 cos2 bi  cos3 bi

Значение аргумента
Дополнительное задание
xi : 0.35, 1.8, 2.3, 5.1,
9.6
Определить МАХ yi .
Число отриц. эл-тов
ai : 2.7, 3.1, 4.5, 6.8, 6.8
Определить МIN bi .
Cр. арифм. bi
ti: 10.2, 35., 64., 139.,
211., 348.
Определить МAX zi .
Cр. арифм. zi
ai : -0.87, -0.24, 0.93,
1.65
Определить МAX yi .
Число отриц. эл-тов
bi : 1.5, 2.3, 4.8, 0.44,
1.63, 5.2
Определить МIN di
и MAX di
36
6
7
8
9
10
11
12
13
14
15
bi 
ln sin yi
yi : 0.24, 0.73, 1.6, 2.7,
Определить МAX bi .
ln cos yi
3.5, 5.9
xi : 1.1, 2.04, 3.6, 4.2, -
Cр. арифм. bi
Определить МIN yi .
1.7
ci : -0.63, -0.21, 0.34,
Cр. арифм. yi
Определить МIN zi .
1.55, 3.71
bi : 0.2, 1.3, 2.1, 3.5,
Число отриц. эл-тов
Определить МAX ai .
4.7, 5.1, 6.8
xi : 2.6, 1.7, 3.4, 5.8,
Cр. арифм. ai
Определить МIN yi и
yi  arcsin sin xi
zi 
ci  2 ci  1
ci  5 3
2b  1 

ai  0.4 cos i
 1


2
yi  2 xi
si 
yi 
xi
e xi
1  xi2
si3  2 si
si2  si  1
si 
3ti2  1
ti  1
yi  1  2 tgxi
zi  1.08 sin xi 1  xi2
2
100
80
Восток
Запад
Север
60
40
2.7, 4.9, 3.5
xi : 1.4, 2.3, 3.6, 4.2,
MAX yi, cр. арифм. yi
Определить МAX si .
5.1, 6.7
si : 0.35, 1.4, 2.7, 4.1,
Cр. арифм. si
Определить МAX yi .
5.2
Число отриц. эл-тов
Определить МIN si .
ti : 2.5, 0.83, 15., 6.4
xi : 1.05, 2.6, 4.2, 5.8,
Число отриц. эл-тов
Определить МAX yi .
9.2
xi : 0.02, 0.17, 1.75, 31.,
Cр. арифм. yi
Определить МAX zi .
2.38
Число отриц. эл-тов
8.5. Вопросы для самопроверки
8.5.1. Что такое массив ?
8.5.2. Для чего в алгоритмическом языке БЭЙСИК служит оператор DIM ?
8.5.3. Могут ли быть индексы дробными числами ?
8.5.4. Как определяется среднее арифметическое значение положительных (отрицательных) элементов массива ?
8.5.5. На чем основывается поиск минимального и максимального элемента массива ?
8.5.6. Построить блок-схему алгоритма формирования одномерного массива.
37
20
0
1-й кв-л 2-й кв-л 3-й кв-л 4-й кв-л
1.9.
Лабораторная работа № 9 ( C:\USER\GROUP\NOF\lab 9.bas )
ФОРМИРОВАНИЕ ДВУМЕРНЫХ МАССИВОВ И ВЫПОЛНЕНИЕ
ОПЕРАЦИЙ С МАТРИЧНЫМИ ЭЛЕМЕНТАМИ
9.1. Цель работы. Получение практических навыков алгоритмизации и программирования процесса формирования и обработки двумерных массивов.
9.2. Справочный материал. При формировании двумерных (многомерных) массивов используются вычислительные процессы, содержащие два и более включенных
друг в друга циклов, которые являются сложными (вложенными) циклическими процессами. В них выделяются внешние и внутренние циклы. Цикл, который не входит в
другие циклы ,называется внешним. Цикл, который включается в другие циклы
,называется внутренним. Участок алгоритма или программы, включающий в себя
внешний и один или несколько внутренних циклов ,называется сложным циклом.
При алгоритмизации и программировании сложных циклических процессов используются в основном те же приемы, что и при подготовке вычислений, содержащих
один цикл (простой цикл). Иными словами, каждый цикл сложного циклического
процесса содержит этап подготовки этого цикла, тело цикла ,этап изменения значений исходных переменных данного цикла, этап проверки окончания и управления им.
Особенность выполнения сложного цикла состоит в том, что за одно исполнение
внешнего цикла внутренний цикл повторяется многократно. Для правильной работы
сложного цикла необходимо при очередном выполнении внешнего цикла восстанавливать начальные значения исходных переменных внутреннего цикла.
9.3. Пример. Подготовить и организовать вычисления на ПЭВМ значений элементов матрицы Zij (двумерного массива) по формуле:
Zi , j 
X Y
i j
|X +Y |
i
j
где Xi = 0.25; -3.41; 2; -1.14; -1.53 ,
( 9.1 )
Yj = 1.25; 0; -0.25; 1 , а также предусмотреть вы-
числения количества отрицательных элементов в каждой строке и столбце и произведение положительных элементов главной диагонали матрицы Z.
38
9.3.1. Алгоритм формирования матрицы Z должен предусматривать вычисление
двадцати элементов, состоящих из пяти строк, так как i = 1,...,5 ( массив Xi содержит
пять компонент ), и четырех столбцов j = 1,...,4 (массив Yj содержит четыре компоненты), при этом нумерация элементов массивов Х и Y начинается с единицы. Нумерация и вычисления матричных элементов Zij достигается с помощью построения
сложного циклического вычислительного процесса ( см. раздел 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 для примера
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
-1.17
-0.10
0.18
0.24
0.25 -0.96
39
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 в виде структуры матрицы.
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
160 NEXT I
Результаты расчета:
Колич. отриц. эл-тов = 0 в строке - 1
Колич. отриц. эл-тов = 3 в строке - 2
Колич. отриц. эл-тов = 1 в строке - 3
Колич. отриц. эл-тов = 3 в строке - 4
Колич. отриц. эл-тов = 3 в строке - 5
40
Для вычисления количества отрицательных элементов в каждом столбце матрицы
Zij необходимо циклы по i и j поменять местами, т.е. цикл по j сделать внешнем, а по i
- внутренним:
120 FOR J = 1 TO 4
130 L = 0 : FOR I = 1 TO 5
140 IF Z( I, J )< 0 THEN L = L + 1
150 NEXT I : PRINT “Колич. отриц. эл-тов =“;L;”в ст-це -”;J
160 NEXT J
Результаты расчета:
Колич. отриц. эл-тов = 3 в столбце - 1
Колич. отриц. эл-тов = 3 в столбце - 2
Колич. отриц. эл-тов = 1 в столбце - 3
Колич. отриц. эл-тов = 3 в столбце - 4
9.3.3. При вычислении произведения положительных элементов главной диагонали матрицы Zij учитывается условие нахождения элемента на главной диагонали I = J
и БЭЙСИК - программа вычислений этого произведения может иметь вид:
120 P = 1
130 FOR J = 1 TO 4
140 IF Z( I, J )> 0 THEN P = P *Z( I, J )
150 NEXT J
160 PRINT “Произведение пол. эл-тов гл-ной диагонали = “; P
Результат расчета:
Произведение полож. эл-тов главной диагонали = 0.245142
41
9.4. Задание к лабораторной работе. Подготовить и организовать на ПЭВМ вычисления двумерных массивов (матриц) и обработку элементов матриц. Формулы
для формирований матриц, значения элементов одномерных массивов и дополнительные задания приведены в табл. 9.1 (вариант соответствует порядковому номеру
студента в списке группы).
Таблица 9.1
Ном
Расчетная
Значения переменных
Дополнительное
ер 1
формула2
3
xi = 0.35, -2.8, 4.7, 19.2
задание
4
Ср. арифм. элем. каждой
вари zin 
1
анта
aij 
2
xi  y n
строки,
ci  d j
-26.1,
0.94,
cyin == 24.,
-15.,
38.,-5.
16., -5.2,
каждого
столбца
Ср.
арифм.
полож. элем.,
ci  d j
0.26
колич. отриц. элем. в
dkj == 4.7,
35.6.6
0.92,8.2,
8.4,-5.9,
13.5,
каждом
столбце.
Ср. арифм.
элем. кажд.
bki  3 d k  ci
столбца, произв. элем.
3
pni  sin tn  cosli
ctni =0.,
= 48.,
7.4,
15.2,
1.3,
2.2,
3.8,3.7,
4.5 1.8
 ai 
cik  

 ai  bk 
wmk 
6
7
dik 
ekn 
8
f mn 
9
10
каждой
строки.
Ср. арифм.
отриц. элем.,
колич. полож. элем. в
4
5
произв. элем.
mkl 
3
0.25
sin x m (1  y k2 )
alii==0.,
2.5,2.3,
3.8,8.1,
4.6,10.,
7.2
каждом
столбце.
Ср.
арифм.
элем. главн.
диагонали, произведен.
1.1,-4.2,
2.2,13.,
3.3,0.83,
4.4, 5.5
элем.
каждой
строки.
k=
xbm
=0.,
-20.3 Ср.
арифм.
полож.
элем.,
1  y k2
колич. отриц. элем. в
ci  v k
ci2  ci v k
ycik=0.5,
= 1., 2.8,
1.48,-14.,
-3.20.88
gi  pn
vgki=0.,
= 13.4,
-1.75,
-14.8.1
-4.2,0.,-14.,
3.45,
каждой
строке.
Ср. арифм.
отриц. элем.,
колич. полож. элем. в
gi2  pn2
каждой
строке.
Ср. арифм.
отриц. элем.,
кол. строк, сумма элем.
arcsin am
1  bn3
-3.59,
-20.,
16.
apmn== 3.48,
0.4, 0.8,
0.67,
0.54
ck3  d l2
= 0.12,
0.64,
cbkn=1.2,
13.8,
4.60.18, 0.39
которых
положительна
Ср.
арифм.
элем. главн.
диагонали, сумма элем.
ck  d l
каждой
строки
Ср.
арифм.
элем. каждой
строки,
dl= 0.8, 15.5, 8.7
42
произведение
элем. главн. Диагонали
11
12
aij 
bi3
1  c 2j
bkm 
cmn 
13
14
dk  2
3
cdjk== 2.8,
4.6,14.4,
20.7,16.8
0.33 которых
положительна
12.6,16.5,
-18.7,
Ср. арифм.
полож. элем.,
колич. полож. элем. в
17.4,0.53,
21.8,0.18,
15.3,-0.4,
-9.72.3 Ср.
каждой
строке.
femm== 0.6,
арифм.
полож. элем.,
произведения элементов
k i  ln
k i  ln
= 6.2, 11.2,
17.3, 8.6,
-8.4,19.4
15.5
khin=12.1,
arccos v m
lvnm== 17.2,
16.8,0.44,
5.3, 11.3
0.5, 0.21,
0.8
3
Ср. арифм. полож. элем.,
кол. столбц, сумма элем.
em
cos f m
1  hn
din  3
k mj 
15
3
bi=6.8, -14., 2., -18.7, 29.1
каждого
столбца.
Ср.
арифм.
отриц. элем.,
произведение элементов
wj
главн.
диагонали
Ср. арифм.
элем. главн.
диагонали, произведен.
wj= 2.3, 7.8, -5.1, -4.5
элем. каждого столбца.
9.5. Вопросы для самопроверки
9.5.1. Какие циклы называются сложными?
9.5.2. Как записывается оператор считывания блока данных?
9.5.3. Как записывается оператор форматированного вывода данных?
9.5.4. Сколько ячеек памяти ПЭВМ отводится по оператору DIM A( 80,2 )?
9.5.5. Как строятся подпрограммы вычисления суммы и произведений ряда чисел?
9.5.6. Построить блок-схему формирования двумерного массива.
43
1.10. Лабораторная работа № 10 ( C:\USER\GROUP\NOF\lab 10.bas)
ПРОГРАММИРОВАНИЕ СЛОЖНЫХ ПРОГРАММ
С ИСПОЛЬЗОЛЬЗОВАНИЕМ ПОДПРОГРАММ
13.1. Цель работы. Получение практических навыков алгоритмизации и программирования сложных программ с использованием операторов-функций (функций пользователя ) и подпрограмм.
13.2. Справочный материал. Подпрограммы ( функции пользователя ) используются при многократных вычислениях в программе по одной и той же формуле. Для
этого формула определяется с помощью оператор-функции DEF, например, для расчета квадратного трехчлена 3x2+2x+2 в точках X1,X2,...,Xn, тело оператора-функции
будет иметь вид:
DEF FNF( X ) = 2 * X + 3 * X2 +2 .
( 1.10.1 )
Обращение к данной оператор-функции может иметь вид :
Yi = FNF( Xi ) , где i = 1,2,...,n .
(1.10.2 )
Следует отметить, что в описании оператор-функции (1.10.1 ) параметр Х является
формальным параметром, а в выражении ( 1.10.2 ) - фактическим, так как компоненты
Xi должны быть заданы в виде чисел. Запись букв FN перед именем функции F( X ) в
определении оператор-функции (1.10.1) и обращении к ней ( 1.10.2 ) - обязательна.
В более сложных случаях, когда используется для вычислений несколько операторов , т.е. тело оператора-функции состоит из нескольких строчек ,например, для
подсчета произведения чисел Р:
Р
n
 Xi
i m
(1. 10.3 )
Тело оператор-функции для этого случая может иметь вид:
10 DEF FNF( X,M,N )
20 P = 1
30 FOR I = M TO N
( 1.10.4 )
44
40 P = P * X( I ) : NEXT I
50 FNF = P
60 END DEF
и , соответственно, обращение к этой оператор-функции записывается следующим
образом:
70 P = FNF( X,M,N )
( 1.10.5 )
При этом отметим, что перед обращением к оператор-функции ( 1.10.5 ) должны быть
заданы фактические параметры X, M и N.
Подпрограммой в алгоритмическом языке БЭЙСИК является специальным образом оформленная группа операторов, к которой можно обращаться с целью ее выполнения из разных мест, т.е. в виде подпрограмм оформляются повторяющиеся последовательности операторов. Подпрограмма имеет существенные отличая от “обычного” участка программы. Для обращения к ней используется оператор, имеющий вид:
GOSUB N,
(1.10.6 )
где N- номер строки подпрограммы, с которой она должна начать выполняться.
Тело подпрограммы заканчивается оператором RETURN, который возвращает выполнение программы к тому месту, откуда произошел вызов подпрограммы.
Выполнение подпрограммы осуществляется следующим образом. По оператору
GOSUB запоминается место в основной программе, из которого вызывается подпрограмма (оператор, следующий за оператором GOSUB ). Управление передается оператору с номером строки, указанным в GOSUB N. Выход из подпрограммы и передача управления оператору, следующему за оператором GOSUB, происходит по оператору RETURN. Подпрограммы могут быть вложенными, т.е. из одной подпрограммы
можно вызвать другую.
10.3. Пример. Подготовить и организовать вычисление на ПЭВМ значений функции Y :
12

lg(a)
xi ,
a4


i 5

9

Y =  lg(a  1) x i , a  4
i 1

7
a
lg( ) x ,
a4
i
 2 
i 1
c
( 10.6 )
использованием подпрограмм и оператор-функций. Значения элементов
45
массива Хi приводятся в приведенной ниже табличной форме, при этом параметр а в
выражении ( 10.6 ) имеет значения 5; 4; 3.
X1
1
X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15
2.1 - 3 1.7 1.8 1.9 14.2 - 5 -4.3 11.2 10.8 10.4 3.1 -
4.1
3.1
Алгоритм решения задачи вычисления Y, основанный на использовании подпрограммы, тело которой, записано в 100 - 140 строках, реализованный на алгоритмическом языке БЭЙСИК, приводится ниже:
10 DIM X( 12 )
20 INPUT “Введите А=“; А
30 FOR I = 1 TO 12
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
50 IF A> 4 THEN K = LOG( A ): M = 5: N = 12: GOSUB 100: GOTO 80
60 IF A< 4 THEN K = LOG( A/2 ): M = 1: N = 7: GOSUB 100: GOTO 80
70 K = LOG( A - 1 ): M = 3: N = 7: GOSUB 100
80 PRINT “Значение Y =“; Y; “ при A =“; A
90 END
100 S = 0
110 FOR I = M TO N
120 S = S + X( I ): NEXT I
130 Y = S * K
140 RETURN
Ввод данных:
Введите A = ? 3
Введите А = ? 4
Введите А = ? 5
Результаты расчета:
Значение Y = 0.567651
при А = 3
Значение Y = 8.239593
при А = 4
Значение Y = 51.98484
при А = 5 .
БЭЙСИК - программа алгоритма расчета Y с использованием оператор - функции
DEF может быть записана в виде:
46
10 DIM X( 12 )
20 DEF FNY( K , M , N , X )
30 S = 0 : FOR I = M TO N
40 S = S + X( I ) : NEXT I
50 Y = S * K : FNY = Y
60 END DEF
70 INPUT “Введите А =“ ; А
80 FOR I = 1 TO 12
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
110 IF A> 4 THEN K = LOG( A ): M = 5: N = 12: Y = FNY( K , M , N , X ): GOTO
150
120 IF A< 4 THEN K= LOG( A/2 ): M = 1: N = 7: Y = FNY( K , M , N , X ): GOTO
150
130 K = LOG( A - 1 ): M = 3: N = 9: Y = FNY( K , M , N , X )
140 PRINT “Значение Y =“;Y; “при А = “; A
150 END
Ввод данных:
Введите A = ? 3
Введите А = ? 4
Введите А = ? 5
Результаты расчета:
Значение Y = 0.567651
Значение Y = 8.239593
Значение Y = 51.98484
при А = 3
при А = 4
при А = 5 .
Тело оператор-функции для этой программы записано в 20 - 60 строках. В 110 130 строках определяются численные значения фактических параметров K , M , N
(элементы массива Х вводятся в 80 - 100 строках программы ). Для случая А = 4 операторы в 110 и 120 строках не выполняются и управление передается 130 строке данной программы.
13.4. Задание к лабораторной работе. Подготовить и организовать вычисление
на ПЭВМ значений функций Y по формулам, указанным в вариантах задания (табл.
10.1) с использованием подпрограмм и операторов-функций. Значения элементов
массива Х даны в приведенной выше табличной форме.
47
Таблица 10.1
Номер
варианта
Расчетная формула
Значение
a
b
1
2
3
1
Y =
Y =
2
Y =
3
Y =
4
5

2a
  xi , a <1
 i 81

 a x i , a  1
 i10 2
a
xi , a >1
 2 
i 1
 2 3
a<b
 a  xi ,
i 1
 4
b
a>b
  xi ,
 a i2 5

(a - 1) x i , a = b
i 3

7

sin(a)
x 2i ,


i 3

14

sin(b)
xi ,


i

6

7
sin( a ) x ,
 i

2 i 1
-1
1
2
3
4
0
-1
-1
a<b
1
4
a>b
2
1
a=b
2
2
-2
5
4
2
0
0

a 15
a2  b
 cos( b ) x 2i ,
i 10

b 4

cos(
) x i ,
a2  b

a i 1

10

cos
(a

b)
x 3i , a 2  b


i 7

48
5
Y =
5
Y =
6
Y =
7
Y =
8
Y=
9
  7 2
a>3
   xi  ,
  i 3 
  6 3
   xi  , a < 3
  i 1 
 9 0.15
  x i  , a = 3
 i  5 
1
3
5
7

tg(b)
xi , b = 2


i 1

 b 9
 tg( ) x i , b > 2
 3 i 102

2
tg(b ) x i , b < 2
i 4

0.4
2
3.2
12

lg(a)
xi ,
a4


i 5

9

 lg(a  1) x i , a  4
i 1

7
a
lg( ) x ,
a4
i
 2 
i 1
3

ab
  x 2i ,
 i 1 7

(a - b) x i ,
i2

10

(a
+
b)
xi ,


i 3

a 9
 b  xi ,
 i23
 2
 a b x 3i ,
i 1

10
 ab 2 x ,

i

i4
49
3
4
5
1
4
3
3
5
2
a<b
5
4
ab
2
6
a>b
4
4
a=b
a>b
a<b
Y=
10
Y=
11
Y =
12
Y=
13
Y=
14
  12 0.1
   xi  ,
 i 2 
0.2
 5

  x i  ,
 i 1 
 10 0.3
  x i  ,
 i  7 
 12
 a  xi ,
2
 i11

 b  xi ,
2
 i 10
 ab x ,
i
 
i 3
9

sin(
a
)
x 2i ,


i 5

4

cos(b) x i ,
i 1

15

sin(a

b)
xi ,


i 13

4

a
  xi ,
i 1

12

b
  xi ,
9
 i 10
 ab x ,

i

i 3
9
3
a

1
xi ,


i4

3 5
 b x i ,
i 1

9
3
a
b
xi ,


i 6

50
b=2
1
b>2
2
b<2
3
a>b
-6
-2
ab
-2
-2
a<b
-3
-5
a = b2
3
3
a < b2
4
2
a > b2
10
3
a>b
2
1
ab
5
5
a<b
4
7
a=b
4
4
a>b
9
3
a<b
5
8
15
Y=
10
3
cos(
a
)
xi ,


i 1

12
3
sin(
b
)
xi ,


i

2

9
cos( ab) x ,

i

i 3
b
5
b
a>
5
b
a<
5
a=
5
25
7
20
2
15
10.5. Вопросы для самопроверки
10.5.1. Зачем нужны функции пользователя? Как они определяются?
10.5.2. Что такое формальный параметр? Каково соответствие между формальными и фактическими параметрами?
10.5.3. В каком месте БЭЙСИК-программы должен находиться оператор DEF?
10.5.4. Каким образом должна быть оформлена подпрограмма?
10.5.5. Чем отличается оператор GOTO от оператора GOSUB?
10.5.6. Поясните механизм передачи управления во вложенных циклах?
51
1.11. Лабораторная работа № 11 ( C:\USER\GROUP\NOF\lab11.bas )
ПРОГРАММИРОВАНИЕ ЦЕПОЧЕК ТЕКСТОВЫХ ПЕРЕМЕННЫХ
11.1. Цель работы. Получение практических навыков алгоритмизации и программирования цепочек текстовых переменных при формировании изображения типа
“ шахматная доска”.
11.2. Справочный материал. В алгоритмическом языке БЭЙСИК наряду с арифметическими константами и переменными используются текстовые константы и переменные. Для описания текстовых величин используется специальный символ $, так
например, для описания текстовой переменной А , а также массива T, имеющего 5
компонент, необходимо записать A$ и DIM T$(4).
С текстовыми переменными нужно работать так же, как и с арифметическими, т.е.
их можно вычитать, складывать и т. д., тем самым формировать цепочки текстовых
переменных разной длины, использовать их в операторах IF, INPUT, READ, PRINT и
т. д..
11.3. Пример. Подготовить и организовать алгоритм формирования изображения
типа “ шахматная доска” по заданному правилу чередования “звездочек”( * ) и пробелов, приведенному ниже. При этом длина текстовой цепочки ( число звездочек и пробелов ) равна 30, а число столбцов и строк в группе соответственно равно 5 и 3:
__________________________________
!*****!
!*****!
!*****!
!
!*****!
!*****!
!*****!
!
!*****!
!*****!
!*****!
!
!
!*****!
!*****!
!***** !
!
!*****!
!*****!
!***** !
!
!*****!
!*****!
!***** !
!*****!
!*****!
!*****!
!
!*****!
!*****!
!*****!
!
!*****!
!*****!
!*****!
!
!
!*****!
!*****!
!***** !
!
!*****!
!*****!
!***** !
!
!*****!
!*****!
!***** !
!_________________________________!
Текст БЭЙСИК-программы алгоритма формирования изображения типа “шахматная доска” с использованием цепочек текстовых переменных приводится ниже:
52
CLS
10 DIM T$( 2 )
20 FOR I = 0 TO 2
30 READ T$( I ): NEXT I
40 DATA -----------50 DATA *****
60 DATA !
!
70 S$ = “ “: G$ = “ “: O$ = “ “
80 FOR K = 1 TO 3
90 O$ = O$ + T$( 0 )
100 S$ = S$ + T$( 1 ) +T$( 2 )
110 G$ = G$ + T$( 2 ) +T$( 1 )
120 NEXT K
130 PRINT O$
140 FOR I = 1 TO 2
150 FOR J = 1 TO 3
160 PRINT S$: NEXT J
170 FOR J = 1 TO 3
180 PRINT G$: NEXT J
190 NEXT I
200 PRINT O$
210 END
Итак, в 10 строке программы описано три элемента текстового массива T$ с номерами: 0, 1, 2.
В 20-60 строках считываются три разных структуры текстовых компонент массива
T$, необходимых для формирования рамки и поля “шахматной доски”, а 70 строка
необходима для того, чтобы текстовые переменные O$, S$, G$ задать пустыми (“обнулить”). Текстовые переменные T$( 1 ) и T$( 2 ) формируются в цепочки в цикле по
k в строках 80-120. При этом T$( 1 ) представляет собой
“элементарную ячейку”, состоящую из пяти “звездочек”, а T$( 2 ) имеет пять пробелов, ограниченных по краям восклицательными знаками. Компонента T$( 0 ) состоит
53
из двенадцати минусов ( 5 +5 +2 ) и формирует рамку доски (верхнюю кромку в 130
строке, а нижнюю - в 200).
11.4. Задание к лабораторной работе. Подготовить и организовать на ПЭВМ алгоритм формирования изображения типа “шахматная доска” по заданному правилу
чередований звездочек и пробелов согласно табл.11.1.
Таблица 11.1
Номер Длина
вариан текстовой
та
цепочки
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Число
Число
столбцов в строк
группе
в группе
18
24
24
30
20
16
20
32
24
24
24
32
20
28
18
3
3
4
5
5
2
2
4
6
3
3
8
10
7
9
3
3
4
4
5
3
2
5
5
3
5
7
10
7
8
11.5. Вопросы для самопроверки
11.5.1. Что такое текстовые переменные и как они описываются в БЕЙСИКЕ?
11.5.2. Как формируются цепочки текстовых переменных?
11.5.3. Объясните, что означает “обнуление” текстовой переменной?
54
Литература к главе 1
1. Бобарыкин Н.Д., Суроткин В.А.. Лабораторный практикум по основам алгоритмизации и программирования. Методические указания к лабораторным работам по дисциплине «Информатика» на алгоритмическом языке Basic для инженерно-технических специальностей. Калининград, КГТУ, 1998, 56 с.
2. Волков Е.А. Численные методы. - М.: Наука, 1982 .
3. Зельднер Г.. QuickBASIC для носорога. “ABF” - М., 1994 .
4. Информатика. Базовый курс: учеб. пособие/под ред. С.В.Симоновича. -2-е изд.
– Спб.: Питер, 2004. 639 с.
5. Кергаль Г.. Программирование на Бейсике. - М., 1986 .
6. Кириков И.А., Шипилов В.Л. Методические указания. Основы алгоритмизации
и программирования. - Калининград - 1984.
7. Практикум по информатике: учеб. пособие/А.А. Землянский, Г.А. Кретова и др.
Под ред. А.А. Землянского. – М.: КолосС, 2004. – 384 с.
8. Фигурнов В.Э.. IBM PC для пользователя, изд. 6. “Инфра М” - М., 1995 .
55
2. ПРОГРАММИРОВАНИЕ ЗАДАЧ В СИСТЕМЕ MATH CAD
Операционная система WINDOWS, MS OFFICE, трансляторы
2.1. Лабораторная работа № 1 (C:\USER\GROUP\NOF\lab1.mcad)
РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ
МЕТОДОМ ОБРАТНОЙ МАТРИЦЫ
2.1. Цель работы. Получение практических навыков алгоритмизации и программирования алгоритма решения линейных алгебраических уравнений методом обратной матрицы.
2.2.Справочный материал. Запишем систему линейно-независимых алгебраических уравнений, определитель которой не равен нулю, в следующем виде:
A11X1 + A12X2 + … + A1NXN = F1
A21X1 + A22X2 + … + A2NXN = F2
( 2.2.1 )
……………………………………………
AN1X1 + AN2X2 +… + ANNXN = FN
В том случае, если система уравнений (2.2.1) является линейно-зависимой
определяется ранг матрицы (максимальное число линейно-независимых уравнений),
линейно-зависимые уравнения исключаются, а полученная система линейнонезависимых алгебраических уравнений решается методом обратной матрицы.
Систему линейных уравнений (2.2.1) запишем в векторном виде:
AX = F ,
( 2.2.2 )
где матрица А и вектор-столбцы Х и F имеют следующий вид:
 A 11 A 12

 A 21 A 21
A  
..
 ..
A
A
 N1 N2


A

2N

.. 

A
NN 
.. A
..
..
..
X1
1N
X2
X
F1
F
F2
...
...
XN
FN
Систему алгебраических уравнений (2.2.2), записанную в векторном виде, сле56
ва умножим на обратную матрицу A
A-1AX = AF, поскольку A-1A =E,
т.е. равно единичной матрице, то решение системы в векторном виде запишется следующим образом:
X = A-1F
(2.2.3)
2.3. Пример. Решить методом обратной матрицы следующую систему уравнений:
2Х1 + 3X2 – 4X3 = 6
5X1 – 2X2 – 3X3 = 2
( 2.2.4 )
3X1 + 2X2 + 3X3 =3
Выпишем значения матричных элементов для матрицы А и вектор-столбцов X и F:
A
2 3
4
5
2
3
3 2
3
X1
X
X2
X3
6
F
2
3
Программа вычисления корней системы уравнений (2.2.4) методом обратной
матрицы, записанная в системе MATH CAD, имеет следующей вид:
X
1
A F
Далее, проверим равно ли произведение обратной матрицы на матрицу А единичной матрице ( не будет равно в том случае, когда определитель матрицы. А равен
нулю или близок к нему), для этого набиваем команды: ”А(-1)*А =“ в результате
имеем следующую запись:
57
1 0 0
A
1
A
0 1 0
0 0 1
Теперь по формуле (2.3) вычислим корни исходной системы уравнений (2.4):
0.625
X
1.103
0.36
2.4. Задание. Для всех вариантов с 1 – 15 студенты самостоятельно выписывают системы линейных уравнений, состоящих из двух и более уравнений, определитель которых не равен нулю, а затем их решают методом обратной матрицы.
2.5. Вопросы для самопроверки.
2.5.1. Какая система уравнений является линейно-независимой?
2.5.2. Что такое обратная матрица?
58
2.2. Лабораторная работа № 2 С:\USERS\GROUP\NOF\lab2.mcd
РЕШЕНИЕ НЕЛИНЕЙНОГО УРАВНЕНИЯ ГРАФИЧЕСКИМ МЕТОДОМ
2.1. Цель работы. Получение практических навыков алгоритмизации и программирования алгоритма решения нелинейного уравнения графическим методом.
2.2. Справочный материал. Графический метод решения нелинейных уравнений является визуальным методом выявления всех корней уравнений в исследуемой
области. Алгоритм решения нелинейного уравнения F(x) = 0, xa,b сводится к следующему. Линейные члены уравнения переносятся в правую часть и строятся графики левой и правой части уравнения на отрезке a,b. Точки пересечений графиков и
определяют значения корней.
2.3. Пример. Вычислить графическим методом значение корня следующего
уравнения:
sin(x) – x + 1 = 0 ,
x0, 3.
( 2.3.1 )
Запишем уравнение (2.3.1) в виде:
sin(x) = x – 1 ,
( 2.3.2 )
а затем построим графики левой и правой частей уравнения (2.3.2) по следующему
алгоритму:
F(x) := sin(x) f(x) := x – 1
a := 0
b := 3
N := 50
h := ( b – a ) / N i := 0 ; N
xi := a + i * h
Алгоритм построения графиков заключается в следующем. На первом этапе построенния вызывается шаблон графика и подписываются координатные оси, как это
указано на рис.2. 1, на втором – дважды щелкнув левой клавишей «мышки» в поле
графика вызывается процедура обработки графика. Выбираем первую позицию «Кординаты Х и У» координатную сетку, указывая число линий по осям Х и У, таким образом, чтобы одна из вертикальных линий пересекала точку пересечения графиков
тем самым определяя значения корня, а горизонтальная – значение F(0).
59
2
1.5
F  xi
1
f  xi
0.5
0
0.5
1
0
0.21 0.43 0.64 0.86 1.07 1.29 1.5 1.71 1.93 2.14 2.36 2.57 2.79
3
xi
Рис. 2.1. Вычисление корня нелинейного уравнения (2.3.1), как
точки пересечения графиков х = 1.93
Рассмотрим решение кубического алгебраического уравнения, имеющего три действительных корня:
- х3 + bх + c = 0,
x-5, 5.
(2. 3.3 )
Уравнение ( 2.3.3 ) приведем к виду:
х3 = bх + c ,
( 2.3.4 )
и построим графики левой и правой части уравнения ( 2.3.4 ) по алгоритму приведенному выше, подбирая коэффициенты b и c таким образом, чтобы уравнение (2.3.3)
три действительных корня:
125
83.33
F  xi
41.67
f  xi
0
41.67
83.33
125
5
4.29 3.57 2.86 2.14 1.43 0.71
0
0.71 1.43 2.14 2.86 3.57 4.29
xi
Рис. 2.2. Вычисление корней нелинейного уравнения (2.3.3), как
точкек пересечения графиков х1 = - 2.8, х2 = 0, х3 = 3.2
60
5
2.4. Задание. Найти значения корней уравнения, подбирая значения коэффициентов b и c:
 x 3  bx  c  0 .
3.5. Вопросы для самопроверки.
1. Каким образом нужно переписать уравнение, чтобы решить его графическим методом?
2. Как найти цену делений по осям?
61
2.3. Лабораторная работа №3 С:\USERS\GROUP\NOF\lab3.mcd
РЕШЕНИЕ НЕЛИНЕЙНОГО УРАВНЕНИЯ МЕТОДОМ
ПРОСТЫХ ИТЕРАЦИЙ
3.1. Цель работы. Получение практических навыков алгоритмизации и программирования решения нелинейных уравнений методом простых итераций.
3.2. Справочный материал. Любой итерационный процесс в котором каждое
последующее приближение корня уравнения определяется через предыдущее, требует
знания начального приближения искомого корня, которое можно получить с помощью графического метода. Найденные в предыдущей работе значения корней уравнений мы здесь используем в качестве начального приближения. Суть метода простых итераций заключается в следующем. В исходном уравнении
F(x)=0, x0 = const
(2.3.1)
явно выразим неизвестную x:
x = f(x).
(2.3.2)
Приписывая итерационные индексы неизвестной х в уравнении (2.3.2), таким
образом, чтобы справа он был на единицу больше, получаем итерационный вычислительный процесс:
xi+1 = f(xi), x0 = const,
i = 0, 1, …, N-1.
(2.3.3)
Возникает сразу два вопроса. Первый, как определить число итераций N и второй всегда ли сходится итерационный процесс?
Первый вопрос решается на основе условия сходимости итерационного процесса
xi 1  xi   ,
где
(2.3.4)
 - малый параметр, определяющий точность вычислений.
Таким образом, итерационный процесс прерывается, при начале выполнения условия
сходимости (3.3.4), отсюда и определяется N, как N = i+1.
62
Второй вопрос решается на основе условия локализации корня. Например, с помощью графика выберем окрестность искомого корня. Эту окрестность называют областью локализации корня. Итерационный процесс (2.3.3) сходится к искомому корню из любой точки области локализации, если в этой области
f ' ( x)  1 .
(2.3.5)
Приведение исходного уравнения (2.3.1) к итерационному виду (2.3.2) в общем
случае неоднозначно. Если для выбранного представления (2.3.2) условие (2.3.5) не
выполняется, то нужно искать другую итерационную функцию.
3.3. Пример. Сначала рассмотрим уравнение с одним корнем
sin(x) – x +1 = 0.
Для него итерационную функцию запишем в виде:
p(x)=sin(x)+1.
(2.3.6)
Из графика в лабораторной работе №2 для области локализации корня выберем
интервал [1.5,2.5] и введем для него обозначение
r
1.5 2.5
Проверим условие сходимости выбранной итерационной функции (2.3.6) в области локализации искомого корня - на интервале [1.5,2.5]:
1
d
p( r )
dr
0.5
0
1.5
2
r
2.5
Рис. 3.1. Выполнение условия локализации корня в окрестности х0
Видно, что условие локализации в окрестности корня выполняется, и в качестве
нулевого приближения возьмем х0 = 2.
63
Теперь запишем алгоритм итерационного процесса вычисления корня с заданной точностью

для нелинейного уравнения (2.3.1).
f ( x)  sin( x)  1
pf ( x) 
xi1  f xi
i  0  N  1
d
f ( x)
dx
x0  2
pf x5  0.355
N  11   10
3
if  xi1  xi    xi  i 
0
1
2
2
3
1.98
xi
4
1.934
1.95
1.935
1.935
1.93
1.935
1.935
1.91
0
1
2
3
4
5
6
7
8
9 10
1.935
i
Рис. 3.2. Развитие итерационного процесса вычисления корня хк
Как следует из рис. 3.2, число итераций необходимых для их сходимости, равно
N = 5, что подтверждает и выполнения условия сходимости итераций (см. табл.). Значение корня нелинейного уравнения (2.3.1), равно х к = 1.93.Отметим ,что корень
уравнения лежит в области локализации т.к. выполнено условие (3.3.5) (pf(x5) ≤1 ).
Теперь рассмотрим уравнение
 x 3  bx  c  0 ,
которое при
b  9
c  1
имеет три действительных корня.
С помощью графика из предыдущей работы выделим области локализации корней и
введем обозначения для каждой из них:
x1 (-2.5;-1.5)
r = -2.5, -2.3 . . -1.5
x2 (-1.0; 0.0 )
s = -1, -0.8 . . 0
x3 ( 2.0; 3.0).
t = 2, 2.2 . . 3 .
Для каждого корня нужно найти итерационную формулу вида (3.2.2) и проверить условие сходимости в соответствующей области локализации. Пусть для x1
64
p ( x) 
x3  c
.
b
Проверяем условие (3.3.5) сходимости для этой функции к корню x1. в области r:
5
4
d
p( r )
dr
3
2
3
2.5
r
2
Как видно, эта функция в данном интервале не найдет корня х1, но из поведения
производной, модуль которой уменьшается при
x  0,
можно заключить, что р(х)
скорее всего отыскивает х2 . Поэтому возьмем следующий интервал, в котором находится корень х2.
0.6
d
p( s )
ds
0.4
0.2
0
1
0.5
s
0
Итак, р(х) действительно находит х2. Возвращаемся к первому корню х1, для
которого необходимо найти итерационную функцию. Здесь уместно обратить внимание на структуру корней исходного уравнения в области определения. Корень x2
находится в окрестности х=0, а для х1 и х3 просматривается симметрия относительно
x2. Поэтому и функция должна быть квадратичной:
 x 3  bx  c  0
x1  2.8, x3  3.2 , т.е. x  0 .
Для вывода итерационной функции разделим обе части кубического уравнения на х и
и извлекая квадратный корень получим следующие зависимости:
65
x2  b 
x2  b 
c
0
x
c
x
c

x   b  

x
c

x1    b  

x
c

x3   b  

x
Для х1 итерационная формула примет вид:
где
c

u( x )    b  

x
а для корня х3
где
x k 1  u( x k ) ,
,
xk 1  v (xk )
c

v (x)   b  

x
.
Проверим выполнения условия локализации корней в соответствующих областях
0.2
d
u( r )
dr
0.15
0.1
0.05
3
2.5
r
2
2
2.5
t
3
0.15
d
v( t )
dt
0.1
0.05
Итак, мы нашли вид итерационной функции для каждой области локализации
корней. Теперь можно строить алгоритмы итерационных процессов. Находим х1.
66
b  9 c  1 f ( x)   b 
c
d
pf ( x) 
f ( x)
x
dx
xi1  f xi
i  0  N  1
x0  3 N  6   10
3
if  xi1  xi    xi  i 
pf x2  0.02
0
1
2.94
-2.943
xi
-2.943
x1
2.96
-2.943
-2.943
2.97
2.99
3
0
1
2
3
4
5
i
Рис. 3.3. Развитие итерационного процесса вычисления корня х1к
Как следует из рис. 3.3, число итераций необходимых для их сходимости, равно
N = 2, что подтверждает и выполнения условия сходимости итераций (см. табл.). Значение корня нелинейного уравнения (2.3.1), равно х1к = - 2.94. Отметим ,что корень
уравнения лежит в области локализации т.к. выполнено условие (3.3.5) (pf(x2) ≤1 ).
Определяем корень х2к.
3
x c
b  9 c  1 f ( x) 
b
pf ( x) 
d
f ( x)
dx
i  0  N  1 xi1  f xi pf x1  4.115  10
x0  0 N  6   10
3
3
if  xi1  xi    xi  i 
0
0
-0.111
-0.111
xi
-0.111
x2
0.028
-0.111
-0.111
0.056
0.083
0.11
0
1
2
3
4
5
i
Рис. 3.4. Развитие итерационного процесса вычисления корня х2к
Как следует из рис. 3.4, число итераций необходимых для их сходимости, равно
N = 1, что подтверждает и выполнения условия сходимости итераций (см. табл.). Зна67
чение корня нелинейного уравнения (2.3.1), равно х1к = - 0.11. Отметим ,что корень
уравнения лежит в области локализации т.к. выполнено условие (3.3.5) (pf(x1) ≤1 ).
Определяем корень х3к.
b  9 c  1 f ( x) 
i  0  N  1
b
c
x
d
3
f ( x) x0  3.2 N  6   10
dx
pf ( x) 
xi1  f xi
if  xi1  xi    xi  i 
pf x1  0.018
0
1
3.2
3.054
3.054
x3
3.16
3.054
3.054
xi
3.13
3.09
3.05
0
1
2
3
4
5
i
Рис. 3.4. Развитие итерационного процесса вычисления корня х3к
Как следует из рис. 3.4, число итераций необходимых для их сходимости, равно
N = 1, что подтверждает и выполнения условия сходимости итераций (см. табл.). Значение корня нелинейного уравнения (2.3.1), равно х3к = 3.05. Отметим ,что корень
уравнения лежит в области локализации т.к. выполнено условие (3.3.5) (pf(x1) ≤1 ).
3.4. Задание. Найти корни уравнения
 x 3  bx  c  0 .
Номер
варианта
1
2
3
4
5
6
7
8
9
10
11
b
5.0
6.0
7.0
8.0
9.0
c
1.0
1.2
1.4
1.6
1.8
10.
0
2.0
11.
0
2.2
12.
0
2.4
13.
0
2.6
14.
0
2.8
15.
0
3.0
3.5. Вопросы для самопроверки.
3.5.1. Каким образом представить решаемое уравнение в итерационной форме?
3.5.2. Условие сходимости итерационного процесса.
68
2.4. Лабораторная работа № 4 C:\USERS\GROUP\NOF\lab4.mcd
РЕШЕНИЕ НЕЛИНЕЙНОГО УРАВНЕНИЯ МЕТОДОМ КАСАТЕЛЬНЫХ
4.1. Цель работы. Получить практические навыки алгоритмизации и программирования решения нелинейного уравнения методом касательных с применением
шаблонов графики и производных.
4.2. Справочный материал. Задано нелинейное уравнение и начальное приближение в виде:
F(x) = 0, xa,b;
x0 = const
(2.4.1)
Алгоритм построения решения нелинейных уравнений методом касательных
сводится к следующему. Через точку (х0, F(x0)) проводится касательная, как это показано на рис. 4.1, по формуле
y(x1) – y(x0) = F’(x0)·(x1 – x0).
(2.4.2)
Учитывая, что у(х1) = 0, а y(x0) = F(x0) и выражая явно х1, получим
x1 = x0 -
F ( x0 )
.
'
F ( x0 )
(2.4.3)
336
F  xi
y  xi
0
258.8
x0
2.5
181.6
104.4
27.2
50
2
1.5
1
0.5
0
0.5
xi
1
1.5
2
x1
2.5
3
x0
Рис.4.1. К выводу итерационной формулы метода касательных
Указанная процедура повторяется N раз, для которых обобщая итерационную
формулу (2.4.3), получим
69
xi+1 = xi -
F ( xi )
,
'
F ( xi )
i = 0, 1, …, N-1.
(2.4.4)
Считается, что итерационный процесс сошелся, если выполнилось условие
F ( xi ) 
, i = 0, 1, …, N.
(2.4.5)
Этот итерационный процесс более чувствителен к начальному приближению,
чем в методе простой итерации, однако сходится быстрее. Отметим, что рассматрваемый интервал a,b может содержать только один корень. Так как, алгоритм не изменяется при поиски различных корней нелинейного уравнения, то их поиск определяется только заданием значений начальных приближений.
Процесс поиска решения, как и во всяком итерационном методе, складывается из трех этапов:
1. Нахождения начального приближения.
2. Проверки условий сходимости.
3. Построение итерационного процесса.
Первый этап - нахождение начального приближения - описан в предыдущих
работах (№ 2 и № 3).
4.3. Пример.
4.3.1. Для уравнения с одним корнем (2.3.1) методом касательных приближено
вычислить значение корня.
F ( x)  sin( x)  x  1
i  0  N  1
F ( x)
d
F ( x) f ( x)  x 
x0  2 N  6
PF ( x)
dx
pf x1  0.043
if  xi1  xi    xi  i 
PF ( x) 
xi1  f xi
0
1
2
1.935
1.935
1.98
1.935
xi
1.935
1.97
1.95
1.93
0
1
2
3
4
5
i
Рис. 4.2. Развитие итерационного процесса вычисления корня хк
70
2
Как следует из рис. 4.2, число итераций необходимых для их сходимости, равно
N = 1, что1.98
подтверждает и выполнения условия сходимости итераций (см. табл.). Зна-
чение
xi корня
1.97нелинейного уравнения (2.3.1), равно х к = 1.93.Отметим ,что корень
уравнения лежит в области локализации т.к. выполнено условие (3.3.5) (pf(x1) ≤1 ).
1.95
4.3.2. Для уравнения с тремя корнем (2.3.3) методом касательных приближено
вычислить1.93
значения
корней.
Определяем
0
1
2
3 корень
4 х1к. 5
i
b  9
c  1
3
F ( x)  x  b x  c
xi1  f xi
i  0  N  1
F ( x)
d
F ( x) f ( x)  x 
x0  2.8 N  6
PF
(
x
)
dx
pf x1  0.019
if  xi1  xi    xi  i 
PF ( x) 
0
1
2.8
-2.943
x1
2.84
-2.943
-2.943
xi
-2.943
2.88
2.92
2.95
0
1
2
3
4
5
i
Рис. 4.3. Развитие итерационного процесса вычисления корня х1к
Как следует из рис. 4.3, число итераций необходимых для их сходимости, равно
N = 2, что подтверждает и выполнения условия сходимости итераций (см. табл.). Значение корня нелинейного уравнения (2.3.1), равно х1к = - 2.94. Отметим ,что корень
уравнения лежит в области локализации т.к. выполнено условие (3.3.5) (pf(x2) ≤1 ).
Определяем корень х2к.
Как следует из рис. 4.4, число итераций необходимых для их сходимости, равно
N = 1, что подтверждает и выполнения условия сходимости итераций (см. табл.). Значение корня нелинейного уравнения (2.3.1), равно х1к = - 0.11. Отметим ,что корень
уравнения лежит в области локализации т.к. выполнено условие (3.3.5) (pf(x1) ≤1 ).
71
1.95
1.93
0
1
2
3
4
5
i
b  9
c  1
3
F ( x)  x  b x  c
F ( x)
d
F ( x) f ( x)  x 
x0  0 N  6
PF ( x)
dx
5
pf x1  1.138  10
if  xi1  xi    xi  i 
PF ( x) 
i  0  N  1 xi1  f xi
0
-0.111
0
-0.111
x2
0.028
-0.111
-0.111
2
xi
-0.111
0.056
1.98
0.083
xi
1.97
0.11
0
1
2
1.95
3
4
5
i
Рис.1.93
4.4. Развитие итерационного процесса вычисления корня х2к
0
1
2
3
4
5
Определяем корень х3к.
i
b  9
c  1
3
F ( x)  x  b x  c
F ( x)
d
F ( x) f ( x)  x 
x0  3.2 N  6
PF ( x)
dx
5
pf x2  3.974  10
if  xi1  xi    xi  i 
PF ( x) 
i  0  N  1 xi1  f xi
0
1
3.2
3.054
x3
3.16
3.054
3.054
xi
3.054
3.13
3.09
3.05
0
1
2
3
4
5
i
Рис. 4.4. Развитие итерационного процесса вычисления корня х3к
Как следует из рис.4.4, число итераций необходимых для их сходимости, равно
N = 2, что подтверждает и выполнения условия сходимости итераций (см. табл.). Значение корня нелинейного уравнения (2.3.1), равно х1к = 3.05. Отметим ,что корень
уравнения лежит в области локализации т.к. выполнено условие (3.3.5) (pf(x1) ≤1 ).
72
4.4. Задание. Методом касательных решить то же уравнение, которое дано в 3.4.
4.5. Вопросы для самопроверки.
4.5.1. Написать итерационную формулу метода касательных.
4.5.2. Каковы условия сходимости данного итерационного метода.
73
2.5. Лабораторная работа № 5 С:\USERS\GROUP\NOF\lab5.mcd
РЕШЕНИЕ СИСТЕМ НЕЛИНЕЙНЫХ УРАВНЕНИЙ
ГРАФИЧЕСКИМ МЕТОДОМ
5.1. Цель работы. Получение практических навыков алгоритмизации и программирования решения систем нелинейных уравнений графическим методом.
5.2. Справочный материал можно прочитать в работе №2.
5.3. Пример. 5.3.1. Графическим методом решить систему нелинейных уравнений
x− 12 sin y5 − 3 = 0
 1 x
 2 cos 4 −y = 0
(2.5.1)
Система уравнений графическим методом решается подобно тому, как это описано в
лабораторной работе №2, т.е. выделим линейные члены уравнений:
x = 12 sin y5 + 3

1
x
 y = 2 cos 4
(2.5.2)
и введем обозначения:
g( x)
0.5  cos
f( y)
0.5  sin
x
4
y
5
3
Теперь система (2.5.2) запишется в виде
y = g(x),
x = f(у).
(2.5.3)
Зададим область изменения переменной х, а по ней из первого уравнения определяем
область изменения переменной у, т.к. область изменения переменной х была задана
произвольно, то из второго уравнения системы определяем область изменения переменной х, и построим графики левой и правой частей системы (2.5.3).
74
x
y
g( x)  0.5  cos   f ( y)  0.5  sin   3 a  4
4
5
ba
b  4 N  100 h 
i  0  N xi  a  i  h
N
yi  gxi xi  f  yi
0.5
0.45
yi
g xi
0.41
0.36
0.32
0.27
3.027
3.032
3.036
3.041
xi  f  yi
3.045
3.05
Рис. 5.1. Вычисление корней системы нелинейных уравнений (2.5.1), как
точки пересечения графиков хк = 3, ук = 0.36
5.3.2. Графическим методом решить систему нелинейных уравнений
x + 3·lg(x) – y2 = 0,
(2.5.4)
2·x2 - x·y - 5·x + 1 = 0.
Для графического решение системы уравнений (2.5.4) из первого и второго
уравнения выразим y(x)
y(x) = ±
x  lg( x) ,
(2.5.5)
y(x) = 2·x – 5 + 1/x.
Перед графическим решением системы уравнений (2.5.5) необходимо решить
неравенство x + lg(x) ≥ 0, т.к. подкоренное выражение должно быть неотрицательным.
75
 ( x)  x  log( x)
F ( x) 
 ( x)
a  0.45 b  5 N  100 h 
f ( x)  2  x  5 
1
x
ba
i  0  N xi  a  i  h
N
5.7
4.56
  xi
a
3.42
2.28
1.14
0
0.45
1.1
1.75
2.4
3.05
3.7
4.35
5
xi
F  xi
4.12
b
3.03
 F  xi 1.95
0.86
f  xi
0.22
1.3
2.39
0.45 1.02 1.59 2.16 2.73 3.29 3.86 4.43
5
xi
Рис. 5.2. Вычисление корней системы нелинейных уравнений (2.5.4), как
точкек пересечения графиков
Из рис. 5.2а, следует что подкоренное выражение неотрицательно при х ≥ 0.45, а
из рис. 5.2b – значения двух пар корней:
х1 = 1.59,
х2 = 3.29,
у1 = - 1.3,
у2 = 1.95.
76
5.4. Задание. Найти графическим методом решение соответствующего варианта задания.
1.
x = 14 sin 3y + 2
 1 x
y = 2 cos 2
2.
x = 12 sin 3y + 2
 1 x ,
y = 2 cos 3
3.
x = 12 sin 5y + 2
 1 x ,
y = 2 cos 2
4.
x = 12 sin 5y + 3
 1 x ,
y = 2 cos 2
5.
x = 14 sin 3y + 2
,

x
y
=
cos

3
6.
x = 14 sin 3y + 3
,

x
y = cos 4
7.
x = 12 sin 5y + 2
,

x
y = cos 3
8.
x = 12 sin 5y + 3
 1 x ,
y = 2 cos 4
,
77
9.
x = 14 sin 3y + 2
 1 x ,
y = 2 cos 3
10.
x = 12 sin 3y + 2
 1 x ,
y = 2 cos 2
11.
x = 12 sin 5y + 3
,

x
y = cos 4
12.
x = 14 sin 5y + 2
,

x
y = cos 3
13.
x = 14 sin 3y + 3
 1 x ,
y = 2 cos 2
14.
x = 12 sin 3y + 2
,

x
y = cos 4
15.
x = 14 sin 5y + 3
 1 x .
y = 2 cos 2
6.5. Вопросы для самопроверки.
6.5.1. Как необходимо преобразовать систему уравнений, чтобы решить ее графическим методом?
6.5.2. Что нужно указывать по осям графика?
78
2.6. Лабораторная работа № 6 С:\USERS\GROUP\NOF\lab6.mcd
РЕШЕНИЕ СИСТЕМ НЕЛИНЕЙНЫХ УРАВНЕНИЙ
МЕТОДОМ ПРОСТЫХ ИТЕРАЦЙ
6.1. Цель работы. Получение практических навыков алгоритмизации и программирования решения систем нелинейных уравнений методом простых итераций.
6.2. Справочный материал. Рассмотрим системы нелинейных уравнений и
начальных приближений, записанных в векторной форме
F(x) = 0, x0 = const.
(2.6.1)
явно выразим вектор неизвестных x:
x = f(x).
(2.6.2)
Приписывая итерационные индексы вектору неизвестной х в уравнении (2.6.2),
таким образом, чтобы справа он был на единицу больше, получаем итерационный
вычислительный процесс:
xi+1 = f(xi), x0 = const,
i = 0, 1, …, N-1.
(2.6.3)
Условия сходимости итерационного процесса для приближений векторных величин
xi 1  xi   ,
где
(2.6.4)
 - малый параметр, определяющий точность вычислений.
Таким образом, итерационный процесс прерывается, при начале выполнения условия
сходимости (2.6.4), отсюда и определяется N, как N = i+1.
Второй вопрос решается на основе условия локализации корня. Например, с помощью графика выберем окрестность искомого корня. Эту окрестность называют областью локализации корня. Итерационный процесс (2.6.3) сходится к искомому корню из любой точки области локализации, если в этой области выполняется условие
f ' ( x)  1 .
(2.6.5)
Приведение исходного уравнения (2.6.1) к итерационному виду (2.6.2) в общем
случае неоднозначно. Если для выбранного представления (2.6.2) условие (2.6.5) не
79
выполняется, то нужно искать другую итерационную функцию.
6.3. Пример.
6.3.1. Методом простых итераций с заданной точностью решить систему нелинейных уравнений
x− 12 sin y5 − 3 = 0
 1 x
 2 cos 4 −y = 0
(2.6.6)
Преобразуем эту систему уравнений к итерационной форме (2.6.2). Тогда вектор х и
вектор правой части f(x) имеют вид
а( у ) 
f(x) = 
,
х

х =   ;
у


 в( х) 
 
где

1
y
а( у)   sin( )  3;
2
5
1
x
b( x)   cos( ) .
2
4
Начальные приближения корней возьмем из решения систем нелинейных уравнений (2.6.6) графическим методом:
 х0   2.8 


.
 у   0.46 

 0 
Продифференцируем векторную функцию f(x) по векторному аргументу х, в резултате получим матрицу q(x,y)

 0
q( x, y)  
 в( х)
 х
а( у) 
у  , т.к. а( у)  0; в( х)  0 .

х
у
0 

(2.6.7)
В качестве нормы матрицы возьмем ее определитель, а т.к. определитель может
быть отрицательным необходимо от него еще взять модуль, т.е.
q( x, y  1.
(2.6.8)
Теперь по формуле (2.6.3) можно построить итерационный процесс.
80
1
y
a ( y)   sin   3
2
5
N  6
 xi1 

 
y
i

1


1
x
b( x)   cos  
2
4
i  0  N  1
 a yi 


b
x


i


 2.8 


 .46 


d
a ( y) 
 0
dy


d

b
(
x
)
0


 dx

pf ( x  y) 
pf  x1  y1  8.6  10
 x0 
  
 y0 
3
2.51
xi
yi
1.97
1.44
0.9
0.36
0
1
2
3
4
5
i
Рис. 6.1. Развитие итерационного процесса вычисления корней хк = 3, ук =0.36
и число итераций, равно N = 1
6.3.2. Методом простых итераций решить систему нелинейных уравнений при
начальных приближений корней, значение которых задается из графического метода
x + 3·lg(x) – y2 = 0, х0 = 1.59, у0 = -1.3,
(2.6.9)
2·x2 - x·y - 5·x + 1 = 0.
Систему уравнений (2.6.9) запишем в следующем векторном виде:
А(х,у)·Х = ψ(х),
х
где Х =   ,
у
 
А(х,у) =
Х0 = const,
 1  у

,
 2 х  х 


81
ψ(х) =
(2.6.10)
  3lg( x) 

 .
 5 x 1 
Пологая, что определитель матрицы А(х,у) не равен нулю (существует обратная
матрица А-1(х,у)), в результате умножения левой и правой части векторного уравнения (2.6.10) на обратную матрицу, получим
Х = f(x,y),
где вектор
f(x,y) = A-1(x,y)·ψ(x).
(2.6.11)
Теперь по формуле (2.6.3) можно построить итерационный процесс в виде следующего алгоритма.
Программа и результаты итерационных вычислений корней:
 1 y 

 2  x x 
 3  log( x) 

 1  5  x 
A( x  y)  
 ( x)  
N  201
 xi1 
1
x0  1.5 y0  1.3 i  0  N  1 
  Axi  yi   xi
 yi1 
1.5
1.492
1.484
1.475
1.467
1.459
1.451
1.443
1.434
1.426
1.418
xi
a
0
40
80
120
160
200
i
yi
1.3
1.32
1.34
1.36
1.38
1.4
1.42
1.44
1.46
1.48
1.5
b
0
40
80
120
160
200
i
Рис.6.2. Развитие итерационного процесса вычисления корней (а) хк = 1.46
и (b) ук = - 1.4, при этом, число итераций, равно N = 200
82
6.4. Задание. Методом простых итераций решить соответствующий вариант задания приведенного в пункте 5.4 предыдущей работы.
6.5. Вопросы для самопроверки
1. Каково условие сходимости итерационного процесса в векторном виде?
2. Запишите условие сходимости итерационного процесса в координатном виде.
3. К чему сводится условие локализации корня и зачем оно нужно?
83
2.7. Лабораторная работа № 7 С:\USERS\GROUP\NOF\lab7.mcd
ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ: МЕТОД ПРЯМОУГОЛЬНИКОВ
И ТРАПЕЦИЙ, ФОРМУЛА СИМСОНА
7.1. Цель работы. Получение практических навыков алгоритмизации и программирования приближенного вычисления определенных интегралов с применением
шаблонов определенных интегралов и сумм.
7.2. Справочный материал. Пусть подынтегральная функция f(x) определена
на отрезке [a,b], разобьем его на N равных частей, т.е. введем равномерную пространственную сетку
a = x0 < x1 < x2 < …< xN-1 < xN = b
(2.7.1)
где N+1- число пространственных узлов; xi = i  h; h = (b - a) / N; i = 0 , 1 , .. , N.
На отрезке [a,b] определенный интеграл, геометрический смысл которого – площадь
фигуры ограниченной кривой f(x) и прямыми У = 0, Х = а, Х = b, приближенно можно
вычислить по ряду формул, которые аппроксимируют определенный интеграл с различной точностью. Так, например, простейшая формула прямоугольников в основе,
которой лежит аппроксимация всей площади фигуры площадями элементарных прямоугольников f(a)·h, f(x1)·h, … , f(xN-1)·h, имеет первый порядок точности 0(h)
b

N 1
f ( x)dx  h   f ( xi ) , или
i 0
a
b

N
f ( x)dx  h   f ( xi ) .
(2.7.2)
i 1
a
Формула трапеций, основанная на площадях элементарных трапеций (f(a)+f(x1))/2·h,
(f(x1)+f(x2))/2·h, … , (f(xN-1)+f(b))/2·h, имеет второй порядок точности 0(h2)
b

a
 f ( x0 )  f ( xn ) N 1

f ( x)dx  h  
  f ( xi )  .
2
i 1


(2.7.3)
Формула Симпсона аппроксимирует определенный интеграл с третьим порядком
точности 0(h3)
b

a
h N 2
f ( x)dx     f ( xi )  4  f ( xi 1 )  f ( xi 2 )  .
3 i 0
84
(2.7.4)
Формула Симпсона (2.7.4) получается если подынтегральную функцию f(x) на паре
элементарных интервалов [xi-1,xi+1] аппроксимировать параболой.
Точность полученного значения определяется числом элементарных площадок
Si, т.е. числом узлов сетки.
7.3. В качестве примера возьмем подынтегральную функцию вида:
f ( x) 
х5
, на отрезке [0.8,1.4].
2 x2  3
Для уточнения эффективности методов прямоугольника и трапеции зададимся точностью вычисления определенного интеграла, равной δ = 1%, в зависимости от числа
узлов разностной сетки
x
f ( x) 
b
5
a  0.8
2
2 x  3
N  110 h 
N1
Jpr  h

ba
N
f xi
i0
N  6
h 

b  1.4 J   f ( x) dx
a
i  0  N
Jpr  0.491
ba
N
J  0.497
xi  a  i  h
pr 
i  0  N
J  Jpr
 100 pr  1.033
J
xi  a  i  h
 f ( a)  f ( b) N1

J  Jtr

Jtr  h

f xi  Jtr  0.501 tr 
 100
2
J


i1



tr  0.93
Итак, для метода прямоугольника отрезок [a,b] пришлось разбить на 110 частей, чтобы вычислить определенный интеграл с точностью 1%, а в методе трапеций
потребовалось разбить всего на 6 частей.
85
7.4. Задание. Приводим варианты заданий для приближенного вычисления интегралов.
 /3
1.
 (tg

2
x  ctg 2 x) dx
/6
1
2.
arctgx
x
1 x2
0
dx

3.
e
x
cos 2 xdx
0
2 .5
4.
1
x
2
sin
1
1
dx
x
e x (1  sin x)
0 1  cos x
1 .5
5.
3
6.
 arcsin
0
2
7.

1
x 2  0.16
dx
x
1
8.
x
dx
1 x
1
 (3 sin x  2 cos x)
2
dx
0
3
9.
x
x
(1  ln x ) dx
1
3 .5
10.
x
1
ln x
1  ln x
dx
7.5. Вопросы для самопроверки.
7.5.1. Напишите формулы прямоугольников.
7.5.2. Напишите формулу трапеций.
86
2.8. Лабораторная работа №8 С:\USERS\GROUP\NOF\lab8.mcd
ЧИСЛЕННОЕ РЕШЕНИЕ ОБЫКНОВЕННОГО ДИФФЕРЕНЦИАЛЬНОГО
УРАВНЕНИЯ МЕТОДОМ ЭЙЛЕРА И РУНГЕ-КУТТА
8.1. Цель работы. Получение практических навыков алгоритмизации и программирования численного решения обыкновенного дифференциального уравнения
методом Эйлера и Рунге-Кутта.
8.2. Справочный материал. Простейшим обыкновенным дифференциальным
уравнением является уравнение первого порядка
y’ = f(x,y),
xa,b.
(2.8.1)
Основная задача, связанная с уравнением (2.8.1), известна как задача Коши:
найти решение дифференциального уравнения в виде функции у(х), удовлетворяющей начальному условию
у(х0) = у0.
(2.8.2)
Для численного решения обыкновенного дифференциального уравнения (2.8.1)
методом Эйлера и Рунге-Кутта разобьем отрезок [a,b] на N равных частей, т.е. введем
равномерную пространственную сетку
a = x0 < x1 < x2 < …< xN-1 < xN = b,
(2.8.3)
где N+1- число пространственных узлов; xi = i  h; h = (b - a) / N; i = 0 , 1 , .. , N.
На основании определения производной от функции у(х), запишем
у lim

х
y ( x  x)  y ( x)
y ( xi  h)  y ( xi )

 0(h), i  0,1,..., N  1 .
x
h
x  0
(2.8.4)
Равенство в выражении (2.8.4) предполагает использование предельного перехода
h = (b – a)/N, при N → ∞.
При численной реализации разностных производных исходят из того факта, что любые измерения величин имеют свои погрешности и численные расчеты этих величин
должны иметь такие же погрешности, что и определяет конечные значения N.
Первый порядок точности 0(h) для правой разностной производной (2.8.4) может
быть установлен с помощью ряда Тейлора.
87
В дальнейшем будут использованы следующие обозначения:
yi-1 = y(xi –h); yi = y(xi); yi+1 = y(xi + h).
(2.8.5)
Левая как правая разностная производная имеет первый порядок точности, центральная - второй
yi  yi 1

 0(h)  левая,

h
dy  yi 1  yi 1

 0(h 2 )  центральная,
dx  2h
yi 1  yi

 0(h)  правая.

h
(2.8.6)
Разностная схема по методу Эйлера для задачи Коши (2.8.1) записывается следующим образом:
yi 1  yi
 f ( xi , yi ),
или yi 1  yi  h  f ( xi , yi ) .
h
y0  const ; i  0,1,..., N  1
(2.8.7)
Таким образом, метод Эйлера достаточно прост, но имеет первый порядок точности 0(h). Поэтому в методе Рунге-Кутта он рассматривается как первый этап - предикация (предсказание, т.е. приближенное решение). На втором этапе это решение
корректируется на основе разностной схемы второго порядка точности 0(h2)
Ti 1  Ti
f ( xi , Ti )  f ( xi 1 , yi 1 )
 f ( x 1 ,T 1 ) 
,
i
i
h
2
2
2
(2.8.8)
T0  y0 ; i  0,1,..., N  1.
В данном случае правая разностная производная становится центральной относительно полуцелой точки i+1/2, а значение уi вычисленное на первом этапе используется при вычислении правой части (2.8.8).
8.3.Пример. Проинтегрировать обыкновенное дифференциальное уравнение
y '  x  y,
с начальным условием
x0.5,1.5
(2.8.9)
у(0.5) = 0.724.
С целью анализа эффективности разностной схемы Эйлера, беря за истинное
значение функции значение TN, вычисленное по схеме второго порядка точности
0(h2), определим при каком числе элементарных отрезков N значение функций, будут
совпадать с точностью 2% на правом конце счетной области.
88
f ( x  y)  x  y y0  0.724 T0  y0 a  0.5 b  1.5 N  17
ba
h 
x0  a i  0  N  1 xi1  a  ( i  1)  h
N
h
yi1  yi  h f  xi  yi Ti1  Ti   f xi  Ti  f  xi1  yi1 
2
i  0  N
 
TN  yN
TN
 100   1.991
2.54
yi
Ti
2.09
1.63
1.18
0.72
0.5
0.7
0.9
1.1
1.3
1.5
xi
Рис. 8.1. Пространственное распределение значений функций у и Т,
вычисленных по схемам первого (сплошная кривая) и второго порядка точности
Таким образом, для дифференциального уравнения (2.8.9) метод Эйлера при
разбиении на N = 17 частей счетной области дает приемлемые результаты.
8.4. Задание. В таблице 8.1 приведены варианты заданий для решения уравнения
y’ = f(x,y), xa,b с начальным условием у0 = у(а)
89
Таблица 8.1
№
1
2
3
4
5
6
7
8
9
10
f(x,y)
a
b
Y(a)
y·cos(x)
0.5•x•y
y - 2•x/y
x2 + y2
1 + x·y2
0.1/x2 – y2
1+ y·sin(x) – y2
1/x2 y/x – y2
x+y
y - 2·x/y
0
0
0
0
0
1
0
1
0
0
1
1
1
1
1
2
1
2
1
1
1
1
1
0
0
1
0
1
1
1
8.5. вопросы для самопроверки
8.5.1. Что такое предельный переход?
8.5.2. Какие этапы имеет метод Рунге-Кутта?
8.5.3. Выведите разностную схему метода Эйлера.
90
2.9. Лабораторная работа №9 С:\USERS\GROUP\NOF\lab9.mcd
ЧИСЛЕННОЕ РЕШЕНИЕ СИСТЕМ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ МЕТОДОМ ЭЙЛЕРА
9.1. Цель работы. Получение практических навыков алгоритмизации и программирования численного решения системы обыкновенных дифференциальных
уравнений методом Эйлера.
9.2. Справочный материал. Система обыкновенных дифференциальных уравнений первого порядка в векторном виде, записывается
A(Х)·X’ + B(Х)·X = F(X), Хa,b;
Х0 = CONST,
(2.9.1)
где А(Х) и В(Х) – матрицы, X, F(X) – вектор решений и вектор правых частей от
векторного аргумента.
Если матрицы А, В и вектор правых частей F не зависят от вектора решения, то
такая система дифференциальных уравнений является линейной. Не нарушая, общности записи в дальнейшем аргумент Х будем опускать при рассмотрении систем дифференциальных уравнений
A
dX
 B  X  F , X 0  const .
dx
(2.9.2)
Если обратная матрица А-1 существует то систему уравнений (2.9.2) можно записать в приведенном виде, умножив на эту матрицу слева обе части векторного уравнения (2.9.2)
dX  C  X  R, X  const ,
0
dx
(2.9.3)
где С = А-1 · В, R = A-1 · F.
Разностная схема. Отрезок [a,b] разобьем на N равных частей, т.е. введем равномерную пространственную сетку
a = x0 < x1 < x2 < …< xN-1 < xN = b,
(2.9.4)
где N+1- число пространственных узлов; xi = i  h; h = (b - a) / N; i = 0 , 1 , .. , N.
Для численного решения системы обыкновенных дифференциальных уравнений (2.9.3) воспользуемся неявной разностной схемой
91
1/h·(Xi+1 – Xi ) + Ci ·Xi+1 = Ri , X0 = const; i = 0, 1, … , N -1.
(2.9.5)
Умножив обе части векторного уравнения (2.9.5) на шаг h, приведя подобные
члены и явно выражая Xi+1 , получим
Xi+1 = (E + h · Ci)-1 ·(Xi + h · Ri), X0 = const; i = 0, 1, … , N -1,
(2.9.6)
где Е – единичная матрца.
9.3. Пример. Численно решить приведенную систему обыкновенных дифференциальных уравнений методом Эйлера
 dy
 dx  y  2  z  1,
при у0 = 1 и z0 = 1; x0,3.

 dz  3  y  4  z  2,
 dx
(2.9.7)
В векторном виде система уравнений записывается в виде (2.9.2),
 y
1 2
1
где Х =   , С = 
 , R =  2  .
z
3 4
 
1 2

3 4
1
1 0
R    E  
 y0  1 z0  1 N  50
2
0
1
 


ba
a  0 b  3 h 
i  0  N  1 xi  a  i  h
N
y
 yi1 

 1  i 

  ( E  h C)     h R
 zi1 
 zi 

C  
1.78
1.28
yi
zi
0.78
0.28
0.22
0.72
0
0.6
1.2
1.8
2.4
3
xi
Рис. 9.1. Пространственное распределение величин уi (сплошная
кривая) и zi
92
9.4. Задание. Самостоятельно задать матрицу С и вектор правых частей R и численно решить полученную приведенную систему обыкновенных дифференциальных
уравнений методом Эйлера.
9.5. вопросы для самопроверки
9.5.1. Какие системы дифференциальных уравнений являются приведенным?
9.5.2. В чем заключается отличие неявных разностных схем от явных?
9.5.3. Какие явные или неявные разностные схемы используются при численном
решении приведенных систем обыкновенных дифференциальных уравнений методом
Эйлера?
Литература к главе 2
1. Бобарыкин Н.Д., Боровикова Н.А. и др. Лабораторный практикум по основам
алгоритмизации и программирования. Методические указания к лабораторным
работам в системе MATHCAD по дисциплине «Информатика» для инженернотехнических специальностей. Калининград, КГТУ, 1999, 69 с.
2. Волков Е.А. Численные методы. - М.: Наука, 1982 .
3. Информатика. Базовый курс: учеб. пособие/под ред. С.В.Симоновича. -2-е изд.
– Спб.: Питер, 2004. 639 с.
4. Практикум по информатике: учеб. пособие/А.А. Землянский, Г.А. Кретова и др.
Под ред. А.А. Землянского. – М.: КолосС, 2004. – 384 с.
5. Безручко В.Т. Практикум по курсу «Информатика». Работа в Windows, Word,
Exel: учеб. пособие/В.Т. Безручко. – М.: Финансы и статистика, 2004. – 272 с.
6. Н.Николь, Р.Альбрехт. EXEL 5.0. Электронные таблицы. М., «ЭКОМ», 1997,
343 с.
7. Персональный IBM–совместимый компьютер, 386-486, 4-8 RAM.
8. Программные средства: MSDOS v6.1, Norton Commander, Windows v3.1, Word
v6.0, Exel 5.0, MathCAD, версия не ниже 2000
93
3. МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ НА ПЭВМ
3.1. СИСТЕМЫ СОСРЕДОТОЧЕННЫМИ МАССАМИ
3.1.1. Математическое моделирование теплообмена для тел сосредоточенных
масс с окружающей средой
Уравнение теплообмена для тел сосредоточенной массой с окружающей средой
имеет вид:
dT
= - α ( T - Tok ) ,
dt
(3.1.1)
где T0 = 100 C0 - начальное значение температуры тела; Tok = 20 C0 – температура окружающей среды; α = 0.01 c-1 скорость охлаждения тела.
Для выяснения счетной устойчивости и точности численного решения по явным
и неявным разностным схемам сравним результаты численного решения уравнения
(3.1) по этим схемам с его аналитическим решением [III,18]. Аналитическое решение
уравнения, приведенного выше, определяется формулой:
T(t) = (T0 – Tok) e-αt + Тok .
(3.1.2)
Для численного решения уравнения (3.1.1) по явным и неявным разностным
схемах дискретизируем его, т. е. введем равномерную сетку по переменной t:
t0
где tj = j  τ;
= t0
< t1 < …<tj… < tk-1 < tk = tk,
τ = ( tk ) / k;
j = 0 , 1, … ,k;
(3.1.3)
k = 100.
Зададим Tj = T(tj). Тогда численное решение по явной разностной схеме записывается следующим образом:
T j 1  T j

 T j  Tok
или
T j 1  (1   )T j  Tok ,
94
(3.1.4)
а численное решение по неявной разностной схеме имеет вид:
T j 1  T j

 T
j 1
 Tok
или
T
j 1
T j  Tok
.

1  
(3.1.5)
Сравнивая численное решение дифференциального уравнения (3.1.1) по явной
разностной схеме (3.1.4) на одном шаге (t = τ) c аналитическим решением (3.1.2) путем несложных преобразований, можно показать, что формула (3.1.5) совпадает с
формулой (3.1.4) при условии
е-ατ = 1 - ατ ,
(3.1.6)
т.е. если разложить экспоненту е-ατ в ряд Тейлора, удержав нулевой и первый члены
ряда, а это возможно только при условии ατ<<1 или τ<<1/α. Таким образом, явная
разностная схема (3.1.4) условно устойчива (в том случае, если ατ > 1, то выражение в
скобках в формуле (3.1.4) меняет знак), а точность вычислений будет определяться
значением шага интегрирования по времени τ (τ<<1/α) [III, 19].
В это же время неявная разностная схема (3.1.5) является, безусловно – устойчивой, так как всегда будет выполняться условие:
1
1 .
1  
(3.1.7)
Текст программы алгоритма решения дифференциального уравнения (3.1.1),
написанной на блочно-структурном языке системы MATHCAD и числовые данные,
приведены ниже.
95
integobyp  k    T0    Tok 
T  T0
0
Te  T0
0
Tn  T0
0
for j  0  k  1
T
j 1
Te


 T  Tok  e
j 1
0
   ( j 1)  
 Tok
  1      Te     Tok
j
Tn     Tok
Tn
j 1

j
1  
T 
 Te 
 
 Tn 
k  50
  10
  0.01
T0  100
Tok  20
    0.1
T 
 Te   integobyp  k    T0    Tok
 
 Tn 
где T, Te, Tn – решения уравнения (3.1.1), полученные на основе аналитического
выражения (3.1.2) и по явной и неявной разностных схемах, соответственно.
На рис.3.1 приведены результаты решения обыкновенного дифференциального
уравнения (3.1.1) при τ = 10с (α·τ = 0.1), а на рис. 3.2 при τ = 200с (α·τ = 2). При этом
введены следующие обозначения: Т – аналитическое решение; Те – численное решение по явной разностной схеме; Тn – численное решение по неявной разностной схеме. Сопоставление всех трех кривых при малых значениях шага интегрирования по
времени τ порядка 10с указывает, как это следовало из теоретических предпосылок,
приведенных выше, явная и неявная разностные схемы достаточно хорошо аппроксимируют исходное дифференциальное уравнение (3.1.1).
При больших значениях τ порядка 200с (α·τ = 2), как это обсуждалось выше, неявная разностная схема продолжает удовлетворительно аппроксимировать дифференциальное уравнение, несмотря на малое число точек (j = 3), а решение уравнения
по явной схеме носит знакопеременный осциллирующий характер, что и следует из
96
результатов численного решения дифференциального уравнения (3.1.1), приведенных
на рис.3.2.
100
100
100
100
68
84.08
Tj
Tj
68.16
36
Te j
Te j
Tn j 52.25
Tn j
28
36.33
20.41220.41
4
0
0
100
200
300
j 
400
500
 60 60
0
100
200
300
j 
0
500
400
500
500
Рис.3.1. Аналитическое решение – сплошная
Рис.3.2. То же что и на рис.3.1,
кривая; решение по явной разностной схеме
но только для шага τ = 200с
-пунктирная кривая; по неявной– штрих
пунктирная кривая, при шаге τ = 10 с
Таким образом, как это следует из теоретических и численных исследований, неявные разностные схемы являются счетно-устойчивыми для любых значений шагов
интегрирования и аппроксимируют дифференциальные уравнения с первым порядком точности 0(τ), а явные разностные схемы могут быть использованы только при
малых значениях шагов интегрирования, что приводит к их низкой счетной эффективности [III, 7, 10-12, 17-20].
Покажем, что первая производная температуры по времени, аппроксимирующая
формулой
dT T j 1  T j

 0( ) ,
dt

(3.1.7)
имеет первый порядок точности. Для этого разложим в ряд Тейлора дискретную
функцию Тj+1 в окрестности точки j по формуле:
T j 1  T j   
dT j  2 d 2T j  3 d 3T j




 ... .
dt
2  dt 2
3  dt 3
(3.1.8)
Подставляя выражение (3.1.8) в правую часть в формулу (3.1.7), получаем
97
T j 1  T j


T j  
dT j  2 d 2T j  3 d 3T j

 2 
 3  ...  T j
dT j  d 2T j
dt
2  dt
3  dt

  2  ... .

dt
2 dt
(3.1.9)
Из выражения (3.1.9) следует, что правая разностная производная аппроксимиdT
в точке j и члены бесконечного ряда порядка 0(τ), а это и треdt
рует производную
бовалось доказать.
Задание. Исследовать на сходимость явные и неявные разностные схемы численного решения уравнения теплообмена при следующих значениях T0, Tok и α:
Таблица 3.1
№
0
1
2
3
4
5
6
7
8
9
T0 C0
80
70
60
50
45
40
35
30
25
30
TokC0
15
20
25
30
35
35
40
45
50
55
α, c-1
0.011
0.015
0.02
0.025
0.03
0.035
0.03
0.025
0.02
0.015
3.1.2. Собственные колебания
Собственными колебаниями называются движения, совершаемые колебательной
системой, которая после кратковременного внешнего возмущения представлена
самой себе. При этом происходят периодические переходы одного вида энергии в
другой. Если сумма энергий в процессе колебаний сохраняется, то колебания будут
незатухающие и система называется консервативной, если энергия уменьшается, то
система - неконсервативная. Кроме того, можно разделить системы на линейные и
нелинейные.
Типичными консервативными колебательными системами являются масса, колеблющаяся на пружине, RC электрический колебательный контур, резонатор Гельмгольца, крутильные осцилляторы, гравитационный маятник и т. п. Такие системы
описываются линейными или обыкновенными нелинейными дифференциальными
уравнениями второго порядка. При этом задаются начальные условия, т.е. для них
решается задача Коши. В большинстве случаев уравнение имеет вид:
98
m
d 2x
 f ( x)  0 ,
2
dt
(3.1.10)
где х и t – координата положения и время движения тела [III, 9, 12].
При наличии сопротивления или потерь энергии консервативность нарушается.
Это описывается введением в уравнение первой производной искомой функции и
уравнение в общем случае приобретает вид:
m(t )
d 2x
dx

f
(
x
,
)  0.
dt 2
dt
(1.1.11)
Для упрощения решения таких уравнений и удобства интерпретации и исследования
полученных данных дифференциальное уравнение второго порядка приводят к системе
двух дифференциальных уравнений первого порядка:
dx
 z;
dt
dz
 f ( x, z ).
dt
(3.1.12)
В уравнениях такого рода независимая переменная не входит явно в уравнения (или
систему) и такую систему называют автономной. [III, 14-15].
1. Автономные линейные системы.
В общем случае их можно записать в виде:
 dx1
 dt  a11 x1  a12 x 2 ;

 dx2  a x  a x .
21 1
22 2
 dt
(3.1.13)
Для таких систем характерно наличие точки покоя. При этом характер точки покоя
(ее устойчивость, асимптотическую устойчивость, неустойчивость) определяется
99
по значениям собственных чисел матрицы А коэффициентов правой части системы. Предполагается, что определитель матрицы А не равен нулю, т.е. матрица невырожденная. Собственные числа находятся из характеристического уравнения:
a12 
a11  
0
a
a 22   
 21
или
2  (a11  a22 )  (a11a22 _ a12 a21 )  0 .
(3.1.14)
Возможны случаи:
А) Корни  действительны и различны. При этом:
1) оба корня 1 ,  2 отрицательны – точка покоя устойчива и называется устойчивым узлом;
2) оба корня 1 ,  2 положительны - точка покоя
называется неустойчивым уз-
лом;
3) оба корня 1 ,  2 действительные числа разных знаков – точка покоя неустойчива и называется седлом;
4) 1  2  0 - точка покоя специального вида, называемая диакритический узел.
Если
а) 1  2  0 - точка покоя устойчива;
б) 1  2  0 - точка покоя неустойчива;
5) если 1  0 и 2  0 , то существует прямая, проходящая через начало координат, все точки которой – точки покоя;
6) 1  2  0 все точки плоскости – точки покоя.
Б) Корни характеристического уравнения комплексны, т.е. 12  p  iq .Тогда:
1) если p > 0, то точка покоя – устойчивый фокус;
2) если p < 0, то точка покоя – неустойчивый фокус;
3) если p = 0, a 12  iq , то решение является периодическим, а точка покоя
называется центром.
Если записать решение в параметрической форме, то на плоскости, которую
называют фазовой, можно представить фазовые траектории решения системы. В
трехмерном пространстве можно построить интегральные кривые. Фазовую траекторию задают уравнения:
100
 x1   1 (t );

 x 2   2 (t ),
(3.1.15)
а интегральную кривую -
 x1   1 (t );

 x 2   2 (t );
t  t.

(3.1.16)
Для нелинейных систем вводится понятие предельных циклов, которые бывают
трех типов:
1) устойчивые;
2) неустойчивые;
3) полуустойчивые.
Если записать автономную систему в векторной форме:
dX
 F(X ) ,
dt
(3.17)
то автономная система полностью определяется заданием векторного поля F(X).
По данной теме предполагается проведение двух лабораторных работ:
1) Исследование автономной линейной системы.
2) Исследование автономной нелинейной системы.
Физический смысл задач подбирается исходя из специализации студентов, после
чего уравнения приводятся к стандартному математическому виду.
Решения такого рода задач удобно проводить, используя встроенные функции
пакета MathCAD. Решить задачу Коши для таких систем можно с помощью функций:
rkfixed(y, x1, x2, n, D) – решение задачи на отрезке методом Рунге – Кутты с постоянным шагом;
Rkadapt(y, x1, x2, n, D) – решение задачи на отрезке методом Рунге – Кутты с автоматическим выбором шага;
Stiffbkadapt(y, x1, x2, n, D, J) – решение задачи на отрезке методом БулиршаШтера,
здесь; y – вектор начальных условий, x1, x2 – левый и правый концы рассматриваемого интервала; n – число участков разбиения интервала, D и J – вектор-функция и
якобиан правой части исходной системы уравнений.
101
ЛАБОРАТОРНАЯ РАБОТА № 3.1
ИССЛЕДОВАНИЕ АВТОНОМНОЙ ЛИНЕЙНОЙ СИСТЕМЫ УРАВНЕНИЙ
Задание. Исследовать следующую систему дифференциальных уравнений:
dx1
 2  x1 ;
dt
dx 2
 x1  5  x 2 .
dt
(3.1.18)
Порядок выполнения работы:
1) Зададим матрицу правых частей А и находим собственные значения λ (3.14)
ORIGIN:= 1;
2 0 
A:= 
;
1  5
  5
EIGENVALS(A) =   .
2
(3.19)
Собственные числа λ действительны и имеют разные знаки. Точка покоя - седло.
2) Для разных начальных условий решаем задачу Коши и строим фазовые кривые:
 2  x1 
 0.2 
D(t,x):= 
; x:= 

 ; x1:=rkfixed(x,0,1,100,D),
 x1  5  x 2 
0.25
(3.20)
где х1-матрица решений, имеющая три столбца (первый - время t, второй - х1 и
третий - х2).
102
 2 x1


 x1  5 x2 
D ( t  x)  
1
 0.2 

 0.25 
x  
x1  rkfixed( x  0  1  100  D)
1
2
3
4
5
6
7
x1  8
9
10
11
12
13
14
15
16
 0.2 
 x2  rkfixed( x  0  1  100  D)
 0.25 
x  
 0.1 

 0.2 
x  
x3  rkfixed( x  0  1  100  D)
 0.1 
 x4  rkfixed( x  0  1  100  D)
 0.2 
x  
2
0.2
0.204
0.208
0.212
0.217
0.221
0.225
0.23
0.235
0.239
0.244
0.249
0.254
0.259
0.265
0.27
3
0.25
0.24
0.23
0.221
0.212
0.204
0.196
0.189
0.182
0.175
0.169
0.163
0.158
0.153
0.148
0.143
0.25
0.2
0.15
0.1
0.05
0.25
 
x1 3
 
x2 3
 
x3 3
0
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
0.1
0.11
0.12
0.13
0.14
0.15
1.48 1.18 0.89 0.59
 
x4 3
 0.25
 1.478
0.3
0
0.05
0.1
0.15
0.2
0.25
0.3
0.59 0.89 1.18 1.48
       
x1 2  x2 2  x3 2  x4 2
1.478
Рис.3.3. Фазовые кривые для разных начальных условий
И, наконец, построим векторное поле вектора решений Х
xu ( x)  2 x
xi  1  hi
yu( x  y)  x  5 y
yj  1  h j
N  10
h  0.2
Xi  j  xu  xi
i  1  N
Yi  j  yu xi  yj
103
j  1  N
( X  Y)
Рис.3.4. Векторное поле
ЛАБОРАТОРНАЯ РАБОТА №3.2. ИССЛЕДОВАНИЕ АВТОНОМНОЙ НЕЛИНЕЙНОЙ СИСТЕМЫ УРАВНЕНИЙ
Задание: Решить следующую систему дифференциальных уравнений:
dx1
  x 2  x1  ( 4  x12  x 22 );
dt
dx 2
 x1  x 2  ( 4  x12  x 22 ).
dt
 0.5 

 0.5 
x  
(3.1.21)
x1  rkfixed( x  0  10  1000  D)
5
4
3
2
1
 
x1 3
5
4
3
2
11 0 1
2
3
4
5
 
x1 2
2
3
4
5
 
x1 3
5
4
3
2
1
1 0 1
2
3
4
5
2
3
4
 
x1 2
 3.5 

 5 
x  
 
x2 3
4
6
7
8
9 10
6
7
8
9 10
 
x1 1
x2  rkfixed( x  0  10  1000  D)
5
4
3
2
1
5
5
3
2
11 0 1
2
3
4
5
 
x2 2
2
3
4
5
 
x2 2
 
x2 3
5
4
3
2
1
1 0 1
2
3
4
5
2
3
4
5
 
x2 1
104
Рис.3.5. Фазовые траектории и временные развертки
1) Зададим вектор правых частей системы уравнений (3.1.21)
 x 2  x1  (4  x12  x 22 )
ORIGIN:=1; D(t,x):= 
.
2
2
 x1  x 2  (4  x1  x 2 ) 
(3.1.22)
2) Для двух начальных условий находим решение системы дифференциальных
уравнений (3.21) и строим фазовые траектории и временную развертку, которые приведены на рис.3.5.
ЛАБОРАТОРНАЯ РАБОТА №3.3. РЕШЕНИЕ ЖЕСТКИХ СИСТЕМ
ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ (ОДУ)
Строгого математического обоснования численного решения жестких ОДУ не
существует. Исторически, интерес к жестким системам возник при изучении уравнений химической кинетики, где одновременно присутствуют очень медленно и очень
быстро протекающие химические реакции. Рассмотрим классическую модель взаимодействия трех веществ:
dy 0
 0.1  y 0  10 2  y1  y 2 ;
dt
dy1
 0.1  y 0  10 2  y1  y 2  10 3  y1 ;
dt
dy 2
 10 3  y1 .
dt
(3.1.23)
Необходимо отметить, что коэффициенты, входящие в систему жестких обыкновенных дифференциальных уравнений (3.1.23), отличаются на несколько порядков
при разных слагаемых [III, 14].
Задание. Решить систему жестких дифференциальных уравнений (3.1.23).
1) Зададим вектора правых частей F(t, y), начальных условий y0 и матричную
функцию J(t, y), составленную из производных правой части системы уравнений
(3.1.23).
105
ORIGIN  0
 0.1 y0  102y1y2 




2
3
F ( t  y)  0.1 y0  10 y1y2  10 y1




3
10 y1


2
2
 0 0.1
10 y2
10 y1 




2
3
2
J ( t  y)  0 0.1 10 y2  10 10 y1




3
10
0
0 0

 1 
y0   0 
0
 
(3.1.24)
.
2) Попробуем решить задачу (3.23-3.24) методом Рунге-Кутта.
R  rkfixed( y0 0  0.1  2000  F)
 
R1
1
9.99 10
5
0.998
7.99 10
5
5.99 10
5
4 10
5
2 10
5
0.996
 
R2
0.994
0.992
0.99
0
0.02
0.04
0.06
 0
R
0.08
0
0.1
0
0.02
0.04
 
R0
0.06
0.08
0.1
Рис.3.6. Результаты численного решения системы жестких обыкновенных дифференциальных уравнений (3.1.23) методом Рунге-Кутта
3)
Теперь решим эту же систему уравнений методом Булирша-Штера, разрабо-
танного для жестких ОДУ и основанного на неявных разностных схемах.
PB  Stiffb( y0 0  50  20  F  J)
1
7.64 10
5
0.8
6.11 10
5
 
PB 1 0.6
4.59 10
 
PB 2
5
3.06 10
5
 
PB 3 0.4
1.53 10
0.2
0
0
10
20
30
40
5
0
50
0
 
PB 0
10
20
 
PB 0
30
40
50
Рис.3.7. Результаты численного решения системы жестких обыкновенных дифференциальных уравнений (14), методом Булирша-Штера
Сопоставление результатов численных расчетов, приведенных на рис.3.5-3.7,
свидетельствуют о том, что метод Рунге-Кутта оказался непригоден для решения системы жестких обыкновенных дифференциальных уравнений.
106
Задание. Исследовать численные решения следующих систем дифференциальных уравнений:
1) По лабораторной работе №3.1. «Исследование автономной нелинейной системы уравнений». Задать следующие значения коэффициентов, входящих в правую
часть системы уравнений (3.13), и при этих значениях найти ее решение:
Таблица 3.2
№
0
1
2
3
4
5
6
7
8
9
а11
0
4
2
3
4
0
1
9
-1
1
а12
1
0
3
4
3
2
2
8
2
-2
а21
2
5
0
5
2
0
3
7
-3
3
а22
3
6
4
0
1
3
4
6
4
-4
2) По лабораторной работе №3.2. «Исследование автономной нелинейной системы уравнений». Задать произвольные значения коэффициентов, входящих в правую
часть системы уравнений (3.21), и при этих значениях найти ее решение.
3) По лабораторной работе №3.3. «Исследование жесткой нелинейной системы
обыкновенных дифференциальных уравнений». Задать произвольные значения коэффициентов, входящих в правую часть системы уравнений (3.23), и при этих значениях
найти ее решение.
3.1.3. Математическая модель стабильности позвоночника
В основу модели положено математическое описание динамических процессов
дифференциальными уравнениями Лагранжа 2-го рода, составляемого на основе расчетной схемы трехпозвонкового комплекса, представленного как дискретные сосредоточенные массы, связанные упругодемпфирующими элементами и обладающие
определенными геометрическими параметрами [III, 6].
За основу был принят принцип стабильности позвоночного столба изложенный
L. Rene, где стабильность позвоночника представлена в вертикальной, горизонтальной и аксиальной плоскостях (ротация), что обеспечивается телами позвонков
с
дугоотростчатыми
суставами,
которые
107
связаны
между
собой
упруго-
демпфирующими элементами (межпозвоночные диски, мышечно-связочный аппарат).
Учитывались следующие параметры трехпозвонкового комплекса:
1. Механическая система является диссипативной.
2. Распределение нагрузок соответствует трехстолбовой концепции.
3. Предел прочности тел позвонков и упругодемпфирующих элементов, а также их
упругая деформация и плотность считались условно установленными по данным работы.
4. Изменение геометрических характеристик трехпозвонкового комплекса соответствовало типичным типам статико-динамических нарушений стабильности позвоночника [III, 6, 13, 21-24].
Расчетная схема фрагмента позвоночника человека, состоящая из трех позвонков с клиновидным средним позвонком и стабилизирующими конструкциями представлена на рис.3.8 с вариантом клиновидной деформации среднего позвонка и двумя
стабилизирующими конструкциями (для передних и заднего опорных комплексов).
108
Рис. 3.8.
Расчетная схема трехпозвонкового комплекса человека.
Здесь введены следующие обозначения:
Ji, Мi, Xi– момент инерции, масса, координата i-го позвонка (i = 1,2,3);
Cстi –коэффициенты жесткости j–й стабилизирующей пластины (j = 1,2);
Сopj - коэффициенты жесткости j–й опоры (j = 1,2);
d1=25 мм; d2=20 мм;d3=5 мм; d4=30 м;
d1=8.5 мм; d2=26.5 мм; d3=17 мм;
109
l1=32 мм; l2=10 мм; l3=25 мм; l4=10 мм; l5=50 мм;
m1= m2=m3 =0.1 кг;
J1= J2=J3=35 кгּмм2; Yц=17.2 мм; S=13.25 см2.
Координаты Хц и Yц центра тяжести и момента инерции J плоского позвонка
определяются формулами:
4
Xц 
 X i  Yi
i 1
;Y 
ц
4
 Yi
X
4
i 1
i
 Yi
i 1
 Xi
4
XY
;
J  2    ( X 2  Y 2 )dXdY ,
(3.1.25)
00
i 1
где индекс i определяет число элементарных фигур, составляющих плоский позвоночник; γ – удельная поверхностная масса позвонка, кг/мм2.
Предел прочности, упругая деформация и коэффициенты жесткости различных
участков позвоночника по А.П. Громову, приведены в таблице:
Предел прочности, упругая деформация и коэффициенты жесткости различных участков позвоночника
Nо.
Наименование
комплексов
Таблица 3.3
Предел прочно-
Упругая деформация
сти,
Х,
кг/см2
мм
Коэффициенты
жесткости С, н/мм
1.
Шейный отдел
120-170
4,0-5,2
(2.30 - 5.52)·103
2.
Грудной отдел
190
5.3
4.66·103
420
5,0-8.5
(6.40-11,00)·103
240
33,0
944.40
3.
4.
Поясничный отдел
Целая грудная
клетка
Для упрощения динамической модели трехпозвонкового комплекса коэффициенты жесткости С2 и С3, а также коэффициенты жесткости С5 и С6 приведены к одним
коэффициентам С2 и С4 (см. рис.3.8), соответственно, по следующим формулам:
С2 
d 2  C 2 '(d 2  d 3 )  C3 '
d  C '(d  d )  C '
; С4  2 5 2 3 6 .
2  d2  d3
2  d 2  d3
(3.1.25)
На расчетной схеме (рис.3.9.) третий позвонок связывается посредством жестких
элементов Сор1 и Сор2 с опорой по оси Ox, а первый по оси Y через – Сy.
110
Рис.3.9. Расчетная схема трехпозвонкового комплекса с патологией среднего позвонка и ее двухсторонней стабилизацией (2-ой вариант).
Для фиксации вариантов нестабильности позвоночника предусмотрено применение условных жестких плоскостных конструкций с коэффициентами жесткости Сст1
и Сст2, что позволяет моделировать, как жесткие ригидные металлические системы,
как и полуригидные пружинные элементы.
Разработанная математическая модель позволяет на основе вычисления внутренних нагрузок опорных комплексов каждого позвонка трехпозвонкового комплекса,
рассчитывать варианты переломов и нестабильности позвонков в различных зонах
при их патологии. Кроме этого, можно произвести расчет смещения позвонков по оси
Oy под воздействием силы Q2y, что чаще всего является причиной стеноза позвоночного канала и может приводить к удавлению дуального мешка. Выбранная динамическая модель трехпозвонкового комплекса человека (см. рис.3.9.) является механической системой, для которой уравнение Лагранжа II рода имеет вид:
d T
П Ф
(
)

 Qk ,
dt x k
xk x k
k=1,…,7,
(3.26)
111
где Т, П – кинетическая и потенциальная энергия системы;
Ф – диссипативная функция, определяемая спинными мышцами;
Qk – внешние воздействия.
В качестве обобщенных координат Xk принимаются следующие координаты:
х1; х2; х3; х4 (α1 =
х  х3
х2  х1
;2  4
D1
D2
где Di = d1 + d2;
Рис.3.10.
); х5; х6 (  3 
х6  х5
);у,
D2
(3.1.27)
i = 1,2,3.
К расчету сил, действующих на средний позвонок с патологией трехпозвонкового комплекса человека.
Для вычисления смещающей силы, действующей на 2-й позвонок вдоль оси Y,
возникающих вследствие клиновидной деформации (по сути трапеции) второго позвонка рассмотрим рис.3.10.
P1 Q11=Q1·cos(β1); P3 O3=Q3·cos(β3);
112
O1 Q12= Q1·sin(β1); Q3O3=Q3·sin(β3);
Q1x=O2 Q12=O1 Q12·sin(β1)= Q1·sin2(β1);
Q1y=O1 O2= Q1·sin(β1)·cos(β1);
Q3x=O4 Q31·sin(β3)= Q3·sin2(β3);
Q3y=O3 O4= Q3·sin(β3)·cos(β3);
Q2y=Q1y+Q3y = С1 Х1·sin(β1)·cos(β1)+ С3 Х3·sin(β3)·cos(β3);
y2= x1·sin(β1)·cos(β1)+ x3·sin(β3)·cos(β3).
Таким образом, проекции сил Q1и Q3 на оси Х и Y при наличии деформации
среднего позвонка трехпозвонкового комплекса человека определяются приведенными выше формулами.
Кинетическая энергия механической системы трехпозвонкового комплекса человека, приведенная на рис.3.8. и равна:
T
2
2
2
2
 dX 
 d 
1
1
 dX  1
 dX  1
 M 1   1    J  M   2    M 2   2    ( J  M  l 2   2  
2
2 5  dt 
2
2
 dt  2 1 2  dt 
 dt  2
2
2
2
 dX 3 
d 2  1 3
1
1
dY 


2
   ( J 3  M 3  4  l5 )  
 M  
    Mi 
 ,
3  dt 
2
2
 dt 
 dt  2 i 1
 dX i   d i 

 ,
 ,– квадраты скоростей колебаний и вращений 1-го, 2-го и 3-го по dt   dt 
2
где
(3.1.28)
2
звонков относительно центра тяжестей этих позвонков.
Упругие деформаций х1, х2; х3, х4; х5, х6 центрального и правого столбов 1-го, 2-го
и 3-го столбов позвонков связаны с деформаций центра тяжестей этих позвонков X1,
Х2, Х3 и α1, α2, α3 следующими соотношениями:
хi  X i  i  d1; хi  X i   i  d 2 ; i  1,2,3
(3.1.29)
Задача решается в приближении малых смещений, то есть
Xi <<Di; tg(αi) = sin(αi) = αi .
(3.1.30)
113
Тогда X1 и α1 выражаются через х1 и х2 по формулам (для второго и третьего
позвоночника, аналогично):
х х
1  2 1 ; X1 = х2  d1  х1  d 2 .
D1
D1
(3.1.31)
С учетом соотношения (3.31) кинетическая энергия трехпозвонкого комплекса
с патологией среднего позвонка (ТКПСП) и ее двухсторонней стабилизацией, приведенного на рис.2, запишется в следующем виде:
Т
m ( x ) 2 m ( x ) 2
m1 ( x1 ) 2 m 2 ( x 2 ) 2

 m10  x1  x 2  3 3  4 4  m20  x 3  x 4 
2
2
2
2
 M i  y 
2
m ( x )
m ( x )
 5 5  6 6  m30  x 5  x 6  i 1
2
2
2
2
где
2
(3.1.32)
,
mi  d 2  J i
m d  J
m  d  d  Ji
; (m2 ) i  i 1 2 i ; (mi 0 ) i  i 1 2 2
.
2
Di
Di
Di
2
(m1 ) i 
2
2
Потенциальная энергия механической системы трехпозвонкового комплекса
человека считается равной нулю при положении статического равновесия (абсолютные координаты), а отсчет деформации упругих элементов ведется от условия, когда
статическая нагрузка на элемент уравновешивается упругой силой от его осадки.
В этом случае потенциальная энергия П деформации упругих элементов трехпозвонкого комплекса с патологией среднего позвонка и ее двухсторонней стабилизацией определяется следующим соотношением:
Сор1  x5
Сор2  x6
C  ( x  x ) 2 C ( x  x6 ) 2

 3 3 5  4 4

2
2
2
2
2
C1  ( x1  x3 ) 2 C2 ( x2  x4 ) 2 Сст1  ( х3  x5 ) 2 Сст2  ( х4  x6 ) 2 С y  y





2
2
2
2
2
2
2
П
(3.1.33)
Диссипативная функция Ф ТКПСП и ее двухсторонней стабилизацией записывается через коэффициенты демпфирования Вj, как
Ф
Вор1  ( x 5 ) 2 Вор2  ( x 6 ) 2 В3  ( x3  x 5 ) 2 В4 ( x 4  x 6 ) 2




2
2
2
2
114
В1  ( x1  x3 ) 2 В2 ( x 2  x 4 ) 2 Вст1  ( x3  x5 ) 2 Вст 2  ( x 4  x 6 ) 2 В y  ( y )




.
2
2
2
2
2
2

(3.1.34)
Определив функции кинетической Т, потенциальной энергии П и диссипативных сил Ф, вычислим сначала производные от кинетической энергии по
x i :
T
T
 m1  cos(1 )  x1  m10  x 2 ;
 m2  x 2  m10  x1  cos(1 );
x1
x 2
T
T
 m3  x 3  cos(3 )  m10  x 4 ;
 m4  x 4  m20  x 3  cos(3 )
x 3
x 4
(3.1.35)
2
T
T
T
 m5  x 5  m30  x 6 ;
 m6  x 6  m30  x 5 ;
  М i  y.
x 5
x 6
y i 1
Производные от потенциальной энергии П трехпозвонкого комплекса по координатам
xi
равны:
П
 С1  cos(1 )  х1  С1  х3  cos(3 )  Сст1  х1  Сст1  х5 ;
х1
П
 (С2  Сст2 )  х2  С2  х4  Сст2  х6 ;
х2
П
 С1  cos(1 )  х1  (С3  С1 )  cos(3 )  х3  С3  х5 ;
х3
П
 С2  х2  (С2  С4 )  х4  С4  х6 ;
х4
(3.1.36)
П
 С3  х3  (Сор1  Сст1  С3 )  х5  Сст1  х1 ;
х5
П
 С4  х4  (Сор2  Сст2  С4 )  х6  Сст2  х2 ;
х6
П
 С у  у.
у
Производные от диссипативный функции Ф трехпозвонкого комплекса:
Ф
 В1  cos(1 )  x1  В1  x3  cos(3 )  Вст1  х1  Вст1  х5 ;
x1
Ф
 ( В2  Вст2 )  x 2  В2  x 4  Вст2  х6 ;
x 2
115
Ф
  В1  cos(1 )  x1  ( В3  В1 )  cos(3 )  x 3  В3  x 5 ;
x3
(3.1.37)
Ф
  В2  x 2  ( В2  В4 )  x 4  В4  x 6 ;
x 4
Ф
  В3  x 3  ( Вор1  Вст2  В3 )  x 5  Вст1  x1 ;
x5
Ф
Ф
  В4  x 4  ( Вор2  Вст2  В4 )  x 6  Вст2  x 2 ;
 В у  y
x 6
y
Подставляя значения производных от кинетической и потенциальной энергии, а
также от диссипативной функции Ф для механической системы трехпозвонкового
комплекса в уравнения Лагранжа II рода, получим:
m1  c1 
d 2 x1
dt 2
d 2 x2
 m10 
 ( B1  с1  Вст1 ) 
dt 2
dx
dx
dx1
 B1  c3 3  Вст1  5 
dt
dt
dt
(C1  c1  Сст1 )  x1  C1  c3  x3  Сст1  х5  Q1;
m2 
d 2 x2
d 2 x1
 m10  c1 
dt 2
dt 2
 ( B2  Вст2 ) 
dx
dx2
dx
 B2  4  Вст2  5 
dt
dt
dt
(C2  Сст2 )  x2  C2  x4  Сст2  х5  Q2;
m3  c 3 
d 2 x3
dt
m20  c3 
m5 
dt 2
d 2 x5
dt
2
d 2x
2
d 2 x4
 m20 
3
dt
 m4 
 m30 
dx4
dt 2
d 2 x6
dt
2
2
 B1  c1 
 B2
 B3 

dx
dx1
 ( B1  B3 )  c3  3  C1  c1  x1  (C1  C3 )  c3  x3  0;
dt
dt
dx2
dx
 ( B2  B4 )  4  C 2  x 2  (C 2  C 4 )  x 4  0;
dt
dt
dx3
dx
х
 ( Bop1  Вст1  B3 )  5  Вст1  1 
dt
dt
t
C3  x3  (Cор1  Ccт1  C3 )  x5  Ccт1  х1  0;
m30 
d 2 x5
dt
2
 m6 
dx6
dt
2
 B4 
dx
dx4
х
 ( Bор 2  Вст2  B4 )  5  Вст2  1 
dt
dt
t
C4  x4  (Cор2  Сст2  C4 )  x6  Сст2  х2  0;
(M 1  M 2  М 3 ) 
d2y
dt
2
 By
dy
 C y  y C1  sin(1 )  cos(1 )  x1 
dt
C3  sin(3 )  cos(3 )  x3  Qв,
где с1= cos(β1); c3= cos(β3).
С целью упрощения записи матриц, введем обозначения
116
(3.1.38)
S1= С1 x1·sin(β1)·cos(β1);
S3=С3·x3·sin(β3)·cos(β3);
Вос3  Bop1  Bcт1  B3 ;
Вос4  Bop2  Bcт2  B4 ;
Сос3  Сop1  Сcт1  С3 ;
Сос4  Сop2  Сcт2  С4 ,
Подставляя значения производных от кинетической и потенциальной энергии, а
также от диссипативной функции Ф для механической системы трехпозвонкового
комплекса в уравнения Лагранжа II рода, получим в векторном виде:
M
d 2X
dt 2
dX
 C X  Q ,
dt
B
(3.1.39)
где
 m1c1
m c
 10 1
 0

M 0
 0

 0
 0

m10
0
0
0
0
m2
0
0
0
m3 c 3
m 20 c3
0
m 20
m4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
m5
m30
0
m30
m6
0
 С1c1
 0

 С1c1

С 0
 0

 0
 S
1

0
С2
0
 С2
0





;

0

0

M 1  M 2  M 3 
0
0
0
0
 С1с3
0
0
 С2
(С1  С3 )с3  Ccm1
0
0
С 2  Ccm2  С 4
 Ccm1  С3
0
0
0
 Ccm2  С 4
0
0
S3


Q  Q1 Q2 0 0 0 0 Qв у Т ;
Х= Х 1
Х2
Х3 Х4
Х5
Х6
у Т ,
117
Сст1
0
 Ccm1  С3
0
Сop1  Cct1
0
0
0
0 
0
0

 (Ccm2  С 4 ) 0 
0
0

Cop2  Cct2
0
0
С y 
0
0
где с1= cos(β1); c3= cos(β3).
S1= С1 x1·sin(β1)·cos(β1);
S3=С3·x3·sin(β3)·cos(β3);
Вос3  Bop1  Bcт1  B3 ;
Вос4  Bop2  Bcт2  B4 ;
Сос3  Сop1  Сcт1  С3 ;
Сос4  Сop2  Сcт2  С4 ,
SB1= B1 x1·sin(β1)·cos(β1);
SB3= B3 x3·sin(β3)·cos(β3).
Умножая обе части векторного уравнения (3.1.40) на обратную матрицу М-1, получим следующее приведенное векторное уравнение:
d 2X
dt 2
 M 1  B 
dX
 М 1  C  X  М 1  Q
dt
или
d 2X
dt 2
 W
dX
 АX  F ,
dt
где А = М-1 С;
(3.1.40)
W  M 1  В ;
F=
М 1  Q .
Интерпретация полученных результатов. Для получения эпюр нагрузок Р1, Р2
и Р3, Р4, а также упругих деформаций х1, х2 и х3, х4 вдоль оси Y для 1 и 2-го позвонков
использовалась линейная интерполяция и экстраполяция в соответствии со следующими формулами (для 1-го позвонка при его длине 80мм)
P1( y )  k1  y  b1 ;
y  [0;80] ,
х1( у )  K1  y  V1 ;
где k1 
(3.1.41)
P2  P1
P  y  P2  y1
x  x1
x  y  x 2  y1
.
; b1  1 2
;1 K1  2
;V1  1 2
y 2  y1
y 2  y1
y 2  y1
y 2  y1
Эпюры нагрузок Р3, Р4 и упругих деформаций х3, х4 для 2-го позвонка рассчитываются по формулам, формулам (3.1.42).
118
Текст программы алгоритма математической модели трехпозвонкового комплекса, написанной на блочно-структурном языке системы MATH CAD и числовые данные, приведены ниже.
pozvon C  Cop  Cct  B  Bop  Bct  J  M  d  d1  a      k  Q  Q2y  y  tOT 
g  9.8
C1 2 
C4 
d2 
C2 d2  C5  d2  d3
2 d2  d3
C4 d2  C5  d2  d3
2 d2  d3
C2 d2  C5  d2  d3
C2  C5
C2  C1 2
C2  8 10
3
C4  C2
d2  50
D  d1  d2
2
J2  J2  M2 a
2
J3  J3  M3 a 4
M10 
M1 d1 d2  J1
2
D
M1  d2  J1
2
M11 
2
D
M1  d1  J1
2
M12 
2
D
M20 
M2 d1 d2  J2
2
D
M2  d2  J2
2
M21 
2
D
M2  d1  J2
2
M22 
2
D
M30 
M3 d1 d2  J3
2
D
M3  d2  J3
2
M31 
2
D
M3  d1  J3
2
M32 
2
D
 
c2  cos  2
c1  cos  1
119
0
0
0
0
0
 M11c1 M10

0
0
0
0
0
 M10c1 M12

 0

0 M21c2 M20 0
0
0


0 M20c2 M22 0
0
0
M 0

 0

0
0
0 M31 M30
0


0
0
0 M30 M32
0
 0

 0
0
0
0
0
0 M1  M2  M3 

 
S2  s in  2 c2C3
S1  s in  1 c1C1
0
C1 c2
0
Cct1
0
 C1c1  Cct1

0
C2  Cct2
0
C 2
0
Cct2

0
C 3
0
 C1  C3 c2 0
 C1c1

0
C 2
0
C2  C4
0
C 4


 Cct1
0
C 3
0
C3  Cop1  Cct1
0

0
Cct2
0
C 4
0
C4  Cop2  Cct2


 S1
0
 S2
0
0
0

 
SB2  s in  2 c2B3
0

0

0
0

0

0
C7 
SB1  s in  1 c1B1
0
B1 c2
0
Bct1
0
 B1c1  Bct1

0
B2  Cct2
0
B2
0
Bct2

0
B3
0
 B1  B3 c2 0
 B1c1

0
B2
0
B2  B4
0
B4
b

 Bct1
0
B3
0
B3  Bop1  Bct1
0

0
Bct2
0
B4
0
B4  Bop2  Bct2

 SB1
0
SB2
0
0
0

0
0
 
0
X0   0 
 
0
0
 
0
1
AM
y  d1  d2 

d1 
2
d2  d1
d1
2
1
BM

b
Q Z0  0
d1
120
2
y
d1
2
d2  d1
Q
0

0

0
0

0

0
B7 
y  d1  d2 
Q11  
d1
2
d 2  d1
if y  d1 
d1
2
y
Q12 
Q
d1
2
d2  d1
Q
Q11 
Q 
d1 
 y 
Q
2  d1 
2
Q12 
Q 
d1
 Q
 y 
 d1 
2  d1 
2
 2
if y  d1 
d1
2
2  d1  y 
Q12  
Q11  
Q12 
d1
2
d2  d 1
Q
Q 
d1

 y 
 d1  d2  Q
2  d2 
2

Q
2  d2
y  Q 
Q  d1


 d1  d2
2 d2  2

for j  0  k  1
P11 j  Q11 if j   0  j   tOT
P12 j  Q12 if j   0  j   tOT
 P11 jg 


 P12 jg 


 0 
FQ j   0 


 0 
 0 


 Q2y g 
1
FM
FQ j
Zj1   1   B
X j1  X j 
1
 Zj   F  A X j  

 Zj1  Zj
2
 d 
 
 C 
 FQ 
 
 X
Задания жесткости 1 и 2-го межпозвонкового диска в н/мм:
С1=3.26 103; С2=0.92 103; С3=0.46 103; С4=3.26 103; С5=0.92 103;
121
Коэффициенты жесткости опор по осям «у»С7 и «х» Сор1 и Сор2, н/мм:
С6=0.46 103н/мм; Су=5 103н/мм; Cop1=Cop2=3.26 103н/мм;
Q=400кг (внешняя сила приложена к центру тяжести позвонка при у=21мм); β 1=00;
β3=00 (деформация позвонка отсутствует); Сст1=Сст2=0 (стабилизирующие пластины
слева и справа от позвонков отсутствуют (см. рис.3.11)), число временных слоев j =
1000, а шаг интегрирования по времени τ = 10-2с.
d
 
 C   pozvon C  Cop  Cct  B  Bop  Bct J  M  d  d1  a      k  Q  Q2y  y  tOT
Q
 
X
Результаты численных расчетов
316.97
P1 j 208.12
X1j
P2 j
X2j
P3 j
P4 j
99.26
X3j 7.58
X4j
9.59
P5 j
P6 j
Py j
10.1
X5j 5.05
118.44
X6j
Yy j 2.53
227.29
336.15
0
2
4
6
8
0
10
0
2
4
j
6
8
10
j
Рис.3.11. Временные распределения
Рис.3.12. Временные распределения
нагрузок Р, приложенных к 1, 2 и 3-му
упругих деформаций Х, приложенных
позвонкам в кг/см2
к 1,2 и 3-му позвонкам в мм
142.55
142.554
108.76
P1yi
74.97
P2yi
P3yi 41.18
7.39
 26.399 26.4
0
0
26.67
53.33
yi
80
80
Рис.3.13. Распределения нагрузок Р вдоль оси у, приложенных
к 1, 2 и 3-му позвонкам при Q=400кг и у=21мм в кг/см2
122
Задание. На основе приведенного выше алгоритма математической модели
трехпозвонкового комплекса и коэффициентов жесткостей С, взятых из таб. 3.1
для комплексов, указанных в табл. 3.4 численно
исследовать распределения
упругих деформаций Х и нагрузок Р, приложенных к 1, 2 и 3-му позвонкам.
Таблица 3.4
Номер последней
цифры зачетной
книжки
Шейный отдел
0-2
*****
3-5
Грудной отдел
Поясничный отдел
Целая грудная
клетка
*****
6–7
*****
8-9
*****
3.2. СИСТЕМЫ С РАСПРЕДЕЛЕННЫМИ ПАРАМЕТРАМИ
3.2.1. Математическое моделирование процесса переноса частиц
Уравнения диффузии частиц (теплопроводности) является уравнением параболического типа и может быть записано в виде:
N
N

=
D
.
t
х
x
(3.2.1)
Численные методы решения уравнения диффузии. С точки зрения численных
методов решения, уравнение диффузии частиц (3.2.1) записано в дивергентном виде,
определяемое формой записи пространственной производной
 N
D
и позволяющее
x x
строить консервативные разностные схемы (выполнение законов сохранения на разностной сетке). В это же время, если выполнить дифференцирование, т.е.
 N
 2 N D N
,
D
D 2 
x x
x
x x
123
(3.2.2)
то для правой части равенства (3.2.2) невозможно построить консервативную разностную схему, а соответственно такая форма записи производной не является дивергентной [III, 2, 12, 18].
Начальные и граничные условия. Начальные условия для уравнения диффузии (3.43) задаются в виде:
N(x; 0) = N0 = const .
(3.2.3)
Граничные условия. На левой границе (х = 0 ) зададим значение концентрации,
что означает приход или уход частиц в данный объем:
N(0; t) = Ψ(t) .
(3.2.4)
На правой границе (х = L1) задается непроницаемость частицами поверхности
стенки сосуда, моделируется следующим граничным условием:
N
| X L1  0 .
x
(3.2.5)
Таким образом, полностью сформулирована постановка задачи моделирования
диффузии частиц.
Для численного решения данной краевой задачи (3.2.1), (3.2.3) – (3.2.5) воспользуемся методом прогонки. Для этого от дифференциального уравнения (3.2.1)
перейдем к системе конечно – разностных уравнений. Дискретизируем задачу, т.е.
вводим равномерные сетки по переменным x и t:
0 = x0  x1  . . .< xi <…  xn - 1  xn = L1,
(3.2.6)
где n - число пространственных узлов; xi = i  h; h = L1 / n; i = 0 , 1 , ..,n. Определим Ni = N(x ).
0 = t0  t1  . . .< tj <…  tk - 1  tk = BP ,
124
(3.2.7)
где k - число временных слоев; tj = j  k;  = tk / k; j = 0 , 1 , . . . , k.
Значение концентрации частиц в i-м узле и на j-м временном слое определим как
Nij =N(xi,tj).
Исходное дифференциальное уравнение в частных производных параболического типа (3.48) аппроксимируется конечно – разностными уравнениями во внутренних
узлах по дивергентной схеме (на разностной сетке выполняются законы сохранения):
Ni
где
D
j 1
1
i
2
 Ni


j

1
j 1
j 1
[ D 1  ( Ni 1  Ni )  D 1  ( N
2
i

i
h
2
2
Di 1  Di
;
2
D
1
i
2

Di 1  Di
;
2
j 1
 Ni 1
j 1
)] ,
(3.2.8)
i = 1, 2, . . . , n – 1; j = 0, 1, . . . , k-1.
Эти разностные уравнения приводятся к каноническому трехточечному виду:
Ai Ni+1j+1 - Bi Nij+1 + Ci Ni-1j+1 = - Di,
где Ai =
( Di+1 + Di)
(Di-1 + Di)
1
; Ci =
; Bi = Ai + Ci + ;
2  h2 
2h2

(3.2.9)
Di =
Ti j
.

Трехточечные разностные уравнения (3.50) запишем в виде системы трехточечных разностных уравнений для каждого i = 1, 2, . . . , n – 1 совместно с краевыми
условиями:
N0j+1 = Ψj+1 ;
A1N2j+1 – B1N1j+1 + C1N0j+1 = - D1 ;
A2N3j+1 – B2N2j+1 +C2N1j+1 = - D2 ;
(3.2.10)
…………………………………
An-1Nnj+1 – Bn-1Nn-1j+1 + Cn-1Nn-2 = - Dn-1;
Nnj+1 – Nn-1j+1 = 0.
Система разностных уравнений (3.2.10) может быть записана в векторном виде:
125
LN = D,
0
... 0 
1
C  B A ...0
1
1
;
где L   1
.
.
.
. 


...  1 1 
0
(3.2.11)
 j 1 


D
D=  1  .
 ... 


 0 
 N0 
N 
N =  1 ;
 ... 
 
 Nn 
Матрица L – квадратная, размером n x n, имеет трехдиагональный вид за исключением первой и последней строки, которые формируются в соответствие с заданными граничными условиями.
Наиболее эффективным методом решения системы уравнений с трехдиагональной матрицей (3.2.11) является метод прогонки.
Отметим, что критерий устойчивости численного решения к ошибкам округления для метода прогонки выполнен, если
Bi - ( Ai + Ci ) =
1
 0,

(3.2.12)
а значит полученная дивергентная разностная схема (3.2.12), аппроксимирующая
дифференциальное уравнение (3.2.1), безусловно - устойчива и аппроксимирует его
с первым порядком точности по времени и со вторым по координате.
Искомая дискретная функция Nij+1 вычисляется по следующей рекуррентной
формуле:
Nij+1 = Ei+1 Ni+1j+1 + Wi+1; i = n-1, . . . , 1, 0 ,
(3.2.13)
где прогоночные коэффициенты Ei+1 и Wi+1 определяются в прямом ходе i = 1, . .
. , n-1:
Ei+1 =
Ai
;
Bi - Ci Ei
Wi+1 =
Ci Wi + Di
.
Bi - Ci Ei
126
(3.2.14)
Как следует из рекуррентных соотношений (3.2.14), для начала их расчета необходимо вычислить начальные значения E1 и W1, которые определяются с помощью
левого граничного условия (3.2.4) и соотношения (3.2.5) для точки i = 0:
N0j+1 = Ψj+1 ;
(3.2.15)
N0j+1 = E1 N1j+1 + W1.
(3.2.16)
Совпадение соотношения (3.2.15) с формулой (3.2.16) будет достигаться только
при
выполнении следующих условий:
E1 = 0 и W1 = Ψj+1.
(3.2.17)
Правое граничное условие (3.2.5) используется для начала обратного хода i = n1, . . . , 1, 0 по формуле, в результате которого вычисляются искомые значения концентрации Nij+1. Запишем в разностном виде граничное условие, а соотношение
(3.2.15) для точки 1 = n-1:
Nn
j 1
 N n 1
h
j 1
 0 или
Nn
j 1
 Nn 1
j 1
;
(3.2.18)
Nn-1j+1 = En Nnj+1 + Wn.
Для решения системы уравнений (3.2.18), относительно Nn j 1 , подставив значение Nn 1 j 1 из первого уравнения во второе, получаем:
Nn 
Wn
.
1  En
(3.2.19)
Текст программы алгоритма решения параболического дифференциального
уравнения (3.2.1), написанной на блочно-структурном языке системы MATH CAD и
числовые данные, приведен ниже.
127
parabolyrav ( xn  n  tk  k  N0  No  Nn  Do ) 
h
xn

tk
n
k
for i  0  n
D  Do
i
 N0
N
i 0
for j  0  k  1
u0
for i  1  n  1
D
D
i 1
A 
i
i
2 h

2
D D
i 1
i
C 
i
2 h

2
B A C 1
i
i
i
F N
  0
i j
i
if i
1
E 0
1
W  No
1
A
E
i 1

i
B  C E
i
i i
F  C W
W
i 1
i

i
B  C E
i
W
N
n  j 1

i
i i
n
1E
n
for i  n  1  0
N
i  j 1
E
i 1
N
i 1  j 1
W
i 1
N
xn  1000
n  100
tk  3600 48
27
k  100
No  1.2 10
 27
N  parabolyrav ( xn  n  tk  k  N0  No  Nn  Do )
где N- концентрация частиц.
27
N0  10
N  N 10
3
  1.728  10
128
h 
Nn  0
Do  .25
xn
tk
n
 
k
Результаты численных расчетов. Дифференциальное уравнение диффузии частиц (2.1) численно решалось по указанному выше алгоритму при следующих исходных данных:
Xn = 1000 м;
BР = 1.728 105 c;
n = 100;
Ni,0 = 1027 м-3;
N0,j+1 = 1.2 1027 м-3 ;
k = 100;
D = 0.25 м2/с.
Необходимо отметить, что шаг интегрирования по времени τ задавался достаточно большим и составлял τ = 1728с. Зависимость концентрации от пространственной координаты и от времени процесса приведена на рис.2.1. При этом проводились
численные эксперименты для нескольких значений временного шага, которые не выявили значительных погрешностей при изменении этого шага. Для упрощения записи
численных значений концентраций Ni,j+1 и скоростей частиц Vi,j+1 на графиках, приведенных на рис.2.1, множитель 1027 опущен, и при его чтении этот множитель нужно
восстанавливать.
1.2
1.08
1.16
1.06
Ni  10 1.12
N25  j 1.05
Ni  k
N40  j
1.08
1.04
1
1.03
1.02
0
200
400
600
800
1
1000
i h
0
9.6
19.2
28.8
38.4
48
j 
3600
Рис. 3.13. Зависимость концентрации от пространственной координаты и от времени процесса
Приведенный алгоритм легко реализуется на любом алгоритмическом языке и
является счетно-устойчивым, наиболее счетно-эффективным и экономичным методом
решения дифференциальных уравнений в частных производных параболического типа.
Задание. Провести численное исследование процесса тепломассопереноса на основе параболического дифференциального уравнения (3.42), при заданных начальных
129
и граничных значениях концентрации или температур газа N(0,x), N(t,a), N(t,b) или
T(0,x), T(t,a), T(t,b), а также коэффициентов диффузии D или теплопроводности λ
(выбирать вариант по последней цифре зачетной книжке см. табл.3.3).
Таблица 3.5
Номер
последней
цифры
зачетной
книжки
0
1
2
3
4
5
6
7
8
9
1
1.5
2
2.5
3
3.5
4
4.5
5
5.5
0
0.01
0.02
0.03
-0.01
-0.02
0
0.1
-0.1
0
1.2
1
1.1
1.2
0.9
1.2
0.8
1
1
1.3
T(0,x)
70
75
80
85
90
60
50
40
30
20
dT (t , a )
dx
0
0.01
0.02
0.03
-0.01
-0.02
0
0.1
-0.1
0
T(t,b)
60
75
80
100
120
130
30
30
50
28
D
0.25
0.3
0.4
0.45
0.5
0.55
0.2
0.15
0.1
0.12
λ·104
1
1.5
1.7
1.9
2
3
4
5
6
7
N(0,x)
·10-28
dN (t , a )
dx
N(t,b)
·10-28
3.2.2. Математическое моделирование процесса прерванного посола рыбы
В этом разделе рассматриваются вопросы, связанные с математическим моделированием, так называемых, прерванных процессов посола рыбы, при условиях высокого солевого насыщения рассола и проходящих в два этапа. На первом этапе, занимающем сравнительно небольшой промежуток времени, рыба закладывается в емкости и заливается тузлуком, имеющим высокую концентрацию соли NaCl. При этом
необходимо отметить, что реализуется процесс свободного посола рыбы, когда система активная среда - тузлук и рыба представлена сама себе, т. е. концентрация соли
в тузлуке понижается, а в тканях рыбы, соответственно, повышается. Данное обстоятельство приводит к необходимости на первом этапе решать сопряженную задачу о
130
временном взаимосвязанном распределения концентрации соли NaCl в тузлуке и мясе
рыбы. На втором этапе, более длительном, процесс засолки рыбы прекращается.
Вследствие значительной неравномерности просола по тушке рыбы соль, полученная
рыбой под действием градиента концентрации соли NaCl равномерно распределяется по толще рыбы и тем самым обеспечивает высокие гастрономические вкусовые
качества.
Процессы перераспределения хлористого натрия в тканях мяса под воздействием солевого раствора, описываются уравнением Фурье параболического типа:
1
N

=
D
t
1 
N
( x
),
 
x x
x
(3.2.20)
где D - коэффициент диффузии, см2сут; N - концентрация соли NaCl в мясе рыбы, %; t - время, сут; х - текущая координата (- L  x  L ), см;  - индекс формы ( 0
-пластина; 1 - цилиндр; 2 - шар ); L - полутолщина пластины (радиус цилиндра, шара)
[III, 9].
Начальные условия задаются в виде:
N( x; 0) = N0 = const.
(3.2.21)
Граничные условия. На левой границе (х = 0) используется условие симметрии
формы тела (начало системы координат в центре симметрии - геометрический центр
тела)
N

x x = 0
=
0 .
(3.2.22)
На правой границе (х = L) задается дифференциальное уравнение, описывающее
условие массообмена активной среды - тузлук с рыбой (граничное условия третьего
рода):
N
x
+
 ( N
-
Nтуз)x = L
131
= 0,
(3.2.23)
где  - коэффициент, связанный с плотностью и удельной теплоемкостью при
постоянным объеме тканей рыбы, см-1 (в расчетах принимался, равным 212 см-1 );
Nтуз - концентрация соли NaCl в тузлуке, %.
Для свободного посола рыбы, который реализуется, как отмечалось выше, на
первом этапе, по аналогии с работой введем граничные условия пятого рода, но уже
основанные не на законе сохранения энергии, как в работе, а на законе сохранения
массы:
-  Mтуз =  Мрыб
или
Nтуз = N0туз - hрыб/hтуз N ,
(3.2.24)
где Мтуз = S hтуз m Nтуз - изменение массы соли NaCl в тузлуке (знак “-“ указывает на
уменьшение массы соли NaCl в тузлуке); туз - индекс параметров тузлука; S – площадь полуповерности рыбы см2; hтуз - толщина залитого слоя тузлука, см; m - масса
молекулы соли NaCl, кг;  Мрыб = S hрыб m N - изменение массы соли NaCl в тканях
рыбы; hрыб - толщина тушки рыбы; N0туз - начальная концентрация соли NaCl в тузлуке.
На втором этапе, процесс посола рыбы прерывается и полученная тканями рыбы
соль NaCl равномерно перераспределяется по тушке рыбы, без возможности выхода
из тушки рыбы. Непроницаемость солью NaCl поверхности рыбы, может моделироваться следующим граничным условием:
N

=
x x = L
0 .
(3.2.25)
Для решения данной краевой задачи (3.2.20 – 3.2.25), воспользуемся методом
прогонки. От уравнения (3.2.20) перейдем к конечно-разностному. Для этого дискретизируем задачу, т. е. вводим равномерные сетки по переменным x и t:
0 = x0  x1  . . .  xN - 1  xN = L,
(3.2.26)
где N+1 - число пространственных узлов; xi = i  h, h = L / N, i = 0,1, . .
.,N. Определим Ni = N( xi ) [III, 17-19].
132
0 = t0  t1  . . .  tk - 1  tk = BP,
(3.2.27)
где k - число временных слоев; tj = j  k,  = ВР / k, j = 0 , 1 , . . . , k. Значение
концентрации соли NaCl в i-м узле и на j-м временном слое определим как Nji
=N(xi,tj).
Заменяем исходное дифференциальное уравнение в частных производных параболического типа (3.2.20), конечно - разностным во внутренних узлах по дивергентной
схеме (на разностной схеме выполняются законы сохранения)
1 Nij+1 -Nij
1

= 2 [( (i+1) + i) (Ni+1j+1 - Nij+1)-( (i-1) + i) (Nij+1 -Ni-1j+1)] ,
D

2h i
(3.2.28)
где индекс изменяется i = 1, 2, . . . , N - 1, а индекс j = 0, 1, . . . , k-1. Эти уравнения приводятся к каноническому трехдиагональному виду:
Ai Ni+1j+1 - Bi Nij+1 + Ci Ni-1j+1 = - Di ,
где Ai =
( (i+1) + i)
((i-1) + i)
1
;
C
=
; Bi = Ai + Ci +
;
i
2 
2 
2h i
2h i

(3.2.29)
Di =
Ti j
.

Отметим, что критерий устойчивости счета методом прогонки к ошибкам
округления выполнен так как
Bi - ( Ai + Ci ) =
1
 0,
D
(3.2.30)
а значит полученная дивергентная разностная схема (3.2.29), аппроксимирующая исходное дифференциальное уравнение (3.2.20) безусловно-устойчива и аппроксимирует его с первым порядком точности по времени и со вторым по координате.
Решение уравнения массопереноса (3.2.23), после его приведения к трехдиагональному виду (3.2.29) реализуется на основе метода прогонки. При этом искомая
дискретная функция Nij+1, вычисляется по следующей рекуррентной формуле:
Nij+1 = Ei+1 Ni+1j+1 + Wi+1; i = N-1, . . . , 1, 0 ,
133
(3.2.31)
где прогоночные коэффициенты Ei+1 и Wi+1 определяются в прямом ходе i = 1, . .
. , N-1:
Ei+1 =
Ai
;
Bi - Ci Ei
Wi+1 =
Ci Wi + Di
.
Bi - Ci Ei
(3.2.32)
Как следует из рекуррентных соотношений (3.2.32), для начала расчета необходимо иметь значения E1 и W1, которые определяются с помощью левого граничного
условия (3.2.23)
N1j+1 - N0j+1
= 0 или
h
N0j+1 = N1j+1.
(3.2.33)
Совпадение рекуррентного соотношения при i = 0 с выражением (3.2.33) выполняется только при следующих условиях:
E1 = 1 и W1 = 0.
(3.2.34)
Правое граничное условие используется для начала обратного хода i = N-1, . . . , 1, 0
по формуле, в результате которого вычисляются искомые температуры
NNj+1 - NN-1j+1
+  ( NNj+1 - Nтузj+1 ) = 0 ,
h
(3.2.35)
где Nтузj+1 - для первого этапа прерванного посола, определяется выражением
(3.2.23), полученным на основе закона сохранения массы переносимой соли NaCl.
Решая совместно систему уравнений, образованную из соотношений (3.2.21) при i =
N – 1 и (3.2.32), определяем значения концентраций соли NaCl на правой границе
счетной области и следующим временном слое:
NNj+1 =
h N 0туз + WN
.
hрыб
1 + h (1 +
) - EN
h туз
(3.2.36)
На втором этапе посола внешние воздействия соли NaCl на рыбу прекращаются,
и на правой границе счетной области реализуется условие (3.2.3), для которого, следуя вышеизложенной методике, определяется значение NNj+1 по формуле:
NNj+1 =
WN
.
1 - EN
(3.2.37)
134
koncol( L  D  NC  BIO  k  n  tk  Notk  Hp  HT  T0  l1) 
h
L
n
D
D
 100
2
L

tk
k
for i  0  n
N
0
0i
continue
E 1
1
W 0
1
S 0
0
for j  0  k  1
for i  1  n  1
Ai 
D
2
h
Ci 
D
2
h
Bi  Ai  Ci 
i1

N j i
Fi 
E
1

Ai

W
i1
Bi  Ci  Ei

Fi  Ci  Wi
Bi  Ci  Ei
continue
N
j1  n
NT
j1
Wn  NC  h  BIO



1  BIO   1 
 NC  N
Hp 
  h  En
HT 
j1  n
for i  n  1  0
N
S
j1  i
j1
if S

j1
E
i1
1

n 1
N
j1  i1
W
i1
n

N
j1  i
i 0
 Notk
BIO  0
N
j1  n
NT
T0  50
Tl1  100
tk  6
L  3
l1  20
D  0.1
ht 
k  25
l1
NC  20
Hp  0.5
 S 
 NT   koncol( L  D  NC  BIO  k  n  tk  Notk  Hp  HT  T0  l1)
N 
 
 NC  N
j1  n
 S 
 NT 
N 
 
Tl1  T0
n  50
j1
 N j n
HT  1
135
BIO  .36
Notk  3
l  0  l1
Приведенный алгоритм легко реализуется на любом алгоритмическом языке и является счетно - устойчивым, наиболее эффективным и экономичным методом решения дифференциальных уравнений в частных производных параболического типа.
Проведенные численные эксперименты по данной методике указывают на хорошее согласование рассчитанных значений концентраций хлористого натрия с их
экспериментальными значениями.
Для сопоставления рассчитанных значений концентраций соли NaCl c их соответственными экспериментальными значениями, проводились следующие вычислительные эксперименты. Начальное значение концентрации соли в тузлуке задавалось,
равным 20%. При достижении среднего значения концентрации соли по тушки рыбы,
равного 4.7%, процесс посола рыбы прекращался (прерванный посол), а далее реализовался второй этап посола - свободное перераспределения соли вдоль толще тушки
рыбы, без внешнего воздействия раствора соли. В качестве исходного сырья было
выбрано филе мяса салаки толщиной 0.6 см. Коэффициент диффузии задавался равным 0.1см2/сут. Весь процесс прерванной засолки занимал 6 ч.
На рис.3.14 приведены расчетные кривые зависимости концентрации соли NaCl
в тканях рыбы от координаты Х от центра тушки рыбы по ее толще, для шести моментов времени 0  2.7 ч, 3  11ч , 6  19.2ч, 9  27.4ч, полученные на основе алгоритма численного решения дифференциального уравнения (3.2.20), приведенного
выше.
7.82
7.82
7.05
A0 i
6.27
A1 i
5.5
A4 i
4.72
A5 i
3.95
A6 i
3.18
4.7
2.4
A9 i
1.63
0.85
0.08 0.08
0
0.3
0.6
0.9
1.2
0
1.5
xi
1.8
2.1
2.4
2.7
3
3
Рис. 3.14. Зависимость концентрации соли NaCl в тканях рыбы от координаты Х
136
Пространственные профили концентраций соли имеют явно экспоненциальную
зависимость, при этом наибольшие пространственные градиенты концентраций возникают в первые моменты времени (см. рис.3.14). Также необходимо отметить, что
градиенты концентраций возрастают от нуля в центре симметрии пластины до 7 %/см
(см. рис.3.14).
8.45
8.45
7.6
P k.1
6.76
C k0
5.92
C k5
5.07
C k4
4.22
C k7
3.38
C k9
2.54
4.7
1.69
0.84
0
0
0
0.6
1.2
0
1.8
2.4
3
tk
3.6
4.2
4.8
5.4
6
6
.
Рис. 3.15. Зависимость концентрации соли NaCl в тканях рыбы от времени
На рис.3.15 приведена временная разверстка концентраций для пяти значений
координаты Х: 0  0 см, 4  4.4 см, 5  5.8 см, 7  8.0 см, 9  10.0 см. Зависимость концентраций от времени на каждом пространственном уровне имеет экспоненциальный вид и скорость возрастания практически постоянна для каждого из приведенных уровней, что также следует из теоретических предпосылок.
Задание. Провести численное исследование процесса массопереноса соли NaCl
на основе параболического дифференциального уравнения (3.60), для начальных значений концентрации соли в тузлуке N(0,x)туз, коэффициента диффузии соли в рыбе D,
α - коэффициента, связанного с плотностью и удельной теплоемкостью при постоянным объеме тканей рыбы (3.64), см-1 и толщине залитого слоя тузлука hтуз, при
заданной толщине филе салаки hрыб = 1см (выбирать вариант по последней цифре
зачетной книжке см. табл.3.4).
137
Таблица 3.7
Номер последней цифры зачетной
книжки
N(0,x)туз%
0
1
2
3
4
5
6
7
8
9
26 25
24
23
22
21
20
19
18
17
D,см2/сут
0.1 0.09
0.08
0.07
0.06
0.11
0.12
0.13
0.13
0.14
α,см-1
212 210
205
200
195
190
185
180
175
222
hтуз,см
1
1.2
1.3
1.4
1.5
0.9
0.8
0.7
0.5
1.1
3.2.3. Моделирование процесса переноса частиц на основе гиперболической системы уравнений
В отличие от диффузионной постановки процесса переноса частиц, которая
приведена выше, уравнения непрерывности и движения частиц, образующие гиперболическую систему, содержат инерционные члены
dV V

 (V  )  V и имеdt
t
ют следующей вид:
N
N
V
V
N
0 ;
t
x
x
(3.2.28)
V
V c 2 N
V 
 
 R V  0 ,
t
x N x
где с 
k T
- скорость звука в среде; N, V, m – концентрация, скорость и масса
m
частицы [III, 17-19].
Численное решение гиперболического уравнения непрерывности (3.2.28)
при постоянной скорости частиц. Для случая V0 = const уравнение непрерывности для частиц имеет вид:
N
N
 V0
 0.
t
x
(3.2.29)
Начальные условия. Начальные значения концентрации зададим равным
N(x,0) = 1027 м-3.
(3.2.30)
138
Характеристиками уравнения (3.2.29) являются прямые линии, для которых
dx
 V0 .
dt
(3.2.31)
Уравнение каждой из таких прямых может быть представлено в следующем виде:
x – V0t = const .
(3.2.32)
Только постоянная будет для каждой из прямых своя, которая как бы нумерует
эти прямые. Поэтому можно говорить, что постоянная является «номером» прямой
семейства, задаваемой уравнением (3.2.32). Нарисуем на плоскости (x, t) прямые линии, вдоль которых
dx
 V0 (рис.3.16). Для конкретности зададим скорость частиц V0
dt
=1м/с, так как скорость частиц является тангенсом угла наклона характеристики (см.
формулу (3.82)), а V0 =1м/с, то угол наклона прямой будет равен 450.
t
j=1
j=0
x0
xn
x
Рис.3.16. Семейство характеристик уравнения (3.2.28) при V0 > 0
Рассмотрим функцию N(x, t) и вычислим ее производную
dN
вдоль характериdt
стики при предположении, что функция N(x, t) дифференцируема.
dN N N dx N
N




 V0 
 0.
dt
t
x dt
t
x
139
(3.2.33)
Равенство нулю полной производной
dN
=0 означает постоянство N(x, t) вдоль
dt
каждой из характеристик. Естественно, на разных прямых эта постоянная может
быть различной. Таким образом, значение N(x, t) в (x, t) зависит лишь от «номера»
той прямой, на которой лежит точка, т. е. N(x, t) = f(x – V0t). Значение x – V0t является «номером» прямой.
В соответствие с наклоном характеристик строится разностная схема численного
решения гиперболических уравнений (схемы бегущего счета), и задаются граничные
условия на правой или левой границе. Так для рассматриваемого случая V0 > 0, приведенного на рис.3.16, когда информация передается на правую границу при переходе
с временного слоя j = 0 на слой j =1 и последующие по характеристикам, при этом
краевые условия на правой границе не задаются. В это же время необходимо задавать
краевые условия на левой границе, так как на нее не приходит ни одна характеристика. В том случае, если приходится решать гиперболическое уравнение методом прогонки, то необходимо использовать само уравнение (3.2.29) для задания краевого
условия для той границы, на которую приходят характеристики.
В этом случае дифференциальное уравнение в частных производных гиперболического типа (3.80), аппроксимируется следующей системой разностных уравнений:
Ni
где χ =
j 1
 Ni
j

V0  
;
h
 V0 
Ni
j 1
 N i 1
h
j 1
 0 или N i
j 1
N i    N i 1
1 
j

j 1
,
(3.2.34)
i = 1, 2, …, n; j = 0, 1, …k-1. Остальные обозначения соответ-
ствуют обозначениям, приведенным в разд. 3.2.2.
Разностные уравнения (3.2.34) необходимо дополнить краевым условиям на левой границе. Для этого используем краевые условия 1 – го рода:
N(0, t) = 1028 м-3 или в разностном виде N0,j+1 = 1028.
(3.2.35)
Численное решение гиперболического уравнения (3.2.29) по рекуррентной разностной схеме (3.2.33) сводится к следующему. Используя начальные условия (3.2.30)
140
и краевое условие на левой границе, рассчитываем значение концентрации частиц в
первой пространственной точке и на первом временном слое N1,1, по найденному значению концентрации N1,1 вычисляем N2,1 и т. д. пока не определим значение концентрации частиц на правой границе Nn,1. Затем переходим на следующий временной
слой, и вычислительный процесс будет продолжаться по алгоритму, описанному для
расчета искомой функции на первом временном слое до тех пор, пока не определятся
значения функции Ni,j во всех узлах разностной сетки.
Для случая V0 < 0 (V0 = - 1м/с) тангенс угла наклона становится отрицательным,
а соответственно – угол больше 900 и характеристики теперь приходят на левую границу, как это изображено на рис. 3.17.
t
j=1
j=0
x0
xn
x
Рис. 3.17. Семейство характеристик уравнения (3.2.29) при V0 < 0
Таким образом, краевые условия для этого случая не задаются на левой границе,
а задаются на правой. Изменяется и аппроксимация пространственной производной,
если для случая V0 > 0 выбиралась левая разностная производная, то для случая V0 < 0
необходимо использовать правую разностную производную.
Разностная аппроксимация дифференциального уравнения (3.80) в этом случае
имеет вид:
Ni
j 1
 Ni

j
 V0 
N i 1
j 1
 Ni
h
j 1
 0 или N i
j 1
N    N i 1
 i
1 
j
j 1
; i=n-1,…, 0.
(3.2.36)
Из рекуррентного соотношения (3.2.34) следует, что изменилось и направление
изменения индекса i, если для случая V0 > 0 индекс i возрастал от 0 до n-1, то для
случая V0 < 0 индекс i уменьшается от n-1до 0, а соответственно для начала расчета
141
Ni,j необходимо задавать краевые условия на правой границе. Для этого используем
краевые условия 1 – го рода:
N(xn, t) = 1028 м-3 или в разностном виде Nn,j+1 = 1028.
(3.2.37)
Алгоритм расчета функции Ni,j во всех узлах разностной сетки аналогичен алгоритму, описанному алгоритму для случая V0 > 0.
Текст программы алгоритма решения гиперболического дифференциального
уравнения (3.2.29), написанной на блочно-структурном языке системы MATH CAD и
числовые данные, приведены ниже.
Begcxepol n    h  k  V0  N0 
for i  0  n
N
i 0
 N0
for j  0  k  1
28
N
0  j 1
 10
 V0

h
for j  0  k  1
for i  1  n
N
N
i  j 1

i j
  N
i 1  j 1
1 
N
n  500
  120
h  0.5
k  200
27
V0  0.01 N0  10
 
N  Begcxepol n    h  k  V0  N0
 V0
  2.4
h
Результаты численных расчетов. На рис. 3.18 приведены рассчитанные пространственные и временные зависимости концентраций Ni,j для случая V0 > 0.
1 10
28
8.2 10
27
Ni  1
Ni  5 6.4 1027
N10  j6.4 10
27
Ni  10  27
4.6 10
N25  j
27
4.6 10
Ni  20
27
2.8 10
1 10
8.2 10
27
N1  j
N50  j
27
2.8 10
27
0
50
100
150
200
1 10
27
250
i h
0
1.33
2.67
4
j 
3600
Рис.3.18. Пространственные и временные зависимости концентраций Ni,j
142
5.33
А на рис.2.7 приведены рассчитанные пространственные и временные зависимости концентраций Ni,j для случая V0 < 0. Расчеты проводились при следующих
значениях параметров:
n = 50; τ = 1200c; h = 5м; k = 20; V0 = ±0.01м/c; N(x, 0) = 0;
8.2 10
27
Ni  1
Ni  5 6.4 1027
Ni  10  27
4.6 10
27
N10  j6.4 10
27
N25  j
27
4.6 10
Ni  20
27
2.8 10
1 10
8.2 10
N1  j
(3.2.38)
N50  j
27
2.8 10
27
0
50
100
150
200
1 10
250
i h
27
0
1.33
2.67
4
5.33
j 
3600
Рис.3.19. Пространственные и временные зависимости концентраций Ni,j
К достоинствам схем бегущего счета следует отнести их безусловную устойчивость решения гиперболических уравнений (в приведенных численных расчетах
шаг интегрирования по времени задавался весьма большим (τ = 1200c)) и высокую
эффективность (не нужно выполнять лишних арифметических операций как,
например, в методе прогонки).
К недостаткам схем бегущего счета следует отнести невысокую точность аппроксимации производных по обеим производным, которая составляет 0(h + τ), что
нетрудно показать с помощью методики, приведенной в разд. 3.1.1.
Задание. Провести численное исследование процесса переноса частиц на основе
гиперболического дифференциального уравнения (3.2.29) при начальных значениях
концентрации и скоростей N(0,x) и V0 , приведенных в табл. 3.8.
Таблица 3.8
Номер последней циф- 0
ры зачетной
книжки
N(0,x)10-26м-3 26
V0, м/с
1
2
3
4
5
6
7
8
9
25
24
23
22
21
20
19
18
17
±0.001 ±0.003 ±0.005 ±0.008 ±0.01 ±0.02 ±0.03 ±0.04 ±0.05 ±0.06
143
3.2.4. Математическое моделирование нестационарного двумерного процесса переноса частиц (теплопереноса)
Двумерное уравнение диффузии в частных производных имеет следующий
вид:
N
 N  N

D
 D
.
t
x x y y
(3.2.36)
Начальные условия. Начальные условия для двумерного уравнения диффузии
частиц (3.2.36) задаются в виде
N(x, у, 0) = N0 = 1027 м-3 или в разностном виде Ni,mj = 1027; m = 0, …, M, (3.2.37)
где 0 = y0  y1  . . .  yM – 1  yM = L2 – дискретные узлы по оси у; М – число
узлов на оси у.
Граничные условия. Граничные условия задаются на прямоугольнике, образованными прямыми линиями: X = 0; Y = L; X = хn; Y = 0) при этом на всех сторонах
прямоугольника используем краевые условия 1 – го рода. Краевые условия на левой
границе (X = 0) определяются следующим образом:
N(0, у, t) = 1.2·1027 м-3 или в разностном виде N0,mj+1 =1.2·1027.
(3.2.38)
Для задания краевых условий на границе Y = L используются краевые условия
концентраций частиц от координат х и у:
N
|У  L 2  0
у
или
в разностном виде
Nn,mj+1 =
Wm
.
1  Em
(3.2.39)
Краевые условия на правой границе (X = хn) определяются следующим образом:
N
| X  L1  0
x
или
в разностном виде
144
Nn,mj+1 =
Wn
.
1  En
(3.2.40)
Краевые условия на левой границе (Y = 0) определяются:
N(x, 0, t) = 1.2·1027 м-3 или в разностном виде Ni,0j+1 =1.2·1027.
(3.2.41)
Сложность численного решения двухмерного уравнения (3.2.36) определяется
его двухмерностью и необходимостью построения консервативной разностной схемы,
использующей дивергентный вид уравнения. Поэтому, при численной реализации
этого уравнения использовался метод
расщепления и запись дифференциального
оператора второго порядка в дивенгертном разностном виде [III, 17-19, 25].
Численное решение двумерного уравнения. В силу однородности процесса
диффузии частиц, при численном решении нестационарного двумерного уравнения в
частных производных параболического типа (3.2.37), рационально использовать классический метод переменных направлений, основанный на редукции сложной задачи к
последовательности простейших.
Тогда, дифференциальное уравнение диффузии в частных производных
(3.2.36), запишется в виде следующих двух разностных уравнений на временном
полушаге τ /2 (см. рис.3.18 – 3.19):
Ni, m
j
1
2
 Ni,m
j
 /2
Ni , m
j 1
 Ni , m
 /2
j

1
2
1
1
1
1
1
j
j
j
j
2  N
2)  D
2  N
2 )] ;

[
D

(
N

(
N
1
i

1
,
m
i
,
m
1
i
,
m
i

i
,
m
i  ,m
i  ,m
h2
2
2

(3.2.42)
1
j 1
j 1
j 1
j 1
 [ D 1  ( Ni , m 1  Ni , m )  D 1  ( Ni , m  Ni , m i )] ,
2
i
,
m

i
,
m

hy
2
2
где hy - шаг интегрирования по оси у; i = 1,2,…,n-1 – номер пространственного
узла по оси х; m = 1,2,…,M-1 – номер пространственного узла по оси у; j = 0,1,…,k-1 –
номер временного слоя; D
1
i  ,m
2

 Di 1, m  Di , m
2
.
Алгоритм численного решения уравнения (3.2.36) на разностной сетке строился на основе Т-образных разностных шаблонов (см. рис. 3.18 – 3.19, шаблоны выделены жирными линиями) и заключается в следующем.
145
t
j=k
tk
j+1
Nij+1
1
2
Ni
j
Nij
j
j
1
2
X=L1;
m = 1, …, M-1
х
0
i-1
i
i+1
n
Рис. 3.18. Разностная сетка, используемая на первом полушаге τ / 2 для интегрирования уравнения диффузии (3.90) вдоль оси х.
На первом полушаге по времени τ / 2 (на разностной сетке вводились полуцелые временные слои
1
)
2
j
интегрирование проводилось вдоль оси х (см.
рис.3.18), а на втором полушаге τ / 2 - по переменной у (рис. 3.19).
t
j=k
tk
Nmj+1
j+1
j
1
j
2
Nm
1
2
Y=L2;
i=1, …, n-1
N mj
j
у
0
m-1
m
m+1
M
Рис. 3.19. Разностная сетка, используемая на втором полушаге τ / 2 для интегрирования уравнения диффузии (3.2.37) вдоль оси у
Такая методика построения численного решения двухмерного уравнения
диффузии подразумевает проведение итерационного процесса до получения необходимой точности.
146
Система разностных уравнений (3.96) дополнялась начальными и граничными
условиями (3.91 и 3.92 – 3.95) и решалась методом обыкновенной прогонки попеременно в двух направлениях.
Текст программы алгоритма решения двухмерного параболического дифференциального уравнения (3.2.36), написанной на блочно-структурном языке системы
MATH CAD и числовые данные, приведен ниже.
Результаты численных расчетов. Для отработки и выверки выше- приведенного алгоритма численного решения двухмерного уравнения диффузии частиц (3.2.36)
ставились два численных эксперимента. В первом эксперименте расчеты концентраций частиц проводились для симметричных условий по обеим координатным осям x
и y (число и величины пространственных шагов по осям x и y имели одинаковые значения).
147
dbyxparabyrav ( xn  n  yM  M  tk  k  N0  No  NL Nn  Nyo  Do )  h 
xn

tk
n
k
hy 
yM
M
for i  0  n
for m  0  M
D
i m
N
i m
 Do
 N0
for m  0  M
u0
for i  1  n  1
D
i 1  m
A 
i
D
i m
4 h
D
D
i m
C 

2
i 1  m
i
4 h
2

B A C 1
i
i
i
F N
  0
i m
i
if i
1
E 0
1
W  No
1
A
E
i 1

i
B  C E
i
i i
F  C W
W
i 1

i
i
B  C E
i
W
N
n m

i
i i
n
1E
n
for i  n  1  0
N
i m
148
E
N
i 1
i 1  m
W
i 1
for i  0  n
u0
for m  1  M  1
D
D
A
m
i  m 1

i m
4 hy
D
D
i m
C 
m
i  m 1
4 hy
B A
m
m
  0
i m
if m

2
C 1
m
F  N
m

2
1
E 0
1
W  Nyo
1
A
E
m 1

m
B  C E
m
m m
F  C W
W
m 1

m
m
m
W
N
n m

m
B  C E
m m
m
1E
m
for m  M  1  0
N
i m
E
m 1
xn  250
N
i  m 1
n  50
W
m 1
yM  50
M  50
tk  72000
k  60
N0  1
No  1.2
Nn  0 NL  0
Nyo  1.2
Do  0.4
N  dbyxparabyrav ( xn  n  yM  M  tk  k  N0  No  NL Nn  Nyo  Do )
Рассчитанные зависимости концентраций частиц от х и у приведены на рис 2.10.
1.2
1.2
1.16
1.16
Ni  5
Ni  20
Ni  M
N5  m
1.12
N20  m
1.08
Nn m
1.04
1
1.12
1.08
1.04
0
10
20
30
40
1
50
i
0
10
20
30
40
m
Рис.3.20. Зависимости концентраций частиц от координат х и у
149
50
Как и следовало ожидать, зависимости концентраций частиц от координат x и y,
изображенные на рис. 3.20, полностью совпадают, что подтверждает правильность
разработанного выше алгоритма численного решения двухмерного уравнения диффузии частиц.
Во втором численном эксперименте число пространственных шагов было одинаковым, а их величины – разными и имели следующие значения:
Xn:=250; n:=50; yM:=50; M:=50; tk:=72000; k:=60; N0:=1; No:=1.2; Nyo:=1.2; Do:=0.4
Для этого случая рассчитанные зависимости концентраций частиц от координат
х и у приведены на рис. 3.21.
1.2
1.2
1.16
1.16
Ni  5
Ni  20
Ni  M
N5  m
1.12
N20  m
1.08
Nn m
1.04
1
1.12
1.08
1.04
0
10
20
30
40
1
50
0
i
10
20
30
40
50
m
Рис. 3.21. То же самое, что и на рис.3.20, только шаг интегрирования по оси x в пять
раз больше, чем по y
Анализ зависимостей концентраций частиц от координат x и y, приведенных на
рис.3.21, указывает на разный характер зависимостей N(t,x), так вдоль оси х возмущение, заданное левым краевым условием не успевает добежать до правой границы
(большая сторона прямоугольника), то по оси y оно приходит на границу области.
Задание. Провести численное исследование процесса переноса частиц на основе
нестационарного двухмерного дифференциального уравнения (3.2.36) при следующих
начальных и граничных значениях концентрации N(x,у,0) и N(0,у,t), N(x,0,t)
(
N
N
| X  L1  0 и
|У  L 2  0 ), а также коэффициентах
x
у
табл. 3.9.
150
диффузии D, приведенных в
Таблица 3.9
Номер последней циф- 0
ры зачетной
книжки
N(x,у,0)10-26м-3 26
1
2
3
4
5
6
7
8
9
25
24
23
22
21
20
19
18
17
N(0,у,t) 10-26м-3 26.2 25.2
24.2
23.2
22.2
21.2
20.2
19.2
18.2
17.2
N(x,0,t)10-26м-3 26
25
24
23
22
21
20
19
18
17
0.09
0.08
0.07
0.06
0.11
0.12
0.13
0.13
0.14
D,см2/сут
0.1
3.3. ПОВЫШЕНИЕ ПОРЯДКА ТОЧНОСТИ АППРОКСИМАЦИИ
ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ
Как следует из анализа численных экспериментов по решению параболических
уравнений по разностным схемам, приведенных выше, погрешность вычислений дискретных значений искомых функций слабо зависит от величины шага интегрирования
по времени, что определяется порядком точности аппроксимации этих уравнений
0(τ+h2). В это же время разностные схемы бегущего счета, аппроксимирующие гиперболические уравнения имеют первый порядок точности по обеим переменным t и h,
что приводит к необходимости интегрировать эти уравнения с маленькими временными шагами, а это значительно понижает эффективность численных алгоритмов.
3.3.1. Повышение порядка точности аппроксимации обыкновенных дифференциальных уравнений
Однако порядок точности аппроксимации дифференциальных уравнений можно
существенно увеличивать, например, вводя полуцелые узлы.
Для простоты рассуждений рассмотрим следующее обыкновенное дифференциальное уравнение с начальным условием:
151
dN
 f ( N , t ) ; N(t0) = N0;
dt
t  [t0 , tk ] .
(3.3.1)
Отрезок [t0, tk] разобьем на k равных частей, при этом выполняется следующая цепочка неравенств:
0 = t0  t1  . . .< tj <…  tk - 1  tk = tk,
где tj = j  τ;
τ = ( tk – t0
) / k;
(3.3.2)
j = 0, … , k .
Алгоритм численного решения уравнения (3.3.1) на разностной сетке (3.3.2) с
введением полуцелых узлов состоит из двух шагов: на первом полушаге по времени τ
/ 2 вычисляется численное решение уравнения с первым порядком точности и на
втором полушаге уточнения численного решения со вторым порядком точности. Для
записи дифференциального уравнения (3.3.1) в разностном виде на этих шагах рассмотрим разностную схему, приведенную на рис. 3.22.
N
Nj
N
j
1
2
Nj+1
tk
0
t0
j
j
1
2
j+1
t
k
Рис. 3.22. Разностная схема для решения дифференциального уравнения (3.3.1)
На первом полушаге по времени τ / 2 (на разностной сетке вводились полуцелые
1
2
временные слои j  ) аппроксимация дифференциального уравнения (3.3.1) прово152
дилась на основе правой разностной производной, имеющий первый порядок точности, следующим образом (схема Эйлера):
N
j
1
2
Nj
 f (N j , j  )  f j
 /2
или N
j
1
2
 Nj

2
 f j ; j = 0, …, k-1.
(3.3.3)
На втором полушаге по времени τ / 2 (этап – коррекции) необходимо исходное
уравнение аппроксимировать со вторым порядком точности, используя центральную
разностную производную:
N j 1  N j

 f (N
j
1
2
1
, ( j  )  )  f 1
j
2
2
или N j 1  N j    f
j
1
2
; j = 0, …, k-1.
(3.3.4)
[III, 10-11, 17-19].
Результаты численных расчетов. Для практического определения роли порядка точности аппроксимации дифференциального уравнения, при его численном решение, графически сравнивались результаты расчетов, полученных по разностным
схемам, имеющих второй порядок точности (3.3.3 – 3.3.4) и по схемам с первым порядком точности:
N j 1  N j

 f (N j , j  )  f j
или N j 1  N j    f j ; j = 0, …, k-1,
при задании следующих исходных данных: f ( N , t ) 
1
; tk = 3600c;
1 N  t
(3.3.5)
k = 3000;
N0 = 3.
Текст программы алгоритма решения обыкновенного дифференциального уравнения (3.3.1), написанной на блочно-структурном языке системы MATH CAD и числовые данные приведены ниже.
153
povportobyr( f  tk  k  No ) 

tk
k
N  No
0
N1  N
0
0
T N
0
0
for j  0  k  1

N
 N   f  N1  j 
j 1
j
j 1
T
 T   f  T  j 
j 1
j
j
N1
j 1
N 
j

2

 f N1  j 
j
 N
 
T
f ( N  t ) 
1
tk  36000
1 N t
k  300
No  3
 N
   povportobyr( f  tk  k  No )
T
Результаты численных расчетов функции N(t) представлены на рис.3.23, здесь и
далее сплошной кривой отмечено решение уравнения (3.3.1), полученное на основе
разностных схем, имеющих второй порядок точности, а пунктирной - первый порядок
точности.
13.84
13.837
38.88
38.884
11.67
31.71
Nj
9.5
N j 24.53
Tj
7.33
  12
Tj
5.17
3
3
  120
17.35
10.18
3
0
0
2
4
6
j 
8
10
10
3
0
2
0
3600
4
6
8
j 
10
10
3600
Рис.3.23. Результаты численных расчетов функции N(t) при шаге
интегрирования τ = 12с и τ = 120с
Как следует из анализа рис. 3.23, максимальное расхождение значений функции
N(t) при временном шаге τ = 12с, полученных на основе двух разностных схем, со-
154
ставляет порядка десяти процентов и, соответственно, при таких шагах τ могут использоваться разностные схемы, имеющие первый порядок точности.
Таким образом, обе разностные схемы счетно-устойчивы, но разностные схемы,
имеющие первый порядок точности, при больших значениях временных шагов τ приводят к значительным погрешностям (см. рис.3.23), делающих непригодными эти
схемы при интегрировании уравнений. В то же время разностные схемы, имеющие
второй порядок точности, являются вполне приемлемыми, так как погрешность численного решения не более 15% (см. рис. 3.23).
Задание. Задать нелинейную функцию правой части уравнения (3.3.1) f(N, t) и
определить максимальный шаг интегрирования τ, при котором относительная погрешность вычисления функции N(t), полученная на основе разностных схем, имеющих первой и второй порядки точности, не превышает 5%.
3.3.2. Повышение порядка точности аппроксимации дифференциальных уравнений гиперболического типа
Теперь применим приведенную выше методику повышения порядка точности
аппроксимации обыкновенных дифференциальных уравнений к простейшему гиперболическому уравнению. Для случая скорости V0 = const уравнение непрерывности для частиц имеет вид:
N
N
 V0
 0 ; N(x, 0) = 1027; N(0, t) = 1.2 1027.
t
x
(3.3.6)
Алгоритм численного решения уравнения (3.3.6) на разностной сетке заключается в следующем. На первом полушаге τ / 2 алгоритм будем строить на основе
схем бегущего счета (см. рис. 3.24, шаблон выделены жирными линиями).
Гиперболическое уравнение (3.3.6) аппроксимируем следующей системой разностных уравнений:
Ni
j
где χ =
1
2
 Ni
N
 V0  i
 /2
j
j
1
2
 Ni 1
h
j
1
2
 0 или Ni
V0  
; i = 1, 2, …, n; j = 0, 1, …k-1.
2h
155
j
1
2
N    Ni 1
 i
1 
j
j
1
2
,
(3.3.7)
t
t
tk
j=k
j+1
Nij+1
1
2
Ni
j
Ni j
j
j
tk
j=k
Nij+1
j+1
1
2
j
1
2
Ni
j
Nij
j
1
2
X=L1
j=0
0
i-1
i
i+1
j=0
х
n
0
i-1
i
i+1
n
х
Рис.3.24. Разностные сетки, используемые на первом и втором полушаге τ / 2 для
численного интегрирования гиперболического уравнения (3.3.6)
Гиперболическое уравнение (3.3.6) аппроксимируем следующей системой разностных уравнений:
Ni
где χ =
j
1
2
 Ni
N
 V0  i
 /2
j
j
1
2
 Ni 1
h
j
1
2
 0 или Ni
j
1
2
N    Ni 1
 i
1 
j
j
1
2
,
(3.3.8)
V0  
; i = 1, 2, …, n; j = 0, 1, …k-1.
2h
На втором полушаге τ / 2 для гиперболического уравнения (3.3.6), как и в случае
с обыкновенным дифференциальным уравнением, построим разностную схему, аппроксимирующую исходное уравнение со вторым порядком точности (рис.3.24):
Ni
j 1
 Ni

где χ =
j
 V0 
Ni
j
1
2
 Ni 1
h
j
1
2
 0 или N i
j 1
 Ni   ( Ni
j
j
1
2
 N i 1
j
1
2
),
(3.3.9)
V0  
; i = 1, 2, …, n; j = 0, 1, …k-1,
h
[III, 10-11]. Результаты численных расчетов функции N(х, t) представлены на
рис.3.25, где сплошной кривой отмечено решение дифференциального уравнения
(3.3.6), полученное на основе разностных схем, имеющих второй порядок точности, а
пунктирной - первый порядок точности.
156
Текст программы алгоритма решения гиперболического дифференциального
уравнения (3.3.6), написанной на блочно-структурном языке системы MATH CAD и
числовые данные, приведены ниже.
povtoshcxepol n    h  k  V0  N0    
for i  0  n
N
 N0
T
 N0
i 0
i 0
N1
 N0
V 
V0
i 0
i
n
i
for j  0  k  1
N
 1.2
T
 1.2
0  j 1
0  j 1
N1
0  j 1
 1.2
for j  0  k  1
for i  1  n
 V
i
i 
h
T
T
i  j 1

i j
  i T
i 1  j 1
1  i
N
N1
i  j 1

i j
i

2
 N1
i 1  j 1
i
1
2
u1
for i  1  n
N
i  j 1
 N
i j

  i N1
i  j 1
 N1

i 1  j 1
 T 
 N1 
 
 N
n  50
  120
h  5
k  200
V0  0.1
N0  1
  0.01
 T 
 N1   povtoshcxepol n    h  k  V0  N0   
 
 N
 
157
 V0
h
  2.4
На рис.3.25 представлены результаты численного решения гиперболического
уравнения (3.3.6) со вторым порядком точности - сплошная линия и с первым – пунктирная кривая. Максимальное расхождение значений функции N(t) при временном
шаге τ = 120с, полученных на основе двух разностных схем, составляет порядка десятой доли процентов (рис.3.26) и, соответственно, при таких шагах τ могут использоваться разностные схемы, имеющие первый порядок точности.
1.2
1.2
1.16
1.16
  120
Ni  10 1.12
T i  10
T2  j
1.08
1.04
1
  120
N2  j 1.12
1.08
1.04
0
50
100
150
200
1
250
0
1
2
3
i h
4
5
j 
3600
Рис.3.26. Пространственное и временное распределение функции N(х, t) для τ=120с
Теперь рассмотрим эти же распределения функции N(х, t) только для шага интегрирования, равного τ =120с.
1.2
1.2
1.18
1.16
3
T i  10
3
  1.2  10
Ni  10 1.16
T2  j
1.15
1.13
1.11
  1.2  10
N2  j 1.12
1.08
1.04
0
50
100
150
200
1
250
i h
0
1
2
3
4
5
j 
3600
Рис.3.27. Пространственное и временное распределение функции N(х,t) для τ=1200с
При увеличении временного шага до значения τ=1200с погрешность вычисления
решения гиперболического уравнения (3.3.6) по разностным схемам первого и второго порядков точности не превышает 5%, что также оправдывает применения разностных схем первого порядка точности.
158
Задание. Задать начальные значения функции N(0,x) и V0 из табл. 3.10 и определить максимальный шаг интегрирования τ, при котором относительная погрешность вычисления функции N(х, t), полученная на основе разностных схем, имеющих
первой и второй порядки точности, не превышает 5%.
Таблица 3.10
Номер последней циф- 0
ры зачетной
книжки
N(0,x)10-26м-3 26
V0, м/с
1
2
3
4
5
6
7
8
9
25
24
23
22
21
20
19
18
17
±0.001 ±0.003 ±0.005 ±0.008 ±0.01 ±0.02 ±0.03 ±0.04 ±0.05 ±0.06
3.4. ИНТЕРПОЛЯЦИЯ ФУНКЦИЙ
Пусть y = f (x) – некоторая функция, для которой известна лишь таблица ее значений, т. е. известно, что при значениях аргумента x = x0, x1, …, xn функция принимает соответственно значения у0, у1, … , уn:
f (x0) = y0;
f (x1) = y1;
(3.4.1)
………….
f (xn) = yn.
Y
y0
x0
y1
x1
y2
x2
yn-1
xn-1
yn
xn
X
Рис.3.28. Узлы интерполяции (x0, y0), (x1, y1), … , (xn, yn), штрихованные линии
промежуточных значений функций
159
Фактически задача отыскания функции f(x) по заданным ее значениям в узлах
означает, что мы должны построить кривую, проходящую через точки плоскости с
координатами (x0, y0), (x1, y1), … , (xn, yn) (см. рис.3.28) [III, 16].
В дальнейшем будем обозначать через F(x) любую функцию, которая в узлах
принимает заданные значения. При этом функций F(x) может быть бесконечное множество.
Основная идея применения интерполяционных формул состоит в том, что функция y = f(x), для которой известна лишь таблица значений (рис.3.28), заменяется интерполяционным многочленом, который рассматривается как приближенное аналитическое выражение для функции f(x)
F(x) = a0 + a1 x + a2 x2 + a3 x3 + … + an xn.
(3.4.2)
При этом, естественно, возникает вопрос о степени точности такого приближения и оценках погрешности, возникающей при замене f(x) на F(x) при различных действиях.
Замена функции f(x) её интерполяционным многочленом используется для
отыскания промежуточных значений функций (штрихованные линии на рис.3.28), а
также, когда аналитическое выражение для f(x) известно, но является слишком сложным, а функция f(x) должна подвергаться различным математическим операциям
(например, интегрированию).
Таким образом, задача интерполирования формулируется следующим образом:
рассматриваемая функция f(x), для которой заданы значения yi = f (xi) (i=0, 1 ,2, … ,
n), причем все xi и yi известны. Требуется определить многочлен у= F(x) степени n,
для которого F(xi)= f (xi) (i=0, 1 ,2, … , n).
Для вычисления неизвестных коэффициентов a0, a1, a2, … , an, входящих в интерполяционный многочлен (3.4.2), необходимо решить систему уравнений, состоящую из n+1 уравнений с n+1 неизвестными:
a0 + a1 x0 + a2 x02 + a3 x03 + … + an x0n = у0
a0 + a1 x1 + a2 x12 + a3 x13 + … + an x1n = у1
………………………………………………………………..
a0 + a1 xn + a2 xn2 + a3 xn3 + … + an xnn = уn
160
(3.4.3)
Определив значения коэффициентов a0, a1, a2, … , an из системы уравнений
(3.4.3), мы и получим интерполяционный многочлен F(x), дающий решение поставленной задачи.
3.4.1. Линейная интерполяция
Прежде чем перейти к получению интерполяционного многочлена (3.4.2), рассмотрим линейную интерполяцию, записывая F(x) (3.4.2) в виде
F(x) = a0 + a1 x ,
(3.4.4)
и далее составим систему уравнений (3.110) для интерполяционного двучлена (3.4.4)
a0 + a1 x0 = у0 ;
a0 + a1 x1 = у1 .
(3.4.5)
Решая совместно систему уравнений (3.4.5) относительно a0, a1, получим
a0 
y 0 x1  y 1 x 0
;
x1  x 0
a1 
y1  y 0
;
x1  x 0
F ( x) 
(3.4.6)
y 0 x1  y 1 x 0 y 1  y 0

 x,
x1  x 0
x1  x 0
и таким образом, линейная интерполяция (3.4.6) проводится через две соседние точки
(x0, y0) и (x1, y1), … , (xn-1, yn) и (xn, yn) (см. рис.3.29). Необходимо отметить, что точность линейной интерполяции не высока, так как график любой функции спрямляется
до прямой линии на указанных выше отрезках [III, 16].
3.4.2 Квадратичная интерполяция
В отличие от линейной интерполяции квадратичная интерполяция проводится
через три соседние точки (x0, y0), (x1, y1) и (x2, y2), … , (xn-2, yn-2), (xn-1, yn-1) и (xn, yn), а
соответственно точность квадратичной интерполяции выше линейной.
Записывая F(x) (3.4.2) для квадратичной интерполяции (n = 2) в виде
161
F(x) = a0 + a1 x + a2 x2 ,
(3.4.7)
далее составим систему уравнений (3.4.4) для интерполяционного трехчлена (3.4.5)
a0 + a1 x0 + a2 x02 = у0;
a0 + a1 x1 + a2 x12 = у1;
(3.4.8)
a0 + a1 x2 + a2 x22 = у2.
Решая совместно систему уравнений (3.4.8) относительно a0, a1, а2 и подставляя
эти значения коэффициентов в выражения для интерполяционного трехчлена (3.4.7),
получим
F ( x) 
( x  x0 )  ( x  x2 )
( x  x 0 )  ( x  x1 )
( x  x1 )  ( x  x 2 )
 y0 
 y1 
 y2 .
( x 0  x1 )  ( x 0  x 2 )
( x1  x 0 )  ( x1  x 2 )
( x 2  x 0 )  ( x 2  x1 )
(3.4.9)
3.4.3. Интерполяционная формула Лагранжа
Ниже будет доказано, что система уравнений (3.4.4) относительно коэффициентов a0, a1, a2, … , an имеет единственное решение, если значения x0, x1, … , xn отличаются друг от друга, тогда, определив значения коэффициентов ai из системы уравнений (3.3.4), мы и получим интерполяционный многочлен F(x), дающий решение поставленной задачи, который равен
F ( x) 
( x  x1 )  ( x  x 2 )    ( x  x n )
( x  x0 )  ( x  x2 )    ( x  xn )
 y0 
 y1    
( x 0  x1 )  ( x 0  x 2 )    ( x 0  x n )
( x1  x 0 )  ( x1  x 2 )    ( x1  x n )
( x  x 0 )  ( x  x1 )    ( x  x n 1 )

 yn
( x n  x 0 )  ( x n  x1 )    ( x n  x n 1 )
162
(3.4.10)
Полученная формула (3.4.10) называется интерполяционный формулой Лагранжа, которая в отличии от линейной и квадратичная интерполяции проводится через
все n-узлов [III, 16]].
Докажем, что интерполяционный многочлен (3.4.10) Лагранжа является единственным решением поставленной задачи. Действительно, пусть существует еще
один многочлен R(x) степени n, принимающий в заданных точках заданные значения.
Тогда разность F(x) - R(x) представляет собой многочлен степени не выше n, которой
обращается в нуль в точках x = xi
(i = 0, 1 ,2, … , n), т. е. имеет n+1 корень. Отсюда следует, что эта разность равна нулю тождественно, так как многочлен степени не выше n не может иметь n+1 корней.
Таким образом, отметим, что каковы бы ни были значения x0, x1, … , xn,, среди
которых нет совпадающих, и совершенно произвольные значения у0, у1, … , уn,, существует единственный многочлен F(x) степени n совпадающий в заданных точках x0,
x1, … , xn c заданными значениями у0, у1, … , уn, , удовлетворяющий условиям F(xi) = yi
(i=0, 1 ,2, … , n).
3.4.4. Сплайны
Сплайном называется интерполяционная функция, которая вместе с производными непрерывна на всем заданном отрезке [a, b], и на каждом частичном отрезке
[xi+1, xi] является алгебраическим многочленом.
Максимальная степень многочлена называется степенью сплайна, а разность
между степенью сплайна и порядком наивысшей непрерывной на [a, b] производной –
дефектом сплайна.
В MATH CAD представлены три вида сплайнов: линейный, параболический и
кубический, при этом обращение к ним имеет следующий вид:
а) линейный сплайн Sl(z):=inter(lspline(x,y),x,y,z);
а) параболический сплайн Sp(z):=inter(pspline(x,y),x,y,z);
а) кубический сплайн Sc(z):=inter(cspline(x,y),x,y,z).
Пример. Зададим переменные x,z и функцию y(х) следующим образом и вычислим
ее линейную интерполяционную зависимость Sl(z):
163
а) линейный сплайн Sl(z):=inter(lspline(x,y),x,y,z):
ORIGIN  1
i  1  4
xi  i
xi 
yi 
1
2
3
4
4
1
-2
-3
z  1  1.1  4
Sl( z)  interp( lsplinex
(  y)  x  y  z)
Строим графики функций у(х) (пунктирная кривая) и Sl(z) (сплошная линия)
4
4
2.6
Sl( z) 1.2
yi
0.2
1.6
3
3
1
2
3
z  xi
1
4
4
Рис.3.29. Графики заданной функции у(х) и ее линейной сплайновой интерполяционной зависимости Sl(z)
Отметим, что если функция у(х) является ломаной прямой, проведенной через
четыре точки, то сплайн Sl(z) проведен через сорок точек, т.е. каждый из трех интервалов х разбит на тринадцать точек (см. рис.3.29).
Задание. По примеру приведенного выше алгоритма задать функцию у(х) и построить интерполяционную зависимость Sl(z), согласно табл. 3.11.
Таблица 3.11
Номер последней
цифры зачетной
книжки
0-2
3-5
Линейная
интерполяция
*****
Параболическая
интерполяция
Кубическая
интерполяция
Сплайны
*****
6–7
*****
8-9
*****
164
3.4.5.Алгоритм решения обратных задач по заданным показателям качества
Моделирование сложных инженерно-технических систем традиционно основано на методах прямого моделирования. Такой подход используется для описания отклика системы
на внешние воздействия, если известны значения входных данных
модели. Несмотря на относительную доступность и универсальность, метод прямого
моделирования при современных достижениях вычислительной математики и технических возможностях не может охватить весь круг поставленных задач моделирования. В большинстве случаев работы носят междисциплинарный характер, когда заранее задаются требования о значениях целевого функционала с конкретными характеристиками и требуемыми свойствами, т.е. ставится цель восстановить параметры моделируемых польдерных систем в зависимости от воздействия. Таким образом, исследователи приходят к постановке решения обратных задач математического моделирования, которые связаны с обращением причинно-следственной связи, т.е. отысканием неизвестных причин по известным следствием.
Модели процессов выступают в роли связей между функциями состояния, входными параметрами и источниками внешних связей. Такая технология моделирования
строится на вариационных принципах в сочетании с методами декомпозиции, расщепления и соединения. Сочетание прямого и обратного методов моделирования
успешно применимы при решении следующих задач: верификация математических
моделей, обобщение моделей различных масштабов, восстановление состояния моделируемой системы при заданных параметрах, планирование экспериментов с использованием моделей, оценки рисков при введении новых «игроков» в построенную модель. Технология моделирования должна строиться таким образом, чтобы обеспечить
сочетание глобального взгляда на проблему в целом с детальным описанием существа
изучаемых явлений.
Алгоритм решения обратных задач. Для постановки обратных задач и построения общего алгоритма их решения используются идеи теории оптимизации и вариационного исчисления. В этом случае все аппроксимации получаются с учетом структуры функционала качества и способа нахождения его стационарных значений на
множествах значений функций состояния, параметров моделей в дискретной формулировке. Решение обратной задачи управления режимом увлажнения корнеобитаемо165
го слоя почвы ПС, в силу сложности моделирующей системы дифференциальных
уравнений в частных производных (см. главу 2), является слишком сложным. Использования общего алгоритма решения обратных задач, приведенного выше, представляется малоэффективным и требует значительных вычислительных затрат.
В данной работе, при численно решении эту задачу предлагается заменить на
задачу построения обратной аппроксимации параметров ПС. При этом необходимо
использовать методы интерполяции и экстраполяции для изучения зависимости одних величин от других. Под обратной интерполяцией понимают следующий вычислительный процесс решения нелинейных уравнений вида f(x) = a (a – заданная величина). Пусть y = f (x) – некоторая монотонная функция, для которой известна лишь
таблица ее значений, т. е. известно, что при значениях аргумента x = x0, x1, …, xn
функция принимает соответственно значения у0, у1, … , уn:
f (x0) = y0;
f (x1) = y1;
(3.4.11)
………….
f (xn) = yn.
Фактически обратная задача отыскания интерполяционной функции F(у) по заданным ее значениям в узлах означает, что мы должны построить кривую, проходящую через точки плоскости с координатами (x0, y0), (x1, y1), … , (xn, yn) (см. рис.3.30),
например, по интерполяционной формуле Лагранжа:
F ( y) 
( y  y1 )  ( y  y 2 )    ( y  y n )
( y  y0 )  ( y  y2 )    ( y  yn )
 x0 
 x1    
( y 0  y1 )  ( y 0  y 2 )    ( y 0  y n )
( y1  y 0 )  ( y1  y 2 )    ( y1  y n )
( y  y 0 )  ( y  y1 )    ( y  y n 1 )

 xn
( y n  y 0 )  ( y n  y1 )    ( y n  y n 1 )
(3.4.12)
Таким образом, решением нелинейного уравнения a = f (x) является значение
обратной интерполяционной функции F(а), вычисленной по формуле (3.4.12) в точке
у=а, т.е. х = F(а).
Численный пример. Таблично задана функция yn = f (xn), n=0,1,2. При этом
критерий качества а = 8, значение аргументов и самой функции задавались равными
166
x0= 10, x1 =11, x2 = 12; y0 = 5, y1 = 7, y2 = 2. Результаты численного решения нелинейного уравнения a = f (x) методом обратной интерполяции приведены на рис. 3.30.
15
13.6
12.2
10.8
yi
a
a 8
F ( a)  12.2
9.4
8
6.6
5.2
3.8
2.4
1
10
12.37 14.73 17.1 19.47 21.83 24.2 26.57 28.93 31.3 33.67
xi
Рис 3.30. График зависимости функции х = F(у)
Графически значение корня нелинейного уравнения (3.4.12) определяется как
точка пересечения графиков приведенных на рис. 3.30 и при у = а = 8 значение аргумента будет равно х = F(а) = 12.2.
Литература к главе 3
1. Бегун П.И., Шукейло Ю.А. Биомеханика: Учебник для вузов.— СПб.: Политехника, 2000.— 463 с.
2. Белоцерковский О.М. Численное моделирование в механике сплошных сред.
М.: Наука, 1994, 442 с.
3. Бобарыкин Н. Д. Математическое моделирование технологических процессов
в тренажерах установок газоперерабатывающих предприятий на базе персональных компьютеров. Диссертация в форме научного доклада на соискание
ученой степени кандидата тех. наук - 05.13.16, М., МХТИ им. Д.И. Менделеева, 1991, с. 20.
167
4. Бобарыкин Н.Д., Латышев К.С. Оптимальное управление уровнем грунтовых
вод с учетом выпадающих атмосферных осадков //Инженерно-физический
журнал. Минск.-2007, т. 80, №2, с. 149 - 152.
5. Васильев Ф.П. Численные методы решения экстремальных задач. М.: Наука,
1981.
6. Громов А.П. Биомеханика травмы (повреждения головы, позвоночника и грудной клетки). – М.: Медицина, 1979, 275 с., ил.
7. Калиткин Н.Н. Численные методы. М.: Наука, 1978.
8. Компьютеры и нелинейные явления. М., Наука, 1988.
9. Краснощеков П. С., Петров А. А. Принципы построения моделей. – М.: МГУ,
1983.
10. Марчук Г.И. Методы вычислительной математики. 3-е изд. М.: Наука, 1989.
11. Марчук Г.И.. Методы вычислительной математики. М.: Наука, 1989.
12. Математическое моделирование / Под ред. А.Н. Тихонова, В.А. Садовничего
и др. М.: Изд-во МГУ, 1993.
13. Орлов С.В., Бобарыкин Н.Д., Латышев К.С. Математическая модель стабильности трехпозвонкового комплекса //Математическое моделирование. РАН.2006, т. 18, № 10, с. 55-70.
14. Понтрягин Л. С. Дифференциальные уравнения и их приложения. – М.:
Наука, 1988.
15. Понтрягин Л.С. Обыкновенные дифференциальные уравнения. М., Наука,
1974.
16. Пытьев Ю.П. Математические методы анализа эксперимента. М.: Высш.
школа, 1989.
17. Самарский А.А., Гулин А.В.. Введение в численные методы. М., Наука, 1989.
18. Самарский А.А., Михайлов А.П. Математическое моделирование. М.: Наука,
Физматлит, 1997, 316 с.
19. Самарский А.А., Попов Ю.П.. Разностные методы решения задач газовой динамики. – М., 1992. – 424 с.
20. Седов Л.И. Методы подобия и размерностей в механике. М.: Нука, 1981, 448
с.
168
21. Седов Р.Л. О математической модели трёхпозвонкового комплекса человека и
её приложениях // Тезисы докладов на Международной научной конференции
«Современные проблемы вычислительной математики и математической физики», посвященной памяти академика А.А. Самарского в связи с 90-летием со
дня его рождения. – М., 2009. – стр. 100.
22. Седов Р.Л., Орлов С.В., Бобарыкин Н.Д. О математическом моделировании физических свойств стабилизирующих конструкций при лечении травм позвоночника человека// Высокие технологии, фундаментальные исследования, промышленность: сборник трудов Шестой международной научно-практической
конференции «Исследование, разработка и применение высоких технологий в
промышленности». 16-17.10.2008. – СПб., 2008. – стр. 161.
23. Седов Р.Л., Орлов С.В., Бобарыкин Н.Д. Численное решение систем с большим
числом обыкновенных дифференциальных уравнений // Материалы научного
семинара по численным методам – Новосибирск, 2009. – стр. 101-107.
24. Седов Р.Л., Орлов С.В., Бобарыкин Н.Д., Графова Е.Н. О вариациях стабилизирующей пластины при помощи математической модели трехпозвонкового комплекса человека// Материалы Международной научно-техническая конференция
«Наука и образование –2008». – Мурманск, 2008 г. – стр. 127.
25. Четверушкин Б.Н.. Кинетически согласованные разностные схемы газовой
динамики. М.: Наука, 1999.
26. Е.Н. Графова, Н.Д. Бобарыкин, С.П. Сердобинцев. Математическая модель
автоматизированной системы управления корнеобитаемого слоя почв мелиорированных земель. Тез. докл. шестой международной научно - практической
конференции «Исследование, разработка и применение высоких технологий в
промышленности», Санкт-Петербург
, 16-17 октября 2008, с. 61-62.
27. Е.Н. Графова, Н.Д. Бобарыкин, С.П. Сердобинцев, К.С. Латышев. О математической модели автоматизированной системы управления режимом увлажнения корнеобитаемого слоя почв //Математическое моделирование. РАН.2009. т. 20, в печати.
28. Н.Д. Бобарыкин, Е.Н. Графова, К.С. Латышев. Математическое моделирование совершенных
польдерных систем. Тез. док. международной научной
169
конференции «Современные проблемы вычислительной математики и математической физики», посвященной памяти академика А.А.Самарского в связи с 90-летием со дня его рождения, г. Москва, РАН, 2009, с. 67-68.
29. Н.Д. Бобарыкин, Е.Н. Графова, В.М. Смертин. Об использовании разностных
схем первого порядка точности. Тез. докл. Всероссийская конференция по
вычислительной математике КВМ-2009, г. Новосибирск, 2009, с. 239-240.
30. Н.Д. Бобарыкин, Е.Н. Графова, В.М. Смертин. Комплексный метод математического моделирования сложных инженерно-технических систем. Тез.
докл. международной научной конференции. г. Дубна, 2009, с. 19-20.
31. Е.Н. Графова, Н.Д. Бобарыкин, В.М. Смертин, С.П. Сердобинцев. Математическая модель автоматизированной системы управления совершенными
польдерными системами//Вестник РГУ им. Канта.-2009. Вып. 12. Физикоматематические науки, в печати
32. Е.Н. Графова, Н.Д. Бобарыкин. Разработка компонент автоматизированных
систем управления польдерными системами. Тез. докл. VII юбилейной международной научной конференции «Инновации в науке и образовании-2009»,
г. Калиннград, КГТУ, 2009, с.
Работа выполнена при поддержке Российского фонда фундаментальных исследований, проект № 06-01-00396.
170
Учебное пособие
НИКОЛАЙ ДМИТРИЕВИЧ БОБАРЫКИН
ВЛАДИМИР МИХАЙЛОВИЧ СМЕРТИН
АЛЕНА НИКОЛАЕВНА ГРАФОВА
РОМАН ЛЕОНИДОВИЧ СЕДОВ
ИНФОРМАТИКА И МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ
ФУНКЦИОНАЛЬНЫХ СИСТЕМ
 Калининградский государственный технический университет, 2009 г.
Редактор Л. И. Полищук
Подписано в печать 20.08.2009 г. Формат 60x84 (1/16)
Заказ
. Тираж 70 экз.
Объём 10,5 п. л. ; 7,6 уч. - изд. л.
Цена договорная
УОП КГТУ. Советский проспект, 1
171
Скачать