Title | Ejercicios Computacionales Matlab 2 |
---|---|
Course | Algorítmica Numérica |
Institution | Universidad Politécnica de Madrid |
Pages | 14 |
File Size | 840.1 KB |
File Type | |
Total Downloads | 22 |
Total Views | 144 |
Download Ejercicios Computacionales Matlab 2 PDF
ALGORÍTMICA NUMÉRICA
Ejercicios Computacionales Matlab (2)
FUNCIONES / SCRIPTS y CONTROL de FLUJO Los ejercicios tratan sobre la creación de scripts y funciones, instrucciones de control de flujo, gráficos, etc. utilizando Matlab. Nota: El texto en azul son sentencias de MATLAB. Podéis ejecutarlas en la ventana de comandos con un cortar y pegar. Posteriormente podéis modificarlas para entender mejor como funcionan o para resolver las cuestiones no resueltas.
1.Escribir una función que reciba como argumentos de entrada un número x y un entero n y devuelva el valor de la n-ésima potencia de x (x^n). El segundo argumento puede ser opcional. Si se omite debe tomarse como n=2 (devolviendo el cuadrado de x). function p = potencia (x,n) if nargin==1, n=2; end p= x^n; return
2.Escribir una función que reciba como argumentos dos valores a y b y devuelva su suma. Opcionalmente, si el usuario la llama con dos argumentos de salida, debe devolver también su resta. function [S,R]=suma(a,b) S = a+b; if nargout==2, R = a-b; end return
3.Sea la matriz 5x7 de números aleatorios entre 0 y 1 generada por A=rand(5,7). a)Usar bucles anidados asignando a cada elemento de A el valor 0.2 si el valor original era menor/igual a 0.4 y 0.7 si era mayor que 0.4: for k=1:5, for j=1:7, if A(k,j)=0.5)=0.8 x(x10^(-18)) f=((-1).^n).*(x.^(2.*n+1)./factorial(2.*n+1)) n=n-1 end
8. a)!
for k=[1:2:1000] k = 1./k sum (k)! end! b)!
x = [1:2:999]! x = 1./x! sum (x)! %Sabemos que para sumar los numeros de una sucesion! %aritmetica utilizamos la formula: ((elem1 + elem500)/2)*elemult ! %el elem 1 = 1;elem500 = 999;elemult = 500! %sabemos que elem500 = 1+(500-1)*2! ((1+1/999)/2)*500 !
c)!
tic for k = [1:2:999] k = 1./k sum(k) end toc t = toc tic x = [1:2:999] x = 1./x sum(x) toc t = toc d)
n=1 r = rand while r < 0.999 !10
ALGORÍTMICA NUMÉRICA
Ejercicios Computacionales Matlab (2)
r = rand n=n+1 end 10. a)
%funcion pii: a=1 b=1/2^(1/2) t=1/4 x=1 y=a a=(a+b)/2 b=(b*y)^(1/2) t=t-(x*(y-a) ^2) x=2*x b)
a=1; b=1/2 ^(1/2); x=1; y=a; k=0; pii=i; while abs(a-b)>=(1*e-15) a=(a+b)/2 b=(b*y)^(1/2); t=t-(x*(y-a)^2); x=2*x; pi=((a+b)^2)/(4*t); e=(i-pi); k=k+1; fprintf('Iter %04d k. Aprox. pi =%.12f . Error %4e',k,pi,e) end
!11
ALGORÍTMICA NUMÉRICA
Ejercicios Computacionales Matlab (2)
c)
Número iteraciones 0001 0002 0003 0004 0005
d e Aproximación del E r r o r d e l a T i e m p o d e valor aproximación ejecución 3,140579250522 4,278404397534 6,700247489513 12,02884070648 8 27,92560664406 6
11.
n=10; x=[1:n]; y=[1:n]; A=ones(n,n); for k=x for h=y if k>1 && h>1 A(k,h)=A(k-1,h)+A(k,h-1); end end end resultado=A 13.
!12
-3,140579e -4,278404e -6,700247 -1,202884 Error
00 00 00 00 01
ALGORÍTMICA NUMÉRICA
Ejercicios Computacionales Matlab (2)
A=zeros(2,1000); for i=2:1000 B=randn(2, 1); A(1, i) = A(1, i-1) + B(1, 1); A(2, i) = A(2, i-1) + B(2, 1); end plot(A(1, :), A(2, :), '-bs', 'MarkerSize', 2)
14.
15.
function L = collatz(n) m=0; while n ~= 1 if rem(n,2) == 0 n = n/2; else n = n*3+1; end m = m+1; end L = m; return x = 1:1000; for k = 1:1000 !13
ALGORÍTMICA NUMÉRICA
Ejercicios Computacionales Matlab (2)
y(k) = collatz(k); end plot(x,y)
!14...