Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика. Практикум

.pdf
Скачиваний:
1
Добавлен:
24.11.2025
Размер:
5.18 Mб
Скачать

ми: массив значений корней системы XK, флаг существования решения системы – переменная B (равна false, если матрица коэффициентов невырожденная и система имеет решение).

Символ 1. Начало алгоритма.

Символы 2–3. Присвоение первоначальных значений коэффици-

ентам T0, T1, T2, T3, T4, C0, C1, C2.

Символы 4–8. В цикле с параметром I = 1; 10 производится ввод значений элементов массивов X[I] и Y[I] и вычисление коэффициентов T0, T1, T2, T3, T4, C0, C1, C2 с использованием суммирования.

Символы 9–11. Формирование массива коэффициентов А, содержащего коэффициенты системы уравнений (передаются в качестве входного параметра в процедуру Gauss).

Символ 12. Вызов процедуры Gauss, реализующей решение системы линейных уравнений методом Гаусса.

Символ 13. Проверка условия существования решения системы уравнений (B = false).

Символ 14. Вывод на экран сообщения «Система не имеет решения». Символ 15. Вывод значений корней системы уравнений производится в цикле (табл. П 1.13), на схеме для упрощения вывод пред-

ставлен в одном символе. Символ 16. Конец алгоритма.

151

1

Начало

 

 

 

2

T0=10

 

 

 

 

T1=0

 

 

T2=0

 

3

T3=0

 

T4=0

 

 

 

 

C0=0

 

 

C1=0

 

 

C2=0

 

4

 

 

 

A

 

 

I=1, 10

 

5

 

 

 

Ввод

Ввод исходных

 

X[I], Y[I]

значений

6

T1=T1+X[I]

 

 

 

 

T2=T2+X[I]2

 

 

T3=T3+X[I]3

 

7

T4=T4+X[I]4

 

C0=C0+Y[I]

 

 

 

C1=C1+X[I]·Y[I]

 

C2=C2+X[I]2·Y[I]

 

8

 

 

 

A

 

93

A[1,1]=T0

 

 

A[1, 2]=T1

 

 

A[1,3]=T2

 

 

A[1,4]=C0

 

10

A[2,1]=T1

 

 

 

 

A[2,2]=T2

 

 

A[2,3]=T3

 

11

A[2,4]=C1

 

 

 

 

A[3,1]=T2

 

 

A[3,2]=T3

 

 

A[3,3]=T4

 

 

A[3,4]=C2

 

12

 

 

Gauss(A,

3, XK, B)

 

13

Условие да

 

нет

 

 

верно?

14

Вывод

15

 

 

«Система

Вывод

 

не имеет

XK

 

решения»

 

16

Конец

 

Задание начальных значений коэффициентов

T1, T2, T3, T4 и С0, С1, 2

Вычисление

коэффициентов

T1, T2, T3, T4 и С0, С1, 2

Формирование массива коэффициентов системы линейных уравнений A

Решение системы линейных уравнений методом Гаусса

Проверка условия существования решения системы (матрица коэффициентов невырожденная)

Вывод коэффициентов аппроксимационного полинома

Рис. 3.7

152

3.4. Дифференцирование и интегрирование табулированных функций

Задача 3.8. Разработать схему алгоритма и программу вычисле-

x1

ния и вывода на экран значения интеграла (12x2 e x )dx с помо-

x0

щью метода прямоугольников с шагом интегрирования h. Значения h, x0, x1 задаются с клавиатуры. Вычисление значения функции

12x2 ex оформить в виде подпрограммы (function).

Решение задачи

Схема алгоритма решения задачи представлена на рис. 3.8.

1Начало

2

 

 

 

 

 

 

 

 

 

 

Ввод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X0, X1,

 

 

 

 

 

 

 

h

 

 

 

 

3

 

 

 

 

 

 

 

 

 

D=(X1-X0)/h

 

Вычисление числа узлов

 

 

 

 

 

 

на отрезке

 

 

 

Int=0

 

 

 

 

 

интегрирования [X0; X1]

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I=1, D

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

Int=Int+

 

 

F - вызов функции

 

 

 

 

 

 

 

 

+F(X0+

 

 

вычисления значения

6

 

 

+I·h/2)

 

 

функции 12x2 ex

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7 Вывод

Int

8

Конец

Рис. 3.8

153

Пояснения к схеме алгоритма

Обозначения:

Int – значение интеграла, вычисленное методом прямоугольников;

F – функция для вычисления значения функции 12x2 ex ; D – число узлов на отрезке интегрирования.

Символ 1. Начало алгоритма. Символ 2. Ввод начальных данных.

Символ 3. Вычисление числа разбиений на прямоугольники (D) – числа узлов на отрезке интегрирования.

Символы 4–6. Вычисление в цикле с параметром I = 1; D суммы Int с помощью функции F для вычисления исходной функции.

Символ 7. Вывод на экран значения интеграла. Символ 8. Конец алгоритма.

Программа

Program Intgr;

Var

X0, X1, h, Int : Real; D, I : Integer;

