x,y

Anuncio
Práctica 1: Resolución de ecuaciones no
lineales mediante métodos iterativos
wMétodo de Newton
wMétodo de Laguerre
Matemáticas para la Computación
Emiliano Torres Martínez
Características básicas de Matlab
w
w
w
w
w
w
w
w
w
w
w
w
No tiene en cuenta los espacios.
El punto y coma al final de una expresión no visualiza su valor en la pantalla.
Los nombres de variables difieren con mayúsculas y minúsculas.
Si la evaluación de una expresión no se asigna a ninguna variable, la recibe Ans.
Para obtener la lista de variables: who y whos
Para borrar borrarlas: clear, clear nom_var
Recuperar órdenes previas con las teclas de cursor del teclado
Para guardar el espacio de trabajo:
save [nombre.mat] o File -> Save Workspace as...
Para recuperar el espacio de trabajo:
load [nombre.mat] o File -> Load Workspace as...
% comentarios
help [comando] help[toolbox]
Operadores relacionales ==, ~=, <, >, <=, >=
Ficheros *.m
w Son ficheros ASCII. Tipos
n Ficheros de comandos (scripts): conjunto de comandos
que se ejecutan sucesivamente.
l
l
l
n
Las variables pertenecen al espacio de trabajo base.
echo on, echo off, echo file on, echo file off, echo file, echo on
all, echo off all
what, dir/ls, type test, delete test, cd path, cd/pwd, which test
Funciones: funciones análogas a las de Matlab con su
nombre, argumentos y valores de retorno (toolkits)
function [val_ret, ...] = nom_función (arg, ...)
l
l
El espacio de trabajo de una función es independiente al espacio
de trabajo base y de las demás funciones.
Los argumentos se pasan por valor.
Control de flujo
w if expresión
órdenes
[ else
órdenes ]
end
w if expresión1
órdenes
elseif expresión2
órdenes
else
órdenes
end
w switch expresión
case exp1,
órdenes
case {exp2, exp3, ...}
órdenes
...
otherwisse,
órdenes
end
Control de flujo
w for i=valor_inicial[:incremento]:valor_final w Gestionar
órdenes
errores en
end
tiempo de
ejecución
w for i=vectoromatriz_valores
try
órdenes
órdenes
end
catch
w while expresión
órdenes
órdenes
end
end
w lasterr,
w break, continue,
lasterr(‘’)
Lectura y escritura interactiva
de variables
w >>n=input(‘Teclee el número de ecuaciones’)
la expresión introducida es evaluada con los valores actuales de las
variables de Matlab y el resultado se devuelve como valor de retorno
w >>nombre=input(‘Introduce tu nombre’,’s’)
el texto se almacena sin evaluar en la cadena nombre
w >>disp(‘Matriz de 16 números aleatorios’)
>>A=rand(4,4)
w >>disp(A)
%muestra texto de salida o vectores sin mostrar su nombre
Gráficos bidimensionales
w plot() crea un gráfico a partir de vectores y/o columnas de matrices, con
escalas lineales sobre ambos ejes
n x=[1 6 5 2 1]; y=[1 0 4 3 1]; plot(x); plot(x, y);
n for i=1:101
%los índices de los vectores comienzan en 1
x(i)=(i-1)/100;
y(i)=x(i)+1; %organiza en vectores la función y=x+1
end;
plot(x,y);
n x=0:pi/25:6*pi; y=sin(x); z=cos(x); plot(x,y,x,z) %superpone
gráficas
n plot(A), plot(A,x), plot(x,A), plot(A,B), plot(A,B,C,D), help plot
w title(’título’) xlabel(‘tal’) / xlabel off
ylabel(‘tal’) / ylabel off
w grid cuadrícula legend() leyendas
w text(x, y, ‘texto’) añade ‘texto’ en el lugar (pueden ser vectores)
w gtext(‘texto’) introduce texto con ayuda del ratón
Gráficos bidimensionales
w fplot() admite como argumento el nombre de una función o un fichero *.m
n fplot(‘función’, límites, ‘cadena’, tol)
l ‘función’ nombre de la función o fichero *.m
l límites es un vector de 2 ó 4 elementos, cuyos valores son [xmin, xmax]
o [xmin, xmax, ymin, ymax]
l ‘cadena’ permite controlar el color, los marckers y el tipo de línea
l tol tolerancia de error relativo. Por defecto 2e-03
l >>f=‘2*exp(-x).*sin(x)’;
>>fplot(f,[0,8])
>>title(f), xlabel(‘x’)
n [x,y]=fplot(‘función’,límites,’cadena’,tol)
no se dibuja nada, se devuelven los vectores x e y
l Crear en un fichero mifunc.m
function y=mifunc(x)
y(:,1)=200*sin(x)./x;
y(:,2)=x.^2;
l >>fplot(‘mifunc(x)’,[-20,20],’g’]
Funciones: eval y feval
w eval(‘cadena de caracteres’)
evalúa como expresión de Matlab el texto entre
comas
n
n
eval(‘sin(x)’)
for n=1:10
eval([‘A’, num2str(n), ‘=magic(n)’]
end
w eval(‘tryString’, ‘catchString’) se evalúa tryString
y si se produce algún error se ejecuta catchString
w feval(nombre_función, argumentos)
n
feval(calcular, a, b, c) equivale a calcular(a,b,c)
Método gráfico
w Se usa para localizar
un intervalo donde la
función f(x)=sen(x)-ex
tiene alguna raíz.
w Para calcular la raíz
de
f(x)
hacemos
f(x)=0,
de
donde
sen(x)=ex.
Por
lo
tanto, el problema
equivale a encontrar
el
punto
de
intersección de las
funciones g(x)=sen(x)
y h(x)=ex
De lo cual concluimos que el intervalo en el que se encuentra la
única raíz es [-4, -3]
Inicio
Método de
la bisección
w
Pasos:
1.
Encontrar los valores iniciales
x0, x1 tales que f(x0) y f(x1)
tienen signos opuestos f(x0)
f(x1)<0
La primera aproximación xm= x0
+(x1- x0)/2
Evaluar f(xm), pudiendo estar en
uno de los siguientes casos:
2.
3.
n
n
n
4.
f(x0)f(xm)<0 la raíz está en [x0,
xm]
f(xm)f(x1)>0 la raíz está en [xm,
x1]
f(x0)=0 la raíz es x0
El proceso se repite hasta que
< =ä
Leer f, x0, x1,
max_iter, ä
f(x0)f(x1)
<0
No
Si
iter = 1
xm = x0+(x1-x0)/2
Si
No
f(x0)f(x1)
<= 0
= abs(x1-x0)/x1)
x1 = xm
Si
< =ä
x0 = xm
No
Devuelve
x1
iter = iter + 1
No
Fin
Si
Si iter <
max_iter
Método de Newton
w
1.
2.
3.
Pasos:
Se parte de una aproximación
xi a la raíz xi+1
Trazamos la recta tangente a la
curva en el punto (xi,f(xi)), esta
cruza el eje X en un punto xi+1
que será la siguiente
aproximación a la raíz.
Para calcular la siguiente
aproximación se utiliza la
fórmula de Newton-Raphson
f ( xi )
si f’(xi)~=0 Devuelve
x =x −
i +1
4.
i
f ' ( xi )
El proceso se repite hasta que
< =ä
Inicio
Leer f, x0, max_iter, ä
iter = 1
x1 = x 0 −
f ( x0 )
f ' ( x0 )
x0 = x1
f(x0) = f(x1)
= abs(x1-x0)
iter = iter + 1
Si
Si
Si < = ä
x1
No
Si iter <
max_iter
No
Fin
Método de Laguerre
w
Pasos:
1.
2.
3.
4.
5.
Se parte de una aproximación xi a la raíz xi+1
Se calcula p(x), p'(x) y p''(x) mediante el algoritmo de Horner
Calcula los términos A, B y C de Laguerre
Calcula el nuevo valor de x corregido
El método de laguerre converge muy rápidamente, para evitar posibles
divisiones por cero, lo mejor es salir tan pronto como hayamos
convergido. Para eso volvemos a calcular el valor del polinomio en el
nuevo valor x.
El proceso se repite hasta que < = ä
6.
Descargar