Реферат по предмету "Информатика, программирование"


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

Министерство образования РФ
Тульский государственный университет
Кафедра автоматики и телемеханики
Контрольно-курсовая работа
по курсу «информатика»
Вариант № 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

Введение
Вданной контрольно-курсовой работе требуется применить изученные средства языкапрограммирования Паскаль для решения математических задач путем использованиячисленных методов на компьютере.
Необходимонаписать три программы, решающие поставленные задачи, используя предоставленныематематические обоснования. Решение данных задач показывает возможностииспользования компьютера для различного рода прикладных вычислений.
В первой задаче требуетсяразработать алгоритм и его реализацию для нахождения интеграла функции,заданной графически. Ценность данной задачи заключается в том, что не длякаждой функции значение интеграла можно найти аналитически. Однако сиспользованием предложенного численного метода, возможно, получить конкретноезначение с достаточной требуемой точностью.
Во второй задаченеобходимо составить алгоритм и реализацию данного алгоритма, который позволитнапечатать таблицу значений функции, заданной в виде разложения в ряд. Безиспользования компьютера процесс вычисления значений такой функции занимаетдостаточно длительное время. Компьютер же дает возможность значительно ускоритьэтот процесс, что позволяет, например, проследить изменение значения функции наразличных интервалах, т.е. при различных значениях аргумента.
В третьей задачепредставлена работа с частным случаем многомерных массивов – матрицей.Использование матриц – весьма распространенное явление в программировании. Это,например, работа с преобразованием графики, моделирование трехмерных объектов.В математике матрицы также часто используются в различных задачах. Умениеработать с ними – очень важно.

1. Вычислениезначения интеграла функции,
заданнойграфически
 1.1. Задания и постановка задачи.
Задание (вариант №15):
Составить программу на языке Turbo Pascal 7.0 вычисления значенияинтеграла на интервале [a, b]для функции, заданной графически. Значение интеграла вычислить приближённо поитерационной формуле левых прямоугольников:
 b
I = ò f (x)dx @ In = h(f1 + f2 +…+ fn-1),
 a
где h=(b-a)/n – величина шага между двумясоседними точками разбиения интервала интегрирования; fi= f(xi) – значение функции вточке xi = a + h(i –1); i =1, 2, …, n.
Вычисления закончить при выполнении условия |In – I2n|0 – достаточно малое значение,задаваемое пользователем (точность вычислений). Здесь In,I2n – значения интеграла,вычисленные по данной формуле при количестве разбиения на nи 2n соответственно.
Численные значения всехвеличин, участвующих в вычислениях, считать параметрами программы и определитьих путём ввода.
/>График функции:
Пояснение к заданию:
Анализируяграфик функции можно сделать вывод, что для аналитического задания уравненияфункции следует ее рассматривать на различных интервалах:
 x Þy = kx + b
 -c Þy = Ln(c)
 c Þ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= x0 x1 x2 xn-1 xn= bи на каждом из полученных отрезков построимпрямоугольник, одной стороной которого будет отрезок [xi, xi+1 ], а другой – отрезок, длина которого равна f(xi). Этот случай показан на рисунке 2.   Площадь криволинейной трапецииможно приближённо считать равной сумме площадей заштрихованных прямоугольников.
Ясно,что если увеличивать число отрезков [ xi, xi+1 ], т.е. отрезок
 [a; b] разбивать на большее число равныхотрезков, то сумма их площадей всё с большей точностью будет совпадать сплощадью криволинейной трапеции. Значит, точность вычисления площадикриволинейной трапеции определяется величиной числа n.
