
- •Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Тамбовский государственный технический университет»
- •Пояснительная записка
- •Подпись, дата инициалы, фамилия
- •Математическое описание методов
- •2.1 Метод половинного деления при приближенном вычислении алгебраических и трансцендентных уравнений
- •2.2 Вычисление определенного интеграла по формуле трапеции
- •2.3 Метод Эйлера для вычисления дифференциального уравнения
- •4 Описание стандартных функций
- •5 Описание нестандартных функций
- •5.1 Метода половинного деления объект Tpoldel
- •5.2 Метод трапеции объект Tmettrap
- •5.3 Метода Эйлера объекта Teyler
- •6 Описание интерфейса
- •7 Численные примеры
7 Численные примеры
Все выше перечисленное в данной курсовой работе проиллюстрировано на конкретных примерах.
1. Проверку правильности работы программы, реализующей метод половинного деления, проведем с использованием электронных таблиц Excel.
Microsoft Excel предназначен для быстрых расчетов. Он позволяет с использованием мастера функций получать значения функций, а с использованием мастера диаграмм строить графики функций.
Для отделения корней уравнения построим график заданной функции на интервале [1;2]. Таблица для построения графика и график функции приведены ниже.
Таблица 1 – Данные для построения графика в заданном интервале.
Х |
1 |
1,1 |
1,2 |
1,3 |
1,4 |
1,5 |
1,6 |
1,7 |
1,8 |
1,9 |
2 |
У |
-8 |
-7,25 |
-6,39 |
-5,42 |
-4,34 |
-3,12 |
-1,78 |
-0,31 |
-1,31 |
-3,08 |
5 |
Рисунок
6 – График функции
.
Для
получения решения в Microsoft
Excel
спроектируем таблицу 2.
Таблица 2– Решение нелинейного уравнения методом
половинного деления.
a |
b |
(a+b)/2 |
f(a) |
f(b) |
F((a+b)/2) |
E|a-b| |
1 |
2 |
1,5 |
-8 |
5 |
-1,5 |
1 |
1,5 |
2 |
1,75 |
-3,125 |
5 |
0,9375 |
0,5 |
1,5 |
1,75 |
1,625 |
-3,125 |
0,484375 |
-1,3203125 |
0,25 |
1,625 |
1,75 |
1,6875 |
-1,427734375 |
0,484375 |
-0,4716797 |
0,125 |
1,75 |
1,6875 |
1,71875 |
0,484375 |
-0,499267578 |
-0,0074463 |
0,0625 |
1,75 |
1,71875 |
1,734375 |
0,484375 |
-0,014434814 |
0,23497009 |
0,03125 |
1,734375 |
1,71875 |
1,726563 |
0,233211517 |
-0,014434814 |
0,10938835 |
0,015625 |
1,726563 |
1,71875 |
1,722656 |
0,108950138 |
-0,014434814 |
0,04725766 |
0,0078125 |
1,722656 |
1,71875 |
1,720703 |
0,047148287 |
-0,014434814 |
0,01635674 |
0,00390625 |
1,720703 |
1,71875 |
1,719727 |
0,016329415 |
-0,014434814 |
0,0009473 |
0,001953125 |
1,719727 |
1,71875 |
1,719238 |
0,000940473 |
-0,014434814 |
-0,0067472 |
0,000976563 |
1,719238 |
1,719727 |
1,719482 |
-0,006748877 |
0,000940473 |
-0,0029042 |
0,000488281 |
1,719482 |
1,719727 |
1,719604 |
-0,002904629 |
0,000940473 |
-0,0009821 |
0,000244141 |
1,719604 |
1,719727 |
1,719666 |
-0,000982185 |
0,000940473 |
-2,086E-05 |
0,00012207 |
Результатом
расчетов по таблице получаем значение
корня уравнения
при заданной точности вычисления
.
Проведем проверку правильности
результата:
5.08553+5,91454-11=0,00007.
Полученное значение показывает, что при заданной погрешности полученный корень уравнения дает результат не превышающий заданную погрешность.
Также в правильности полученного решения можно убедиться анализируя график функции. Как видно из графика функции решение находится где-то в районе 1,7.
2.
Вычисление определенного интеграла на
отрезке [-3;8] методом трапеции функции
вида
с использованием математического
процессора Maple V. Maple - программный пакет,
система компьютерной алгебры. Система
Maple предназначена для символьных
вычислений, хотя имеет ряд средств и
для численного решения дифференциальных
уравнений и нахождения интегралов.
Численное интегрирование выполняется
командой evalf(int(f,
x=x1..x2), e) , где
e
- точность вычислений (число знаков
после запятой).
Результатом расчетов в процессоре Maple V получаем определенный интеграл, который равен 179.6666667.
Рисунок 7 – Результат решения с использованием
математического процессора Maple V.
3
.
Решая дифференциальное уравнение
методом Эйлера, и зная, что y(0,5)=0,5
[0,5;3,5] h=0,3,
получаем
таблицу значений и график этой
функции для заданной последовательности
аргументов при помощи выше описанной
программы Microsoft
Excel.
Таблица для построения графика и график
функции приведены ниже.
Таблица 3– Решение дифференциального уравнения методом Эйлера.
x |
0,5 |
0,8 |
1,1 |
1,4 |
1,7 |
2 |
2,3 |
2,6 |
2,9 |
3,2 |
3,5 |
y |
0,5 |
1,1 |
1,262 |
1,369 |
1,447 |
1,508 |
1,555 |
1,594 |
1,627 |
1,654 |
1,677 |
Рисунок 8 – График дифференциального уравнения .
ЗАКЛЮЧЕНИЕ
В заключение хотелось бы отметить, что используя методы объектно-ориентированного программирования и изучив методы половинного деления, вычисление интеграла методом трапеции и метод Эйлера программы получились не универсальными. Каждая программа настроена на работу с соответствующим уравнением, и чтобы изменить его потребуется переписать и перекомпилировать программу.
В объектно-ориентированном подходе основная категория объектной модели - класс - объединяет в себе на элементарном уровне как данные, так и операции, которые над ними выполняются (методы). Именно с этой точки зрения изменения, связанные с переходом от структурного к объектно-ориентированному подходу, являются наиболее заметными. Разделение процессов и данных преодолено, однако остается проблема преодоления сложности системы, которая решается путем использования механизма компонентов.
СПИСОК
ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
Бахвалов, Жидков, Кобельков. Численные методы. 2003 год.
2 М.А. Черкасов. Практический курс программирования на ПАСКАЛЕ. Уч. пособие. 2005 год.
3 Епанешников А.Е., Красильников Ю.И. «Программирование в среде турбо Паскаль». М.: Центр МИФИ СП Диалог, 2008.
4 Рудикова Л.В. Microsoft Excel для студента. Уч. пособие. 2009 год.
ПРИЛОЖЕНИЕ
Program glav;
uses crt,modpoldel,modmettrap,modeyler;{объявление модулей}
var n: integer;
j:Tpoldel;
l:Tmettrap;
e:Teyler;
begin
repeat
clrscr;{очистка экрана}
write('Vvedite 1 - poldel,2 - mettrap,3 - eyler ');
read(n);{определение выбора}
if n=1 then j.poldel;{расчет методом половинного деления}
if n=2 then l.mettrap;{расчет по формуле трапеции}
if n=3 then e.eyler;{расчет методом Эйлера}
until (n=1) or (n=2) or (n=3);
end.
unit
modpoldel;{модуль половинного деления}
interface
uses crt;
Type
Tpoldel=class
a,b,c,x,e:real;
function F(x:real):real;
procedure poldel;
end;
implementation
function Tpoldel.F(x:real):real;
begin
F:=x*x*x+2*x*x-11;
end;
procedure Tpoldel.poldel;
begin
clrscr;
writeln('Найти корень уравнения x^3+2*x*x-11=0 на интервале [1;2] с точностью 0.0001');
a:=1;
b:=2;
e:=0.0001;
repeat
c:=(a+b)/2;
if F(a)*F(c)<=0 then
b:=c
else
a:=c;
until b-a<e;
x:=(a+b)/2;
writeln('x=',x);
readln;
end;
end.
unit modmettrap;{модуль формула трапеции}
interface
uses crt;
Type
Tmettrap=class
a,b,k,s,e:real;
function F(x:real):real;
procedure mettrap;
end;
implementation
function Tmettrap.F(x:real):real;
begin
F:=x*x;
end;
procedure Tmettrap.mettrap;
begin
clrscr;
a:=-3;
b:=8;
e:=0.0001;
s:=(F(a)+F(b))/2;
k:=a-e;
while k<=b+e do
begin
k:=k+e;
s:=s+F(k);
end;
s:=s*e;
write('S=',s:0:9);
readln
end;
end.
unit modeyler; {модуль Эйлер}
interface
uses crt;
Type
TEyler=class {в другом паскале пишем object}
h,x,y,a,b,k,s,e:real;
function F(x,y:real):real;
procedure eyler;
end;
implementation
function TEyler.F(x,y:real):real;
begin
F:=1/(x*x+y*y);
end;
procedure TEyler.eyler;
begin
clrscr;
h:=0.3;
b:=3.5;
x:=0.5;
y:=0.5;
while x<=b do
begin
writeln('x=',x:0:9,'y=',y:0:9);
y:=y+F(x,y)*h;
x:=x+h;
end;
readln
end;
end.