1. Опис програми

Програма складається з двох файлів – polinom.pas і polinom.dat. У файлі polinom.dat записується степень многочлена та його коефіціенти.

Описаняя процедур та функцій:

procedure znach – шукає межі додатніх та ві’ємних коренів;

function znachenie – знаходить значення многочлена в точці;

procedure delenie – відокремлює корені многочлена;

procedure korni – уточнює корені многочлена методом поділу відрізка навпіл;

 

2. Текст програми

 

Uses crt;

type ff=array[0..10] of real;

var f0,f1,f2,f3:ff;

prom,kpol:array[0..100] of real;

fil:text;

i,nf,k,iprom:integer;

n0,n1,n2,n3,b:real;

procedure znach(a100:ff ;var a1:ff); {ищет промижутки}

var i1:byte;

begin

if a100[0]<0 then

for i1:=0 to nf-1 do a100[i1]:=-1*a100[i1];

k:=0;

for i1:=0 to nf-1 do

if a100[i1]<0 then begin k:=i1;break end;

b:=0;

for i1:=0 to nf-1 do

if a100[i1]<0 then if b<abs(a100[i1]) then b:=abs(a100[i1]);

a1:=a100;

 end;

procedure gran(k1:integer;b1,a5:real;var nk:real);{границы}

begin

if (k1<>0)and(b1<>0) then nk:=1+exp(1/k1*ln(b1/a5))

else nk:=0;

end;

function znachenie(a100:ff;xx:real):real; {значение в тч ХХ}

var y:real;

i100:integer;

begin

y:=a100[0];

for i100:=1 to nf-1 do

y:=y*xx+a100[i100];

znachenie:=y;

end;

procedure delenie(a,b:real);

const dx=0.1;

var z,z1,c:real;

begin

iprom:=0;

prom[0]:=a;

While b>a do begin

z:=znachenie(f0,a);

c:=a;

repeat

a:=a+dx;

z1:=znachenie(f0,a);

until (z*z1<0)or(b<a);

if z*z1<0 then begin iprom:=iprom+1;

prom[iprom-1]:=c;

prom[iprom]:=a;

end;

end;

end;

procedure korni(a8,b8:real);

const eps=0.0001;

var x0:real;

begin

x0:=(a8+b8)/2;

while abs(b8-a8)>eps do begin

if znachenie(f0,a8)*znachenie(f0,X0)<0 then begin b8:=x0;end;

if znachenie(f0,x0)*znachenie(f0,b8)<0 then begin a8:=x0;end;

x0:=(a8+b8)/2 end;

kpol[i]:=x0;

end;

begin clrscr;

assign(fil, ‘polinom.dat’);

reset(fil);

write(‘f=’);

readln(fil,nf);

{****************************************}

for i:=0 to nf-1 do {begin }

read(fil,f0[i]);write(f0[i],’ ‘)end;

writeln;

znach(f0,f0);

gran(k,b,f0[0],n0);

{*****************************************}

for i:=0 to nf-1 do f1[i]:=f0[nf-1-i];

znach(f1,f1);

gran(k,b,f1[0],n1);

{******************************************}

for i:=0 to nf-1 do

if odd(nf-1-i)=true then f2[i]:=-1*f0[i]

else f2[i]:=f0[i];

znach(f2,f2);

gran(k,b,f2[0],n2);

{************************************************}

for i:=0 to nf-1 do

if odd(nf-1-i)=true then f3[i]:=-1*f0[nf-1-i]

else f3[i]:=f0[nf-1-i];

znach(f3,f3);

gran(k,b,f3[0],n3);

if n0<>0 then begin

writeln(‘відрізок додатних коренів [‘,1/n1:1:3,’ ; ‘,n0:1:3,’]’);

delenie(1/n1,n0);

for i:=0 to iprom-1 do begin

korni(prom[i],prom[i+1]);

writeln(kpol[i]:1:2{,’ ‘,znachenie(f0,kpol[i]):1:2}); end; end

else writeln('немає додатніх коренів');

