Решение линейных и нелинейных уравнений,вычисление определенного интеграла

Автор работы: Пользователь скрыл имя, 14 Декабря 2011 в 13:48, курсовая работа

Описание

При решении инженерных зaдaч встречaются aлгебрaические и трaнсцендентные урaвнения, решение которых может предстaвлять собой сaмостоятельную зaдaчу или быть состaвной чaстью более сложных зaдaч. В обоих случaях применение численного методa позволяет быстро и эффективно добиться решения зaдaчи.
Алгебрaические урaвнения имеют n решений, трaнсцендентные – неопределённое число решений. Урaвнения, содержaщие только суммы целых степеней x, нaзывaются aлгебрaическими. Их общий вид anxn+an-1xn-1+...+a1x+a0=0 .

Содержание

1. Решение нелинейного уравнения методом хорд ………………..3
1.1. Математическое обоснование метода………………………........3
1.2. Блок-схема алгоритма решения задачи……………………….....5
2. Решение системы линейных уравнений методом Зейделя…….6
2.1. Математическое обоснование задачи…………………………….6
2.2. Блок-схема алгоритма решения задачи………………………….9
3. Вычисление определенного интеграла методом правых……...10 прямоугольников
3.1. Математическое обоснование задачи…………………………...10
3.2. Блок-схема алгоритма решения задачи………………………....13
Приложение 1. Листинг программы…………………………………14
Результат работы программы…………………………………………16
Приложение 2. Листинг программы…………………………………17
Результат работы программы……………………………………........20
Приложение 3. Листинг программы…………………………………22
Результат работы программы………………………………………....24
Cписок литературы……………………………………………………..25

Работа состоит из  1 файл

КУРСАЧ-информатика.docx

— 423.55 Кб (Скачать документ)

  2.2. Блок-схема алгоритма решения задачи

3. Вычисление определенного  интеграла методом  правыхпрямоугольников

3.1Метод прямоугольников

     Многие  инженерные задачи, задачи физики, геометрии  и многих других областей человеческой деятельности приводят к необходимости  вычислять определенный интеграл вида    где f(x) -данная функция, непрерывная на отрезке [a; b]. Если функция f(x) задана формулой и мы умеем найти неопределенный интеграл F(x), то определенный интеграл вычисляется по формуле Ньютона-Лейбница:  
Если же неопределенный интеграл данной функции мы найти не умеем, или по какой-либо причине не хотим воспользоваться формулой Ньютона-Лейбница или если функция f(x) задана графически или таблицей, то для вычисления определенного интеграла применяют приближенные формулы. Для приближенного вычисления интеграла можно использовать метод прямоугольников (правых, левых, средних). При вычислении интеграла следует помнить, каков геометрический смысл определенного интеграла. Если f(x)>=0 на отрезке [a; b], то численно равен площади фигуры, ограниченной графиком функции y=f(x), отрезком оси абсцисс, прямой x=a и прямой x=b (рис. 1.1) Таким образом, вычисление интеграла равносильно вычислению площади криволинейной трапеции.

 

Разделим  отрезок [a; b] на n равных частей, т.е. на n элементарных отрезков. Длина каждого элементарного отрезка .

Точки деления  будут: x0=a; x1=a+h; x2=a+2*h, ... , xn-1=a+(n-1)*h; xn=b.

Числа y0, y1, y2, ... , yn являются ординатами точек графика функции, соответствующих абсциссам x0, x1, x2, ... , xn (рис. 1.2).

Строим  прямоугольники. Это можно делать несколькими способами: 

Левые прямоугольники (слева  на право) 
 
 

Правые  прямоугольники (построение справа на лево)  
 

Средние прямоугольники (посредине)

 

Из рис. 1.2 следует, что площадь криволинейной трапеции приближенно заменяется площадью многоугольника, составленного из n прямоугольников. Таким образом, вычисление определенного интеграла сводится к нахождению суммы n элементарных прямоугольников.   

       

              h=(b-a)/n –ширина прямоугольников

Формула левых прямоугольников:

(1.3)

Формула правых прямоугольников:

(1.4)