Площадь каждогопрямоугольника можно вычислить так. Одна из сторон прямоугольника, построенногона отрезке [ xi, xi+1 ], равна h= (b— a) / n, а вторая – f(xi). Поэтому площадь «левого» прямоугольника равняется s= h* f(xi) = (b— a) / n* f(xi). Тогда площадь криволинейной трапеции равна суммеплощадей всех прямоугольников:
S = (b — a)/n* f(x0) + (b — a)/n* f(x1) + … + (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. Тогда мы можем также найтизначение интеграла при числе разбиений отрезка, равном 2n, и это значение будет равнятьсянекоторому числу Integral2.Очевидно, что оценкой точности вычислений будет являться величина абсолютнойпогрешности |Integral1 — Integral2|. Но в таком случае, именновеличина абсолютной погрешности и есть тот критерий, который показывает,следует ли дальше продолжать вычисления или найденное значение интеграла ужеудовлетворяет предельно допустимому уровню погрешности в поставленной задаче.
Тогдаалгоритм решения задачи заключается в следующем:
Сначала вычисляетсязначение интеграла при nразбиений отрезка интегрирования (Integral1). Затем число разбиений n увеличивается в 2 раза и вычисляется значение интеграла приновом числе разбиений (Integral2). После этого проверяется условие завершения работы (|Integral1 — Integral2|
Теперь нерешённым осталсятолько вопрос о выборе начального значения числа n. Очевидно, что этот вопрос нельзя разрешить однозначно иодинаково для всех видов функций. Это станет очевидно, если рассмотретьследующую ситуацию: пусть требуется найти определённый интеграл некоторойфункции на отрезке, где она принимает некоторое одинаковое значение не менее2-х раз, и при этом её интеграл не равен произведению этого значения на длинуотрезка интегрирования. При некорректном выборе исходного значения n может получиться так, что приразбиении отрезка интегрирования на n и 2n в рассмотрение будут приняты толькоте точки, значения функции в которых совпадают. Но тогда вычисление интегралазакончатся, т.к. разница между найденными значениями (Integral1 — Integral2) будет равна нулю и, следовательно,явно меньше любой погрешности, значение которой всегда положительно. Но этонедопустимо, т.к. реальное значение искомого интеграла может быть далеко отнайденного. Поэтому, при рассмотрении каждой новой функции следует производитьтщательный анализ и исключение подобных ситуаций. Таким образом, вопрос овыборе начального значения числа разбиений отрезка остается открытым.
Так как рассматриваемая вданной задаче функция не представляет особой сложности, то в предложенном далееалгоритме решения задачи начальное значение числа n будет взято равным единице.
1.4 Описание переменных.
Имя переменной
Тип переменной
Значение N integer Число интервалов разбиения A real Нижний предел интегрирования B real Верхний предел интегрирования С real Параметр функции, определяемый пользователем H real Шаг интегрирования E real Точность вычислений X real Аргумент функции integral1 real Значение интеграла при n разбиений integral2 real Значение интеграла при 2n разбиений
1.5 Схема алгоритма.
1.6 Текст программы.
PROGRAM KKP2_1_DUB3;
USES CRT;
 var
 A, B, C, E,ABS_Integral:real;
PROCEDUREENTER_DATA(VAR PR_1, PR_2, P_PAR,POGR_PRO:REAL);
BEGIN
 ClrScr;
 Writeln ('Программа длянахождения значения интеграла на определенном промежутке');
 Writeln;
 writeln('Введите границыинтервала [A,B], причем (A0):');
 writeln;
 REPEAT
 BEGIN
 writeln('Число C: '); readln(P_PAR);
 if not(P_PAR>0) then
 writeln ('C должно быть больше 0!.. Повторите ввод.')
 ELSE IF NOT(P_PAR
 WRITELN('C должно быть меньше 1!..Повторите ввод.');
 END;
 UNTIL((P_PAR>0) AND (P_PAR
 REPEAT
 BEGIN
 writeln('Начало интервала A: '); readln(PR_1);
 writeln('Конец интервала B: '); readln(PR_2);
 if not(PR_1
 writeln ('A должно быть меньше B!.. Повторите ввод.');
 END;
 UNTIL (PR_1
 REPEAT
 BEGIN
 writeln('Точность E: '); readln(POGR_PRO);
 if not(POGR_PRO>0) then
 writeln ('E должно быть больше 0!.. Повторите ввод.');
 END;
 UNTIL(POGR_PRO>0);
END;
FUNCTIONintegration(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
 ifx
 integral2:=integral2+((1/sqr(3))*(ln(F_PAR)-F_PAR))
 ELSE IF((-F_PAR
 THENintegral2:=integral2+ln(F_PAR)
 ELSE if(X>F_PAR) THEN
 Integral2:=integral2+LN(X)/LN(10);
 X:=X+H;
 until not(X
 READY:=abs(integral1-integral2)
 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], причем (A0):
ЧислоC:
0.9
ЧислоD:
-0.1
Началоинтервала A:
5
Конецинтервала B:
10
ТочностьE:
1
Ответ:
Интегрална промежутке от A до B равен
2.574с точностью 1.000
Программадля нахождения значения интеграла на определенном промежутке
Введитеграницы интервала [A,B], причем(A
точность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):
Разработать алгоритм исоставить программу вычисления таблицы значений функции, заданной в видеразложения в ряд. Значение функции вычислять с точностью e>0, т.е. вычисление суммы членовряда необходимо прекратить, когда абсолютная величина очередного члена рядаразложения окажется меньше e: | ак |
При вычислении очередногочлена целесообразно воспользоваться рекурентным выражением:
/>ак+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
точность E (E>0)/> /> /> /> /> /> /> /> /> /> /> />  
 

и шаг изменения аргумента H (H>0)/>/>/>/>/>
 
 
 
 
 
 
 
 
 
 
 
 
 

/>/>                             ДА       
/>                                      
 
/>/>                   НЕТ    
/>                             НЕТ/> /> /> /> /> /> /> /> /> />  
 

                  ДА        
 
/> 
 
/> 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/> 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

                                              нет    
/> 

/>                                    да
/> 

/>/>                                         нет           
 
/> 
 
 
 
 
 
 
 
 
 
 
 
 

                                           да
/>                                           
/>                           нет       
/>                                    
 
 
2.5.1 Схема алгоритма процедуры Table_begin
 /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />  
 
 
 

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

2.5.2 Схема алгоритма процедуры Table_end
 /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />  
 
 
 
 
 
 

2.6 Текст программы.
 
Programkkr1_2;
procedureTable_begin;
begin
writeln(' ----------------------------------------------------------------------------------');
writeln(' ¦Номер¦ X ¦ f(x) ¦ Номер члена ряда ¦');
writeln(' ----------------------------------------------------------------------------------');
end;
procedureTable_end;
begin
 writeln(' ----------------------------------------------------------------------------------');
end;
var
K,number:integer;
A,B,H,E,X,y,f:real;
begin
Writeln ('Программапредназначена для вычисления таблицы значений функции, ');
writeln ('заданной в видеразложения в ряд.');
Writeln;
{------------------------------------------------------------------------}
{Ввод данных}
writeln('Введите границыинтервала [A,B] ( причем (A0)');
writeln('и шаг измененияаргумента H (H>0)');
writeln;
repeat
 begin
 writeln('Начало интервала A: '); readln(A);
 writeln('Конец интервала B: '); readln(B);
 if not(A
 end;
until(A
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(abs(y)
if (number mod18)=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
Table_end;
end.
 
2.7 Инструкция пользователю.
Послезапуска программы, она сообщит, что предназначена для составления таблицызначений функции на определенном интервале и попросит ввести значения,необходимые для составления таблицы. К таким значениям относятся начало и конецинтервала, шаг изменения аргумента, точность вычислений. Не стоит вводитьслишком больших значений (либо слишком маленькую точность), так как тогда времяработы программы сильно увеличится.
Чтобыправильно составить требуемую таблицу, программе необходимы значения, которыепользователь введет в программу. Вводить значения надо после приглашенияпрограммы к соответствующему действию. Важный момент – если таблица полностьюне поместиться на экран, то после заполнения последней строки, помещающейся наданном экране, программа попросит нажать любую клавишу и продолжить составлениетаблицы на чистом экране, т.е. предварительно очистив предыдущую таблицу.
 
2.8. Тестовый пример.
 
Программапредназначена для вычисления таблицы значений функции,
заданной ввиде разложения в ряд.
Введитеграницы интервала [A,B] ( причем (A0)
и шагизменения аргумента H (H>0):
Началоинтервала A:
0.5
Конецинтервала B:
7.6
ТочностьE:
.001
Шаг H:
1
Вы ввели:
A=0.50000 B=7.60000 H=1.00000E=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, расположенных над двумя диагоналями и под ними:/> /> /> /> /> /> /> />
 *  

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
 readln(K);
 if ((K50)) then
 begin
 writeln('Такаяразмерность невозможна по условию.');
 writeln('Повторитеввод.');
 end;
until ( (K>1) and (K
{------------------------------------------------------------------------}
{Ввод матрицы}
writeln(‘Введите матрицу’);
 for i:=1 to Kdo
 for j:=1 to Kdo
 begin
 write('Matrix[',i,',',j,']=');
 Readln(Matrix[i,j]);
 end;
{------------------------------------------------------------------------}
{Вывод матрицы}
Writeln('Вы ввели: ');
for i:=1 to Kdo
 begin
 for j:=1 to Kdo write(Matrix[i,j],' ');
 writeln;
 end;
{------------------------------------------------------------------------}
{Вычисление суммыэлементов. Первый проход}
Writeln;
for j:=1 to kdo
 begin
 ifj
 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;
{------------------------------------------------------------------------}
{Вычисление суммыэлементов. Второй проход}
for j:=kdownto 1 do
 begin
 if j>(k/2)then
 begin
 for i:=(k-j)downto 1 do sum:=sum+Matrix[i,j];
 end
 else fori:=(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. Здесь есть особый момент. Естественно,размерность не может быть равной нулю или отрицательному числу. Поэтому приуказании этих значений программа сообщит об их некорректности и попроситповторить ввод. Можно отказаться от ввода, нажав любую клавишу, или ввестиновое значение, нажав Y. Кроме того, если размерностьматрицы 1 или 2, то элементов, расположенных над и под диагоналями несуществует. Программа логично выдаст результат, что их сумма равна нулю, приэтом не сообщая об отсутствии таких элементов.
Послеуказания размерности следует ввести саму матрицу. Матрицу наиболее удобновводить следующим образом: элементы одной строки разделять пробелами, строки же– клавишей Enter. Если будет введено элементов больше,чем указанно размерностью матрицей, то такие элементы обрабатываться не будет.Чтобы не было недопонимания, пользователю выводится матрица, с которойосуществляются вычисления.
Программапосчитает сумму требуемых элементов и выдаст результат на экран. После этого,она завершится.
3.8. Тестовый пример.
 
Программаищет сумму элементов матрицы, находящихся над и под ее диагоналями.
 
Введитеразмерность матрицы (K
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 4589
74 235
4 1565
Cуммаэлементов над и под диагоналями равна 60

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


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.