Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ecuaciones no lineales
Una ecuación no lineal son aquellas ecuaciones a las cuales no admiten el principio
superposición.
Desarrollo
1.- Errores y Aproximación de funciones
1.1.- Sea el siguiente sistema de ecuaciones lineales:
Solución:
Lo primero es desarrollar dejar k y t en términos de h
2 2
𝑘= −ℎ ; 𝑡=
ℎ ℎ
Se despejó X1 y X2 en función de h
25 ℎ2 4 ℎ
𝑥1 = − ; 𝑥2 = −
3 6 3ℎ 6
ℎ −4 1
𝑥1′ = − ; 𝑥2 ′ = −
3 3ℎ2 6
clear all;
clc;
h=2;
error=0.03;
x1=-h/3;
x2=-4/(3*h^-2)+1/6;
exactitud=abs(x1*error+x2*error)
Exactitud = 0.1750
Solución:
Despeje 1 (línea 18) Despeje 2 (línea 19)
%parametros
xiv=10;
tol=10^-5;
nmax=10;
n=1;
i=1;
j=1;
for n=1:1:nmax
Tab(i,j)=n-1;
j=j+1;
Tab(i,j)=xiv;
j=j+1;
Tab(i,j)=((0.4^1.95)/((4*log(6000*(xiv^0.8))*0.4^1.2)-0.4^1.75));
%Tab(i,j)=((exp((0.4^0.75/4)*((1/xiv)+(0.4/0.4^1.2))))/6000)^(1/0.8);
xin=Tab(i,j);
j=j+1;
if i==1
Tab(i,j)=0;
else
Tab(i,j)=abs(Tab(i-1,j-2)-xin);
if Tab(i,j)<tol
break
end
end
xiv=xin;
i=i+1;
j=1;
end
textos={'iteracion','xi','f(xi)','error'};
textos=[textos;num2cell(Tab)]
para el primer despeje la tabla resultado es la siguiente:
Solución:
a) El código desarrollado es el siguiente:
clear all;
clc;
%parametros
a=1;
b=2;
tol=10^-10;
nmax=5;
fx=inline('(1/5)+((log(x))/2)-exp(-x)');
A=fx(a);
B=fx(b);
if A*B<0
n=1;
i=1;
j=1;
for n=1:1:nmax+1
Tab(i,j)=n-1;
j=j+1;
Tab(i,j)=a;
j=j+1;
Tab(i,j)=b;
j=j+1;
Tab(i,j)=A;
j=j+1;
Tab(i,j)=B;
j=j+1;
Tab(i,j)=((a*B-b*A)/(B-A));
xi=Tab(i,j);
j=j+1;
Tab(i,j)=fx(xi);
j=j+1;
if i==1
Tab(i,j)=0;
else
Tab(i,j)=abs(Tab(i-1,j-2)-xi);
if Tab(i,j)<tol
break
end
end
if Tab(i,j-1)*A>0
a=xi;
A=Tab(i,j-1);
else
b=xi;
B=Tab(i,j-1);
end
i=i+1;
j=1;
end
else
disp('no se puede emplear el metodo de falsa posicion en ese intervalo')
end
textos={'iteracion','a','b','f(a)','f(b)','xi','f(xi)','error'};
textos=[textos;num2cell(Tab)]
%parametros
x0=1;
x1=2;
tol=10^-10;
nmax=50;
fx=inline('(1/5)+((log(x))/2)-exp(-x)');
fx0=fx(x0);
fx1=fx(x1);
n=1;
i=1;
j=1;
for n=1:1:nmax+1
Tab(i,j)=n-1;
j=j+1;
Tab(i,j)=x0;
j=j+1;
Tab(i,j)=x1;
j=j+1;
Tab(i,j)=fx0;
j=j+1;
Tab(i,j)=fx1;
j=j+1;
Tab(i,j)=x1-(((x1-x0)*Tab(i,j-1))/(Tab(i,j-1)-Tab(i,j-2)));
xi=Tab(i,j);
j=j+1;
Tab(i,j)=fx(xi);
j=j+1;
if i==1
Tab(i,j)=0;
else
Tab(i,j)=abs(Tab(i-1,j-2)-xi);
if Tab(i,j)<=tol
break
end
end
x0=x1;
fx0=fx(x0);
x1=xi;
fx1=fx(x1);
i=i+1;
j=1;
end
textos={'iteracion','x0','x1','f(x0)','f(x1)','xi','f(xi)','error'};
textos=[textos;num2cell(Tab)]
Solución:
El código desarrollado es el siguiente:
clear all;
clc;
%funciones
f1=inline('x^2-2*x-z+0.5');
f2=inline('x^2+4*y^2+z^2-4');
f3=inline('-x^2+y^2+z');
%condiciones
nmax=100;
tol=10e-5;
%jacobiano
j11=inline('2*x - 2');
j12=0;
j13=-1;
j21=inline('2*x');
j22=inline('8*y');
j23=inline('2*z');
j31=inline('-2*x');
j32=inline('2*y');
j33=1;
Tab(1,1)=0;
Tab(1,2)=pk(1);
Tab(1,3)=pk(2);
Tab(1,4)=pk(3);
Tab(1,5)=f1(pk(1),pk(3));
Tab(1,6)=f2(pk(1),pk(2),pk(3));
Tab(1,7)=f3(pk(1),pk(2),pk(3));
flag=0;
for i=2:nmax%iteraciones
if det([j11(pk(1)),j12,j13;j21(pk(1)),j22(pk(2)),j23(pk(3));j31(pk(1)),j32(pk(2)),j33])==0
pk
disp('no hay solucion');
flag=1;
break;
else
fpk=[f1(pk(1),pk(3));f2(pk(1),pk(2),pk(3));f3(pk(1),pk(2),pk(3))];
delta=inv([j11(pk(1)),j12,j13;j21(pk(1)),j22(pk(2)),j23(pk(3));j31(pk(1)),j32(pk(2)),j33])*fpk;
pk1=pk-delta;
Tab(i,1)=i-1;
Tab(i,2)=pk1(1);
Tab(i,3)=pk1(2);
Tab(i,4)=pk1(3);
Tab(i,5)=f1(pk1(1),pk1(3));
Tab(i,6)=f2(pk1(1),pk1(2),pk1(3));
Tab(i,7)=f3(pk1(1),pk1(2),pk1(3));
Tab(i,8)=sqrt(delta(1)^2+delta(2)^2+delta(3)^2);
pk=pk1;
if tol>Tab(i,8)
break;
end
end
end
if flag==0
pk
textos={'iteracion','x','y','z','f1(x)','f2(y)','f3(z)','error'};
textos=[textos;num2cell(Tab)]
end
Tab(1,1)=0;
Tab(1,2)=pk(1);
Tab(1,3)=pk(2);
Tab(1,4)=pk(3);
Tab(1,5)=f1(pk(1),pk(3));
Tab(1,6)=f2(pk(1),pk(2),pk(3));
Tab(1,7)=f3(pk(1),pk(2),pk(3));
flag=0;
for i=2:nmax%iteraciones
if det([j11(pk(1)),j12,j13;j21(pk(1)),j22(pk(2)),j23(pk(3));j31(pk(1)),j32(pk(2)),j33])==0
pk
disp('no hay solucion');
flag=1;
break;
else
fpk=[f1(pk(1),pk(3));f2(pk(1),pk(2),pk(3));f3(pk(1),pk(2),pk(3))];
delta=inv([j11(pk(1)),j12,j13;j21(pk(1)),j22(pk(2)),j23(pk(3));j31(pk(1)),j32(pk(2)),j33])*fpk;
pk1=pk-delta;
Tab(i,1)=i-1;
Tab(i,2)=pk1(1);
Tab(i,3)=pk1(2);
Tab(i,4)=pk1(3);
Tab(i,5)=f1(pk1(1),pk1(3));
Tab(i,6)=f2(pk1(1),pk1(2),pk1(3));
Tab(i,7)=f3(pk1(1),pk1(2),pk1(3));
Tab(i,8)=sqrt(delta(1)^2+delta(2)^2+delta(3)^2);
pk=pk1;
if tol>Tab(i,8)
break;
end
end
end
if flag==0
pk
textos={'iteracion','x','y','z','f1(x)','f2(y)','f3(z)','error'};
textos=[textos;num2cell(Tab)]
end
Solución:
a) El código desarrollado es el siguiente:
clear all;
clc;
n=10;
decimales=2;
bn=[];
for i=1:n
for j=1:n
if i==j
An(i,j)=round((i+j)^2/j,decimales);
else
An(i,j)=round((-1)^(i+j)*(i/j+j/i),decimales);
end
end
bn=[bn;round((-1)^i*mod(i^5-i^2+5*i+4,i^2+1),decimales)];
end
An
bn
b) El código desarrollado es el siguiente:
[L,U,P] = lu(An);
X3=P*bn;
X2=inv(L)*X3;
sol=inv(U)*X2
rows=size(m,1);
columns=size(m,2);
if columns==rows+1
n=rows;
%1
for i=1:n-1
%2
for k=i:n
if m(k,i)==0 & k>=i
%disp('No hay solucion unica');
break;
end
end
%3
if m(i,i)==0
p=i;
while m(p,i)==0 & p>=i
p=p+1;
end
%fprintf('fila%d <--> fila%d\n',i,p);
m=permutar(m,p,i);
end
%4
for j=i+1:n
if m(i,i)~=0
t=m(j,i)/m(i,i);
m(j,:)=m(j,:)-t*m(i,:);
%fprintf('fila%d-(%d)*fila%d\n',j,t,i);
end
end
end
%5
if m(n,n)==0
%disp('No hay solucion unica');
else
%6
x=[];
for i=1:n
x=[x;0];
end
x(n)=m(n,n+1)/m(n,n);
%7
for i=n-1:-1:1
suma=0;
for j=i+1:n
suma=m(i,j)*x(j)+suma;
end
x(i)=(m(i,n+1)-suma)/m(i,i);
end
end
else
fprintf('Matriz no cuadrada\n');
end
a)
Debido a las aproximaciones y las limitaciones del ordenador los resultados siempre
presentaran errores tanto de truncamiento como de aproximaciones por la base usada o por
definición (por ejemplo el numero π)