









Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Programas em Matlab de alguns métodos numéricos.
Tipologia: Notas de estudo
1 / 17
Esta página não é visível na pré-visualização
Não perca as partes importantes!










b = y(k+1,1); end; if (fx1*fb<0) a = y(k+1,1); end;
k = k+1;
end;
fprintf('\nRaíz aproximada => x(%d) = %10.8f\n', j, y(k,1)); fprintf('%s\n','-----------------------------------------------------------------------');
1.2. Eliminação de Gauss
clear all clc
fprintf('%s\n','============================='); fprintf('%s\n','Método da Eliminação de Gauss'); fprintf('%s\n','=============================');
fprintf('\n Sitema AX = B\n');
fprintf('\nNúmero de Variáveis:\n'); n = input(' n = ', 's'); n = str2num(n);
fprintf('\nMonte a Matriz de Coeficientes do Sistema:\n'); for i=1:n for j=1:n A(i,j)=str2num(input(['a' num2str(i) num2str(j) ':'],'s')); end end
fprintf('\nMonte a Matriz de Termos Independentes do Sistema:\n'); for i=1:n B(i,1)=str2num(input(['b' num2str(i) ':'],'s')); end
fprintf('\n Sitema Original\n\n');
for j=1:n for i=1:n
if i== fprintf('| ') end fprintf('%10.5f ', A(j,i)) if i==n
fprintf('|') end
if i==n fprintf(' | x(%d) | | %10.5f |',j,B(j,1)) end end fprintf('\n') end
detA = det(A); fprintf('\nDeterminante >> detA = %10.4f\n',detA);
if (detA == 0) fprintf('\nDeterminante igual a ZERO!\n'); fprintf('Podem existir infinitas soluções ou ainda nenhuma solução!\n');
else for j=1:(n-1) fprintf('\nEliminação %d:\n',j); for i=(j+1):n if A(j,j)== 0 && j<n troca = A(j,:); A(j,:) = A(j+1,:); A(j+1,:) = troca; troca = B(j,1); B(j,1) = B(j+1,1); B(j+1,1) = troca; fprintf('\nPivô igual a ZERO. Troca-se a linha "i" com a linha "i+1":\n');
for k=1:n for l=1:n if l== fprintf('| ') end fprintf('%10.5f ', A(k,l)) if l==n fprintf('|') end
if l==n fprintf(' | x(%d) | | %10.5f |',k,B(k,1)) end end fprintf('\n') end end m = (A(i,j)/A(j,j)); A(i,:) = A(i,:) - mA(j,:); B(i,1) = B(i,1) - mB(j,1);
fx = input('f(x) = ', 's'); fprintf('\nLimite inferior do intervalo:\n'); a = input('a = ', 's'); fprintf('Limite superior do intervalo:\n'); b = input('b = ', 's'); fprintf('Tolerância:\n'); E = input('E = ', 's');
a=str2num(a); b=str2num(b); E=str2num(E);
fprintf('%s\n',' '); fprintf('%s\n','-------------------------------------------------------------------------'); fprintf('%s\n',' iteração a b x f(x) b-a '); fprintf('%s\n','-------------------------------------------------------------------------');
k=0; x = a; fa = eval (fx); x = b; fb = eval (fx);
x = (afb-bfa)/(fb-fa); fx1 = eval(fx); c = b-a; fprintf(' %2d %10.8f %10.8f %10.8f %10.8f %10.8f\n',k,a,b,x,fx1,c);
while abs(fx1)>=E
if (fafx1<0) b = x; end; if (fx1fb<0) a = x; end;
k = k+1;
x = a; fa = eval (fx); x = b; fb = eval (fx);
x = (afb-bfa)/(fb-fa); fx1 = eval(fx);
c = b-a; fprintf(' %2d %10.8f %10.8f %10.8f %10.8f %10.8f\n',k,a,b,x,fx1,c);
end;
fprintf('\nRaíz aproximada => x(%d) = %10.8f\n', k, x); fprintf('%s\n','-------------------------------------------------------------------------');
1.4. Newton-Raphson:
clear all clc
fprintf('%s\n','========================'); fprintf('%s\n','Método de Newton-Raphson'); fprintf('%s\n','========================'); fprintf('\nFunção:\n'); fx = input('f(x) = ', 's'); fprintf('Tolerância de |f(x)|:\n'); delta = input('? = ', 's'); fprintf('Tolerância de |x(k) - x(k-1)|:\n'); E = input('E = ', 's'); fprintf('Aproximação inicial:\n'); x0 = input('x(0) = ', 's');
delta=str2num(delta); x0=str2num(x0); E=str2num(E);
dx = diff(fx); k=0; x = x0; fx1 = eval (fx); dx1 = eval (dx);
if (abs(fx1)<delta) fprintf('\nRaíz aproximada => x(%d) = %10.8f\n', k, x); else fprintf('%s\n','-------------------------------------------------------------------------'); fprintf('%s\n',' iteração x f(x) df(x)/dx |x(k)-x(k-1)| '); fprintf('%s\n','-------------------------------------------------------------------------');
fprintf(' %2d %10.8f %10.8f %10.8f \n',k,x0,fx1,dx1);
x1 = x - fx1/dx1; c = x1 - x; k=1;
while ((abs(fx1)>=delta) && (abs(c)>=E))
x = x1; fx1 = eval(fx); dx1 = eval (dx);
fprintf(' %2d %10.8f %10.8f \n',k,x0,fx1);
x1 = x - fx1/dx0; c = x1 - x; k=1;
while ((abs(fx1)>=delta) && (abs(c)>=E))
x = x1; fx1 = eval(fx);
fprintf(' %2d %10.8f %10.8f %10.8f \n',k,x,fx1,abs(c));
x1 = x - fx1/dx0;
c = (x1 - x); k = k+1; end;
k = k-1; fprintf('\nRaíz aproximada => x(%d) = %10.8f\n', k, x); fprintf('%s\n','---------------------------------------------------------');
end
1.6. Newton Modificado para Sistemas
clear all clc
fprintf('%s\n','========================================='); fprintf('%s\n','Método de Newton Modificado para Sistemas'); fprintf('%s\n','=========================================');
x = sym('x'); y = sym('y');
fprintf('\n1ª Função:\n'); fxy = input(' f(x,y) = ', 's'); fprintf('2ª Função:\n'); gxy = input(' g(x,y) = ', 's');
fprintf('\nTolerância de |f(x,y)| e |g(x,y)|:\n'); delta = input('? = ', 's'); fprintf('Tolerância de |x(k) - x(k-1)|:\n'); E = input(' E = ', 's'); fprintf('\nAproximação inicial:\n'); x0 = input(' x(0) = ', 's'); y0 = input(' y(0) = ', 's');
dfx = diff(fxy); dfy = diff(fxy,y); dgx = diff(gxy); dgy = diff(gxy,y);
delta=str2num(delta); x0=str2num(x0); y0=str2num(y0); E=str2num(E);
x = x0; y = y0;
fxy0 = eval (fxy); gxy0 = eval (gxy); dfx0 = eval (dfx); dfy0 = eval (dfy); dgx0 = eval (dgx); dgy0 = eval (dgy);
k = 0; X = [x0 ; y0]; FX = [fxy0 ; gxy0]; JX = [dfx0 dfy0 ; dgx0 dgy0] J = inv(JX);
if (abs(fxy0)<delta && abs(gxy0)<delta) fprintf('\nRaíz aproximada => x(%d) = % 10.8f, y(%d) = % 10.8f \n', k, x0, k , y0); else fprintf('\n%s\n','--------------------------------------------------------------------------------------------------'); fprintf('%s\n',' iteração x y f(x,y) g(x,y) |x(k)-x(k-1)| |y(k)-y(k-1)|'); fprintf('%s\n','----------------------------------------------------------------------------------------------------');
fprintf(' %2d % 10.8f % 10.8f % 10.8f % 10.8f\n',k,x0,y0,fxy0,gxy0);
X1 = X - J*FX; c = X1(1,1)-X(1,1); d = X1(2,1)-X(2,1); k=k+1;
while (abs(fxy0)>=delta || abs(gxy0)>=delta)
x = X1(1,1); y = X1(2,1);
fxy0 = eval (fxy); gxy0 = eval (gxy);
dgy = diff(gxy,y);
delta=str2num(delta); x0=str2num(x0); y0=str2num(y0); E=str2num(E);
x = x0; y = y0;
fxy0 = eval (fxy); gxy0 = eval (gxy); dfx0 = eval (dfx); dfy0 = eval (dfy); dgx0 = eval (dgx); dgy0 = eval (dgy);
k = 0; X = [x0 ; y0]; FX = [fxy0 ; gxy0]; JX = [dfx0 dfy0 ; dgx0 dgy0]; J = inv(JX);
if (abs(fxy0)<delta && abs(gxy0)<delta) fprintf('\nRaíz aproximada => x(%d) = % 10.8f, y(%d) = % 10.8f \n', k, x0, k , y0); else fprintf('\n%s\n','----------------------------------------------------------------------------------------------------'); fprintf('%s\n',' iteração x y f(x,y) g(x,y) |x(k)-x(k-1)| |y(k)-y(k-1)|'); fprintf('%s\n','----------------------------------------------------------------------------------------------------');
fprintf(' %2d % 10.8f % 10.8f % 10.8f % 10.8f\n',k,x0,y0,fxy0,gxy0);
X1 = X - J*FX; c = X1(1,1)-X(1,1); d = X1(2,1)-X(2,1); k=k+1;
while (abs(fxy0)>=delta || abs(gxy0)>=delta)
x = X1(1,1); y = X1(2,1);
fxy0 = eval (fxy); gxy0 = eval (gxy); dfx0 = eval (dfx); dfy0 = eval (dfy); dgx0 = eval (dgx); dgy0 = eval (dgy);
FX = [fxy0 ; gxy0]; JX = [dfx0 dfy0 ; dgx0 dgy0]; J = inv(JX);
fprintf(' %2d % 10.8f % 10.8f % 10.8f % 10.8f % 10.8f % 10.8f\n',k,x,y,fxy0,gxy0,c,d);
X1 = X - J*FX;
c = X1(1,1)-X(1,1); d = X1(2,1)-X(2,1); k=k+1;
end;
k = k-1; fprintf('\nRaíz aproximada => x(%d) = %10.8f', k, x); fprintf('\n => y(%d) = %10.8f\n', k, y); fprintf('%s\n','----------------------------------------------------------------------------------------------------');
end
1.8. Ponto Fixo Ou Iteração Linear
clear all clc
fprintf('%s\n','======================================='); fprintf('%s\n','Método do Ponto Fixo ou Iteração Linear'); fprintf('%s\n','=======================================');
fprintf('\nFunção:\n'); fx = input('f(x) = ', 's'); fprintf('Função equivalente:\n'); fix = input('x = ?(x) = ', 's'); fprintf('Tolerância de |f(x)|:\n'); delta = input('d = ', 's'); fprintf('Tolerância de |x(k) - x(k-1)|:\n'); E = input('E = ', 's'); fprintf('Aproximação inicial:\n'); x0 = input('x(0) = ', 's');
delta=str2num(delta); x0=str2num(x0); E=str2num(E);
k=0; x = x0; fx1 = eval (fx); fix1 = eval (fix);
delta=str2num(delta); x0=str2num(x0); x1=str2num(x1); E=str2num(E);
k=0; x = x0; fx0 = eval (fx); x = x1; fx1 = eval (fx);
if (abs(fx1)<delta) k=0; fprintf('\nRaíz aproximada => x(%d) = %10.8f\n', k, x0); elseif (abs(fx0)<delta) k=1; fprintf('\nRaíz aproximada => x(%d) = %10.8f\n', k, x1); else fprintf('%s\n','---------------------------------------------------------'); fprintf('%s\n',' aproximação x f(x) |x(k)-x(k-1)| '); fprintf('%s\n','---------------------------------------------------------'); fprintf(' %2d % 10.8f % 10.8f \n',k,x0,fx0); fprintf(' %2d % 10.8f % 10.8f \n',(k+1),x1,fx1);
xk = x1 - fx1*(x1-x0)/(fx1-fx0);
x = xk; fxk = eval (fx); k=2; c = (xk-x1); fprintf(' %2d % 10.8f % 10.8f % 10.8f \n',k,x,fxk,abs(c));
while (abs(fxk)>=delta) && (abs(c)>=E)
x0 = x1; x1 = xk; x = x0; fx0 = eval (fx); x = x1; fx1 = eval (fx); xk = x1 - fx1*(x1-x0)/(fx1-fx0); c = abs(xk - x1); x = xk; fxk = eval (fx); k=k+1; fprintf(' %2d %10.8f %10.8f %10.8f \n',k,x,fxk,abs(c));
end fprintf('\nRaíz aproximada => x(%d) = %10.8f\n', k, x); fprintf('%s\n','---------------------------------------------------------');
end