Sunteți pe pagina 1din 19

ejerciccio 1

function p=taylor(n,x)
p=0;m=n/2;
for i=0:m
p=p+(x.^(2*i))/factorial(i);
end

x=-4:0.001:4;
y=exp(x.^2);
p=taylore(8,x);
plot(x,y,x,p)

x0=exp((0.8).^2);
i=1;
for n=4:2:30;
T=taylore(n,0.8);
taylor(i)=T;
e(i)=abs(T-x0)/abs(x0);
N(i)=n;
i=i+1;
end
[N',taylor',e']

..........metodo grafico...........

ejecicio 1

function fun(a,b)
x=a:0.0001:b;
y=(18*(x.^2))-(2.75*(x.^3))-(21*x)-12;
plot(x,0,x,y,'red')

fun(-1,1)

ejecicio 2

function fun(a,b)
x=a:0.0001:b;
y=(0.8-(0.3*x))/x;
plot(x,0,x,y,'red')

ejercicio 3

function fun3
x=0:0.0001:5;
y=sin(10*x)+cos(3*x);
plot(x,0,x,y,'red')

.............metodo bideccion......
1...calcular
p(x)=x^3+2x^2+10x-20

function y=fun(x)
y=x.^3+2*x.^2+10*x-20;

function r=biseccion(a,b,n)
x=a:0.001:b;
y=fun(x);
plot(x,y,x,0)
for i=1:n
r=(a+b)/2;
if fun(a)*fun(r)<0
b=r;
elseif fun(a)*fun(r)>0
a=r;
else
break
end
end

..................................
mas detallado

2....calcular.................... en la pantalla escribir:..biseccion(0,2,0.00004)


p(x)=x^3+2x^2+10x-20

function y=fun(x)
y=x.^3+2*x.^2+10*x-20;

function r=biseccion(a,b,delta)
x=a:0.001:b;
y=fun(x);
plot(x,y,x,0)
e=1;n=0;
while e>delta;
r=(a+b)/2;
if fun(a)*fun(r)<0
b=r;
elseif fun(a)*fun(r)>0
a=r;
else
break
end
e=abs(b-a);n=n+1;
end
disp('el numero de integraciones es')
n

oooooo

function r=biseccion(a,b,delta)
x=a:0.001:b;
y=fun(x);
plot(x,y,x,0)
e=1;n=0;
while e>delta;
r=(a+b)/2;
if fun(a)*fun(r)<0
b=r;
elseif fun(a)*fun(r)>0
a=r;
else
break
end
e=abs(fun(r));n=n+1;
end
disp('el numero de integraciones es')
n

se escribe en la pantalla biseccion(0,2,0.0004)

......metodo de falsa posicion.............................................


1 ejercico
function y=fun(x)
y=x.^3+2*x.^2+10*x-20;

function r=falsa(a,b,delta)
x=a:0.001:b;
y=fun(x);
plot(x,y,x,0)
e=1;n=0;
while e>delta;
r=b-((fun(b)*(b-a))/(fun(b)-fun(a)));
if fun(a)*fun(r)<0
b=r;
elseif fun(a)*fun(r)>0
a=r;
else
break
end
e=abs(fun(r));n=n+1;
end
disp('el numero de integraciones es')
n

o se escrive

fprintf('el numero de integraciones es %2.0f\n',n)


fprintf('la raiz aproximada es %4.4f\n',r)
.......................cuando ago esto borro ?r?

se escrive en la pantalla....falsa(0,2,0.0004)

...........metodo de punto fijo................

function y=g(x)
y=sqrt((x+5)/2);

function y=f(x)
y=2*x.^2-x-5;

function x=puntofijo(x0,Nmax,delta)
x=x0; n=Nmax;
for i=1:n;
x=g(x);
if abs(g(x))<delta;
break
end
end
ejercio 2................

function y=g(x)
y=sqrt((x+5)/2);

function y=f(x)
y=2*x.^2-x-5;

function y=puntofijo(x0,Nmax,delta)
x=x0; n=0;
fprintf(' %s %s\n','n','x')
for i=1:Nmax;
x=g(x);
if abs(f(x))<delta;
break
end
n=n+1;
fprintf('%4.0f %4f\n',n,x)
end

ejercoio 3
function y=f(x)
y=(x.^3)+(2*x.^2)+(10*x)-20;

function y=g(x)
%y=(20-(2*x.^2)-(x.^3))/10;
y=20./(x.^2+(2*x)+10);

function y=puntofijo(x0,Nmax,delta)
x=x0; n=0;
fprintf(' %s %s\n','n','x')
for i=1:Nmax;
x=g(x);
if abs(f(x))<delta;
break
end
n=n+1;
fprintf(' %4.0f %4.10f\n ' ,n,x)
end

........................... metodo de newton repshon............

function y=f(x)
y=(x.^3)+(2*x.^2)+(10*x)-20;

function y=df(x)
y=(3*x.^2)+(4*x)+10;

function newtonr(x0,Nmax,delta)
x=x0; n=0;
fprintf('%4s %8s %5s\n','n','raiz aproximada','valor de la funcion')
for i=1:Nmax;
x=x-f(x)/df(x);
n=n+1;
F=abs(f(x));
if abs(f(x))<delta;
fprintf('%4.0f %4.12f %4.6f\n',n,x,F)
break
end
fprintf('%4.0f %4.12f %4.10f\n',n,x,F)
end

........... metodo de la secante.....................


crear una funcion
function y=f(x)
y=(x.^3)+2*(x.^2)+10*x-20;
%y=2*x.^2-x-5;
%y=exp(-x)-x;

crear el programa de la secante


function secante(x0,x1,Nmax,delta)
n=0;
fprintf('%4s %8s %5s\n' , 'n', 'raiz aproximada', 'valor funcion')
fprintf(' %8s \n','---------------------------------- ')
for i=1:Nmax
x=x1-f(x1)*(x0-x1)/(f(x0)-f(x1));
n=n+1;
F=abs(f(x));
if F<delta;
fprintf('%4.0f %4.12f %4.6f\n',n,x,F)
break
end
fprintf('%4.0f %4.12f %4.6f\n',n,x,F)
x0=x1; x1=x;
end

problema 1
>> secante(1,2,100,0.00001)
n raiz aproximada valor funcion
----------------------------------
1 1.304347826087 1.334758
2 1.357912304658 0.229136
3 1.369013325993 0.004330
4 1.368807459722 0.000014
5 1.368808107783 0.000000
>>

problema 2
>> secante(1,2,100,0.00001)
n raiz aproximada valor funcion
----------------------------------
1 0.487141653498 0.127238
2 0.583779685137 0.025994
3 0.567386449080 0.000381
4 0.567142560307 0.000001

......... metodo de matrizes inversas.....


A =

1 1 6
-1 2 9
1 -2 3

B =

7
2
10

X=A^-1*b
x =

3
-2
1
X=inv(A)*b
x =

3
-2
1
X=A\B
x =

3
-2
1
..........metodo de regla de craner..............
se crea las matrises.......

A =

1 1 6
-1 2 9
1 -2 3

B =

7
2
10
luego se cre el algoritmo.........
.
function x=cramer(A,b)
n=length(b);
for j=1:n;
C=A;
C(:,j)=b;
x(j,1)=det(C)/det(A);
end

y se remplana................

x=cramer(A,B)
x =

3
-2
1

.............. sistema trianguar.....


superior..........................

A=[4 -1 2 3; 0 -2 7 -4; 0 0 6 5; 0 0 0 3]

A =

4 -1 2 3
0 -2 7 -4
0 0 6 5
0 0 0 3

>> b=[20;-7;4;6]

b =

20
-7
4
6

function x=triansup(U,b)
n=length(b);
x(n)=b(n)/U(n,n);
for i=n-1:-1:1;
s=0;
for j=i+1:n;
s=s+U(i,j)*x(j);
end
x(i)=(b(i)-s)/U(i,i);
end
x=x';

x=triansup(A,b)

x =

3
-4
-1
2

inferior........................

L=[2 0 0 0; -1 4 0 0;3 -2 -1 0; 1 -2 6 3]

L =

2 0 0 0
-1 4 0 0
3 -2 -1 0
1 -2 6 3

>> B=[6;5;4;2]

B =

6
5
4
2

function x=triansinf(L,b)
n=length(b);
x(1)=b(1)/L(1,1);
for i=2:n;
s=0;
for j=1:i-1;
s=s+L(i,j)*x(j);
end
x(i)=(b(i)-s)/L(i,i);
end
x=x';

x=triansinf(L,B)

x =

3
2
1
-1

..............metodo de gaus
function x=gaus(A,b)
A=[A,b]; n=length(b);
for q=1:n-1

for r=q+1:n;
mrq=A(r,q)/A(q,q);
A(r,q)=0;
for c=q+1:n+1;
A(r,c)=A(r,c)-mrq*A(q,c);
end
end
end
U=A(:,1:n);
C=A(1:n,n+1);
x=triansup(U,C);

function x=triansup(U,b)
n=length(b);
x(n)=b(n)/U(n,n);
for i=n-1:-1:1;
s=0;
for j=i+1:n;
s=s+U(i,j)*x(j);
end
x(i)=(b(i)-s)/U(i,i);
end
x=x';

funcion perfecta de gaus......................................


function x=gaus(A,b)
A=[A,b]; n=length(b);
for q=1:n-1
if A(q,q)==0
for i=q+1:n
if A(i,q)~=0
Q=A(q,:);
A(q,:)=A(i,:);
A(i,:)=Q;
end
end
end
for r=q+1:n;
mrq=A(r,q)/A(q,q);
A(r,q)=0;
for c=q+1:n+1;
A(r,c)=A(r,c)-mrq*A(q,c);
end
end
end
U=A(:,1:n);
C=A(1:n,n+1);
x=triansup(U,C);

function x=triansup(U,b)
n=length(b);
x(n)=b(n)/U(n,n);
for i=n-1:-1:1;
s=0;
for j=i+1:n;
s=s+U(i,j)*x(j);
end
x(i)=(b(i)-s)/U(i,i);
end
x=x';

metodo de iterativos...................
function y=Miter(x0,A,b,n)
m=length(b);
U=A-eye(m)
for k=1:n
x(k)=b-U*x0;
end

metodo de jacobi...............

function jacobi(x0,y0,z0,n);
fprintf('%4s %8s %5s %5s\n','n','x','y','z')
for k=1:n
xk=(7+y0-z0)/4;
yk=(-21-4*x0-z0)/(-8);
zk=(15+2*x0-y0)/5;
fprintf('%4.0f %4.12f %4.12f %4.12f\n',k,xk,yk,zk)
x0=xk;y0=yk;z0=zk;
end

.........metodo jacobi universal(con diagonal dominante)

function jacobi(A,b,x0,N)
n=length(b);
for k=1:N
for i=1:n
if i==1
x(i)=(b(i)-A(i,2:n)*x0(2:n))/A(i,i);
elseif i==n
x(i)=(b(i)-A(i,1:n-1)*x0(1:n-1))/A(i,i);
else
x(i)=(b(i)-A(i,1:i-1)*x0(1:i-1)-A(i,i+1:n)*x0(i+1:n,1))/A(i,i);
end
end
x0=x';
end
x'

con pare.................
function jacobi(A,b,x0,N)
n=length(b); delta=10^-4;
for k=1:N
for i=1:n
if i==1
x(i)=(b(i)-A(i,2:n)*x0(2:n))/A(i,i);
elseif i==n
x(i)=(b(i)-A(i,1:n-1)*x0(1:n-1))/A(i,i);
else
x(i)=(b(i)-A(i,1:i-1)*x0(1:i-1)-A(i,i+1:n)*x0(i+1:n))/A(i,i);
end
end
if norm(x'-x0)<delta
break
end
x0=x';
end
x'
k

metodo de gaus seidel...............................

function gausseidel(x0,y0,z0,n);
fprintf('%4s %8s %5s %5s\n','n','x','y','z')
for k=1:n
xk=(7+y0-z0)/4;
yk=(-21-4*xk-z0)/(-8);
zk=(15+2*xk-yk)/5;
fprintf('%4.0f %4.8f %4.8f %4.8f\n',k,xk,yk,zk)
x0=xk;y0=yk;z0=zk;
end

metodo universal de gaus seidel.................................

function gausseidel(A,b,x0,N)
n=length(b); delta=10^-4;
for k=1:N
for i=1:n
if i==1
x(i)=(b(i)-A(i,2:n)*x0(2:n))/A(i,i);
elseif i==n
x(i)=(b(i)-A(i,1:n-1)*x(1:n-1)')/A(i,i);
else
x(i)=(b(i)-A(i,1:i-1)*x(1:i-1)'-A(i,i+1:n)*x0(i+1:n))/A(i,i);
end
end
if norm(x'-x0)<delta
break
end
x0=x';
end
x'
k

............ tabla de diferencia divida.......

function tddividida(x,y)
n=length(x);
for i=1:n
t(i,1)=y(i);
end
for j=2:n
for i=j:n
t(i,j)=(t(i,j-1)-t(i-1,j-1))/(x(i)-x(i-(j-1)));
end
end
t

ejemplo....
>> x

x =

1.0000 1.3000 1.7000 2.0000

>> y

y =

0.7358 0.9709 1.1518 1.2345


>> tddividida(x,y)

t =

..0.7358.. 0 0 0 solo se una los que


tienen ..x..
0.9709 ..0.7837.. 0 0
1.1518 0.4522 ..-0.4735.. 0
1.2345 0.2757 -0.2523 ..0.2212..

interpolacion newton.......................................

function tddividida(x,y,xint)
n=length(x);
for i=1:n
t(i,1)=y(i);
end
for j=2:n
for i=j:n
t(i,j)=(t(i,j-1)-t(i-1,j-1))/(x(i)-x(i-(j-1)));
end
end
t
Pn=t(1.1); X=1;
for i=2:n
X=(xint-x(i-1))*X;
Pn=Pn+t(i,i)*X;
end
Pn

...........derivacion numerica.................
function y=fun(x)
y=(x^2-2)*exp(-3*x);

function deri1(x0,h)
d1=(fun(x0+h)-fun(x0))/h
d2=(fun(x0)-fun(x0-h))/h
d3=(fun(x0+h)-fun(x0-h))/(2*h)
exacto=(6+2*x0-3*x0^2)*exp(-3*x0)
dd=(fun(x0+h)-(2*fun(x0))+fun(x0-h))/h^2
exacto=((9*x0^2)-(12*x0)-16)*exp(-3*x0)

...............metodo del trapecio...........................


simple.....................

function y=f(x)
y=1+exp(-x)*sin(4*x);

((f(a)+f(b))/2)*(b-a)

compleja...........................

function y=f(x)
y=1+exp(-x)*sin(4*x);

function T=trapecio(n,a,b)
h=(b-a)/n;
for i=0:n;
x(i+1)=a+h*i;
y(i+1)=f(x(i+1));
end
T=(h/2)*(y(1)+2*sum(y(2:n))+y(n+1));

..............metodo de los simpson 1/3.....................


simple.........................

function y=f(x)
y=1+exp(-x)*sin(4*x);

h/3*(f(x0)+4*f(x1)+2*f(x2))

compleja........................

function y=f(x)
y=1+exp(-x)*sin(4*x);

function S=simpsonuntercio(n,a,b)
h=(b-a)/(2*n)
for i=0:2*n;
x(i+1)=a+h*i;
y(i+1)=f(x(i+1));
end
S=(h/3)*(y(1)+2*sum(y(3:2:2*n-1))+4*sum(y(2:2:2*n))+y(2*n+1));

metodo de simpson 3/8...............

function y=f(x)
y=1+exp(-x)*sin(4*x);

function S=simpsontresoctavos(n,a,b)
h=(b-a)/(3*n)
for i=0:3*n;
x(i+1)=a+h*i;
y(i+1)=f(x(i+1));
end
S=(3/8*h)*(y(1)+3*sum(y(2:3:3*n-1))+3*sum(y(3:3:3*n))+2*sum(y(4:3:3*n-2))
+y(3*n+1));

.........................................................
.............metodo de euler EDOS...................................

function z=f(x,y)
z=(x-y)/2;

function EDOSeuler(a,b,y0,h)
n=(b-a)/h;
y(1)=y0;
for i=1:n;
x(i+1)=a+i*h;
y(i+1)=y(i)+f(x(i),y(i))*h;
end
plot(x,y)
solucion=[x' y']

............metodo de runce-kutta..................
...........orde 4...............
function z=f(x,y)
%z=(x-y)/2;
%z=(1+y.^2).*(sqrt(1+sin(x)));
z=exp(x.*y)+cos(y-x);

function rungekutta4(a,b,y0,h)
n=(b-a)/h;
y(1)=y0;x(1)=a;
for i=1:n;
x(i+1)=a+i*h;
k1=f(x(i),y(i));
k2=f(x(i)+(h/2),y(i)+(h/2)*k1);
k3=f(x(i)+(h/2),y(i)+(h/2)*k2);
k4=f(x(i)+h,y(i)+h*k3);
y(i+1)=y(i)+(h/6)*(k1+2*k2+2*k3+k4);
end
plot(x,y)
solucion=[x' y']
x

...................................
metodo de la biseccion

function y=f(x)
y=x^3+2*x^2+10*x-20;

function r=biseccion(a,b,tol);
F=1;
if f(a)*f(b)<0
while F>tol;
r=(a+b)/2; F=abs(f(r));
if f(a)*f(r)<0
b=r;
elseif f(a)*f(r)>0
a=r;
else
return
end
end
else
disp('ingrese nuevos valores a y b')
end
.................................

function r=regulafalsi(a,b,tol);
F=1;
if f(a)*f(b)<0
while F>=tol;
r=b-((b-a)/(f(b)-f(a)))*f(b); F=abs(f(r));
if f(a)*f(r)<0
b=r;
elseif f(a)*f(r)>0
a=r;
else
return
end
end
else
disp('ingrese nuevos valores a y b')
end
...............................................

ejemplo 3. con detalle.

function regulafalsi(a,b,tol);
F=1; iter=0
if f(a)*f(b)<0
fprintf('iter a b r F\n');
fprintf('--------------------------------------\n');
while F>=tol;
iter=iter+1; r=b-((b-a)/(f(b)-f(a)))*f(b); F=abs(f(r));
fprintf('%2d %8.4f %8.4f %8.4f %8.4f\n',iter,a,b,r,F)
if f(a)*f(r)<0
b=r;
elseif f(a)*f(r)>0
a=r;
else
return
end
end
else
disp('ingrese nuevos valores a y b')
end
......................
Comendo en matlab: regulafalsi(0,2,0.0001)

resultado
iter =

iter a b r F
--------------------------------------
1 0.0000 2.0000 1.1111 5.0480
2 1.1111 2.0000 1.3243 0.9270
3 1.3243 2.0000 1.3613 0.1580
4 1.3613 2.0000 1.3675 0.0266
5 1.3675 2.0000 1.3686 0.0045
6 1.3686 2.0000 1.3688 0.0007
7 1.3688 2.0000 1.3688 0.0001
8 1.3688 2.0000 1.3688 0.0000

...................................................(((ALGORITMO DEL METODO DE PUNTO


FIJO))
primero se crea la funcion *** PUNTO FIJO **

function y=f(x)
y=3*x^2+2/8;
se crea el comando

function r=puntofijo(x,n)
r=x;
for i=1;n
r=f(r);
end

se inserta el comando en el matlap ----> r=puntofijo(x,n)

........................................................

PRIMERO SE CREA LA FUNCION

function y=f(x)
y=(3*x^2+2)/8;

**********************
SEGUNDO SE PROGRAMA *******

function puntofijo(x,n)
r=x; iter=0
fprintf('iter r \n');
fprintf('-------------\n');
for i=1:n
r=f(r);
iter=iter+1;
fprintf('%2d %8.6f\n',iter,r);
end

*******************************

insetamos el comando en matlap

puntofijo(0,20)

iter =

iter r
-------------
1 0.000000
2 0.897339
3 1.642133
4 2.032252
5 2.214518
6 2.299914
7 2.341567
8 2.362788
9 2.373975
10 2.380011
11 2.383316
12 2.385140
13 2.386152
14 2.386715
15 2.387029
16 2.387205
17 2.387302
18 2.387357
19 2.387387
20 2.387404

para empesar a resolver otro ejercicio agregamos el % y copiamos el otro ejemplo

function y=f(x)
% y=(3*X^2+2)/8;
% y=3*x^2-7*x+2;
y=sqrt(8*x-2)/3);
***********************************************

usando un nuevo formato

function puntofijo(x0,e,n)
r0=x0; iter=0;
for i=1:n
r=f(r0); E=abs(r-r0)/abs(r); r0=r; iter=iter+1;
if E>=e
fprintf('%2d %8.6f\n',iter,r);
else
return
end
end
........................

EJEMPLO--------------
puntofijo(0,10^-4,9)
1 0.000000
2 0.897339
3 1.642133
4 2.032252
5 2.214518
6 2.299914
7 2.341567
8 2.362788
9 2.373975

***************************************
function x=newtonraphson(x0,E,N)
n=0;
err=1;
while n<N & err>E
x=x0-f(x0)/df(x0);
err=abs(x-x0);
n=n+1;
fprintf('%2d %12.8f %12.8f\n',n,x,err)
x0=x;
end
-------------------------------------------------------------------------
function y=f(x)
y=x^3+2*x^2+10*x-20;
%y=20/(x^2+2*x+10);
------------------------------------------------------------------------
x=newtonraphson(0,10^-5,400)
1 2.00000000 2.00000000
2 1.46666667 0.53333333
3 1.37151201 0.09515465
4 1.36881022 0.00270179
5 1.36880811 0.00000211

x =

1.3688
-------------------------------------------------------------------------
function x=secante(x0,x1,E,N)
n=0;
err=1;
while n<N & err>E
x=x0-f(x0)*(x1-x0)/(f(x1)-f(x0));
err=abs(x-x1);
n=n+1;
fprintf('%2d %12.8f %12.8f\n',n,x,err)
x0=x1; x1=x;
end
-------------------------------------------------------------------------
x=secante(0,1,10^-5,400)
1 1.53846154 0.53846154
2 1.35031093 0.18815061
3 1.36791735 0.01760642
4 1.36881289 0.00089554
5 1.36880811 0.00000478

x =

1.3688

>> function y=f(x)


y=(3*x^2+2)/8;
---------------------------------
function puntofijo(x,n)
r=x; iter=0
fprintf('iter r \n');
fprintf('-------------\n');
for i=1:n
r=f(r);
iter=iter+1;
fprintf('%2d %8.6f\n',iter,r);
end
---------------------------------
puntofijo(0,20)

iter =

iter r
-------------
1 0.000000
2 0.897339
3 1.642133
4 2.032252
5 2.214518
6 2.299914
7 2.341567
8 2.362788
9 2.373975
10 2.380011
11 2.383316
12 2.385140
13 2.386152
14 2.386715
15 2.387029
16 2.387205
17 2.387302
18 2.387357
19 2.387387
20 2.387404

para empesar a resolver otro ejercicio agregamos el % y copiamos el otro ejemplo

function y=f(x)
% y=(3*X^2+2)/8;
% y=3*x^2-7*x+2;
y=sqrt(8*x-2)/3);
----------------------------------------------
function puntofijo(x0,e,n)
r0=x0; iter=0;
for i=1:n
r=f(r0); E=abs(r-r0)/abs(r); r0=r; iter=iter+1;
if E>=e
fprintf('%2d %8.6f\n',iter,r);
else
return
end
end
----------------------------------------------

puntofijo(0,10^-4,9)
1 0.000000
2 0.897339
3 1.642133
4 2.032252
5 2.214518
6 2.299914
7 2.341567
8 2.362788
9 2.373975

S-ar putea să vă placă și