Файл: Алгоритмизация как обязательный этап разработки программы.pdf
Добавлен: 28.04.2023
Просмотров: 68
Скачиваний: 2
Ниже приведены блок-схема алгоритма и листинг программы на языке Паскаль.
истина
Ввод a, b, eps
x= (a + b)/2,i=0
F (x) =
F(x) =0
Abs (F(x))<eps
F(x)*F (a)>0
x: = b
x = (a + b)/2,i=i+1
конец
Печать x,i
x: = a
истина
истина
ложь
ложь
ложь
Program lab3;
function f1 (x: real): real;
begin
f1:=cos(0.2*x*x-2);
end;
var
x,a,b,e: real;
iteraz: integer;
begin
write ('Input a = '); readln (a);
write ('Input b = '); readln (b);
write ('Input e = '); readln (e);
iteraz:=0;
x:=(a+b)/2;
while (f1(x)<>0) and (abs(a-b)>e) do
begin
x:=(a+b)/2;
iteraz:=iteraz+1;
if (f1(a)*f1(x))<0 then b:=x
else a:=x;
writeln ('n=', iteraz,' x=', x:3:6,' f(x)=', f1(x):3:6);
end;
readln;
end.
Решение этой задаче было проведено и в MS Excel. Лист с решением задачи и ответом приведен ниже.
Вычислить определенный интеграл методом прямоугольников: или трапеций, на выбор.
, , , , с точностью .
Формула метода прямоугольников:
Формула метода трапеций: .
№ |
|||
---|---|---|---|
9 |
-3π |
0 |
РЕШЕНИЕ
Алгоритм метода трапеций заключается в следующем:
- Отрезок [a, b] разбивается на n равных частей.
- Интеграл представляет собой площадь криволинейной трапеции, ограниченной осью OX, прямыми x=a и x=b и графиком функции. Очевидно, что интеграл от функции на отрезке равен сумме интегралов от этой же функции на каждом из маленьких отрезков, полученных в результате разбиения. Но на каждом из маленьких отрезков мы приближенно заменяем площадь криволинейной трапеции на площадь прямолинейной трапеции с основанием (высотой), равным длине маленького отрезка, и высотами (основаниями) f(xn) и f(xn+1), где xn – левая граница отрезка, xn+1 – правая граница отрезка. Основание (высота трапеции) равно
(b-a)/n, и таким образом площадь трапеции равна
(f(xn)+f(xn+1)) (b-a)/2n. У нас всего n трапеций, причем каждые две соседние трапеции имеют одинаковые высоты (основания). Таким образом, в сумму каждое из f(xn) кроме f(a) и f(b) войдет дважды, и таким образом весь интеграл вычисляется как , где . - В методе трапеций не определен шаг (количество отрезков разбиения). Очевидно, что чем больше количество отрезков, тем более точным будет результат. Поэтому, задаем начальное значение n (например n=10) и вычисляем интеграл.
- После этого удваиваем n и снова вычисляем интеграл (п. 2). Сравнивая полученные результаты, делаем вывод, достигнута ли требуемая точность.
- Если результаты отличаются друг от друга меньше чем на ε, то требуемая точность достигнута. Если нет, то снова удваиваем n и вычисляем интеграл еще раз (возвращаемся к п. 4).
Ниже представлена блок-схема алгоритма и листинг программы.
a=-3∙ pi,b=0,n=10,e=0.001
f(x)=
S:=0,h:=(b-a)/n,x:=a
i=1,n,1
S:=S+h* (f(x)+f(x+h))/2,x:=x+h
S1=S,n=2*n,x:=a,h:=(b-a)/n
i=1,n,1
S:=S+h* (f(x)+f(x+h))/2,x:=x+h
|S1-S|<e
ложь
истина
Печать S,n
program pr4;
uses crt;
var
h,a,b,S,dS,P,x,eps:real;
n,i:integer;
function f(x:real) : real;
begin
f:=0,1*sin(0.1*x+0.0025*x*x)/cos(0.1*x+0.0025*x*x);
end;
begin
clrscr;
writeln('input a,b,n,eps, please');
write('a');
readln(a);
write('b');
readln(b);
write('n');
readln(n);
write('eps');
readln(eps);
s:=0;
repeat P:=S;
h:=(b-a)/2;
S:=0;
x:=a;
for i:= 1 to n do
begin
x:=x+h;
S:=S+f(x);
end;
S := S*h;
write('n=',n:3,' h=',h:12:9);
n:=n*2;
until abs(P-S)/(s*100)<eps;
writeln;
writeln('Result S=',S:10:6,' dS=',dS:12:9);
writeln;
writeln('Process ended');
writeln('Press any key to exit');
repeat until keypressed;
end.
Данная задача была решена также в MS Excel. Лист с решением задачи приведен ниже. Требуемая точность была достигнута при n=10.
Дана прямоугольная матрица Ci, j, размером . Если данная матрица является квадратной, найти сумму элементов главной диагонали, в противном случае найти сумму всех членов матрицы.
РЕШЕНИЕ
Составим схему алгоритма.
начало
m, n
i= 1 до m
j= 1 до n
C
m = n
«прямоугольная»
«квадратная»
S = 0
i = 1 до m
S = 0
i = 1 до m
j = 1 до n
j = i
S = S + C
S = S + C
S
конец
Program Lab_5;
uses crt;
var
i,j,m,n:integer;
b,a : array[1..10,1..10] of real;
s : real;
begin
clrscr;
write ('chislo stolbcov n='); Readln(n);
write ('chislo strok m='); readln (m);
begin
if m=n then
s:=0;
for i := 1 to n do
begin
for j := 1 to m do
begin
write('a[',i,',',j,']='); readln(a[i,j]);
end;
writeln;
end;
begin
if i=j then s:=s+a[i,j];
writeln(s:6:3);
end;
if i<>j then
begin
s:=0;
for i := 1 to n do
begin
for j := 1 to m do
begin
s:=s+a[i,j];
end;
writeln(s:6:3);
end;
end;
readln;
end;
end.
Данная задача была решена также в MS Excel. Лист с решением задачи приведен ниже.
Вывод
При выполнения курсовой работы я научился разрабатывать, обоснование, представление, анализ и тестирование.
1) Разработка – должна осуществляться в соответствии с принципом структурного проектирования (пошаговая детализация) Структурное проектирование – это методология разработки алгоритма, представляющая их как совокупность модулей. Основные принципы структурного проектирования(СП):1. Принцип разделения. – алгоритм делится на модули, причём модуль — это простой независимый фрагмент алгоритма, физически и логически отделённый от других, реализующий одну часть задачи, допускающий независимую проверку. 2. Принцип пошаговой детализации алгоритма – задача разбивается на отельные подзадачи и у каждой подзадачи свой алгоритм, если подзадача отказывается сложной, она опять делиться на под-подзадачи, до тех пор, пока подзадачи не оказываться простыми для реализации.2) Обоснование предполагает доказательство того, что алгоритм эффективный.3) Представление – это запись алгоритма на конкретном языке программирования, либо в виде схемы. Существует 3 способа представления алгоритма.1. Словесное представление – описание алгоритма по пунктам.2. Алгоритмическое представление (на языке программирования).3. Структурная схема алгоритма.4) Анализ и тестирование – этот этап означает доказательство правильности алгоритма и его тестирование на различных наборах данных. Ошибки в алгоритмах бывают 2х типов:1. Синтаксические – неверная запись команды.2. Логические ошибки – для решения выбран неправильный путь. Тестирование алгоритма – процесс тестирование алгоритма с целью найти в нём баги. Задача тестирование – это найти компромиссное решение, тесть минимальный набор тестовых данных для нахождения максимального количества ошибок. Правило оформление схемы алгоритма описаны в ГОСТе 10.701-90 имеется 3 этапа символов.
1. Предопределённый 2. Пояснительный текст 3. Соединительные линии.
1) К предопределённы относятся основные символы (когда не известен вид или тип процесса, или носителя), и специфические, когда известен точный вид.
Схема – это графическое представление метода решения задач, в котором используются графическое символы, для отображения операций данных и так далее.