Function F(X : Real) : real;

Begin {начало раздела операторов функции F}

F := 12*X*X + Exp(X);

end; {конец функции F}

Begin {начало раздела операторов основной программы} {ввод пределов интегрирования X0, X1}

Write('Введите пределы интегрирования '); Readln(X0, X1); Write('Введите шаг h '); Readln(h); {ввод шага h}

D:=Round((X1-X0)/h); {вычисление числа узлов отрезка} Int := 0; {первонач. значение значения интеграла} For I:=1 to D do {цикл – по узлам отрезка интегрирования}

Int := Int + F(X0 + I*h/2)*h; {вычисление интеграла}

Writeln('Значение интеграла = ', Int:6:2); {вывод результата}

End. {конец основной программы}

Результаты работы программы

Введите пределы интегрирования 1 5 Введите шаг h 0.1

Значение интеграла = 248.43

154

155

Задача 3.9. Разработать

алгоритм и программу вычисления

1

3

4x3 y3 )dy с помощью метода прямо-

двойного интеграла

dx (xy

0

2

 

угольников с шагом интегрирования h1 по переменной х и с шагом

интегрирования h2

по переменной y. Шаги интегрирования h1 и h2

задаются

с

клавиатуры.

Вычисление

выражения

f (x, y)

xy 4x3 y3

оформить в виде функции. Полученный ре-

зультат вывести на экран. Решить аналитически заданный интеграл и сравнить полученные результаты.

Решение задачи

Суть аналитического вычисления двойного интеграла сводится к последовательному вычислению двух определенных интегралов (внутреннего и внешнего). Во внутреннем интеграле (по переменной y) переменная х принимается при интегрировании за постоянную.

Для численного вычисления двойного интеграла необходимо использовать следующий алгоритм.

Шаг 1. Организация цикла для перебора значений переменной x с шагом h1 (шаг интегрирования внешнего интеграла).

Шаг 2. Для каждого значения x определение значения внутреннего интеграла методом прямоугольников (используется технология

предыдущей задачи).

 

 

 

Шаг 3. Суммирование произведений значений внутренних инте-

гралов и шага h2.

 

 

 

 

Результат

аналитического

решения

задачи:

1

3

 

 

 

 

dx (xy 4x3 y3 )dy

15 . Схема алгоритма численного

решения

0

2

 

 

 

задачи представлена на рис. 3.9.

1

Начало

 

 

 

 

 

 

 

2

Ввод

 

 

 

 

 

 

 

 

h1, h2

 

 

 

3

a1=0

 

 

 

 

 

 

 

 

b1=1

 

 

 

4

a2=2 a3=3

 

 

 

Int1=0

 

 

 

 

 

 

 

 

X=a1+h1/2

 

 

 

5

X<b1

нет

 

 

 

 

 

 

6

да

 

 

 

 

 

 

 

 

D=(b2-a2)/h2

 

 

 

 

Int2=0

 

 

 

7

A

 

 

Вычисление

 

 

 

внутреннего

 

I=1, D

 

 

 

 

 

интеграла для

8

 

F - вызов функции

Int2=Int2+

заданного Х

 

вычисления

 

 

+h2·F(X,

 

 

значения функции

 

 

a2+I·h2)

Вычисление

9

f (x,y ) xy

4x 3 y 3

 

 

 

 

 

двойного

 

A

 

 

интеграла

10

Int1=Int1+

 

 

 

 

+h1·Int2

 

 

 

11

 

 

 

 

 

X=X+h1

 

 

 

12

Вывод

 

 

 

 

 

 

 

 

Int1

 

 

 

13

Конец

 

 

 

 

 

 

 

 

 

Рис. 3.9

 

156

Пояснения к схеме алгоритма

Обозначения:

a1, b1 – нижний и верхний пределы для внешнего интеграла; a2, b2 – нижний и верхний пределы для внутреннего интеграла; Int1 – значение двойного интеграла;

Int2 – значение внутреннего интеграла, вычисленное методом прямоугольников;

D – число узлов интегрирования по переменной х. Символ 1. Начало алгоритма.

Символ 2. Ввод значений шагов интегрирования h1, h2.

Символ 3. Присвоение значений для пределов интегрирования внутреннего и внешнего интегралов.

Символ 4. Обнуление переменной суммы Int1 и вычисление начального значения переменной Х.

Символ 5. Проверка условия X b1. Если условие верно, то выполняется символ 6, иначе – символ 12.

Символ 6. Вычисление числа интервалов для внутреннего интеграла. Обнуление переменной суммы внутреннего интеграла Int2.

Символ 7. Открытие цикла с параметром I = 1; D.

Символ 8. Вычисление переменной суммы двойного интеграла Int2 с использованием функции F.

Символ 9. Закрытие цикла с параметром I.

Символ 10. Вычисление переменной суммы двойного интеграла

Int1.

Символ 11. Увеличение значение параметра Х на h1. Символ 12. Вывод на экран значения Int1.

Символ 13. Конец алгоритма.

Программа

Program Intgr2;

Var

h1, h2, a1, a2, b1, b2, X, Int1, Int2 : Real;

D, I : Integer;

Function F(X, Y : Real) : Real;

Begin

{начало раздела операторов функции F}

F := X*Y – 4*X*X*X*Y*Y*Y;

end;

{конец функции F}

157

Begin {начало раздела операторов основной программы}

Write('Введите значения шагов интегрирования: '); Readln(h1, h2); {чтение значений шагов}

Int1 := 0;

a1 := 0; b1 := 1;{пределы интегрирования внешнего интеграла} a2 := 2; b2 := 3; {пределы интегрирования внутреннего интеграла}

X := a1 + h1/2;

While X <= b1 do begin

D := Round((b2 - a2)/h2); {число узлов интегрирования} {вычисление внутреннего интеграла}

Int2 := 0;

for I := 1 to D do Int2 := Int2 + F(X, a2+I*h2)*h2; Int1 := Int1+Int2*h1; {суммирование для двойного интеграла}

X := X + h1; end;

{вывод результата}

Writeln('Значение двойного интеграла = ', Int1:6:2);

End. {конец основной программы}

Результаты работы программы

Введите значения шагов интегрирования: 0.1 0.1 Значение двойного интеграла = -15.85

Введите значения шагов интегрирования: 0.001 0.001 Значение двойного интеграла = -15.01

Задача 3.10. Разработать схему алгоритма и программу вычисления первой и второй производной функции f (x) 12x2 ex по

двум узлам для точек х0 и х1. Значение первой производной вычислить, используя формулу центральных разностей (П 2.11), и оформить в виде функции. Значение второй производной вычислить с использованием конечно-разностной аппроксимации первой производной (П 2.15). Шаг сетки дифференцирования hp, значения х0 и х1 задаются с клавиатуры.

Решение задачи

Схема алгоритма решения задачи представлена на рис. 3.10.

158

1

Начало

2 Ввод

X0, X1, hp

3

P0=P(X0,hp)

P1=P(X1,hp)

4

PP0=…

PP1=...

5Вывод

P0,P1,

PP0,PP1

6

Конец

Вычисление значений первой производной

P - вызов функции вычисления производной

Вычисление значений второй производной по формулам

PP0

 

P(X0

hp, hp)

P(X0

hp, hp)

 

 

 

2 hp

 

PP1

 

P(X1

hp,hp)

P(X1

hp, hp)

 

 

 

2 hp

 

 

Рис. 3.10

 

 

 

Пояснения к схеме алгоритма

Обозначения:

P – функция для вычисления первой производной функции f(x); P0, P1 – значения первой производной для точек x0 и х1;

PP0, PP1 – значения второй производной для точек x0 и х1; hp – шаг сетки дифференцирования.

Символ 1. Начало алгоритма. Символ 2. Ввод начальных данных.

Символ 3. Вычисление значений первой производной P0 в точке Х0 и P1 в точке Х1 с помощью вызова функции Р.

Символ 4. Вычисление значений второй производной PP0 в точке Х0 и PP1 в точке Х1 с помощью вызова функции Р.

Символ 5. Вывод на экран значений производных. Символ 6. Конец алгоритма.

159

Программа

Program Proizv;

Var

X0, X1, hp, P0, P1, PP0, PP1 : Real;

Function F(X : Real) : Real;

Begin

{начало раздела операторов функции F}

F := 12*X*X + Exp(X);

end;

{конец функции F}

Function P(X, hp : Real) : Real;

Begin

{начало раздела операторов функции P}

P := (F(X + hp) - F(X - hp))/(2*hp);

end;

{конец функции P}

Begin

{начало раздела операторов основной программы}

{ввод значения узлов}

Write('Введите значения узлов); Readln(X0, X1); Write('Введите шаг hp '); Readln(hp); {ввод шага hp}

{вычисление значений первых производны в точках Х0 и Х1}

P0:=P(X0, hp); P1:=P(X1, hp);

{вычисление значения второй производной в точке Х0}

PP0 := (P(X0+hp,hp) - P(X0-hp,hp))/(2*hp);

{вычисление значения второй производной в точке Х1}

PP1 := (P(X1+hp, hp) - P(X1-hp, hp))/(2*hp);

{вывод результатов на экран}

Writeln('Первая производная в точке Х0 = ', P0:6:2, ' в

точке Х1 = ', P1:6:2);

Writeln('Вторая производная в точке Х0 = ', PP0:6:2, ' в

точке Х1 = ', PP1:6:2)

End. {конец основной программы}

Результаты работы программы

Введите значения узлов 1 5 Введите шаг hp 0.001

Первая производная в точке Х0 = 26.72 в точке Х1 = 268.41 Вторая производная в точке Х0 = 26.72 в точке Х1 = 172.42

3.5. Решение дифференциальных уравнений

3.5.1. Задача с использованием метода Эйлера

Задача 3.11. Разработать схему алгоритма и программу решения дифференциального уравнения y 2 y ex на отрезке [0, 2] мето-

160