if n3<>0 then begin

writeln('Відрізок від’ємних коренів [',-1*n2:1:3,' ; ',-1/n3:1:3,']');

delenie(-1*n2,-1/n3);

for i:=0 to iprom-1 do begin

korni(prom[i],prom[i+1]);

writeln(kpol[i]:1:2,’ ‘,znachenie(f0,kpol[i]):1:2); end; end

else writeln('немає від’ємних коренів');

readkey;

end.

3. Контрольні приклади

 

x3-4x2-7x+10=0

відрізок додатних коренів [0,588;8,000]

1,00

5,00

відрізок від’ємних коренів [-4,162;-0,163]

-2,00

 x5+2x4-5x3+8x2-7x-3=0

відрізок додатних коренів [0,380;3,646]

1,31

відрізок від’ємних коренів [-9,000;-0,273]

-3,91

-0,30

3x5+7x4-8x3+5x2-2x-1=0

відрізок додатних коренів [0,274;2,633]

0,77

відрізок від’ємних коренів [-3,667;-0,111]

-3,31

-0,26

x3-2,8x2-0,35x+3,45-0

відрізок додатних коренів [0,552;3,800]

1,50

2,30

відрізок від’ємних коренів [-9,000;-0,273]

-1,00


Висновок

В курсовій роботі були розглянуті методи наближеного пошуку меж та самих коренів многочлена з дійсними коренями. Можна знайти багато інших методів наближеного знаходження коренів. Один з них найбільш вдосконалим є метод Лобачевського. Цей метод дозволяє знаходити наближення значення всіх коренів відразу, у тому числі і комплексних, причому не потребує відділення коренів; однако він зв’язан з великими обчисленнями.


Література

 

1. А. Г. Курош «Курс высшей алгебры», «Наука», Москва 1975

2. С. Т. Завало, В. М. Костарчук, Б. И. Хацет «Алгебра и теория чисел», Том 1,«Высшая школа», Киев 1974

3. С. Т. Завало, В. М. Костарчук, Б. И. Хацет «Алгебра и теория чисел», Том 2,«Высшая школа», Киев 1976


Информация о работе «Метод наближеного обчислення коренів. Програма»
Раздел: Математика
Количество знаков с пробелами: 12620
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
25929
7
4

... і слід віддати перевагу методу, який, можливо, потребує деяких певних попередніх досліджень і перетворень математичної моделі, але завдяки цьому потребує й значно меншу кількість обчислень. 1.5.2 Алгоритм методу Алгоритмом метода називається система правил, яка задає точно визначену послідовність операцій, яка приводить до шуканого результату (точного або наближеного). Алгоритм - одне із ґ ...

Скачать
28806
1
17

... сть у користуванні та невеликі розміри виконавчого файлу.. Створена нами програма проста та інтуїтивно зрозуміла і легка у користуванні. У пояснювальній записці вповні розглянута проблема пошуку коренів нелінійних рівнянь, наведені необхідні формули та теореми. Крім того, побудовані блок-схеми алгоритмів основних функцій відповідають діючим стандартам і вимогам. Отже, можемо зробити висновок, ...

Скачать
14625
0
7

... іальних програм він не в змозі проводити складні обчислення. Тому постає задача алгоритмізувати поставлене завдання, тобто перевести його в зрозумілу для ЕОМ форму. 1.Короткі теоретичні відомості Існує ряд методів для вирішення нелінійних рівнянь. Найбільшого поширення отримали метод половинного ділення, метод простої ітерації, метод хорд та метод Ньютона. Розглянемо суть цих методів. Метод ...

Скачать
27263
1
5

... чного сплайну. ; . Для знаходження коефіцієнті вкубічного сплайну призначена програма Work2_2. //------------------------------------------------------------ // Work2_2.cpp //------------------------------------------------------------ // "Числові методи" // Завдання 2 // Інтерполювання функції кубічним сплайном #include <stdio.h> #include <iostream.h> #include <conio ...

0 комментариев


Наверх