Автор работы: Пользователь скрыл имя, 28 Января 2013 в 01:13, задача
№2 Знайти найменший по модолю дійсний корінь точністю , при цьому а) відокремити корінь графічним способом; б) обчислити корінь за допомогою методу простої ітерації ; в) обчислити корінь за допомогою методу Нютона-Рафсона
Пилипенко Тетяни ММ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,
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)
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.
j(1,2)=x(1)/(cos(x(1)*x(2)+0.
j(2,1)=1.8*x(1);
j(2,2)=4*x(2);
>> [x,k]=newkant([-1,-1],1E-3,
x = -0.8696 -0.3996
k = 6
Информация о работе Математичне моделювання технологічних процесів