Отыскание корня тригонометр уравнения
Министерство
общего и профессионального
Российской Федерации
САМАРСКИЙ ГОСУДАРСТВЕННЫЙ
АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ
имени академика С.П. КОРОЛЕВА
Факультет инженеров воздушного транспорта
Кафедра организации и управления перевозками
Программа
отыскания корня
методом половинного деления на отрезке
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе по информатике
Выполнила студентка гр. 9418
Руководитель курсовой работы
Доцент Давыдов Е.И.
Оценка ______________
_______________________
(Подпись преподавателя)
«___»__________2011 г
Самара
2011
ЗАДАНИЕ
Составить программу отыскания корня уравнения
С заданной точностью методом половинного деления на отрезке (a, b). Предусмотреть графическую иллюстрацию процесса и результатов решения.
РЕФЕРАТ
Курсовая работа.
Пояснительная записка 22с., 6 рис., 2 табл., 6 источников
ТРИГОНОМЕТРИЧЕСКОЕ УРАВНЕНИЕ, МЕТОД ПОЛОВИННОГО ДЕЛЕНИЯ, ОТЫСКАНИЕ КОРНЯ УРАВНЕНИЯ, ПРОГРАММИРОВАНИЕ, TURBO PASCAL 7.0
Разработана программа, рассчитывающая значение корня тригонометрического уравнения методом половинного деления на отрезке (a,b) с заданной точностью ε.
Используется физическая и математическая постановки задачи. Вычисление производится с помощью языка Turbo Pascal 7.0.
Исходные данные по значениям a и b отрезка и точности ε вводятся с клавиатуры. Предусмотрена графическая иллюстрация результатов решения.
СОДЕРЖАНИЕ
Введение………………………………………………………… |
5 |
Основная часть………………………………………… |
6 |
1 Описание программы……………………………… |
6 |
|
6 |
1.2 Физическая постановка задачи…… |
6 |
1.3 Функциональное назначение…………… |
6 |
1.4 Описание логической структуры… |
6 |
1.4.1 Алгоритм программы……………………………… |
6 |
1.4.2 Используемые методы…………………………… |
7 |
1.4.3 Структура программы…………………………… |
7 |
1.5 Вызов и загрузка программы………… |
8 |
1.6 Входные данные………………………………………… |
8 |
1.7 Выходные данные……………………………………… |
8 |
2 Руководство оператора……………………… |
9 |
2.1 Назначение программы………………………… |
9 |
2.2 Условия выполнения программы…… |
9 |
2.3 Выполнение программы………………………… |
10 |
2.4 Сообщение оператору……………………………………………. |
12 |
3 Текст программы……………………………………… |
13 |
Заключение…………………………………………………… |
20 |
Список использованных источников…………………………………. |
21 |
Приложение А. Нахождение корня уравнения методом половинного деления отрезка при заданной точности вычисления с помощью Microsoft Excel…………………………………………….. |
22 |
ВВЕДЕНИЕ
Одной из особенностей сегодняшнего времени является широкое использование средств вычислительной техники в народном хозяйстве. Наибольшее распространение получили персональные компьютеры. На их основе создаются автоматизированные рабочие места, информационно-справочные системы, системы управления производством и т.п. Популярность персональных компьютеров определяется их высокими техническими характеристиками и наличием разнообразных по назначению периферийных устройств. К одному из самых существенных достоинств персонального компьютера можно отнести его графические возможности. Богатая палитра цветов, высокое качество изображения позволяют представлять результаты разработок в привлекательной форме и влиять на ход выполнения программ посредством общения с компьютером в диалоговом режиме.
В данной курсовой работе разработана программа, рассчитывающая значение корня тригонометрического уравнения методом половинного деления на отрезке (a,b) с заданной точностью ε. Используется физическая и математическая постановки задачи. Исходные данные по значениям a и b отрезка и точности ε вводятся с клавиатуры. Предусмотрена графическая иллюстрация результатов решения.
Данная программа может быть полезна студентам, которым необходимо найти корень любого уравнения на заданном промежутке методом половинного деления отрезка.
ОСНОВНАЯ ЧАСТЬ
1 Описание программы
- Общие сведения
Наименование программы: «Программа
отыскания корня
Программное обеспечение, необходимое для функционирования программы: Windows 7, Windows XP, Windows 97 и др.
Язык программирования, на котором написана программа: TURBO PASCAL 7.0
- Физическая постановка задачи
Составить программу отыскания корня уравнения
с заданной точностью методом половинного деления на отрезке (a, b).
- Функциональное назначение
Назначение программы: нахождение корня уравнения на заданном промежутке.
Функциональные ограничения на применение: данную программу можно использовать для решения только приведенного выше уравнения, в противном случае нужно внести небольшие поправки в текст программы.
- Описание логической структуры
- Алгоритм программы
Задается интервал (а,b), на котором существует только одно решение уравнения, и желаемая точность ε. Затем определяется середина заданного интервала и проверяется условие . Если указанное условие выполняется, то правую границу интервала b переносим в среднюю точку c, т.е. b:=c. Если условие не выполняется, то в среднюю точку переносим левую границу, т. е. a=c. Деление отрезка пополам происходит до тех пор, пока .
1.4.2 Используемые методы: метод
половинного деления на
1.4.3 Структура программы с описанием функций составных частей и связи между ними (блок-схема программы). Рисунок 1.
Рисунок 1
- Вызов и загрузка программы
Вызов программы осуществляется с
помощью программной среды
- Входные данные
Ввод исходных данных осуществляется во втором пункте меню программы, Рисунок 2. Входные данные: значения границ интервала a и b, заданная точность вычисления e, все переменные типа real (вещественные данные). Занимают во внутреннем представлении 6 байт; диапазон возможных значений – от 2.9Е-39 до 1.7Е+38; точность представления данных – 11..12 значащих цифр.
Рисунок 2
- Выходные данные
Выходные данные выводятся в 3 пункте меню программы, Рисунок 3. Выходные данные: корень х заданного уравнения на данном промежутке (a,b), вычисленный с точностью е, х – переменная типа real (вещественные данные). Занимает во внутреннем представлении 6 байт; диапазон возможных значений – от 2.9Е-39 до 1.7Е+38; точность представления данных – 11..12 значащих цифр.
Рисунок 3
2 Руководство оператора
2.1 Назначение программы
Программа предназначена для нахождения корня уравнения на заданном промежутке с заданной точностью. Значения левой и правой границы интервала, а также точность вычисления вводятся с клавиатуры.
2.2 Условия выполнения программы
Необходимым условием работы программы является правильный ввод значений границ интервала, в которых будет производиться поиск необходимого решения. Правильный ввод заключается в том, что на заданном промежутке обязательно должен существовать корень уравнения, причем только один. В противном случае программа будет работать неправильно.
2.3 Выполнение программы
Последовательность действий оператора:
Запустить программную среду TURBO PASCAL 7.0, открыть нужный файл, нажать комбинацию клавиш Alt+R, либо Ctrl+F9. Итак, программа запущена, перед оператором появляется диалоговое окно или меню программы, Рисунок 4.
Рисунок 4
Пользователь с помощью
Если пользователь выбрал вкладку «Задание», появляется диалоговое окно, в котором представлены сведения о разработчике программы и сведения о самой программе, Рисунок 5.
Рисунок 5
Если оператор выбрал второй пункт меню, появляется диалоговое окно ввода исходных данных, в котором необходимо ввести значения границ интервала и предполагаемую точность вычисления, Рисунок 2.
Для получения результатов
Для выхода из программы оператор открывает четвертую вкладку. Появляется диалоговое окно с запросом выхода. При нажатии клавиши «Д», программа завершает свою работу, Рисунок 6.
Рисунок 6
2.4 Сообщения оператору
«Для просмотра меню используйте ßà» - сообщение, которое выводится в нижней строке при нахождении пользователя в основном меню программы. Необходимо нажать клавишу вправо или влево для перемещения по пунктам меню.
«Для
выхода в меню нажмите пробел» - сообщение,
которое выводится в нижней строке
при нахождении пользователя в любом
из пунктов меню программы, когда
выполнены все необходимые
«Закончим? Да Нет» - сообщение, которое выводится в виде диалогового окна при нажатии пользователем последнего пункта меню программы, означающее желание выйти из программы. Требуется нажать клавишу «д» в случае, если оператор действительно желает завершить работу с программой, в противном случае, нажать клавишу «н».
3 Текст программы
uses crt;
const
Da=['¤','„','l','L']; Net=['','Ќ','y','Y'];
Sign=['.',',','!','?'];
Enter = #13; esc = #27; Space = #32; BS = #8; Del = #83; Tab = #9;
right=#77; {vpravo} left=#75; {vlevo} punkt=4;
Punkt_Menu:array[1..punkt] of
string=(' Zadanie ',' Vvod dannih ',' Rezultati ',' Exit ');
coord_menu:array[1..punkt] of Byte=(3,20,45,65);
{-----------pushu v zadannyy poziciy------------}
Procedure WriteXY(x,y:byte; s:string);
begin
GoToXY(x,y); write(s);
end;
{-----------------rusovanie okna------------------}
Procedure MyWindow(x1,y1,x2,y2,ColorFon,
frame {ramka}, shadow {ten}:boolean; WinName {name okna}:string);
var i:byte;
begin
if shadow then begin
window(x1+1,y1+1,x2+1,y2+1); TextBackGround(black);
ClrScr;
end;
window(x1,y1,x2,y2); TextBackGround(ColorFon); TextColor(ColorSymbol);
ClrScr;
if frame then begin
window(x1,y1,x2,y2+1);
write('Й'); {alt / +Dop. klava}
for i:=1 to x2-x1-1 do write('Н');
write ('»');
for i:=1 to y2-y1-1 do begin
write ('є'); WriteXY(x2-x1 + 1,i + 1,'є');
end;
write('И');
for i:=1 to x2-x1-1 do write('Н');
write('ј');
WriteXY((x2-x1+2)div 2-Length (WinName) div 2,1,WinName);
window(x1+ 1, y1+1, x2-1, y2-1);
end;
end {MyWindow};
{--------zapolnenie polia cumvolamu--------------}
Procedure Field(ColorFon,ColorSymbol : Byte);
Var x,y:byte;
begin
MyWindow(1,1,80,25,ColorFon,
for y:=1 to 24 do
for x:=1 to 80 do
write('°');
end {Field};
{---vivodit coobshenue u gdet nagatia zadannoi klavushu---}
Procedure WriteMesssage (Message : String;
ColorFon,ColorSymbol : byte;
Code : Char;
NameCode : String;
PressCode:Boolean);
{nado lu kontrolurovat nagatue klavishu}
begin
MyWindow(1,25,80,25,colorFon,
WriteXY(35-(length(NameCode)+
div 2, 1, Message);
TextColor(red+128); write(' ',NameCode);
If PressCode then repeat until ReadKey=Code;
end {WriteMesssage};
{-------------zapros na vixod-----------------------}
Procedure Da_Net (Message : String; {coobshenue}
ColorFon : byte; {cvet fona}
var ch : char); {kakaia nagata clavisha?}
begin
write(Message);
repeat
ch := readkey;
until ch in Da+Net;
end {Da_Net};
{-------------spriach kyrsor------------------}
Procedure HideCursor(ColorFon : byte);
begin
MyWindow(80,25,80,25,ColorFon,
end {HideCursor};
{--------------pokazat kyrsor menu----------------}
Procedure Show_Cursor(posit : byte); {posit - pozicia pynkta menu}
begin
TextBackGround(lightmagenta);
WriteXY(Coord_Menu[posit],1,
end {Show_Cursor};
{------------skrit kyrsor menu----------------}
Procedure Hidden_Cursor(posit : byte);
begin
TextBackGround(lightgray);
WriteXY(Coord_Menu[posit],1,
end {Hidden Cursor};
{--------peremeshenie kyrsor menu vlevo-----------}
Procedure Cursor_Left(var posit : byte);
begin
Hidden_Cursor(posit);
dec(posit); {ymenshaem nomer pozicii na 1}
if posit < 1 then posit:=punkt;
Show_Cursor(posit);
end {Cursor_Left};
{-------peremeshenie kyrsor menu vpravo-----------}
Procedure Cursor_Right(var posit : byte);
begin
Hidden_Cursor(posit); inc(posit);
if posit > punkt then posit:=1;
Show_Cursor(posit);
end {Cursor_Right};
{---------sozdanie pervoi stranici menu-----------}
Procedure Menu (posit:byte);
var i : byte;
begin
Field(blue, lightblue);
WriteMesssage(' Dlya prosmostra menu ispolzyite ',
white,black, #0, '<- ->',False);
MyWindow(1,1,80,1,white,black,
for i:=1 to Punkt do begin
WriteXY(Coord_Menu[i],1,Punkt_
end;
Show_Cursor(posit);
end {Menu};
{======funcziya rascitivaet znachenie argumenta x======}
function f(x:real):real;
begin
f:=2*sin(x)+1;
end;
{====== rascitivaet kolichestvo iterazii======}
Function res(a,b,e:real):real;
var x:real; n:byte;
begin
x:=(a+b)/2;
while abs(b-a)>e do
begin
if f(x)*f(a)<0
then b:=x
else a:=x;
x:=(a+b)/2;
end;
res:=x;
end;
{============vvod peremennoi tipa real================}
Procedure InputReal (npos : Byte; var number :real);
Var S: String;
ErrorCode : Integer;
Ch : Char;
Flag : Boolean;
Begin
Flag := False;
S := '';
Repeat
Ch :=ReadKey;
Case Ch of
BS : If length(S) > 0 then
delete (s, length(s), 1);
Enter : If length(S) > 0 then Flag:=True;
'0'..'9','.': If length(S) < npos then S:=S+Ch;
'-' :if length(s)=0 then S:=S+Ch;
end;
ClrScr; Write(S);
Until Flag;
Val (S, number, ErrorCode);
end;{InputReal}
Procedure FirstPage;
Begin
MyWindow
(6,6,73,9,lightgray,blue,true,
WriteXY (6,1,'Vipolnila: stydentka 9418 gr. Motrinez A.U. ');
WriteXY (6,2, 'Proveril: Davidov E.I.');
MyWindow
(6,12,73,19,lightgray,blue,
WriteXY(4,2, 'Sostavit programmy otiskaniya kornya yravneniya');
WriteXY(16,3, ' 2sin(x)+1=0');
WriteXY(4,4, 's zadannoi tochnostiu metodom polovinnogo deleniya ');
WriteXY(4,5, 'na otrezke (a,b).');
end;
Procedure SecondPage(var a,b,e:real);
begin
MyWindow
(10,8,70,15,lightgray,blue,
WriteXY(6,2,'Vvedite znacheniya a i b otrezka (a;b) ');
WriteXY(10,3,'a = '); WriteXY(26,3,'b = ');
WriteXY(6,5,'Vvedite znachenie tochnosti e ');
WriteXY(10,6,'e = ');
MyWindow(25,11,35,11,
InputReal(7, a);
MyWindow(40,11,50,11,
InputReal(7, b);
MyWindow(25,14,40,14,
InputReal(7, e);
end;
Procedure ThirdPage(var a,b,e,x:real);
begin
MyWindow
(10,8,70,20,lightgray,blue,
WriteXY(6,2,'Znacheniya a i b otrezka (a;b) ');
WriteXY(10,3,'a = '); WriteXY(26,3,'b = ');
WriteXY(6,5,'Znachenie tochnosti e ');
WriteXY(10,6,'e = ');
WriteXY(6,8,'Otvet: znachenie x na zadannom otrezke ');
WriteXY(10,9,'x = '); x:=res(a,b,e);
MyWindow(25,11,35,11,
write(a:7:5);
MyWindow(40,11,50,11,
write(b:7:5);
MyWindow(25,14,40,14,
write(e:7:5);
MyWindow(25,17,35,17,
write(x:7:5);
end;
Procedure Main_Menu;
var q,ch : char;
a,b,e,x:real;
posit : byte;
Program_exit : boolean;
begin
posit := 1; Menu(posit);
Program_exit := false;
repeat
q := ReadKey;
if q = #0 then begin {ypravliaychaia klavisha }
q := ReadKey;
case q of
Right : Cursor_Right (posit); {vpravo}
Left : Cursor_Left (posit); {vlevo}
end;
end
else
if q = Enter then
case posit of
1 : begin
FirstPage; {zadanie}
WriteMesssage (' Dlya vihoda v menu nagmite klavishy ',
lightgray,black,Space, 'probel',True);
Menu(posit); {vozvrat k pervoi stranice}
end;
2 :begin
SecondPage(a,b,e);
WriteMesssage('Dlya vihoda v menu nagmite klavishy ',
lightgray,black,Space,'probel'
Menu(posit); {vozvrat k pervoi stranice}
end;
3 : {rabota}
begin
ThirdPage(a,b,e,x);
WriteMesssage(' Dlya vihoda v menu nagmite kavishy ',
lightgray,black,Space,'probel'
Menu(posit); {vozvrat k pervoi stranice}
end;
4 : {vixod}
begin
MyWindow(1,25,80,25,white,
MyWindow(31,10,49,12,red,
Da_Net(' DA NET ',LightGray,ch);
if ch in Da then Program_exit := true
else begin
WriteMesssage(' Dlya prodolgeniya nagmite ',lightgray,
black,Space,'probel',True);
Menu (posit); {vozvrat k pervoi stranice}
end;
end;
end;
until Program_exit;
MyWindow(1,1,80,25,black,
writeXY(35,10, 'Good bye!');
Delay(2000);
end {Main_Menu};
begin{Glavnui}
Main_Menu;
end.
ЗАКЛЮЧЕНИЕ
Информатике трудно существовать как отдельной науке, она должна помогать другим учебным предметам в развитии познавательного интереса к предмету, в решении логических задач, в обработке результатов лабораторных работ и индивидуальных практических заданий.
В применении информатики к преподаванию других предметов используются в основном две формы работы: привлечение программных средств для контроля знаний учащихся и работа учащихся с обучающими программами. В стороне остаются возможности составления программ самими учащимися для решения тех или иных задач, например, математических. Математика является необходимой базой, которая позволяет глубже вникнуть в суть описываемых физических явлений и закономерностей. Поэтому, на мой взгляд, очень важно иметь навыки написания программ в любой программной среде для расчета каких-либо математических задач.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- СТО СГАУ 02068410-004-2007. Общие требования к оформлению учебных текстовых документов. Методические указания.
- Построение, изложение и оформление программных документов: Методические указания / Автор-составитель В.Д.Еленев; Куйбышев. Авиац. Ин-т. Куйбышев, 1987.
- Фаронов В.В. Турбо Паскаль (в 3-х книгах). Основы Турбо Паскаля. МВТУ – Фесто ДиДактик. Москва, 1992. – 304 с.
- Епанешников А.М., Епанешников В.А. Программирование в среде TURBO PASCAL 7.0. М.: Диалог-МИФИ, 1998.
- ГОСТ 19.505-79.ЕСПД. Руководство оператора.
- ГОСТ 19.401-78. ЕСПД. Текст программы.
Приложение А
Нахождение корня уравнения методом половинного деления отрезка при заданной точности вычисления с помощью Microsoft Excel
Таблица 1
a |
b |
c=(a+b)/2 |
f(a) |
f(b) |
f(с) |
|b-a|<e |
e |
-1,00000 |
0,00000 |
-0,50000 |
-0,68294 |
1,00000 |
0,04115 |
- |
0,00001 |
-1,00000 |
-0,50000 |
-0,75000 |
-0,68294 |
0,04115 |
-0,36328 |
- |
|
-0,75000 |
-0,50000 |
-0,62500 |
-0,36328 |
0,04115 |
-0,17019 |
- |
|
-0,62500 |
-0,50000 |
-0,56250 |
-0,17019 |
0,04115 |
-0,06661 |
- |
|
-0,56250 |
-0,50000 |
-0,53125 |
-0,06661 |
0,04115 |
-0,01322 |
- |
|
-0,53125 |
-0,50000 |
-0,51563 |
-0,01322 |
0,04115 |
0,01384 |
- |
|
-0,53125 |
-0,51563 |
-0,52344 |
-0,01322 |
0,01384 |
0,00028 |
- |
|
-0,53125 |
-0,52344 |
-0,52734 |
-0,01322 |
0,00028 |
-0,00648 |
- |
|
-0,52734 |
-0,52344 |
-0,52539 |
-0,00648 |
0,00028 |
-0,00310 |
- |
|
-0,52539 |
-0,52344 |
-0,52441 |
-0,00310 |
0,00028 |
-0,00141 |
- |
|
-0,52441 |
-0,52344 |
-0,52393 |
-0,00141 |
0,00028 |
-0,00057 |
- |
|
-0,52393 |
-0,52344 |
-0,52368 |
-0,00057 |
0,00028 |
-0,00014 |
- |
|
-0,52368 |
-0,52344 |
-0,52356 |
-0,00014 |
0,00028 |
0,00007 |
- |
|
-0,52368 |
-0,52356 |
-0,52362 |
-0,00014 |
0,00007 |
-0,00004 |
- |
|
-0,52362 |
-0,52356 |
-0,52359 |
-0,00004 |
0,00007 |
0,00002 |
- |
|
-0,52362 |
-0,52359 |
-0,52361 |
-0,00004 |
0,00002 |
-0,00001 |
- |
|
-0,52361 |
-0,52359 |
-0,52360 |
-0,00001 |
0,00002 |
0,00000 |
- |
|
-0,52361 |
-0,52360 |
-0,52360 |
-0,00001 |
0,00000 |
0,00000 |
-0,52360 |
Таблица 2
a |
b |
c=(a+b)/2 |
f(a) |
f(b) |
f(с) |
|b-a|<e |
e |
-3,00000 |
-2,00000 |
-2,50000 |
0,71776 |
-0,81859 |
-0,19694 |
- |
0,001 |
-3,00000 |
-2,50000 |
-2,75000 |
0,71776 |
-0,19694 |
0,23668 |
- |
|
-2,75000 |
-2,50000 |
-2,62500 |
0,23668 |
-0,19694 |
0,01216 |
- |
|
-2,62500 |
-2,50000 |
-2,56250 |
0,01216 |
-0,19694 |
-0,09453 |
- |
|
-2,62500 |
-2,56250 |
-2,59375 |
0,01216 |
-0,09453 |
-0,04169 |
- |
|
-2,62500 |
-2,59375 |
-2,60938 |
0,01216 |
-0,04169 |
-0,01489 |
- |
|
-2,62500 |
-2,60938 |
-2,61719 |
0,01216 |
-0,01489 |
-0,00140 |
- |
|
-2,62500 |
-2,61719 |
-2,62109 |
0,01216 |
-0,00140 |
0,00537 |
- |
|
-2,62109 |
-2,61719 |
-2,61914 |
0,00537 |
-0,00140 |
0,00199 |
- |
|
-2,61914 |
-2,61719 |
-2,61816 |
0,00199 |
-0,00140 |
0,00029 |
- |
|
-2,61816 |
-2,61719 |
-2,61768 |
0,00029 |
-0,00140 |
-0,00055 |
-2,61768 |

- Отягчающее обстоятельство при совершении преступления
- Отягчающие и смягчающие обстоятельства
- Отягчающие обстоятельства
- Отягчающие обстоятельства, характеризующие объективные свойства убийства
- Оферта, акцепт и гарантийное письмо как виды деловых писем
- Офисная информационная сеть
- Офисная эргономика
- Отчеты в приложении Microsoft Access 2010
- Отчеты о движении денежных наличностей
- Отчеты о движении денежных наличностей
- Отчеты о прибылях и убытках
- Отчеты. Отчет о событиях системы. Программное обеспечение GATE Server-Terminal прием - передача информации
- Отчисления во внебюджетные фонды
- Отчитане, представяне и оповестяване на приблизителни оценки и провизии