Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курсач Юлин / Метод парабол

.doc
Скачиваний:
31
Добавлен:
10.12.2013
Размер:
31.74 Кб
Скачать

Федеральное агентство образования Российской Федерации

Пермский государственный технический университет

Кафедра «Динамика и прочность машин»

ПРАКТИЧЕСКАЯ РАБОТА

«Программная реализация метода парабол отыскания корней алгебраических и трансцендентных уравнений»

Выполнила:

ст. ФПММ гр. ДПМ-03

Михута Ю.С.

Проверила:

Шевелев Н. А.

Пермь 2007

Программа:

program metod_parabol;

uses crt;

const eps=0.00001; n=6;

var f0,f1,f2,fm,x0,x1,x2,x3,z,g,l,l12,d,h1,h2: extended;

root: array [1..n] of extended;

quantity: array[1..n] of integer;

i: integer;

function f(x: extended; n:integer): extended;

var ii: integer;

ff: extended;

begin

ff:=cos(x);

if n<>1 then for ii:=1 to n-1 do ff:=ff/(x-root[ii]);

f:=ff;

end;

begin

clrscr;

textcolor(4);

writeln('KopHu ypaBHeHu9I:');

writeln;

for i:=1 to n do

begin

x1:=-2; x2:=3; x3:= 5;

f1:=f(x1,i);

f2:=f(x2,i);

repeat

quantity[i]:=quantity[i]+1;

fm:=f(x3,i);

x0:=x1; x1:=x2; x2:=x3;

f0:=f1; f1:=f2; f2:=fm;

h1:=x1-x0; h2:=x2-x1; l:=h2/h1; d:=1+l;

g:=f0*l*l-f1*d*d+f2*(d+l);

z:=g*g-4*f2*d*l*(f0*l-f1*d+f2);

if g>0 then l12:=(-2*f2*d)/(g+sqrt(abs(z))) else l12:=(-2*f2*d)/(g-sqrt(abs(z)));

x3:=x2+l12*h2;

if x3=0 then exit;

until abs((x2-x3)/x3)<eps;

root[i]:=x3;

textcolor(15);

write(i,':');

write(root[i]:4:6);

writeln(' iterations quantity:=',quantity[i]);

end;

writeln;

textcolor(14);

writeln('press any key to exit...');

readln;

end.

Примеры:

1. f(x) = sin(x)*sh(x)

Корни уравнения:

x1 = 0

x2 = 0

x3 = 3.141593

x4 = -3.141593

x5 = 6.283185

x6 = -6.283185

2. f(x) = 1+2sin(x)

Корни уравнения:

x1 = -0.523599

x2 = -2.617994

x3 = 5.759587

x4 = -6.806784

x5 = 9.948377

3. f(x) = cos(x)

Корни уравнения:

x1 = -1.570796

x2 = 4.712389

x3 = 1.570796

x4 = -4.712389

x5 = -7.853982

4

Соседние файлы в папке Курсач Юлин