Решение алгебраических и трансцендентных . уравнений

Автор: Пользователь скрыл имя, 29 Января 2013 в 12:08, реферат

Краткое описание

Задание:
1. Для каждого уравнения отделить корни графически.
2. Уточнить один корень одного из уравнений с точностью e=0.01 методами половинного деления и простых итераций

Файлы: 1 файл

Лабораторная работа 2 оформл.doc

— 355.00 Кб (Скачать)

ФГОУ ВПО Хакасский  государственный университет им. Н.Ф. Катанова

Институт информационных технологий и инженерного образования

Кафедра Информационных технологий и систем

Дисциплина: Вычислительная математика

Отчет по лабораторной работе №  2 .

Тема:

 Решение алгебраических и трансцендентных .  

 уравнений .

Выполнил студент гр. З-40 .

             Колесникова А.П.                   .

 Проверила:

             Молчанова Е.А.             

 

 

 

 

 

 

 

г. Абакан, 2013 г. 

Задание:

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

2.  Уточнить один  корень одного из уравнений  с точностью e=0.01 методами половинного деления и простых итераций

 

 

 

Решение:

 

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

При отделении корней уравнения графическим способом, действительными корнями уравнения ƒ(x) = 0 являются точки пересечения графика функции ƒ(x) с осью абсцисс.

При этом следует учитывать следующие  положения:

1. Если непрерывная на отрезке  [a,b] функция ƒ(x) принимает на его концах значения разных знаков, т.е. ƒ(a)•ƒ(b)<0 , то уравнение имеет на этом отрезке, по меньшей мере, один корень.

2. Если функция ƒ(x) к тому же еще и монотонна, то корень на отрезке [a,b] единственный.

 

Построим график функции y =

 

Рисунок 1. «График функции y = »

 

 

 

 

 

 

 

 

 

 

 

Построим  график для функции y =

 

Рисунок 2. «График функции y = »

 

 

  1. Отделение корней уравнения.

 

Алгоритм программы  выстроен таким способом, чтобы она считала, что все интересующие нас корни уравнений находятся на отрезке [А;В] на котором функция ƒ(x) определена и непрерывна. Программа отделяет корни уравнения, то есть указывает все отрезки [a;b]є[А;В], содержащие по одному корню.

Она вычисляет значение ƒ(x) начиная с точки x=A, двигаясь вправо с некоторым шагом h. Как только обнаруживает пару соседних значений ƒ(x), имеющих разные знаки, и функция ƒ(x) монотонна на этом отрезке, то соответствующее значение аргумента х (предыдущее и последующее) считает концами отрезка, содержащего корень.

Надежность рассмотренного подхода зависит от характера  функции ƒ(x) и от выбранной величины шага h. Шаг должен быть достаточно малым, чтобы не потерять корни, так как при большой величине корня может оказаться, что ƒ(x)·ƒ(x+h)>0, а на отрезке [x, x+h] имеется два корня. Либо, произведение ƒ(x)·ƒ(x+h)<0, а на отрезке [x, x+h] не один а три (пять, семь и т.д.) корня!

 

Текст программы на языке PASCAL для отделения корня корней уравнения (только для уравнения 3x4+4x3 -12x2+1)


 

program otdelenie;

uses crt;

var a,b,x1,x2,y1,y2,h:real;

    k:integer;

    function f(x:real):real;

begin f:=3*x1*x1*x1*x1*x1+4*x1*x1*x1*x1-12*x1*x1+1;

end;

 

  begin

    clrscr;

    writeln('Введите a,b и h'); readln(a,b,h);

    k:=0; x1:=a; x2:=x1+h; y1:=f(x1);

    while x2<b do

      begin y2:=f(x2);

        if y1*y2<0 then

          begin inc(k);

            writeln(k,'-й корень приблизительно = ',x1:4:2)

          end;

        x1:=x2; x2:=x1+h; y1:=y2;

      end;

    repeat until keypressed;

    readln;

end.

 

 

 

