3 лаба в паскале (Отчёт)

Посмотреть архив целиком




Лабораторная работа №3:

Сравнение приближённых методов

решений уравнений f(x)=0.

Нахождение экстремума методом «Злотого сечения».








Разработал:

Лапин Руслан Сергеевич

МТ8-32






















МГТУ им. Н.Э.Баумана, 2009

Теория:


Метод деления отрезка пополам.

Делим [a,b] пополам => c=(a+b)/2 – середина отрезка. Если f(a)*f(c)<0, то в качестве следующего отрезка выбираем [a,c], в противном случае – отрезок [c,b].

Обозначим следующий рассматриваемый отрезок как [bt,at].

Вычисления продолжаются до тех пор, пока (bt-at)>ε.

Ответом будет являться (at+bt)/2.



Метод касательных.

В точке [] графика функции y=f(x) проводится касательная. Точка её пересечения с осью OX берется за . После чего процесс повторяется.

Из уравнения касательной легко вывести, что

Не сложно догадаться , что последовательность {} сходится к корню ф-ии f(x).



Нахождение экстремумов методом “Золотого сечения”.

Унимодальная функция на отрезке [a,b]-функция, имеющая на отрезке [a,b] один экстремум.

Свойство, на котором основан метод:

Пусть f(x) унимодальна на [a,b], а α и β (α< β) произвольные точки [a,b].Тогда, eсли f(α)<f(β),то f(x) унимодальна на [a, β], в противном случае – на [α,b].


В методе «Золотого сечения» точки α и β определяются из условия:

из которого следует , что

=>

Когда результат вычислений будет удовлетворять условию

получим ответ





Условия варианта №6:


f(x)=x3+3*x2-24*x+10;







График:



Текст программы:



program root_of;


{$APPTYPE CONSOLE}


uses

SysUtils;


var a,b,c,e,d,x,sieg:real;

k1,k2,k3,k4,k5,k6:byte;

function f1(x1:real):real;

begin

f1:=1*x1*x1*x1+3*x1*x1-24*x1+10;

end;


function f2(x2:real):real;

begin

f2:=3*x2*x2+6*x2-24;

end;


begin

writeln('f = x^3+3x^2-24x+10');

e:=0.0001;

writeln;

writeln('Korni yravnenia:');

writeln;

writeln('Metod delenia otrezka popolam');

writeln;

a:=-8;

b:=-4;

k1:=0;

repeat

c:=(a+b)/2;

if f1(a)*f1(c)<0

then b:=c

else a:=c;

x:=(a+b)/2;

k1:=k1+1;

until abs((b-a))

writeln('Perviy koren = ',x:7:4,', pri =',e:6:4, ', kol-vo pribligenii = ',k1:2);

a:=0;

b:=2;

k2:=0;

repeat

c:=(a+b)/2;

if f1(a)*f1(c)<0

then b:=c

else a:=c;

x:=(a+b)/2;

k2:=k2+1;

until abs((b-a))

writeln('Vtoroy koren = ',x:7:4,', pri =',e:6:4, ', kol-vo pribligenii = ',k2:2);

a:=2;

b:=4;

k3:=0;

repeat

c:=(a+b)/2;

if f1(a)*f1(c)<0 then b:=c

else a:=c;

x:=(a+b)/2;

k3:=k3+1;

until abs((b-a))

writeln('Tretiy koren = ',x:7:4,', pri =',e:6:4, ', kol-vo pribligenii = ',k3:2);

writeln;

writeln('Metod kasatelnih');

writeln;

a:=-10;

k4:=0;

repeat

x:=a-f1(a)/f2(a);

if (x-a)>0 then sieg:=1;

if (x-a)=0 then sieg:=0;

if (x-a)<0 then sieg:=-1;

d:=f1(x)*f1(x+sieg*e);

a:=x;

k4:=k4+1;

until d<0;

writeln('Perviy koren = ',x:7:4,', pri =',e:6:4, ', kol-vo pribligenii =',k4:2);

a:=-1;

k5:=0;

repeat

x:=a-f1(a)/f2(a);

if (x-a)>0 then sieg:=1;

if (x-a)=0 then sieg:=0;

if (x-a)<0 then sieg:=-1;

d:=f1(x)*f1(x+sieg*e);

a:=x;

k5:=k5+1;

until d<0;

writeln('Vtoroy koren = ',x:7:4,', pri =',e:6:4, ', kol-vo pribligenii =',k5:2);

a:=10;

k6:=0;

repeat

x:=a-f1(a)/f2(a);

if (x-a)>0 then sieg:=1;

if (x-a)=0 then sieg:=0;

if (x-a)<0 then sieg:=-1;

d:=f1(x)*f1(x+sieg*e);

a:=x;

k6:=k6+1;

until d<0;

writeln('Tretiy koren = ',x:7:4,', pri =',e:6:4, ', kol-vo pribligenii =',k6:2);

readln;

end.



Выполнение кода:



Случайные файлы

Файл
141978.rtf
12739-1.rtf
161014.rtf
143009.rtf
13542-1.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.