Рабочая программа, методические указания и контрольные задания по дисциплине «Применение ЭВМ в электротехнических расчетах», страница 8

Оценка точности численного интегрирования выполняется методом повторного счета, т.е. путем двукратного вычисления интеграла – при делении интервала [ab] на n частей и (n+1) частей. Обозначим  – значения определенного интеграла, вычисленные соответственно при n и (n+1) отрезках разбиения;  – требуемую точность интегрирования. Тогда вычисления прекращаются при выполнении условия

                             (7)

В случае невыполнения условия (7) число отрезков интегрирования вновь увеличивается на единицу, и вычисления повторяются.

Ниже приведен текст программы на языке Паскаль.

ProgramIntegPr;

{Численное интегрирование методом прямоугольников}

Const E=0.00001;

Var I,Ip,dI,h,b,a,S:real;

    j,n:integer;

{Подинтегральная функция}

Function F(x:real):real;

begin

 F:=(2*x+6)*cos(x/2);

end;

begin

write (' Пределы интегрирования   a,b=');

readln (a,b);

     Ip:=F(a)*(b-a);n:=1;

   repeat

         n:=n+1;

         h:=(b-a)/n;

         S:=0;

         For j:=0 to n-1 do

             S:=S+F(a+j*h);

         I:=h*S;

         dI:=abs(I-IP);

         Ip:=I

   until dI<E;

     writeln('I=',I:7:4,'n=',n);

end.

ProgramIntegT;

{Численное интегрирование методом трапеций}

Const E=0.00001;

Var I,Ip,dI,h,b,a,S:real;

    j,n:integer;

{Подинтегральнаяфункция}

Function F(x:real):real;

begin

 F:=(2*x+6)*cos(x/2);

end;

begin

write(' Пределы интегрирования   a,b=');

readln (a,b);

     Ip:=(F(a)+F(b))/2*(b-a);n:=1;

   repeat

         n:=n+1;

         h:=(b-a)/n;

         S:=0;

         For j:=1 to n-1 do

             S:=S+F(a+j*h);

         I:=h*(F(a)/2+F(b)/2+S);

         dI:=abs(I-IP);

         Ip:=I

   until dI<E;

     writeln('I=',I:7:4,'n=',n);

end.

Program IntegS;

{Численное интегрирование методом Симпсона}

Const E=0.00001;

Var I,Ip,dI,h,b,a,S1,S2:real;

j,n:integer;

{Подинтегральнаяфункция}

Function F(x:real):real;

begin

 F:=(2*x+6)*cos(x/2);

end;

begin

write (' Пределы интегрирования   a,b=');

readln (a,b);

     Ip:=F(a)*(b-a);n:=0;

   repeat

         n:=n+2;

         h:=(b-a)/n;

         S1:=0; S2:=0;

         For j:=1 to n-1 do

             if j mod 2=1 then S1:=S1+F(a+j*h)

                          else S2:=S2+F(a+j*h);

         I:=h/3*(F(a)+F(b)+4*S1+2*S2);

         dI:=abs(I-IP);

         Ip:=I

   until dI<E;

     writeln('I=',I:7:4,'n=',n);

end.

Задание 3

Задание 3 имеет учебной целью закрепление пройденного материала по теме «Уравнения с одним неизвестным. Метод деления отрезка пополам. Метод хорд. Метод Ньютона».

Условие задания 3. Найти все корни уравнения

методом отделения корней на интервале [-5; 5] с последующим уточнением методами дихотомии, хорд и Ньютона с заданной точностью =0,0001.

Алгоритм выполнения задания.

Отделение корней можно выполнить на основании следующего условия. Если непрерывная на отрезке [ab] функция  принимает на его концах значения разных знаков, т.е.

                                                        (8)

то уравнение имеет на этом отрезке, по меньшей мере, один корень.

При разработке программы реализации метода будем использовать следующий алгоритм.

Пусть требуется указать все отрезки [ab] Î [AB], содержащие по одному корню. Будем вычислять значения , начиная с отрезка ,  и двигаясь вправо с некоторым малым шагом h, т.е., последовательно принимая , . Если обнаружится пара соседних значений , имеющих разные знаки, т.е. выполняется условие (8), и функция  монотонна на этом отрезке, между точками a и b находится корень уравнения. Отделение корней продолжается до выполнения условия .

Уточнение корней может выполняться различными методами, из которых наиболее просто реализуются на ЭВМ и не требуют дополнительного исследования условий сходимости методы дихотомии (половинного деления), хорд и Ньютона (касательных).

Метод дихотомии. Примем  и разделим отрезок [ab] пополам, т.е.

                                                 (9)