на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Средства языка программирования Паскаль для решения математических задач
p align="left">

Введите границы интервала [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 (abs(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, расположенных над двумя диагоналями и под ними:

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;

{------------------------------------------------------------------------}

{Вычисление суммы элементов. Первый проход}

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;

{------------------------------------------------------------------------}

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

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. Здесь есть особый момент. Естественно, размерность не может быть равной нулю или отрицательному числу. Поэтому при указании этих значений программа сообщит об их некорректности и попросит повторить ввод. Можно отказаться от ввода, нажав любую клавишу, или ввести новое значение, нажав Y. Кроме того, если размерность матрицы 1 или 2, то элементов, расположенных над и под диагоналями не существует. Программа логично выдаст результат, что их сумма равна нулю, при этом не сообщая об отсутствии таких элементов.

После указания размерности следует ввести саму матрицу. Матрицу наиболее удобно вводить следующим образом: элементы одной строки разделять пробелами, строки же - клавишей 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

Вывод.

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

Страницы: 1, 2, 3



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.