Блок-схема для программы  отделения корня в уравнении ( для уравнения 3x4+4x3-12x2+1)


Рисунок 3. Блок-схема  алгоритма 

программы отделения  корней

для уравнения 3x4+4x3-12x2+1)».

 

 

Рис.4.  « Результат выполнения программы отделения корней

для уравнения 3x4+4x3-12x2+1».

 

 

 

Текст программы на языке PASCAL для отделения корня корней уравнения (только для уравнения x2-20sinx=0)

Блок-схема для программы  отделения корня в уравнении ( для уравнения x2-20sinx=0)



program otdelenie_korney_uravneniya;

uses crt;

function f(x: real): real;

begin

  f:=x*x-20*sin(x); { анализируемое уравнение }

  end;

{ основная  программа }

var a,b,fa,fc,c,eps: real;

begin   clrscr;

  write('Границы интервала изоляции корня - а и b: ');

  readln(a,b);

  write ('Погрешность вычисления корня: '); readln (eps);

   //0,001

  fa:= f(a); { расчет f на левом конце отрезка }

  while b-a > eps do

    begin

      c:=(a+b)/2; fc:=f(c); { делим отрезок пополам }

 

      if fa*fc <= 0 then b:=c

        else

          begin

            a:=c; fa:=fc;

          end;

    end;

  writeln('f =',f (a) :10:3, ' при X= ', a:10:3);

 

  readkey;

end.

 

 

 

 

 

 

 

 

                                                              Рисунок 5. Блок-схема алгоритма

                                                          программы отделения корни

                                                         для уравнений x2-20sinx=0)».

 

 

 

Рис.6.  « Результат выполнения программы отделения корней

для уравнения x2-20sinx=0».

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Уточнение корней уравнений.

 

Метод половинного деления

 

Текст программы на языке PASCAL для уточнения корней уравнения (только для уравнения 3x4+4x3 -12x2+1=0)

Блок-схема для программы уточнения  корней в уравнении ( для уравнения3x4+4x3-12x2+1=0)



 

program uravnenie;

uses crt;

var

x,y,a,b:real;

i:integer;

begin

   clrscr;

   write('Vvedite interval a..b: ');

   readln(a,b);

   writeln('Korni uravneniya: ');

   x:=a;

   while(x<=b) do begin

      i:=i+1;

      y:=3*x*x*x*x+4*x*x*x-12*x*x-1;

      writeln('y',i,' pri x=',x:0:1,' = ',y:0:3);

      x:=x+0.01;

   end;

   readkey;

end.

 

 

 

 

 

 

 

 

 

 

 

                                                                  Рисунок 7. Блок-схема алгоритма 

                                                                       программы уточнения корней

                                                                        для уравнения 3x4+4x3 -12x2+1=0)».

 

 

 

Рис.8.  « Результат выполнения программы уточнения корней

для уравнения 3x4+4x3-12x2+1».

 

 

 

 

 

 

 

 

Текст программы на языке PASCAL для уточнения корней уравнения (только для уравнения x2-20sinx=0

Блок-схема для программы  уточнения корней в уравнении ( для уравнения x2-20sinx=0)


 

program uravnenie;

uses crt;

var

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

i:integer;

begin

   clrscr;

   write('Vvedite interval a..b: ');

   readln(a,b);

   writeln('Korni uravneniya: ');

   x:=a;

   while(x<=b) do begin

      i:=i+1;

      y:=x*x-20*sinx;

      writeln('y',i,' pri x=',x:0:1,' = ',y:0:3);

      x:=x+0.01;

 

   end;

   readkey;

 

end.

 

 

 

 

 

 

 

 

                                                                  Рисунок 9. Блок-схема алгоритма

                                                                       программы уточнения корней

                                                                        для уравнения x2-20sinx=0)».

 

 

 

 

 

 

 

 

 

 

 

Рис.10.  « Результат выполнения программы уточнения корней

для уравнения x2-20sinx=0».

 

 

 

 

 

