Математичне моделювання технологічних процесів

Автор работы: Пользователь скрыл имя, 28 Января 2013 в 01:13, задача

Описание

№2 Знайти найменший по модолю дійсний корінь точністю , при цьому а) відокремити корінь графічним способом; б) обчислити корінь за допомогою методу простої ітерації ; в) обчислити корінь за допомогою методу Нютона-Рафсона

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

ММТП Пилипенко Т..docx

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

Пилипенко Тетяни ММ1

 

Математичне моделювання технологічних процесів

Розв’язати систему будь-яким способом.

>> A=[1 -2.6 3.1 -4.2; 0 1 -1.3 1; 0.9 3 0 -3.7; 1 -7 3 1.9]

A =

    1.0000   -2.6000    3.1000   -4.2000

         0    1.0000   -1.3000    1.0000

    0.9000    3.0000         0   -3.7000

    1.0000   -7.0000    3.0000    1.9000

 

>> b=[4 -3.5 1 -2.9]'

b =

    4.0000

   -3.5000

    1.0000

   -2.9000

 

>> x=A\b

x =

   -3.8562

    1.5903

    3.9781

    0.0812

2-й спосіб

За допомогою методу Гауса

function x=gauss(A,B)

if det(A)==0

    error('Детермінант дорівнює 0');

end

[n,m]=size(A);

if n~=m

    error('матриця повинна бути квадратною');

end

if length(B)~=n

    error('В повинна мати такий розмір як і А');

end

    for i=1:n

        max_el=abs(A(i,i));

        k=i;

        for j=i+1:n

            if abs(A(j,i))>max_el

                max_el=abs(A(j,i));

                k=j;

            end

        end

        if k~=i

            tmp=A(i,:);

            A(i,:)=A(k,:);

            A(k,:)=tmp;

            t=B(i);

            B(i)=B(k);

            B(k)=t;

        end

            if A(i,i)==0

                error('ділення на 0');

            end

            c=A(i,i);

            for j=i:n

                A(i,j)=A(i,j)/c;

            end

            B(i)=B(i)/c;

            for k=i+1:n

                B(k)=B(k)-B(i)*A(k,i);

                for j=n:-1:i

                    A(k,j)=A(k,j)-A(i,j)*A(k,i);

                end

            end

        end

        x(n)=B(n);

        for i=n-1:-1:1

            x(i)=B(i);

            for j=i+1:n

                x(i)=x(i)-A(i,j)*x(j);

            end

        end

A=[1 -2.6 3.1 -4.2; 0 1 -1.3 1; 0.9 3 0 -3.7; 1 -7 3 1.9]

 

A =

 

    1.0000   -2.6000    3.1000   -4.2000

         0    1.0000   -1.3000    1.0000

    0.9000    3.0000         0   -3.7000

    1.0000   -7.0000    3.0000    1.9000

 

>> b=[4 -3.5 1 -2.9]'

 

b =    4.0000

   -3.5000

    1.0000

   -2.9000

>> gauss(A,b)

х =   -3.8562    1.5903    3.9781    0.0812

Висновок: як бачимо обидва способи дають одинакові розв’язки:                  x1 =-3.8562; x2=5903; x3=9781; x4 =0.0812.

 

№2  Знайти найменший по модолю дійсний корінь   точністю , при цьому а) відокремити корінь графічним способом; б) обчислити корінь за допомогою методу простої ітерації ;  в) обчислити корінь за допомогою методу Нютона-Рафсона

5.

Відокремлення кореня графічним способом.

>> x=-4:0.001:4;

>> y=x.^3+2*x-13;

>> plot(x,y)

>> grid on

Як видно по графіку корінь .

б) обчислити корінь за допомогою  методу простої ітерації ; 

>> diff('x^3+2*x-13')

 

ans =

 

3*x^2+2

>> x=-2:0.01:2;

>> y=3*x.^2+2;

>> plot(x,y)

function x=itera(x0,m,e)

  x=x0-m*f(x0);

while abs(x-x0)>e

    x0=x;

    x=x0-m*f(x0);

    disp(x);

end

 

function z=f(x)

z=x^3+2*x-13;

 

>> itera(1.9,0.1,1e-3)

    2.0353

 

    2.0851

    2.0615

    2.0731

    2.0675

    2.0702

    2.0689

    2.0696

ans =    2.0696

в) обчислити корінь за допомогою  методу Нютона-Рафсона

function x=Newton (x0,e)

x=x0-F(x0)/dF(x0)

while abs(x-x0)>e

    x0=x;

    x=x0-F(x0)/dF(x0)

end

 

function y=F(x)

  y= x^3+2*x-13;

  function z=dF(x)

   z=3*x^2+2;

>> Newton(1.8,1e-4)

ans =

    2.0693

За допомогою вбудованої функції  roots

>> roots([1 0 2 -13])

ans =

  -1.0347 + 2.2829i

  -1.0347 - 2.2829i

   2.0693  

Висновок. При обчисленні різними методами відповіді співпали.

ІІ використовуючи метод ітерацій, розв’язати систему нелінійних рівнянь  з точністю до 0,0001

5.

>> x=[-6:0.01:6];

>>  y=[-5:0.01:5];

>> f1=sin((x)+0.5)-1;

>> f2=-cos((y)-2);

>> plot(x,f1,f2,y)

>> grid on

 

function [x,k]=iter(x0,e,maxi)

% iter - метод простої ітерації розв’язування систем

% нелінійних рівнянь

% Система рівнянь в ітераційному  вигляді повинна бути задана 

% у функції fun(x)

%   >> [x,k]=iter(x0,e,maxi)

%   Вхідні аргументи:

%   x0 - початкове наближення;

%   e  -точність;

%   maxi - максимальна кількість ітерацій

%   Вихідні аргументи:

%   x - розв'язок системи;

%   k - кількість ітерацій

 

for k=1:maxi

    x=fun(x0);

    if max(abs(x-x0))<=e

        break

    end

    x0=x;

end

if k==maxi

    disp('Досягнуто максимальної кількості ітерацій');

end

                               

function f=fun(x)

% Система рівнянь в ітераційному  вигляді

f(1)=sin(x(1)+0.5)-1;

f(2)=-(cos(x(2)-2));

 

[x,k]=iter([-2,-2],1E-4,100)

Досягнуто максимальної кількості  ітерацій

 

x =

   -1.9973    0.1861

k =

   100.

IІI. Використовуючи метод Ньютона, розв’язати систему нелінійних рівнянь з точністю до 0,001.

function[x,k]=newkant(x0,e,maxi)

  for k=1:maxi

      f=fun(x0);

      j=jac(x0);

      dx=j\-f';

      x=x0+dx';

      if max(abs(x-x0))<=e

          break;

      end

      x0=x;

  end

function f=fun(x)

f(1)=tan((x(1))*x(2)+0.3)-x(1)^2;

f(2)=0.9*x(1)^2+2*x(2)^2-1;

 function j=jac(x)

j(1,1)=x(2)/(cos(x(1)*x(2)+0.3)^2)-2*x(1);

j(1,2)=x(1)/(cos(x(1)*x(2)+0.3))^2;

j(2,1)=1.8*x(1);

j(2,2)=4*x(2);

>> [x,k]=newkant([-1,-1],1E-3,100)

x =  -0.8696   -0.3996

k = 6


Информация о работе Математичне моделювання технологічних процесів