Está en la página 1de 8

%funcion Tabla=biseccion(Tol,Nlim)

clc;
clear;
Tol=10^(-6);
Nlim=100;
syms x
faux=input('Introduce la funcion f(x):');
xi=input('Introduce el valor para el limite inferior del intervalo
estudiando (xi):');
xu=input('Introduce el valor para el limite superior del intervalo
estudiando (xu):')
f=inline(faux);%define la funcion f a partir de la expresion introducida
en faux
Tabla(1,1)=0;
Tabla(1,2)=xi;
Tabla(1,3)=xu;
xr=(xi+xu)/2;
Tabla(1,4)=xr;
Tabla(1,5)=abs((xu-xi)/(xu+xi))*100;
i=2;
while (i<Nlim+1)
Tabla(i,1)=i-1;
if f(xi)*f(xr)<0
xu=xr;
else
xi=xr;
end
Tabla(i,2)=xi;
Tabla(i,3)=xu;
xr=(xi+xu)/2;
Tabla(i,4)=xr;
error=abs((Tabla(i,4)-Tabla(i-1,4))./Tabla(i,4))*100;
Tabla(i,5)=error;
if error>Tol
i=i+1;
else
i=Nlim+1;
Tabla
end
end
%end

%funtion Tabla=newton(Tol,Nlim)
%Esta funcion resuelve una ecuacion no lineal utilizando el
%metodo de Newton-Rsphson
%La funcion es introducida al correr el programa
clc
clear
Tol=10^(-6);
Nlim=100;
syms x
faux=input('Introduce la funcion f(x):');
fderaux= diff(faux,x);
f=inline(faux);%define la funcion f a partir de la expresion introducida
en faux
fder=inline(fderaux);%define la funcion fder a partir de la expresion
introducida en fderaux
x0=input('Introduce el valor de la iteracion inicial (x_0):');
i=1;
while(i<Nlim+1)
Tabla(i,1)=i-1;
Tabla(i,2)=x0;
x0=x0-(f(x0)/fder(x0));
Tabla(i,3)=x0;
error=abs((Tabla(i,3)-Tabla(i,2))./Tabla(i,3))*100;
Tabla(i,4)=error;
if abs(Tabla(i,3)-Tabla(i,2))
'<500'%controla que dos aproximaciones cosnecutivas no esten "
muy " separadas
if error>Tol
i=i+1;
else
i=Nlim+1;
Tabla
end
else
i=Nlim+1;
disp('Error,analice considerar un mejor iteracion inicial')
end
end
%end

%código método de Gauss simple

clear;

clc;

%Introducimos la cantidad de ecuaciones

n=input('Indica cuantas ecuaciones tiene el sistema por resolver: ');

%Inicializamos la matriz y los vectores columna

A=zeros(n,n);

b=zeros(n,1);

x=b;

%Introducimos los coeficientes aij para conocer la matriz A

for i=1:n

for j=1:n
fprintf('Ingresa el valor de la componente A(%d,%d): ',i,j);%guarda las componentes de A por
renglones

A(i,j)=input('');

end

fprintf('Ingresa el valor de la componente b(%d): ',i);%guarda las componentes de b por


renglones

b(i)=input('');

end

%Matriz ampliada

Ab=[A,b];

%Eliminación hacia adelante

for j=1:n-1 %con j controlamos el renglón a considerar para realizar la reducción de la matriz.

for i=j+1:n %con i controlamos el renglón que se combina con el renglón j.

Ab(i,:)=(Ab(i,j)/Ab(j,j))*Ab(j,:)-Ab(i,:); %Operación para reducir el renglón i.

end

end

%Sustitución hacia atras

for i=n:-1:1 %con i controlamos el renglón que consideramos para realizar la sustitución hacia
atras, tambien indica el número de incognita (xi:incognita i)

x(i)=Ab(i,n+1);

for j=i+1:n %con j controlamos el número de la incognita ya calculada que servirá para
calcular la incognita anterior

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

end

x(i)=x(i)/Ab(i,i);

end

disp('La solución del sistema planteado como: ');

for i=1:n

for j=1:n
fprintf('%+.3g x%d ',A(i,j),j);%muestra la parte de las incognitas en las ecuaciones

end

fprintf('= %.3g\n',b(i));%completa las ecuaciones con el valor del término independiente

end

disp('esta formado por los valores: ');

disp(x);

function Y=Gderivada(x)

%Introduce cada derivada parcial como una entrada diferente del Jacobiano

Y(1,1)=2*x(1);

Y(1,2)=3*x(2)^2;

Y(2,1)=sin(x(1))+x(1)*cos(x(1))+x(2)*sin(x(1));

Y(2,2)=-cos(x(1));

end

function y=Gmul(x)

%Introduce cada funcion como una entrada diferente del vector f

y(1)=x(1)^2+x(2)^3-5;

y(2)=x(1)*sin(x(1))-x(2)*cos(x(1))-2;

end

%function T=newtonmulti(Tol,Nlim)

%Esta funcion resuelve una ecuacion no lineal utilizando el

%metodo de Newton-Raphson

%Inicializa datos y borra pantalla

clc

close all

Tol=0.0001;
Nlim=100;

%Comienza la enumeracion de las iteraciones

T(1,1)=0;

%Introducimos la cantidad de incognitas y ecuaciones

k=input('Introduce el numero de ecuaciones y variables: ');

%Introducimos los valores iniciales de la iteracion

x0=input('Introduce los valores iniciales x_0 (como vector columna): ');

%Llena datos iniciales en tabla de salida

j=2;

while (j<=k+1)

T(1,j)=x0(j-1);

j=j+1;

end

%Calcula las iteraciones necesarias

i=2;

while (i<Nlim+1)

T(i,1)=i-1;

x=x0-(inv(Gderivada(x0)))*(Gmul(x0).');

error=norm(x-x0)/norm(x);

T(i,k+2)=error;

x0=x;

%Llenado de los valores en la tabla de salida

j=2;

while (j<=k+1)

T(i,j)=x0(j-1);

j=j+1;

end

%Criterio de finalizacion

if error<500
if error>Tol

i=i+1;

else

i=Nlim+1;

end

else

i=Nlim+1;

disp('Error, analice considerar una mejor iteración inicial')

end

end

%end

function y=newton(fun,x0,tol)
syms x
f=inline(fun)
dfun=diff(fun,x)
df=INLINE(dfun)
disp(' n xi error');
n=1;
error=1000;
while error>=tol
a=x0-f(x0)/df(x0);
error =abs(a-x0);
fprintf('\t%i\t%3.5f\t%3.5f\n', n , a , error);
x0=a;
n=n+1;
end

%Grafica de funciones
clc,clear
f='3*.x^4+2*x-1';
syms x
x=-3:0.02:7;
y=eval(f);
plot(x,y)
grid on
hold on
plot(x,zeros(size(x)),'r')
%comandos para borrado de pantalla y de variables(recomandado).

clear;

clc;

%asignación variable simbólica.

syms x;

%Introducción de datos de la función f.

f=input('Introducir la función f(x)= ');

a=input('Introducir el extremo inferior del intervalo donde será graficada f(x) :');

b=input('Introducir el extremo superior del intervalo donde será graficada f(x) :');

%Asignación de valores para la varaible x entre a y b.

x=a:(b-a)/300:b;

%Evaluación de la función f en los valores de la variable x.

y1=eval(f);

%Copia de valores de x a la variable x1 para graficar f(x).

x1=x;

%Asignación variable simbólica.

syms x;

%Introducción de datos de la función f.

g=input('Introducir la función g(x)= ');

c=input('Introducir el extremo inferior del intervalo donde será graficada g(x) :');

d=input('Introducir el extremo superior del intervalo donde será graficada g(x) :');

%Asignación de valores para la varaible x entre c y d.

x=c:(d-c)/300:d;

%Evaluación de la función g en los valores de la variable x.

y2=eval(g);

%Copia de valores de x a la variable x1 para graficar g(x).

x2=x;

%Con el comando subplot representamos en una sola ventana ambas gráficas.

%Comandos para graficar f(x) en el primer espacio


subplot(1,2,1);

plot(x1, y1);

grid on

xlabel('Eje X');

ylabel('Eje Y');

title('Función f(x)');

%Comandos para graficar g(x) en el segundo espacio

subplot(1,2,2);

plot(x2, y2);

grid on;

xlabel('Eje X');

ylabel('Eje Y');

title('Función g(x)');

%Grafica de funciones
clc,clear
x=-5:0.01:5;
y=3*x.^3+2*x-17;
z=zeros(size(x));
plot(x,y)
grid on
hold on
plot(x,z,'r')

%Grafica funciones variable simbolica


clc;
clear;
f1=@(x,y)x.^2+y.^3-5;
fimplicit(f1,'b');
hold on
grid on
f2=@(x,y)x.*sin(x)-y.*cos(x)-2;
fimplicit(f2,'r');
hold off

También podría gustarte