Метод простых интераций

 

Текст программы на языке PASCAL для уточнения корней уравнения (только для уравнения x2-20sinx=0

Блок-схема для программы  уточнения корней в уравнении ( для  уравнения x2-20sinx=0)


 

uses crt; 

const max_iter=100;

var a,b,e,M,x0,sinx: real;

    k: integer;

   

function f(x: real): real;

begin

result:=x*x-20*sinx;{вот сюда свою функцию};

end;

 

begin

clrscr;

write('a/b/e: ');

 readln(a,b,e);

k:=0;

while (abs(a-x0)>=e)or(k>max_iter) do

  begin

   M:=-(F(a+e)-F(a-e) )/(2*e);

   x0:=a;

   a:=x0+F(x0)/M;

   inc(k);

   writeln('C=', a:3:2,' f(c)=',f(a):3:2);

  end;

if (abs(a-x0)<=e) then

  writeln('C=', a:3:2,' Iteratsiy: ',k)

  else

   writeln('Answer not found!');

 readln;

end.

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                                                            Рисунок 11. Блок-схема алгоритма

                                                                       программы уточнения корней

                                                                        для уравнения 3x4+4x3 -12x2+1=0)».

 

 

Текст программы на языке PASCAL для уточнения корней уравнения (только для уравнения 3x4+4x3 -12x2+1=0)

Блок-схема для программы  уточнения корней в уравнении ( для  уравнения 3x4+4x3 -12x2+1=0)



uses crt;

const max_iter=100;

var a,b,e,M,x0,x: real;

    k: integer;

   

function f(x: real): real;

begin

 result:= 3*x*x*x*x*x+4*x*x*x*x-12*x*x+1;{вот сюда свою функцию};

end;

 

begin

clrscr;

write('a/b/e: ');

 readln(a,b,e);

k:=0;

while (abs(a-x0)>=e)or(k>max_iter) do

  begin

   M:=-(F(a+e)-F(a-e) )/(2*e);

   x0:=a;

   a:=x0+F(x0)/M;

   inc(k);

   writeln('C=', a:3:2,' f(c)=',f(a):3:2);

  end;

if (abs(a-x0)<=e) then

  writeln('C=', a:3:2,' Iteratsiy: ',k)

  else

   writeln('Answer not found!');

 readln;

end.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                                      Рисунок 13. Блок-схема алгоритма

                                                                       программы уточнения корней

                                                                        для уравнения x2-20sinx=0)».

 

 

 

 

 

 

 

Задание 1.2. еще варианты

 

 

program otdelenie_korney_uravneniya;

uses crt;

var a, b, h, x1, x2, y1, y2, sin(x): real;

begin

write ('a=');

readln (a);

write ('b=');

readln (b);

write ('h=');

readln (h);

x1:=a;

repeat

   y1:= x*x-20*sin(x);

   x2:=x1+h;

   if (x2<b) then y2:= x*x-20*sin(x);

   x1:=x2;

until (y1*y2)<0;

writeln ('x=',x1);

 readkey;

end.

 

program otdelenie_korney_uravneniya;

uses crt;

const delta = 0.1;

var

a,b,x1,x2,d:real; n:byte;

function f(x:real):real;

begin

f:=x*x-20sinx

end;

function df(x:real):real;

begin

df:=(f(x+delta)-f(x))/delta

 end;

 

begin

clrscr;

writeln('Отделение корней, введите  концы отрезка');

 write('a=');readln (a); write('b=');readln(b);

writeln('Число промежутков:');

write('n='); readln(n);

d:=(b-a)/n; x1:=a;

repeat

x2:=x1+d;

if (f(x1)*f(x2)<0) and (df(x1)*df(x2)>0) then

 writeln('Промежуток:[ ',x1:6:3,',', x2:6:3, ']');

 x1:=x2

until x2>b;

write('Конец просмотра');readln

end.


Информация о работе Решение алгебраических и трансцендентных . уравнений