Формула средних  прямоугольников.

 Sсредих= (Sправых + Sлевых) /2

(1.5) 
 
 
 
 

3.2. Блок-схема алгоритма  решения задачи

 

Приложение 1. Листинг программы

uses  crt ;

const r:array[0..1] of string = (

       'Готово',

       'Ошибка произошла при расчете');

 var epselon,x,a,b:double;

     i:integer;

 function f(x:double):double;

 begin

  f:=10.88*Ln(X+8.67)+18.73

 end;

 function getx(x1,x2,eps:double;var x:double):integer;

 var err,i:integer;

     a,b,c,ya,yb,yc:double;

 begin

    a:=x1;b:=x2;

    ya:=f(a);

    yb:=f(b);

    i:=100;

    err:=0;

    repeat

     c:=a-ya*(b-a)/(yb-ya);

     yc:=f(c);

     dec(i);

     if (ya*yc>0) then begin

       ya:=yc;a:=c

     end else begin

       yb:=yc;b:=c

     end;

    until (abs(yc)<eps) or (i<0);

    x:=c;

  if abs(yc)>eps then err:=1;

  getx:=err;

 end;

begin

      clrscr;

      writeln('Программа решения уравнения методом хорд');

      writeln('10.88*Ln(X+8.67)+18.73 =0    -8.67 < x < -4.25');

      a:=-8.66;b:=-4.25;

      write('Точность =  0.0078');epselon:= 0.0078;

      i:=getx(a,b,epselon,x);

      writeln;

      writeln(r[i]);

      if i=0 then writeln('x = ',x:6:6);

      readkey;

end.

 

Результат работы программы

Программа решения  задач методом хорд

10.88 * Ln(x+8.67)+18.73=0      -8.67< x < -4.25

Точность = 0.0078

Готово

X = -8.491092 
 
 
 
 
 

 

Приложение 2. Листинг программы

Uses CRT;

Type

    AA = Array[1..7, 1..7] of Double;

    BB = Array[1..7] of Double;

const

     a:AA=((-14.3830, -1.1000, -4.0840, -3.5570, -0.3710, +4.5410, -4.4980),

           (-0.2050, -107.3690, -7.2000, +2.8230, -0.4860, 3.7050, +1.8070),

           (-8.3540, -2.6070, +4.3700, +0.3400, +5.7650, 2.1730, -6.2890),

           (+4.7380, +2.9230, -4.8780, +73.5870, -6.6680, -3.9440, -6.6090),

           (+0.3920, -1.5630, +2.1900, +0.5390, +8.0940, 5.7290, +8.7180),

           (-5.0750, -6.1790, +1.3430, -2.7580, -4.7830, -84.1700, +6.1430),

           (-5.0370, +3.7960, +5.9310, -2.1650, +3.3910, 7.2770, -36.6130));

  b:BB=(358.6024, 268.4247, 287.6628, 831.9947, -611.1133, 1492.8992,  1408.9475);

Procedure p1(n:integer;var a: AA; var b: BB);

Var

   i, j: Integer;

begin

 writeln('Система уравнений:');

 for i:=1 to n do begin

  for j:=1 to n do begin

    if (a[i, j]>0) then write('+');

    write(a[i, j]:0:3,'*x',j);

  end;

  writeln('=',b[i]:0:4);

 end;

end;

{ Функция реализующая метод Зейделя}

Function zeidel(n: Integer; a: AA; b: BB; var x: BB; e: Double) :Boolean;

Var

   i, j: Integer;

   s1, s2, s, v, m: Double;

Begin

Repeat

m := 0;

For i := 1 to n do begin

 { Вычисляем суммы }

             s1 := 0;

             s2 := 0;

             For j := 1 to i - 1 do

                 s1 := s1 + a[i, j] * x[j];

             For j := i to n do

                 s2 := s2 + a[i, j] * x[j];

{ Вычисляем новое  приближение и погрешность }

             v := x[i];

             x[i] := x[i] - (1 / a[i, i]) * (s1 + s2 - b[i]);

             If Abs(v - x[i]) > m then

                m := Abs(v - x[i]);

               end;

   Until m < e;

  zeidel := true;

