Учебная работа. Курсовая работа: Средства языка программирования Паскаль для решения математических задач

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (5 оценок, среднее: 4,80 из 5)
Загрузка...
Контрольные рефераты

Учебная работа. Курсовая работа: Средства языка программирования Паскаль для решения математических задач

Министерство образования РФ (Российская Федерация — Тульский муниципальный институт

Кафедра автоматики и телемеханики

Контрольно-курсовая работа

по курсу «информатика»

Вариант № 15

Выполнил:

студент группы 220611

Блинцов С. В.

Проверил:

помощник кафедры АТМ

Середин О. С.

Тула 2001

Содержание

1.

1.1

1.2

1.3

1.4

1.5

1.6

1.7

1.8

2.

2.1

2.2

2.3

2.4

2.5

2.6

2.7

2.8

3.

3.1

3.2

3.3

3.4

3.5

3.6

3.7

3.8

Введение……………………………………………………………………………………….

Вычисление значения интеграла функции, данной графически……

Постановка задачки……………………………..………………………………..

Математическая формулировка задачки………………………………………….

Численный способ решения……………………………………………………………

{Инструкция} программеру……………………………………………………………

Схема метода……………………………………………………………………………

текст программки………………………………………………………………………….

{Инструкция} юзеру…………………………………………………………….

Тестовый пример…………………………………………………………………………

Составление таблицы значений функции, данной в виде разложения в ряд………………………………………………………………………….

Постановка задачки……………………………………………………………………..

Математическая формулировка задачки……………………………………………

Численный способ решения…………………………………………………………….. {Инструкция} программеру……………………………………………………………..

Схема метода…………………………………………………………………………….

текст программки……………………………………………………………………………

{Инструкция} юзеру………………………………………………………………

Тестовый пример……………………………………………………………………………

Работа с матрицами………………………………………………………………………..

Постановка задачки…………………………………………………………………..

Математическая формулировка задачки……………………………………………

Численный способ решения…………………………………………………………….. {Инструкция} программеру……………………………………………………………..

Схема метода…………………………………………………………………………….

текст программки……………………………………………………………………………

{Инструкция} юзеру………………………………………………………………

Тестовый пример……………………………………………………………………………

Вывод…………………………………………………………………………………………….

4

5

5

6

7

9

10

10

13

13

16

16

17

17

18

19

22

22

22

26

26

28

28

28

29

32

35

36

37

Введение

В данной контрольно-курсовой работе требуется применить изученные средства языка программирования Паскаль для решения математических задач методом использования численных способов на компе.

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

В первой задачке требуется создать метод и его реализацию для нахождения интеграла функции, данной графически. Ценность данной задачки состоит в том, что не для каждой функции

Во 2-ой задачке нужно составить метод и реализацию данного метода, который дозволит напечатать таблицу значений функции, данной в виде разложения в ряд. Без использования компа процесс вычисления значений таковой функции занимает довольно долгое время. Комп же дает возможность существенно убыстрить этот процесс, что дозволяет, к примеру, проследить изменение значения функции на разных интервалах, т.е. при разных значениях аргумента.

В третьей задачке представлена работа с личным случаем многомерных массивов – матрицей. Внедрение матриц – очень распространенное явление в программировании. Это, к примеру, работа с преобразованием графики, моделирование трехмерных объектов. В арифметике матрицы также нередко употребляются в разных задачках. Умение работать с ними – весьма принципиально.

1. Вычисление значения интеграла функции,

данной графически

1.1. Задания и постановка задачки.

Задание (вариант №15):

Составить программку на языке Turbo Pascal 7.0 вычисления значения интеграла на интервале [a, b] для функции, данной графически.

b

I
= ò
f
(x
)dx
@ I
n = h
(f
1 + f
2 +…+ f
n-1),

a

где h=(b-a)/n – величина шага меж 2-мя примыкающими точками разбиения интервала интегрирования; fi = f(xi) –

Вычисления окончить при выполнении условия |In – I2n| < e, где e>0 – довольно маленькое значения интеграла, вычисленные по данной формуле при количестве разбиения на n и 2n соответственно.

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

График функции:

Пояснение к заданию:

Анализируя график функции можно прийти к выводу, что для аналитического задания уравнения функции следует ее разглядывать на разных интервалах:

x <= -c
Þ
y = kx + b

-c < x < =c
Þ
y = Ln(c)

c < x
Þ
y = lg(x),

где
kx + b
=, lg x
= (ln(x))/(ln(10));

x – аргумент функции; y – её значение; c – параметр функции (c>0), вводимые юзером с клавиатуры.

1.2 Математическая формулировка задачки.

Решение почти всех задач (к примеру, определение пути при неравномерном движении, работы переменной силы, расходов воды в реках и каналах, площади поперечного сечения судна) находится при помощи определённого интеграла. время от времени для вычисления определённого интеграла от непрерывной на отрезке [a; b] функции f
(
x
)
можно просто пользоваться формулой Ньютона-Лейбница:

b

S =
ò
f(x) dx
= F(b) – F(a),

a

где F
(
x
) –
первообразная для функции f
(
x
)
[F
¢
(
x
)=
f
(
x
)
].

Но пользоваться формулой Ньютона-Лейбница в большинстве ситуаций не представляется вероятным.

В этом случае употребляются приближённые способы для вычисления определённого интеграла. Они все основаны на том, что геометрически интеграл функции f
(
x
)
в границах от a до b представляет собой площадь криволинейной трапеции, ограниченной графиком данной функции, осью Ox и прямыми x = a, x = b. Разглядим один из этих способов.

1.3 Численный способ решения.

Пусть требуется приближённо вычислить площадь фигуры, ограниченной графиком функции f
(
x
)
и прямыми x
=
a
,
x
=
b
,
y
= 0.

Мысль метода вычисления площади криволинейной трапеции состоит в последующем:

Разобьем отрезок [a; b] на n
равных отрезков точками a
=
x
0 <
x
1 <
x
2 <…<
xn
-1 <
xn
=
b
и на любом из приобретенных отрезков построим прямоугольник, одной стороной которого будет отрезок [xi
,
xi
+1
], а иной – отрезок, длина которого равна f
(
xi
)
. Этот вариант показан на рисунке 2.

Площадь криволинейной трапеции можно приближённо считать равной сумме площадей заштрихованных прямоугольников.

ясно, что если наращивать число отрезков [ xi
,
xi
+1
], т.е. отрезок

[a; b] разбивать на большее число равных отрезков, то сумма их площадей всё с большей точностью будет совпадать с площадью криволинейной трапеции. означает, точность вычисления площади криволинейной трапеции определяется величиной числа n
.

Площадь всякого прямоугольника можно вычислить так. одна из сторон прямоугольника, построенного на отрезке [ xi
,
xi
+1
], равна h
= (
b

a
) /
n
, а 2-ая – f
(
xi
)
. Потому площадь «левого» прямоугольника приравнивается s
=
h
*
f
(
xi
) = (
b

a
) /
n
*
f
(
xi
)
. Тогда площадь криволинейной трапеции равна сумме площадей всех прямоугольников:

S = (b — a)/n *
f
(
x
0)
+ (b — a)/n *
f
(
x
1)
+ … + (b — a)/n * f(xn-1)
= (b — a)/n *
( f(x0)
+ f(x1)
+…+ f(xn-1)
).

Таковым образом, мы отыскали интеграл функции f
(
x
)
на отрезке [
a
;
b
]
при числе разбиений отрезка n
. Разумеется, что чем больше n
, тем больше точность вычисления значения интеграла; но, при всем этом время, затрачиваемое на решение задачки, также прямо пропорционально числу n
. Отсюда возникает вопросец: как верно избрать n


, чтоб за меньшее время отыскать

Пусть мы знаем, что при разбиении отрезка интегрирования на n частей интеграл функции на данном интервале равен Integral1. Тогда мы можем также отыскать случае, конкретно величина абсолютной погрешности и есть тот аспект, который указывает, следует ли далее продолжать вычисления либо отысканное

Тогда метод решения задачки заключается в последующем:

Поначалу рассчитывается работы (|Integral1 — Integral2|<e) и, если работу следует продолжать, то текущее

сейчас нерешённым остался лишь вопросец о выборе исходного значения числа n. Разумеется, что этот вопросец недозволено разрешить совершенно точно и идиентично для всех видов функций. Это станет разумеется, если разглядеть последующую ситуацию: пусть требуется отыскать определённый интеграл некой функции на отрезке, где она воспринимает некое однообразное значения на длину отрезка интегрирования. При неправильном выборе начального значения n может получиться так, что при разбиении отрезка интегрирования на n и 2n в рассмотрение будут приняты лишь те точки, значения функции в каких совпадают. Но тогда вычисление интеграла завершатся, т.к. разница меж отысканными значениями (Integral1 — Integral2) будет равна нулю и, как следует, очевидно меньше хоть какой погрешности, анализ и исключение схожих ситуаций. Таковым образом, вопросец о выборе исходного значения числа разбиений отрезка остается открытым.

Потому что рассматриваемая в данной задачке функция не представляет особенной трудности, то в предложенном дальше методе решения задачки изначальное

1.4 Описание переменных.

имя переменной

Тип переменной

Значение

N

integer

Число интервалов разбиения

A

real

Нижний предел интегрирования

B

real

Верхний предел интегрирования

С

real

Параметр функции, определяемый юзером

H

real

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

E

real

Точность вычислений

X

real

аргумент функции

integral1

real

Значение интеграла при n разбиений

integral2

real

1.5 Схема метода.

1.6 текст программки.

PROGRAM KKP2_1_DUB3;

USES CRT;

var

A, B, C, E, ABS_Integral:real;

PROCEDURE ENTER_DATA(VAR PR_1, PR_2, P_PAR,POGR_PRO:REAL);

BEGIN

ClrScr;

Writeln (‘программка для нахождения значения интеграла на определенном промежутке’);

Writeln;

writeln(‘Введите границы интервала [A,B],при этом (A<B),число C (0<C<1) и точность E (E>0): ‘);

writeln;

REPEAT

BEGIN

writeln(‘Число C: ‘); readln(P_PAR);

if not (P_PAR>0) then

writeln (‘C обязано быть больше 0 !. Повторите ввод.’)

ELSE IF NOT (P_PAR<1) THEN

WRITELN(‘C обязано быть меньше 1!. Повторите ввод.’);

END;

UNTIL ((P_PAR>0) AND (P_PAR<1));

REPEAT

BEGIN

writeln(‘Начало интервала A: ‘); readln(PR_1);

writeln(‘Конец интервала B: ‘); readln(PR_2);

if not (PR_1<PR_2) then

writeln (‘A обязано быть меньше B !. Повторите ввод.’);

END;

UNTIL (PR_1<PR_2);

REPEAT

BEGIN

writeln(‘Точность E: ‘); readln(POGR_PRO);

if not (POGR_PRO>0) then

writeln (‘E обязано быть больше 0 !. Повторите ввод.’);

END;

UNTIL (POGR_PRO>0);

END;

FUNCTION integration(VAR GR_1,GR_2,F_PAR,POGR_FUNC:REAL):real;

VAR

INTEGRAL1, INTEGRAL2, X, H:REAL;

N:INTEGER;

READY:BOOLEAN;

begin

integral1:=0;

integral2:=0;

n:=1;

REPEAT

N:=N*2;

H:=(GR_2-GR_1)/N;

X:=GR_1;

Integral2:=0;

repeat

if x<=(-F_PAR) then

integral2:=integral2+((1/sqr(3))*(ln(F_PAR)-F_PAR))

ELSE IF((-F_PAR<x) and (x<=F_PAR))

THEN integral2:=integral2+ln(F_PAR)

ELSE if (X>F_PAR) THEN

Integral2:=integral2+LN(X)/LN(10);

X:=X+H;

until not (X<=B);

READY:=абс(integral1-integral2)<POGR_FUNC;

INTEGRAL1:=INTEGRAL2;

UNTIL READY;

INTEGRATION:=INTEGRAL2;

END;

BEGIN

ENTER_DATA(A,B,C,E);

ABS_Integral:=INTEGRATION(A,B,C,E);

Writeln;

Writeln( ‘Ответ: ‘);

writeln(‘Интеграл на промежутке от ‘,A:0:2,’ до ‘,B:0:2,’ равен ‘);

writeln (ABS_Integral:1:3,’ с точностью ‘,E:1:3);

ReadKey;

END.

1.7 {Инструкция} юзеру.

Данная программка вычисляет программка вычислит итог и выдаст его (в числовом виде) на экран монитора.

Опосля пуска программки на дисплее покажется описание программки.

В ответ на приглашение к вводу значений следует ввести требуемые величины. программка не претендует на универсальность, потому не стоит вводить запредельные границы интервала либо весьма небольшую ( ~0.001) точность вычислений. Так как скорость выполнения данной программки впрямую зависит от частоты микропроцессора, то на микропроцессорах, различающихся существенно, время вычислений (и допустимая точность) будут различными. В общем случае это определяется опытным методом.

Если все величины заданы корректно и вычисления не прерывались, то через некое время, зависящее от тактовой частоты микропроцессора, программка подсчитает

В случае если требуется повторное вычисление значения, следует поновой запустить программку.

1.8. Тестовый пример.

программка для нахождения значения интеграла на определенном промежутке

Введите границы интервала [A,B], при этом (A<B), число C (0<C<1), число D (D<0) и точность E (E>0):

Число C:

0.9

Число D:

-0.1

Начало интервала A:

5

Конец интервала B:

10

Точность E:

1

Ответ:

Интеграл на промежутке от A до B равен

2.574 с точностью 1.000

программка для нахождения значения интеграла на определенном промежутке

Введите границы интервала [A,B], при этом (A<B), число C (0<C<1), число D (D<0) и

точность E (E>0):

Число C:

0.9

Число D:

-0.1

Начало интервала A:

-0.9

Конец интервала B:

0.9

Точность E:

1

Ответ:

Интеграл на промежутке от A до B равен

-0.300 с точностью 1.000

2. Составление таблицы значений функции, данной в виде разложения в ряд

2.1 Вариант задания и постановка задачки.

Задание (вариант №15):

Создать метод и составить программку вычисления таблицы значений функции, данной в виде разложения в ряд.

При вычислении еще одного члена целенаправлено пользоваться рекурентным выражением:


ак+1
=ск
ак
; к= 0, 1, 2, …,

где ак

— некий к-ый член ряда; ак+1

— последующий к+1
-ый член ряда; ск

— коэффициент, определяемый номером к
.

При составлении программки нужно по способности пользоваться операторами организации циклов WHILE
,
REPEAT
,
FOR
.

Границы интервала вычислений функций a
и b
, величина шага конфигурации аргумента h
и точность вычисления функции e
задаются при вводе. На печать выводятся номер по порядку,

Х

f
(
x
)

№ чл.р.

1

2

3

Функция:

2.2 Математическая формулировка задачки.

Некие функции недозволено представить в виде конечной формулы, но вычисление значений таковых функций нередко бывает нужно для различного рода расчетов. Такие функции могут быть заданы в виде разложения в нескончаемый ряд, где при нескончаемом увеличении членов ряда любой следующий член меньше предшествующего. Любой член ряда – это конкретное
2.3 Численный способ решения.

Пусть требуется приближённо вычислить

Разумеется, что вычисление значения функции необходимо создавать за конечное число шагов. А означает, нужен некоторый ограничивающий фактор, в качестве которого в нашей задачке будет выступать погрешность вычислений e
(e>0). Как следует, вычислив любой новейший член ряда ak
, нам нужно проверить, не будет ли абсолютная величина еще одного члена ряда меньше, чем величина погрешности e
, т.е. |
ak| <
e
. Если это неравенство не выполнилось, то следует вычислить новейший член ряда, по другому можно заканчивать вычисление и выводить итог работы на экран монитора.

Не считая того, при вычислении еще одного члена целенаправлено пользоваться рекуррентным выражением: ak+1 = ck * ak; k = 0, 1, 2, …, где ak – некий k-ый член ряда; ak+1 — последующий k+1-ый член ряда; ck – коэффициент, определяемый номером k.

В данном случае нахождение коэффициента ck можно произвести последующим образом:

ak
=;

ak
+1
=;

ck
=

Как следует, зная

ak
+1
=ak
*; k = 0, 1, 2, …

2.4 Описание переменных.

имя переменной

Тип переменной

Значение

K

integer

Номер члена ряда

number

integer

Порядковый номер

A

real

Начало интервала

B

real

Конец интервала

H

Шаг интервала

E

Точность

X

Текущее

у

f

Значение функции для текущего аргумента

2.5 Схема метода.

программка создана для вычисления

таблицы значений функции,

данной в виде разложения в ряд.

Введите границы интервала [A,B] ( при этом (A<B) );

точность E (E>0)

и шаг конфигурации аргумента H (H>0)

ДА

НЕТ

НЕТ

ДА

нет

да

нет

да

нет

2.5.1 Схема метода процедуры Table_begin


¦Номер¦ X ¦ f(x) ¦ Номер члена ряда ¦

2.5.2 Схема метода процедуры Table_end

2.6 текст программки.

Program kkr1_2;

procedure Table_begin;

begin

writeln(‘ ———————————————————————————-‘);

writeln(‘ ¦Номер¦ X ¦ f(x) ¦ Номер члена ряда ¦’);

writeln(‘ ———————————————————————————-‘);

end;

procedure Table_end;

begin

writeln(‘ ———————————————————————————-‘);

end;

var

K,number:integer;

A,B,H,E,X,y,f:real;

begin

Writeln (‘программка создана для вычисления таблицы значений функции, ‘);

writeln (‘данной в виде разложения в ряд.’);

Writeln;

{————————————————————————}

{Ввод данных}

writeln(‘Введите границы интервала [A,B] ( при этом (A<B) ); точность E (E>0)’);

writeln(‘и шаг конфигурации аргумента H (H>0)’);

writeln;

repeat

begin

writeln(‘Начало интервала A: ‘); readln(A);

writeln(‘Конец интервала B: ‘); readln(B);

if not (A<B) then writeln (‘A обязано быть меньше B !. Повторите ввод.’);

end;

until (A<B);

repeat

begin

writeln(‘Точность E: ‘); readln(E);

if not (E>0) then writeln (‘E обязано быть больше 0 !. Повторите ввод.’);

end;

until (E>0);

repeat

begin

writeln(‘Шаг H: ‘);readln(H);

if not (H>0) then writeln (‘H обязано быть больше 0 !. Повторите ввод.’);

end;

until (H>0);

{————————————————————————}

writeln(‘Вы ввели: ‘);

writeln(‘A=’,A:1:5, ‘ B=’,B:1:5,’ H=’,H:1:5,’ E=’,E:1:5);

writeln;

{————————————————————————}

X:=A;

number:=0;

Table_begin;

repeat

k:=0;

y:=(cos(2*x))/3;

f:=0;

inc(number);

repeat

inc(k);

y:=y*cos(2*(k+1)*x)*(2*k-1)/((2*k+3)*cos(2*k*x));

f:=f+y;

until (абс(y)<E);

if (number mod 18)=0 then

begin

Table_end;

Table_begin;

end;

writeln(‘ ¦’,number:5,’¦’, X:20:13,’ ¦ ‘,(4/Pi)*(0.5-f):16:13, ‘ ¦ ‘ ,k:7,’ ¦’);

X:=X+H;

until not (X<B);

Table_end;

end.

2.7 {Инструкция} юзеру.

Опосля пуска программки, она скажет, что создана для составления таблицы значений функции на определенном интервале и попросит ввести значения, нужные для составления таблицы. К таковым значениям относятся начало и конец интервала, шаг конфигурации аргумента , точность вычислений. Не стоит вводить очень огромных значений (или очень небольшую точность), потому что тогда время работы программки очень возрастет.

Чтоб верно составить требуемую таблицу, программке нужны значения, которые юзер введет в программку. Вводить значения нужно опосля приглашения программки к соответственному действию. Принципиальный момент – если таблица на сто процентов не поместиться на экран, то опосля наполнения крайней строчки, помещающейся на данном экране, программка попросит надавить всякую кнопку и продолжить составление таблицы на чистом экране, т.е. за ранее очистив предшествующую таблицу.

2.8. Тестовый пример.

программка создана для вычисления таблицы значений функции,

данной в виде разложения в ряд.

Введите границы интервала [A,B] ( при этом (A<B) ); точность E (E>0)

и шаг конфигурации аргумента H (H>0):

Начало интервала A:

0.5

Конец интервала B:

7.6

Точность E:

.001

Шаг H:

1

Вы ввели:

A=0.50000 B=7.60000 H=1.00000 E=0.00100

——————————————————————————————

¦Номер¦ X ¦ f(x) ¦ Номер члена ряда ¦

——————————————————————————————

¦ 1 ¦ 0.50000000000 ¦ 0.70477448832 ¦ 7 ¦

¦ 2 ¦ 1.50000000000 ¦ 0.57770993869 ¦ 8 ¦

¦ 3 ¦ 2.50000000000 ¦ 0.71713212380 ¦ 10 ¦

¦ 4 ¦ 3.50000000000 ¦ 0.66752823117 ¦ 10 ¦

¦ 5 ¦ 4.50000000000 ¦ 0.59106729937 ¦ 10 ¦

¦ 6 ¦ 5.50000000000 ¦ 0.72198206866 ¦ 2 ¦

¦ 7 ¦ 6.50000000000 ¦ 0.60541986599 ¦ 9 ¦

¦ 8 ¦ 7.50000000000 ¦ 0.61517755154 ¦ 10 ¦

——————————————————————————————

3.Работа с матрицами

3.1 Вариант задания и постановка задачки.

Задание (вариант №15):

Вычислить сумму частей матрицы В(К,К), К £ 50, расположенных над 2-мя диагоналями и под ними:

*

3.2 Математическая формулировка задачки.

Данная матрица представляет собой квадратную матрицу размерности K.

Чтоб отыскать сумму частей, находящихся над диагоналями, нужно поначалу найти, что понимается под диагоналями и потом, исходя из этого, находить фактически сумму частей.

3.3 Численный способ решения.

Квадратная матрица, о которой речь идет, это ничто другое, как двумерный массив размерности KxK. нужно найти, сумму каких частей требуется находить. Для этого следует указать, что диагоналями квадратной матрицы являются элементы, обозначаемые как Matrix[i,j], Matrix[i+1,j+1] , … , Matrix[k,k] для главной диагонали и Matrix[k,j] и элементы Matrix[k-1,j+1] , … , Matrix[1,j] для побочной диагонали. Зная это следует просто «перебирать» все элементы, находящиеся над и под диагоналями – другими словами изменять вертикальную составляющую координаты зависимо от «текущей» диагонали.

3.4 Описание переменных.

имя переменной

Тип переменной

Значение

Matrix

array [1..50,1..50] of integer

Матрица, вводимая юзером

i

byte

Счетчик цикла

(для матрицы)

j

byte

Счетчик цикла

(для матрицы)

K

byte

Размерность матрицы,

определяемая юзером

sum

integer

Сумма частей

key

char

«Техно» переменная, равная ответу юзера

3.5 Схема метода.

программка отыскивает сумму частей матрицы,

находящихся над и под ее диагоналями.

да

нет

нет

да

нет

да

нет

да

3.6 текст программки.

Program kkr1_3;

var

Matrix:array [1..50,1..50] of integer;

i,j,K:byte;

sum:integer;

key:char;

begin

Writeln(‘программка отыскивает сумму частей матрицы, находящихся над и под ее диагоналями.’);

Writeln;

{————————————————————————}

{Определение размерности матрицы}

repeat

Writeln(‘Введите размерность матрицы (K<=50): ‘);

readln(K);

if ((K<=1) or (K>50)) then

begin

writeln(‘Таковая размерность невозможна по условию.’);

writeln(‘Повторите ввод.’);

end;

until ( (K>1) and (K<=50) );

{————————————————————————}

{Ввод матрицы}

writeln(‘Введите матрицу’);

for i:=1 to K do

for j:=1 to K do

begin

write(‘Matrix[‘,i,’,’,j,’]=’);

Readln(Matrix[i,j]);

end;

{————————————————————————}

{Вывод матрицы}

Writeln(‘Вы ввели: ‘);

for i:=1 to K do

begin

for j:=1 to K do write(Matrix[i,j],’ ‘);

writeln;

end;

{————————————————————————}

{Вычисление суммы частей. 1-ый проход}

Writeln;

for j:=1 to k do

begin

if j<=(k/2) then

begin

for i:=(j-1) downto 1 do sum:=sum+Matrix[i,j]

end

else

for i:=(j+1) to k do sum:=sum+Matrix[i,j];

end;

{————————————————————————}

{Вычисление суммы частей. 2-ой проход}

for j:=k downto 1 do

begin

if j>(k/2) then

begin

for i:=(k-j) downto 1 do sum:=sum+Matrix[i,j];

end

else for i:=(k-j+2) to k do sum:=sum+Matrix[i,j];

end;

{————————————————————————}

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

writeln(‘Cумма частей над и под диагоналями равна ‘,sum);

end.

3.7 {Инструкция} юзеру.

программка создана для вычислений суммы частей матрицы расположенных над и под ее диагоналями. Ввод матрицы осуществляется юзером в комфортной для человека математической форме. К примеру:

1 2 3

4 5 6

7 8 9

Для пуска программки требуется набрать ее имя (kkr1_3.exe) в командной строке и надавить Enter. программка выведет короткую информацию о своем назначении и попросить ввести размерность матрицы, которую юзер будет вводить.

Размерность матрицы обязана быть меньше либо равна 50. тут есть особенный момент. Естественно, размерность не быть может равной нулю либо отрицательному числу. Потому при указании этих значений программка скажет о их некорректности и попросит повторить ввод. Можно отрешиться от ввода, нажав всякую кнопку, либо ввести новое программка разумно выдаст итог, что их сумма равна нулю, при всем этом не сообщая о отсутствии таковых частей.

Опосля указания размерности следует ввести саму матрицу. Матрицу более комфортно вводить последующим образом: элементы одной строчки делить пробелами, строчки же – кнопкой Enter. Если будет введено частей больше, чем указанно размерностью матрицей, то такие элементы обрабатываться не будет. Чтоб не было непонимания, юзеру выводится матрица, с которой осуществляются вычисления.

программка посчитает сумму требуемых частей и выдаст итог на экран. Опосля этого, она закончится.

3.8. Тестовый пример.

программка отыскивает сумму частей матрицы, находящихся над и под ее диагоналями.

Введите размерность матрицы (K<=50):

3

Введите матрицу

Matrix[1,1]=12

Matrix[1,2]=45

Matrix[1,3]=89

Matrix[2,1]=74

Matrix[2,2]=23

Matrix[2,3]=5

Matrix[3,1]=4

Matrix[3,2]=15

Matrix[3,3]=65

Вы ввели:

12 45 89

74 23 5

4 15 65

Cумма частей над и под диагоналями равна 60

Вывод.

комп предоставляет комфортную возможность использования вычислительных мощностей для решения трудозатратных и больших математических задач. Почти все задачки, которые ранее (до изобретения компа) или не имели решения, или оно было весьма долгим, сейчас может быть решать в считанные секунды. задачки, которые недозволено решить аналитически, можно решить с внедрением разных численных способов. И тут язык Паскаль выступает как довольно комфортное и обычное средство для перевода метода в компьютерную программку, которую сумеет применять огромное количество людей.]]>