Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КУРСОВИК ГОТОВ.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
279.01 Кб
Скачать

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 – График дифференциального уравнения .

ЗАКЛЮЧЕНИЕ

В заключение хотелось бы отметить, что используя методы объектно-ориентированного программирования и изучив методы половинного деления, вычисление интеграла методом трапеции и метод Эйлера программы получились не универсальными. Каждая программа настроена на работу с соответствующим уравнением, и чтобы изменить его потребуется переписать и перекомпилировать программу.

В объектно-ориентированном подходе основная категория объектной модели - класс - объединяет в себе на элементарном уровне как данные, так и операции, которые над ними выполняются (методы). Именно с этой точки зрения изменения, связанные с переходом от структурного к объектно-ориентированному подходу, являются наиболее заметными. Разделение процессов и данных преодолено, однако остается проблема преодоления сложности системы, которая решается путем использования механизма компонентов.

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

  1. Бахвалов, Жидков, Кобельков. Численные методы. 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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]