Автор работы: Пользователь скрыл имя, 31 Мая 2012 в 21:22, курсовая работа
В курсовой работе в соответствии с заданием на проектирование решается задача поиска минимума функции .
В данной пояснительной записке приводится описание последовательности шагов по составлению программы на алгоритмическом языке Turbo Pascal 7.0 и результаты применения этой программы.
Рассматриваются вопросы математической формулировки и алгоритмизации задачи, разработки блок-схемы алгоритма ее решения, составления исходной Pascal-программы и реализация вычислений по составленной программе.
Введение
1. Постановка задачи…………………………………………………….....5
2. Математическая формулировка задачи………………………...………6
3. Алгоритмизация задачи ………………………………………..…...…...8
4. Идентификаторы программы…………………………………………..10
5. Блок – схема алгоритма………………………………………………...11
6. Текст исходной программы…………………………………………….20
7. Результаты выполнения программы…………………………………...25
8. Анализ результатов……………………………………………………..28
9. Инструкция по работе с программой………………………………….29
Заключение
Список использованных источников
Okno(1,1,79,23,6,0);
Writeln('
Writeln(' Данная программа обеспечивает поиск минимума функции N перменных');
Writeln('
методом спирального
Writeln('
интерполяции-экстраполяции.
writeln('
функции. Определить минимум
Writeln('
После перехода в меню
writeln(' необходимый пункт и нажмите <Enter>.');
Writeln('
При выборе пункта меню "Метод
спирального координатного
Writeln('
или "Метод квадратичной
writeln(' данные программа выведет полученные результаты.');
gotoxy(5,20);
write(' Для возврата в меню нажмите любую клавишу...');
ch:=readkey;
End;
Procedure Mymenu;
Begin
clrscr;
textcolor(0);
For i:=1 to 4 do
begin
Gotoxy(20,i+7);
if i=pos then Textbackground(10) else Textbackground(6);
write(Menu[i]);
end;
End;
Procedure Zastavka;
Begin
hiddecursor;
Textcolor(0);
Okno(1,1,79,23,6,0);
gotoxy(3,1);
writeln(' ');
writeln('
Министерство образования
writeln('
Белорусский национальный
gotoxy(1,6);
writeln('
Программа поиска минимума
writeln;
writeln;
writeln;
writeln;
writeln('
writeln(' по дисциплине "Информатика" ');
gotoxy(1,15);
writeln('
writeln('
writeln('
writeln;
writeln;
writeln('
Textcolor(4);
gotoxy(1,25);
writeln(' Для продолжения нажмите <Enter>... ');
readln;
End;
function f (x: coords): real;
begin
f:=sqr(sqr(x[1])+sqr(x[2])-1)+
end;
procedure vvod1(var h, e: real; var x: coords);
var i: integer;
begin
clrscr;
normcursor;
textcolor(0);
writeln('
write (' Шаг='); read (h);
write (' Точность= '); read (e);
for i:=1 to n do
begin
write (' Начальное значение х', i:1, ' ');
read (x[i]);
end;
writeln('Данные введены правильно? (Y/N)');
key:=ord(readkey);
while key<>121 do begin
key:=ord(readkey);
if key=110 then vvod1(h, e, x);
end;
end;
procedure vvod2(var h, e: real; var x: coords);
var i: integer;
begin
clrscr;
normcursor;
textcolor(0);
writeln('
write (' Шаг='); read (h);
write (' Точность= '); read (e);
for i:=1 to n do
begin
write (' Начальное значение х', i:1, ' ');
read (x[i]);
end;
writeln('Данные введены правильно? (Y/N)');
key:=ord(readkey);
while key<>121 do begin
key:=ord(readkey);
if key=110 then vvod2(h, e, x);
end;
end;
procedure Spysk (h, e: real; var x: coords);
var f1, f2: real; i: integer;
begin
s:=1; f1:=0;
f2:=0;
repeat
for i:=1 to n do
begin
repeat
f1:=f (x);
x[i]:=x[i]+h;
f2:=f(x);
until f2>=f1;
end;
h:=(-1)*h/5;
until abs(h)<=e/5;
end;
procedure interpol (h, e: real; var x: coords);
var z, v, w , u, t: real; i: integer;
begin
s:=0;
while S<>1 do begin
for i:=1 to n do
begin
z:=x[i];
v:=f(x);
x[i]:=z-h;
w:=f(x);
x[i]:=z+h;
u:=f(x);
t:=w*(2*z+h)+4*v*z+u*(2*z-h);
t:=t/(w-2*v+u)/2;
if abs(t-z)<e then s:=1;
x[i]:=t;
end;
end;
end;
procedure vyvod1 (var x: coords);
var i: integer;
begin
writeln (' Результаты:');
writeln (' Fmin(x1, x2)', f (x): 16:12);
for i:=1 to n do
writeln (' Xmin[', i:1, '] ', x[i]:16:12);
HiddeCursor;
textcolor(14);
gotoxy(1,24);
writeln(' Для ввода новых значений нажмите <Y>, для выхода в главное меню нажмите <N>');
key:=ord(readkey);
while key<>121 do begin
key:=ord(readkey);
if key=110 then break;
end;
if key=121 then begin vvod1(h, e, x);
Spysk(h, e, x);
vyvod1(x);
end;
end;
procedure vyvod2 (var x: coords);
var i: integer;
begin
writeln (' Результаты:');
writeln (' Fmin(x1, x2)', f (x): 16:12);
for i:=1 to n do
writeln (' Xmin[', i:1, '] ', x[i]:16:12);
HiddeCursor;
textcolor(14);
gotoxy(1,24);
writeln(' Для ввода новых значений нажмите <Y>, для выхода в главное меню нажмите <N>');
key:=ord(readkey);
while key<>121 do begin
key:=ord(readkey);
if key=110 then break;
end;
if key=121 then begin vvod2(h, e, x);
interpol(h, e, x);
vyvod2(x);
end;
end;
BEGIN
Clrscr;
zastavka;
TextMode(3);
11: hiddecursor;
pos:=1;
Okno(1,1,79,23,6,0);
Mymenu;
k10:=readkey;
while k10<>#13 do
begin
Case k10 of
#72: if pos=1 then pos:=4 else pos:=pos-1;
#80: if pos=4 then pos:=1 else pos:=pos+1;
end;
clrscr;
Mymenu;
k10:=readkey;
textbackground(6);
end;
Case pos of
1: spravka;
2: begin vvod1(h, e, x); Spysk(h, e, x); vyvod1(x); end;
3: begin vvod2(h, e, x); interpol(h, e, x);vyvod2(x); end;
4: exit;
end;
goto 11;
END.
После запуска программы в соответствии с поставленной задачей на проектирование выводится окно заставки программы, приведенное на рисунке 2.
Рисунок 2. Окно заставки.
После нажатия любой клавиши выводится окно с меню, представленное на рисунке 3.
Рисунок 3. Окно с меню.
При выборе пункта меню «Справка» открывается соответствующие окно в котором
находится справочная информация о программе. Пример такого окна представлен на
рисунке 4.
Рисунок 4. Окно справки.
При выборе пункта меню «метод спирального координатного спуска» открывается соответствующие окно, в котором вводятся исходные данные и выводятся результаты вычисления. Пример такого окна представлена на рисунке 5 .
Рисунок 5. Вычисление методом спирального координатного спуска.
При выборе пункта меню «метод квадратичной интерполяции-экстраполяции» открывается соответствующие окно, в котором вводятся исходные данные и выводятся результаты вычисления. Пример такого окна представлен на рисунке 6 .
Рисунок 6. Вычисление методом квадратичной интерполяции-экстраполяции.
Для анализа результатов сведем данные нескольких расчетов в таблицу 1.
Таблица 2 – Результаты расчетов
Перемен |
X10 |
X20 |
H |
Е |
1 |
1 |
1 |
0.01 |
0.0001 |
№ |
Метод спирального координатного спуска |
Метод квадратичной интерполяции-экстраполяции | ||
X1min |
0,8259 |
0,8259 | ||
X2min |
0,5635 |
0,5635 | ||
F(x1min, x2min) |
3*10-8 |
3*10-8 |
Информация о работе Программа нахождения минимума функции двух переменных