О САЙТЕ
Добро пожаловать!

Теперь вы можете поделиться своей работой!

Просто нажмите на значок
O2 Design Template

ФЭА / АИТ / Лабораторная работа №1 Вариант №4 Задание: 5*sin(x) = x;

(автор - student, добавлено - 25-01-2014, 17:06)

 

СКАЧАТЬ ПРОГРАММА В АРХИВЕ:  laba-1.zip [126,38 Kb] (cкачиваний: 24)

 

 

 

Лабораторная работа №1

Вариант №4

 

Задание:

            5*sin(x) = x;

1) Отделить графически корни уравнения.

 

На графике видно, что данное уравнение имеет три корня, из которых два лежат в интервалах:[-3;-2], [2;3]. А один известный – это ноль.

 

2) Отделить корни уравнения машинным способом.

            Исходный код:

Program ocenit;

Uses CRT;

Var

   a,b,n:integer;

   y,x,h,c,z:real;

   i:boolean;

Function f(t:real):real;

 begin

  f:=5*sin (t)-t;

 end;

BEGIN CLRSCR;

 i:=false;

 Write ('(a,b):');

 Readln (a,b);

 Write ('n=');

 Readln (n);

 h:=(b-a)/n;

 x:=a;

  Repeat

   c:=f(x);

   y:=x+h;

   z:=f(y);

   if z*c<0

   then Writeln ('[',x:1:1,';',y:1:1,']');

   if (c=0) and (i=false)

   then

    begin

     Writeln (x:1:1);

     i:=true;

    end;

   x:=x+h;

  Until y>=b;

 Readln;

END.

Интервалы, полученные по средствам программы, совпадают с интервалами графического метода.

 

3) Для уточнения корней до нужной точности методом половинного отрезка, используется следующая программа:

Program half_method;

Uses CRT;

Var

   a,b,x,e,c,z:real;

Function f(t:real):real;

 begin

  f:=5*sin (t)-t;

 end;

BEGIN CLRSCR;

 Write ('(a,b):');

 Readln (a,b);

 Write ('e=');

 Readln (e);

 if (e=0) or (b<a) then begin

              Write ('It can not be!');

              Readln;

              exit;

             end;

  Repeat

   c:=f(a);

   x:=(a+b)/2;

   z:=f(x);

   if z*c<0

   then b:=x

   else a:=x;

  Until (b-a)<=e;

  Writeln ('x=',x:2:4,' f(x)=',z:2:4);

 Readln;

END.

Результатом работы программы на отрезке [-3;-2] с точностью Е=0.001 было значение:  , а на отрезке [2;3] с той же точностью:  

 

Для уточнения корней до нужной точности методом касательных, используется следующая программа:

 

Program kasat;

Uses CRT;

Var

   a,b,e,x,y:real;

   i:boolean;

Function f(t:real):real;

 begin

  f:=5*sin (t)-t;

 end;

Function f_1 (p:real):real;

 begin

  f_1:=5*cos(p)-1;

 end;

BEGIN CLRSCR;

 i:=false;

 Write ('(a,b):');

 Readln (a,b);

 Write ('e=');

 Readln (e);

 if (e=0) or (b<a) then begin

              Write ('It can not be!');

              Readln;

              halt;

             end;

 if (a-(f(a)/f_1(a)))<b

 then x:=a

 else x:=b;

  Repeat

   y:=(x-(f(x)/f_1(x)));

   if abs(y-x)<=e then i:=true

   else x:=y;

  Until i=true ;

  Writeln ('x=',x:2:4,' f(x)=',f(x):2:4);

 Readln;

END.

Результатом работы программы на отрезке [-3;-2] с точностью Е=0.001 было значение: , а на отрезке [2;3] с той же точностью:

 

f(-2.5967)=0.0050…                f(2.5967)=-0.0050…

f(-2.5958)=0.0004…                f(2.5958)=-0.0001…

0<0.0004…<0.0050…             -0.0050…<-0.0001…<0

Следовательно, второй метод (касательных) более точный, так как значения функции ближе к нулю.

 

Ответ:  

 

 

 


Ключевые слова -


ФНГ ФИМ ФЭА ФЭУ Яндекс.Метрика
Copyright 2021. Для правильного отображения сайта рекомендуем обновить Ваш браузер до последней версии!