End;

procedure p2(x:BB);

var i:integer;

    m:Double;

begin

         Writeln('Результат вычислений');

         For i := 1 to 7 do begin

            Writeln('x', i, ' = ', x[i]:6:6);

         end;

                        {проверка }

{        m:=0;for i:=1 to 7 do m:=m+a[1,i]*x[i]; writeln(m:6:6);}

end;

Var

    x: BB;

    e: Double;

    i: Integer;

Begin

{Очистим экран}

      ClrScr;

      Writeln('Программа решения систем линейных уравнений по методу Зейделя’);

      Writeln;

{распечатаем уравнение}

      p1(7,a,b);

      e:=0.00572;

{решим уравнение...}

      for i:=1 to 7 do x[i]:=1;

      If zeidel(7, a, b, x , e) then begin

{... и если оно  решилось, то выведем результат  ...}

         p2(x);

{... иначе сообщение  о ошибке}

      end else Writeln('Данную систему невозможно решить по методу Зейделя’);

 Writeln;

      repeat until keypressed;

End. 
 
 
 
 
 

Результат работы программы

Программа решения  системы линейных уравнений по методу Зейделя

Система уравнений:

-14.3830*x1-1.1000*x2-4.0840*x3-3.5570*x4-0.3710*x5+4.5410*x6-4.4980*x7=358.6024

-0.2050*x1-107.3690*x2-7.2000*x3+2.8230*x4-0.4860*x5+3.7050*x6+1.8070*x7=268.4247

-8.3540*x1-2.6070*x2+4.3700*x3+0.3400*x4+5.7650*x5+2.1730*x6-6.2890*x7=287.6628

+4.7380*x1+2.9230*x2-4.8780*x3+73.5870*x4-6.6680*x5-3.9440*x6-6.6090*x7=831.9947

+0.3920*x1-1.5630*x2+2.1900*x3+0.5390*x4+8.0940*x5+5.7290*x6+8.7180*x7=-611.1133

-5.0750*x1-6.1790*x2+1.3430*x3-2.7580*x4-4.7830*x5-84.1700*x6+6.1430*x7=1492.8992

-5.0370*x1+3.7960*x2+5.9310*x3-2.1650*x4+3.3910*x5+7.2770*x6-36.613*x7=1408.9475 

Результат вычислений

X1 = -18.312706

X2 = -3.530534

X3 = -0.704436

X4 = 6.260138

X5 = -16.944051

X6 = -18.699362

X7 = -42.099037 

 

Приложение 3. Листинг программы

 

uses crt;

var a,b,e:double;

function f(x:double):double;

begin

  f:=8.80 * X * X + 5.10;

end;

{---------Вычислить  интеграл методом правых прямоугольников-}

function irr(a,b:double;n:longint):double;

var i:longint;s,dx,y,x:double;

begin

 dx:=(b-a)/n;

 s:=0;

 for i:=1 to n do begin

   x:=a+i*dx;

   y:=f(x);

   s:=s+dx*y;

 end;

 irr:=s;

end;

procedure setabe;

begin

   a:=0.700;

   b:=1.250;

 e:=0.000056;

   Writeln('Пределы интегрирования: [',a:0:3,' .. ', b:0:3,'], ’точность: ',e:0:6);

end;

procedure res;

var y,z:double;n:longint;

begin

 n:=2;

 z:=irr(a,b,n);

 repeat

  n:=n*2;

  y:=z;

  z:=irr(a,b,n);

 until (abs(z-y)<e) or (n>1000000);

 writeln('Значение интеграла   = ',z:0:6);

end;Begin

  clrscr;

  writeln('Программа решения интеграла методом правых прямоугольников’);

  writeln('Подинтегральная функция: 8.80 * X ^ 2 + 5.10');

  setabe;

  res; readkey;end.

Результат работы программы

Программа решения  интеграла методом правых прямоугольников

Подинтегральная функция: 8.80 * x ^ 2 + 5.10

Пределы интегрирования: [ 0.700 .. 1.250], Точность: 0.000056

Значение интеграла = 7.528073 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Литература

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