Начало вычислительного процесса. Конец вычислений.
Начало |
Конец |
Блок обмена информацией;
ввод данных и вывод результатов.
Вычислительный блок;
выполнение операции или группы
операций вычислительного процесса.
Алгоритмический блок; Логический блок;
выбор направления выполнения алгоритма
в зависимости от условия.
Циклический блок;
организует многократное выполнение
вложенных блоков.
Алгоритм - предписание, однозначно задающее процесс преобразования исходной информации в виде последовательности элементарных дискретных шагов, приводящих за конечное число их применений к результату. Любой алгоритм можно представить как совокупность некоторых базовых, т.е. основных структур таких как: следование, ветвление и цикл.
Программа -алгоритм решения задачи записанный на понятном машине языке в виде точно определенной последовательности операций - программы для ЭВМ. Составление программ (программирование) обычно производится с помощью промежуточного (алгоритмического) языка. В алгоритмах и программах для обозначения данных используются переменные, которым даются уникальные имена (идентификаторы). Алгоритмы будем представлять в виде блок-схем, а программы записывать на языке программирования MATLAB. Программа в MATLAB оформляется в виде М-файла и осуществляет необходимые операции над массивами. Массив представляет собой набор переменных с одним именем, одним типом и разными индексами. Каждая переменная называется элементом массива. Количество хранящихся в массиве элементов называется размером массива.
2 |
На блок-схеме 1 в верхней части показаны исходные значения переменных и правильныеответы, а в нижней части показаны еще раз исходные значения переменных и функция.
По блок-схеме 1 составлена программа. Она состоит из следующих частей:
GLAV главная управляющая функция, вызывает остальные по мере необходимости;
DATA содержит исходные данные, объявленные как глобальные переменные. Эти же переменные объявлены как глобальные в GLAV. После вызова в GLAV функции DATA эти переменные получают значения (инициируются);
fun_BS_1 функция осуществляющая вычисления в соответствии с блок-схемой 1;
f функция указанная в блок-схеме как f(x)=x2-5;
REPORT функция обеспечивающая вывод данных (результатов и дополнительной информации).
function DATA %исходные данные
global a b eps n_plot_dots; %глобальные переменные
a=2;
b=3;
eps=0.0001;%точность расчета
n_plot_dots=101;%количество точек графика
end
function [ fx ] = f(x)%функция корни f(x)=0 ищем
fx=x.^2-5;%поставлена точка для поэлемент. выполн.-я действий
end
function [ x, fx ] = fun_BS_1(a, b, eps)
fa=f(a);
for i=1:100 %цикл со счетчиком ограничивает нас 100 повторов
x=(a+b)/2;
if fa*f(x)<0
b=x;
else
a=x;
end % if
if abs(b-a)>eps %проверка условия прерывания цикла
i %вывод числа выполненных итераций
break %прерывание цикла
end% if
end % for i
x=(a+b)/2;
fx=f(x);
end % function
function GLAV_BS_1 %главная исполняемая программа
global a b eps x fx n_plot_dots;
DATA;%задаются исходные данные из файла DATA
[ x, fx ] = fun_BS_1(a, b, eps);%вызов функции
REPORT;%вызов вывода результатов
end
function REPORT %вывод результатов
global a b eps x fx n_plot_dots;
xmas=zeros(n_plot_dots);%задаем массив из нулей нужного
fmas=zeros(n_plot_dots);% размера
disp('Arguments');
disp(['a = ' num2str(a,'%10.5f') ]);%функция num2str
disp(['b = ' num2str(b,'%10.5f') ]);% преобразует число в
disp(['eps = ' num2str(eps,'%10.5f') ]);% строку символов,
disp('Results'); % указываем '%10.5f' формат вывода (число с
disp(['x = ' num2str(x,'%10.5f') ]);% заданным количеством
disp(['fx = ' num2str(fx,'%10.5f') ]);%знаков после запятой
h=(b-a)/(n_plot_dots-1);
for i=1:n_plot_dots
if i==1
xmas(i)=a;
else
xmas(i)=xmas(i-1)+h;
end %if
fmas(i)=f(xmas(i));
end
disp(' i x fx ');
disp('_____________________________')
i=0;
for i=1:length(xmas)%вывод таблицы результатов, строки
xx=xmas(i);%формируются командой sprintf, указаны
ffx=fmas(i);%форматы вывода перемнных и табуляция между
disp(sprintf('%10.3f\t%10.3f\t %10.3f',i,xx,ffx));%ними
end %for
plot(xmas,fmas,'r.');%вывод графика функции
grid on;
xlabel('x');
ylabel('y');
title('Block shem #1');
end