Академический Документы
Профессиональный Документы
Культура Документы
E.T.S.I. MINAS
INSTRUCCIONES Y RECOMENDACIONES
1ª. El presente examen debe realizarse individualmente. Para la resolución de los
ejercicios que se proponen puede utilizarse toda la documentación (impresa o
informática) que se desee.
3ª. Al fichero en el que se grabe la solución del examen debe asignársele un nombre
formado de la siguiente manera: el primer carácter será la inicial del primer nombre
propio del alumno. Tras él se escribirá el primer apellido del alumno (en el caso de ser
compuesto escríbase todo junto) seguido de la inicial del segundo apellido. Todas las
letras del nombre del fichero se escribirán en mayúsculas.
Ejemplo: Una alumna que se llamase EVA MARÍA LÓPEZ-GÓMEZ HEREDIA debe
asignar al fichero el nombre ELOPEZGOMEZH.
4ª. En el fichero escribe como primera línea tu nombre y apellidos completos. Además
identifica claramente el comienzo y el final de cada uno de los ejercicios.
5ª. Se recomienda grabar periódicamente (cada 5 minutos) para evitar perder el trabajo
realizado por bloqueos del ordenador. Asimismo se recomienda no abrir
simultáneamente muchas hojas de MAPLE pues ello puede ralentizar el funcionamiento
del ordenador llegando incluso a bloquearlo.
6ª. Se recomienda grabar eliminando las respuestas que proporciona MAPLE a las
instrucciones. Ello hará que la grabación sea más rápida al ocuparse menos memoria.
Recuerda que para eliminar las respuestas de MAPLE puedes seleccionar en la barra de
menús de MAPLE la opción “Edit” y en la ventana que se despliegue elegir la opción
“Remove_Output” seleccionando en la nueva ventana que se despliegue la opción
“FromWorksheet”. Si tienes problemas para realizar esta opción pide ayuda al profesor.
7ª. Lee con atención los enunciados de los ejercicios. Si tienes dudas en la comprensión
de los mismos no dudes en solicitar las aclaraciones oportunas al profesor.
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
f ( x1 ) − f ( x0 )
f ' ( x *) =
x1 − x0
f ( xi +1 ) − f ( xi )
f ' ( xi ) = , i = 0,1,… , N − 1
h
b−a
con h = .
N
x
Se considera la función: f ( x ) = cos( ) ⋅ sin ( 2 x ) y el intervalo [ −π , π ] y se
2
pide escribir un programa MAPLE que:
Solución:
> restart:
> with(plots):
Warning, the name changecoords has been redefined
Declaramos la función f
> f:=x->cos(x/2)*sin(2*x);
f := x → cos⎜⎜⎛ x ⎟⎟⎞ sin( 2 x )
1
⎝2 ⎠
Establecemos los valores extremos del intervalo [a,b], el número de
subintervalos (N) y el tamaño de los subintervalos (h)
1
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
> display(dib1,dib2);
2
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
> fin_del_ejercicio;
fin_del_ejercicio
3
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
1
2
1 4 5 5
2 4
6
3 3
⎛1 1 0 0 0 0⎞
⎜ ⎟
⎜1 0 1 0 0 0⎟
A = ⎜0 0 1 1 0 1⎟
⎜ ⎟
⎜0 1 0 1 1 0⎟
⎜0 1 ⎟⎠
⎝ 0 0 0 1
Se denomina dendrita a un subgrafo que une todos los nodos del grafo pero que
no contiene bucles, por ejemplo:
1
2
1 4 5 5
3 3
4
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
Por tanto, el conjunto de arcos {1,2,3,5} es una dendrita del grafo ejemplo.
I=1
J=1
V =1
EXAM[V] = 1
5
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
b) Aplicarlo al ejemplo.
Solución:
Algoritmo BFS
> restart:
> with(linalg):
Warning, the protected names norm and trace have been redefined and
unprotected
6
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
od:
>
> print(DENDR);
[ 1, 2, 3, 5 ]
> fin_del_ejercicio;
fin_del_ejercicio
det( A − λ I )
an = (−1) n +1 B=A
an −1 = (−1) n tr (B) B = ( B − tr (B)I ) A
1 ⎛ tr (B) ⎞
an − 2 = (−1) n tr (B) B = ⎜B − I⎟A
2 ⎝ 2 ⎠
1 ⎛ tr (B) ⎞
an −3 = (−1) n tr (B) B = ⎜B − I⎟A
3 ⎝ 3 ⎠
1 ⎛ tr (B) ⎞
an −i = (−1) n tr (B) B = ⎜B − I⎟A
i ⎝ i ⎠
p( x) = a0 + a1 x + a2 x 2 + … + an x n
7
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
q[0] = -a[n-1]/a[n]
e[0] = e[n] = 0
norma = 2*eps
iter = 1
iter = iter + 1
n
norma = ∑ e [ j ]
j =0
Se pide:
n Dimensión de la matriz
A Matriz
8
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
y de salida:
y de salida:
⎛ 4 2 −2 ⎞
⎜ ⎟
A = ⎜ −5 3 2 ⎟
⎜ −2 4 1 ⎟
⎝ ⎠
Solución:
> restart:
> with(linalg): with(plots):
Warning, the protected names norm and trace have been redefined and
unprotected
Procedimiento DC
> DC:=proc(n,a,q)
description "calcula las raíces, x[i], i=0,1,...,n-1,
de un polinomio de grado n y coeficientes a[i]
i=0,1,...,n";
local i,j,iter,e,eps,maxiter,norma:
e:=array(0..n,[]):
9
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
eps:=1e-10; maxiter:=100;
q[0]:=evalf(-a[n-1]/a[n]);
e[0]:=0.; e[n]:=0.;
for i from 1 to n-1 do
q[i]:=0.;
e[i]:=evalf(a[n-i-1]/a[n-i]);
od;
norma:=2*eps; iter:=1;
while norma > eps and iter < maxiter do
for i from 0 to n-1 do
q[i]:=q[i]+e[i+1]-e[i];
od;
for i from 1 to n-1 do
e[i]:=q[i]*e[i]/q[i-1];
od;
iter:=iter+1:
norma:=sum(abs(e[j]),j=0..n);
od;
end proc:
Procedimiento Leverrier
> Leverrier:=proc(n,A,a)
description "calcula los coeficientes a[i] del
polinomio característico de la matriz A de dimensión n";
local B,In,aux,i,j;
B:=matrix(n,n): In:=matrix(n,n):
for i from 1 to n do
for j from 1 to n do
if i=j then
In[i,j]:=1:
else
In[i,j]:=0:
fi;
od;
od;
a[n]:=((-1)^(n+1));
B:=evalm(A):
10
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
> n:=3:
> a:=array(0..n,[]): x:=array(0..n-1,[]):
> A:= matrix(n,n,[[4,2,-2],[-5,3,2],[-2,4,1]]);
⎡ 4 2 -2⎤
⎢ ⎥
A := ⎢⎢-5 3 2⎥⎥
⎢⎢ ⎥⎥
⎣-2 4 1⎦
>
> Leverrier(n,A,a):
> DC(n,a,x):
> print(a,x);
array(0 .. 3, [ ]), array(0 .. 2, [
( 0 ) = -10. ( 0 ) = 5.000000001
( 1 ) = 17. ( 1 ) = 2.000000000
( 2 ) = -8. ( 2 ) = 0.9999999996
(3) = 1 ])
> fin_del_ejercicio;
fin_del_ejercicio
11
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
⎧z '(t)⎫ ⎫
⎨ ⎬ = f(z(t),c(t)⎬ t>0
⎩c '(t)⎭ ⎭
z(0) = z0 , c(0) = c0
t0 = 0, z0 conocido y c0 conocido
se genera:
ti+1 = ti + h (i = 0, 1, ...., NP-1)
⎧ ⎫
⎪K = f (z , c ) ⎪
⎪ 0 i i ⎪
⎪ K1 = f ( zi + (h / 2) K 0 , ci + (h / 2) K 0 ) ⎪
⎪⎪ ⎪⎪
⎨ K 2 = f ( zi + (h / 4) K 0 + (h / 4) K1 , ci + (h / 4) K 0 + (h / 4) K1 ) ⎬ (i = 0,1,...,NP − 1)
⎪ ⎪
⎪ K 3 = f ( zi − hK1 + 2hK 2 , ci − hK1 + 2hK 2 ) ⎪
⎪⎧ zi +1 ⎫ ⎧ zi ⎫ ⎪
⎪⎨ ⎬ = ⎨ ⎬ + (h / 6)( K 0 + 4 K 2 + K 3 ) ⎪
⎩⎪⎩ ci +1 ⎭ ⎩ci ⎭ ⎭⎪
12
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
⎧−0.16 ⋅ z + 0.03 ⋅ z ⋅ c ⎫
f(z,c) = ⎨ ⎬
⎩ 4.5 ⋅ c − 0.9 ⋅ z ⋅ c ⎭
Una vez calculados los valores de cada población en los instantes ti,
deberá representarse en una misma gráfica las dos secuencias de puntos (ti, zi)
y (ti, ci).
Solución:
> restart:
> with(plots):
> f:=(z,c)->vector(2,[-0.16*z+0.03*z*c,4.5*c-0.9*z*c]);
f := ( z, c ) → vector ( 2, [ −0.16 z + 0.03 z c, 4.5 c − 0.9 z c ] )
> np:=5000; T:=25.;
np := 5000
T := 25.
> z:=array(0..np):
c:=array(0..np):
t:=array(0..np):
k0:=vector(2,[]):
k1:=vector(2,[]):
k2:=vector(2,[]):
k3:=vector(2,[]):
t[0]:=0.:
z[0]:=4.:
c[0]:=20.:
> h:=T/np:
for i from 0 to (np-1) by 1 do
k0:=f(z[i],c[i]):
k1:=f(z[i]+(h/2)*k0[1],c[i]+(h/2)*k0[2]):
k2:=f(z[i]+(h/4)*k0[1]+(h/4)*k1[1],c[i]+(h/4)*k0[2]+(h/4)*k
1[2]):
k3:=f(z[i]-h*k1[1]+2*h*k2[1],c[i]-h*k1[2]+2*h*k2[2]):
t[i+1]:=i*h:
z[i+1]:=z[i]+(h/6)*(k0[1]+4*k2[1]+k3[1]):
c[i+1]:=c[i]+(h/6)*(k0[2]+4*k2[2]+k3[2]):
od:
13
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
> zorros:=[seq([t[k],z[k]],k=0..np)]:
conejos:=[seq([t[k],c[k]],k=0..np)]:
>
dzorros:=pointplot(zorros,symbol=box,color=red,connect=true
):
dconejos:=pointplot(conejos,symbol=circle,color=blue,connec
t=true):
>
display(dzorros,dconejos,labels=[`tiempo`,`unidades`],label
directions=[HORIZONTAL,VERTICAL]);
> fin_ejercicio_primero;
fin_ejercicio_primero
∞
⎧⎪ f ( x i ) ⎫⎪
⎨ x i+1 = x i - ⎬
⎩⎪ f ′ ( x )
i ⎭⎪i=0
14
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
ALGORITMO
Dados: x, maxiter y ε
f (x)
y← x- jÅ1
f′( x )
MIENTRAS ( ( j < maxiter) Y ( | x – y | > ε ) ) HACER:
x.f(y) - y.f(x)
1º) z ← 2º) x Å y
f(y) - f(x)
3º) y Å z 4º) j Å j+1
f ( x) = x3 − 2 x − 5
en el intervalo [2,3].
Solución
> secante:=proc(xinic,maxiter,eps,f,z,tol,iter)
local aux,x,y,j:
x:=xinic:
y:= x-f(x)/D(f)(x):
j:= 1:
while ((j<maxiter) and (abs(x-y)>eps)) do
15
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
aux:=(x*f(y)-y*f(x))/(f(y)-f(x)):
x:= y:
y:= aux:
j:= j+1:
od:
z:=aux:
tol:=abs(x-y):
iter:=j:
end:
> restart;
maxiter := 20
eps := 0.0001000000000
f := x → x3 − 2. x − 5.
x := 3.
> secante(x,maxiter,eps,f,sol,tol,iter):
> evalf(sol);tol;iter;
2.094551484
0.3907 10-5
6
>
16
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
Sean p y q dos enteros tales que 1<=p<q<=n. Tomaremos n=5, p=2 y q=4 para
visualizar los cálculos y razonaremos en el caso general.
Solución:
> restart:with(linalg):
>
Warning, the protected names norm and trace have been redefined and unprotected
17
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
⎡a 1, 1 a 1, 2 a 1, 3 a 1, 4 a 1, 5⎤
⎢ ⎥
⎢a a 2, 5⎥⎥
⎢ 2, 1 a 2, 2 a 2, 3 a 2, 4
⎢ ⎥
⎢ a 3, 5⎥⎥
A := ⎢a 3, 1 a 3, 2 a 3, 3 a 3, 4
⎢ ⎥
⎢ ⎥
⎢a 4, 1 a 4, 2 a 4, 3 a 4, 4 a 4, 5⎥
⎢ ⎥
⎢ ⎥
⎢a 5, 1 a 5, 2 a 5, 3 a 5, 4 a 5, 5⎥
⎣ ⎦
> T:=diag(1$5):
> T[2,2]:=0: T[2,4]:=1: T[4,4]:=0: T[4,2]:=1:
> eval(T);
⎡1 0 0 0 0⎤
⎢ ⎥
⎢0 0 0 1 0⎥⎥
⎢
⎢0 0 1 0 0⎥⎥
⎢
⎢ ⎥
⎢0 1 0 0 0⎥⎥
⎢
⎢⎢ ⎥
⎣0 0 0 0 1⎥⎦
> evalm(T&*A):
> evalm(inverse(T)):
> evalm(A&*T):
> evalm(T&*A&*T):
> S:=diag(1$n): S[4,2]:=alpha: eval(S);
⎡1 0 0 0 0⎤
⎢ ⎥
⎢0 1 0 0 0⎥
⎢ ⎥
⎢0 0 1 0 0⎥
⎢ ⎥
⎢ ⎥
⎢0 α 0 1 0⎥
⎢ ⎥
⎢⎢ ⎥⎥
⎣0 0 0 0 1⎦
> evalm(S&*A):
> S1:=inverse(S): eval(S1):
> evalm(A&*S1):
> Pivot:=proc(A,k,n)
local pivot,l,i;
pivot:=A[k+1,k];
l:=k+1;
for i from k+2 to n do
if abs(pivot)<abs(A[i,k]) then pivot:=A[i,k];l:=i
fi
od;
[pivot,l]:
end:
> Permutation:=proc(A,i,j)
local B, linea;
B:=A;
to 2 do
B:=convert(B,listlist);
linea:=B[i];
B[i]:=B[j];
18
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
B[j]:=linea;
B:=transpose(B):
od;
B:
end:
> Reduction:=proc(A,k,pivot,n)
local B,alpha,i,j;
B:=A;
for i from k+2 to n do
alpha:=B[i,k]/pivot;
B[i,k]:=0;
for j from k+1 to n do
B[i,j]:=B[i,j]-alpha*B[k+1,j]:
od;
B:=addcol(B,i,k+1,alpha):
od;
B:
end:
> Hessenberg:=proc(A)
local B,pivot,l,n,k,p;
B:=A;
n:=rowdim(A);
for k to n-2 do
p:=Pivot(B,k,n);pivot:=p[1];l:=p[2];
if pivot<>0 then
B:=Permutation(B,k+1,l);
B:=Reduction(B,k,pivot,n);
fi
od;
eval(B):
end:
> A:=randmatrix(6,6,entries=rand(-10000000..10000000));
⎡ -449316 1443958 -1466708 -9494177 -190111 4944555⎤
⎢ ⎥
⎢ 6279651 -8515675 -6211942 -9972001 -7020144 8819815⎥
⎢ ⎥
⎢ 8355940 6969561 -4145631 -2085325 9530039 7360042⎥
⎢ ⎥
A := ⎢⎢ ⎥
⎥
⎢ -7909422 -5702248 -4713511 4626396 -9336645 -4582564⎥
⎢ ⎥
⎢ 3269370 -2814418 3506921 4734509 5731080 -5474758⎥
⎢ ⎥
⎢⎢ ⎥⎥
⎣ 9162767 -1757952 -5761588 8493037 -2818650 -8707130⎦
> A:=map(x->evalf(.1*10^(-5)*x),A);
19
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
A :=
[ -0.4493160000 , 1.443958000 , -1.466708000 , -9.494177000 , -0.1901110000 ,
4.944555000]
[ 6.279651000 , -8.515675000 , -6.211942000 , -9.972001000 , -7.020144000 ,
8.819815000]
[ 8.355940000 , 6.969561000 , -4.145631000 , -2.085325000 , 9.530039000 ,
7.360042000]
[ -7.909422000 , -5.702248000 , -4.713511000 , 4.626396000 , -9.336645000 ,
-4.582564000]
[ 3.269370000 , -2.814418000 , 3.506921000 , 4.734509000 , 5.731080000 ,
-5.474758000]
[ 9.162767000 , -1.757952000 , -5.761588000 , 8.493037000 , -2.818650000 ,
-8.707130000]
> C:=Hessenberg(A);
C :=
[ -0.4493160000 , 12.72427236 , -8.911858609 , -0.9668842518 , 1.495268666 ,
-0.1901110000]
[ 9.162767000 , -23.50320984 , 14.48178506 , -5.762057362 , -0.9972027037 ,
-2.818650000]
[ 0 , -40.40229103 , 24.45995437 , -9.650278755 , -4.043100487 , -11.76974106]
[ 0 , 0 , 5.608346896 , -6.918765544 , 1.805311832 , 1.90738667]
[ 0 , 0 , 0 , -6.039060437 , -8.469391351 , -11.38781222]
[ 0 , 0 , 0 , 0 , -6.145423282 , 3.420452362]
> eigenvalues(C);
>
-5.633057316 + 8.250334935 I, -5.633057316 − 8.250334935 I, 12.15749413,
-7.419387855, 7.847707629, -12.77997528
> eigenvalues(A);
>
-5.633057313 + 8.250334941 I, -5.633057313 − 8.250334941 I, 12.15749412,
-7.419387854, 7.847707630, -12.77997527
> eval(A);
20
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
21
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
Se pide que escribas un programa MAPLE que calcule los puntos (xi, yi)
(i = 0, ..., n) definidos como se acaba de detallar y los representes en una
gráfica uniéndolos en color azul. Prueba el programa con los datos:
Solución:
> restart;
> with(plots):
Warning, the name changecoords has been redefined
> V:=25;omega:=2;TC:=7;n:=200;TF:=12.;
x:=array(0..n):
y:=array(0..n):
V := 25
ω := 2
TC := 7
n := 200
TF := 12.
> h:=TF/n:
22
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
> fin_del_primer_ejercicio;
fin_del_primer_ejercicio
23
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
ALGORITMO
Datos: n, m, matriz U de dimensiones (n, m)
Escribir la matriz V
FIN ALGORITMO
24
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
⎡1 1 1⎤
⎢ ⎥
⎢1 0 0⎥
⎢ ⎥
U = ⎢⎢ 0 1 0 ⎥⎥
⎢0 0 1⎥⎥
⎢
⎢1 1⎥⎥⎦
⎢⎣ 1
Solución:
> restart;
> with(linalg):
Warning, the protected names norm and trace have been redefined and
unprotected
> n:=5;m:=3;
U:=matrix(n,m,[[1,1,1],[1,0,0],[0,1,0],[0,0,1],[1,1,1]]);V:
=matrix(n,m):
n := 5
m := 3
⎡1 1 1⎤
⎢ ⎥
⎢1 0 0⎥⎥
⎢
⎢ ⎥
U := ⎢⎢ 0 1 0⎥⎥
⎢0 1⎥⎥
⎢ 0
⎢ ⎥
⎢1 1⎥⎦
⎣ 1
> for i from 1 to n by 1 do
V[i,1]:=U[i,1]:
od:
> normj[1]:=0:
for i from 1 to n by 1 do
normj[1]:=normj[1]+V[i,1]*V[i,1]:
od:
> for i from 2 to m by 1 do
for j from 1 to i-1 by 1 do
algo:= 0:
for k from 1 to n by 1 do
algo:=algo+U[k,i]*V[k,j]:
od:
alpha[i,j]:= algo/normj[j]:
od:
normj[i]:=0:
for j from 1 to n by 1 do
V[j,i]:=U[j,i]:
for k from 1 to i-1 by 1 do
V[j,i]:=V[j,i]-alpha[i,k]*V[j,k]:
od:
normj[i]:=normj[i]+V[j,i]**2:
od:
od:
25
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
> evalm(V);
⎡ 1 1 ⎤
⎢ 1 ⎥
⎢ 3 5 ⎥
⎢ ⎥
⎢ ⎥
⎢ -2 -2 ⎥
⎢ 1 ⎥
⎢ 3 5 ⎥
⎢ ⎥
⎢ ⎥
⎢ -2 ⎥
⎢ ⎥
⎢ 0 1 ⎥
⎢ 5 ⎥
⎢ ⎥
⎢ ⎥
⎢ 0 0 1 ⎥
⎢ ⎥
⎢ 1 1 ⎥
⎢ ⎥
⎢ 1 ⎥
⎣ 3 5 ⎦
Comprobación de la ortogonalidad de los vectores (no pedida en el enunciado)
> for iv from 1 to m by 1 do
for jv from 1 to m by 1 do
valor:= 0:
for k from 1 to n by 1 do
valor:=valor + V[k,iv]*V[k,jv]:
od:
print (iv,jv,valor);
od:
od;
1, 1, 3
1, 2, 0
1, 3, 0
2, 1, 0
5
2, 2,
3
2, 3, 0
3, 1, 0
3, 2, 0
7
3, 3,
5
> fin_del_segundo_ejercicio;
fin_del_segundo_ejercicio
26
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
2º) Calcule las funciones g1(x), g2(x) y g3(x) definidas como sigue:
g1(x) = f1(x),
g2(x) = f2(x) – α2,1·g1(x) ,
g3(x) = f3(x) – α3,1·g1(x) – α3,2·g2(x)
27
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
donde los valores αi,j (i = 2, 3; j = 1,.. i-1) se calcularán con ayuda del
procedimiento pescfun ya que se corresponden a los valores :
4
αi,j = ∑ c ·f (x
k =1
k i k )·g j (xk )
siendo los puntos y pesos {xk} y {ck} (k = 1, .., 4) los calculados con el
procedimiento pgauss4.
3º) Dibuje las tres funciones g1(x), g2(x) y g3(x) en el intervalo [a, b]
mostrando las tres gráficas en un mismo dibujo y con diferentes colores.
Solución:
a)
> restart;
> pgauss4:=proc(a,b,x,c)
x:=vector(4):
c:=vector(4):
x[1]:=((a+b)-0.8611363116*(b-a))/2.:
c[1]:=0.3478548451*(a+b)/2.:
x[2]:=((a+b)-0.3399810436*(b-a))/2.:
c[2]:=0.6521451548*(a+b)/2.: x[3]:=((a+b)+0.3399810436*(b-
a))/2.: c[3]:=c[2]:
x[4]:=((a+b)+0.8611363116*(b-a))/2.: c[4]:=c[1]:
end proc:
28
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
c)
> restart;
> with(linalg):with(plots):
Warning, the protected names norm and trace have been redefined and
unprotected
1
f 2 := x → x + x x x
3
f 3 := x → 1 + x + x x + x x x
> a:=0;b:=3;m:=3;
a := 0
b := 3
m := 3
> read "pgauss4.m":
read "pesfunc.m":
> pgauss4(a,b,x,c):
> g[1]:=f[1];
g1 := f 1
> pescfun(x,c,g[1],g[1],norma[1]):
> for i from 2 to m by 1 do
for j from 1 to (i-1) by 1 do
pescfun(x,c,f[i],g[j],algo[i,j]):
alpha[i,j]:= algo[i,j]/norma[j]:
od:
g[i]:=f[i]:
for j from 1 to i-1 by 1 do
g[i]:=g[i]-alpha[i,j]*g[j]:
od:
pescfun(x,c,g[i],g[i],norma[i]):
od:
> vv:=matrix(m,m):
> for i from 1 to m by 1 do
for j from 1 to m by 1 do
pescfun(x,c,f[i],g[j],valor[i,j]):
vv[i,j]:=valor[i,j]:
od:
od:
29
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
> dib1:=plot(g[1](x),x=a..b,color=blue):
dib2:=plot(g[2](x),x=a..b,color=red):
dib3:=plot(g[3](x),x=a..b,color=gold):
> display(dib1,dib2,dib3);
> fin_del_tercer_ejercicio;
fin_del_tercer_ejercicio
30
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
y θi = ω·t i
donde los instantes ti son (n+1) instantes uniformemente repartidos en un cierto
intervalo (0, Tf) y Tc = 2R/V.
Se pide que escribas un programa MAPLE que calcule los puntos (xi, yi) (i = 0,
..., n) definidos como se acaba de detallar y los representes en una gráfica
uniéndolos en color azul. Prueba el programa con los datos:
Solución:
> restart;
> with(plots):
Warning, the name changecoords has been redefined
> R:=25;V:=2;omega:=1;a:=0.05;
n:=800;TF:=50.;
x:=array(0..n):
y:=array(0..n):
R := 25
V := 2
ω := 1
a := 0.05
n := 800
TF := 50.
31
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
> h:=TF/n:
TC:=2*R/V:
for i from 0 to n by 1 do
t:=i*h:
if (t <= TC) then
rho:=R-V*t/2:
theta:=omega*t:
else
rho:=V*(t-TC)+a*(t-TC)*(t-TC)/2.:
theta:=omega*t:
fi:
x[i]:=rho*cos(theta):
y[i]:=rho*sin(theta):
od:
> ptos:=[seq([x[i],y[i]],i=0..800)]:
> pointplot(ptos,color=blue,connect=true);
> fin_del_primer_ejercicio;
fin_del_primer_ejercicio
32
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
⎡ d1 b1 0 0 ... 0 0 0 ⎤⎧ ⎪ x1 ⎪ ⎫ ⎪
⎧ c1 ⎪ ⎫
⎢ ⎥⎪ ⎪ ⎪
⎪ ⎪
⎪ ⎪
⎪
⎢a 2 d2 b2 0 ... 0 0 0 ⎥⎪ x ⎪ ⎪ c ⎪
⎢ ⎥⎪ ⎪ 2 ⎪
⎪ ⎪
⎪ 2 ⎪
⎪
⎢0
⎢ a3 d3 b3 ... 0 0 0 ⎥⎥ ⎪ ⎪
⎪ x 3
⎪
⎪
⎪
⎪
⎪
⎪ c 3
⎪
⎪
⎪
⎢0 ⎪ ⎪ ⎪ ⎪
⎢ 0 a4 d4 ... 0 0 0 ⎥⎥ ⎪ ⎪ x 4 ⎪
⎪ ⎪
⎪ c 4 ⎪
⎪
⎢ ... ·⎥ ⎨ ⎬=⎨ ⎬
⎢ ... ... ... % ... ... ... ⎥ ⎪ ⎪ ... ⎪⎪ ⎪
⎪ ... ⎪⎪
⎢ ⎥⎪ ⎪ ⎪ ⎪
⎢0 0 0 0 ... dn−2 bn−2 0 ⎥ ⎪x n−2 ⎪ ⎪c n−2 ⎪
⎪ ⎪ ⎪ ⎪
⎢ ⎥⎪ ⎪ ⎪
⎪ ⎪
⎪ ⎪
⎪
⎢0 0 0 0 ... an−1 dn−1 bn−1 ⎥ ⎪ ⎪ x ⎪
n−1 ⎪
⎪
⎪ c ⎪
n−1 ⎪
⎢ ⎥⎪ ⎪ ⎪ ⎪
⎢⎣ 0 0 0 0 ... 0 an dn ⎥⎦ ⎪⎪
⎪⎩ x n ⎪
⎪ ⎪
⎪ ⎪
⎭ ⎪ cn ⎪
⎩
⎪
⎪
⎭
ALGORITMO
Datos: n, la matriz tridiagonal S (que forma la matriz del sistema) y el vector de
segundo término {ci}1<i<n
Salvar el vector c con el nombre corig.
Extraer de S los vectores {ai}2<i<n, {di}1<i<n, y {bi}1<i<n-1,
Para i desde 2 hasta n con paso 1 hacer:
di Å di – (ai·bi-1 / di-1)
ci Å ci – (ai·ci-1 / di-1)
Fin bucle en i.
xn Å cn / dn.
Para i desde n-1 hasta 1 con paso -1 hacer:
xi Å (ci - bi·xi+1) / di
Fin bucle en i.
FIN ALGORITMO
33
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
Solución:
> restart;
> with(linalg):
Warning, the protected names norm and trace have been redefined and
unprotected
> n:=4;
S:=matrix(n,n,[[1,1,0,0],[1,2,1,0],[0,1,3,1],[0,0,1,4]]);
c:=vector(n,[1,1,1,1]):
x:=vector(n):
n := 4
⎡1 1 0 0⎤
⎢ ⎥
⎢1 2 1 0⎥⎥
S := ⎢⎢ ⎥
⎢0 1 3 1⎥⎥
⎢
⎢0 4⎥⎦
⎣ 0 1
> corig:=vector(n):
corig:=evalm(c);
corig := [ 1, 1, 1, 1 ]
> a:=vector(n):d:=vector(n):b:=vector(n):
> d[1]:=S[1,1]:
a[1]:=0:
for i from 2 to n by 1 do
d[i]:=S[i,i]:
a[i]:=S[i,i-1]:
b[i-1]:=S[i-1,i]:
od:
b[n]:=0:
> evalm(a);evalm(b);evalm(d);
[ 0, 1, 1, 1 ]
[ 1, 1, 1, 0 ]
[ 1, 2, 3, 4 ]
> for i from 2 to n by 1 do
d[i]:= d[i]-a[i]*b[i-1]/d[i-1]:
c[i]:= c[i]-a[i]*c[i-1]/d[i-1]:
od;
d2 := 1
c2 := 0
d3 := 2
c3 := 1
34
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
7
d4 :=
2
1
c4 :=
2
> x[n]:=c[n]/d[n];
for i from n-1 to 1 by -1 do
x[i]:=(c[i]-b[i]*x[i+1])/d[i]:
od;
1
x4 :=
7
3
x3 :=
7
-3
x2 :=
7
10
x1 :=
7
> evalm(x);
evalm(S&*x);
⎡ 10, -3, 3, 1 ⎤
⎢⎢ ⎥⎥
⎣ 7 7 7 7⎦
[ 1, 1, 1, 1 ]
> norm(S&*x-corig,2);
0
> fin_del_segundo_ejercicio;
fin_del_segundo_ejercicio
⎛ a + b ⎞⎟ 3 ⎛⎜ b − a ⎞⎟
x 3 = ⎜⎜ ⎟ + ·⎜ ⎟ , c3 = c1
⎜⎝ 2 ⎠⎟ 5 ⎝⎜ 2 ⎠⎟
35
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
b) Escribir un procedimiento MAPLE en el que dados tres puntos {x1, x2, x3}
y tres coeficientes {c1, c2, c3} así como dos funciones f y g se calcule el
valor:
4
valor = ∑ c i ·f(xi )·g(xi )
i=1
y los valores a = 0 y b = 3:
1º) Utilice el procedimiento pgauss3 para calcular los tres puntos x y pesos
c correspondientes a los valores de a y b que se acaban de proporcionar.
2º) Calcule las funciones g1(x), g2(x) , g3(x), y g4(x) definidas como sigue:
g1(x) = f1(x),
g2(x) = f2(x) – α2,1·g1(x) ,
g3(x) = f3(x) – α3,1·g1(x) – α3,2·g2(x)
g4(x) = f4(x) – α4,1·g1(x) – α4,2·g2(x) – α4,3·g3(x)
donde los valores αi,j (i = 2, 3, 4; j = 1,.. i-1) se calcularán con ayuda del
procedimiento pescfun ya que se corresponden a los valores :
3
αi,j = ∑ c ·f (x
k =1
k i k )·g j (xk )
siendo los puntos y pesos {xk} y {ck} (k = 1, .., 3) los calculados con el
procedimiento pgauss3.
3º) Dibuje las cuatro funciones g1(x), g2(x) , g3(x) y g4(x) en el intervalo [a, b]
mostrando las cuatro gráficas en un mismo dibujo y con diferentes colores.
36
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
Solución:
a)
> restart;
> pgauss3:=proc(a,b,x,c)
x:=vector(3):
c:=vector(3):
x[1]:=((a+b)-sqrt(3./5.)*(b-a))/2.: c[1]:=5.*(b-a)/18.:
x[2]:=(a+b)/2.: c[2]:=8.*(b-a)/18.:
x[3]:=((a+b)+sqrt(3./5.)*(b-a))/2.: c[3]:=c[1]:
end proc:
b)
> pescfun3:=proc(x,c,f,g,valor)
local resul, i:
resul:=0.:
for i from 1 to 3 by 1 do
resul:=resul+c[i]*f(x[i])*g(x[i]):
od:
valor:=resul:
end proc:
> save pescfun3, "pesfun3.m":
> fin_del_segundo_procedimiento;
fin_del_segundo_procedimiento
c)
> restart;
> with(linalg):with(plots):
Warning, the protected names norm and trace have been redefined and
unprotected
37
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
1 3
f 2 := x → x + x
3
f 3 := x → 1 + x + x 2 + x 3
f 4 := x → 1
> a:=0;b:=3;m:=4;
a := 0
b := 3
m := 4
> read "pgauss3.m":
read "pesfun3.m":
> pgauss3(a,b,x,c):
> g[1]:=f[1];
g1 := f 1
> pescfun3(x,c,g[1],g[1],norma[1]):
> for i from 2 to m by 1 do
for j from 1 to (i-1) by 1 do
pescfun3(x,c,f[i],g[j],algo[i,j]):
alpha[i,j]:= algo[i,j]/norma[j]:
od:
g[i]:=f[i]:
for j from 1 to i-1 by 1 do
g[i]:=g[i]-alpha[i,j]*g[j]:
od:
pescfun3(x,c,g[i],g[i],norma[i]):
od:
> vv:=matrix(m,m):
> for i from 1 to m by 1 do
for j from 1 to m by 1 do
pescfun(x,c,f[i],g[j],valor[i,j]):
vv[i,j]:=valor[i,j]:
od:
od:
> dib1:=plot(g[1](x),x=a..b,color=blue):
dib2:=plot(g[2](x),x=a..b,color=red):
dib3:=plot(g[3](x),x=a..b,color=gold):
dib4:=plot(g[4](x),x=a..b,color=green):
> display(dib1,dib2,dib3,dib4);
38
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
> fin_del_tercer_ejercicio;
fin_del_tercer_ejercicio
39
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
A C
Así, si las coordenadas del punto B son (bi, 2r), la recta OB es:
2r
y= x
bi
y la circunferencia:
x2 + ( y − r ) = r 2
2
40
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
de la “cuerda que dirige la vela” pero el traductor confundió esta palabra con versiera
que significa “bruja”.
Solución:
x = b; y = 8*r^3/(b^2+4*r^2)
> restart:
> with(plots):
Warning, the name changecoords has been redefined
> n:=50:
> h:=0.1:
> r:=1:
> b:=vector(2*n+2): x:=vector(2*n+1): y:=vector(2*n+1):
> b[1]:=-50*h:
> dd:=[seq([x[k],y[k]],k=1..2*n+1)]:
> plot(dd, scaling=CONSTRAINED);
41
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
42
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
Se pide:
⎧ − y − z + 3t = −1
⎪ x − y + 3z − 2t = 6
⎪
⎨
⎪3x − 3 y + 4z + t = 12
⎪⎩ x + y + z = 8
Solución:
> restart:
> with(linalg):
Warning, the protected names norm and trace have been redefined and
unprotected
> n:=4:
> A:=matrix(n,n,[[0,-1,-1,3],[1,-1,3,-2],[3,-
3,4,+1],[1,1,1,0]]);
⎡0 -1 -1 3⎤
⎢ ⎥
⎢1 -1 3 -2⎥
⎢
A := ⎢ ⎥
⎥
⎢3 -3 4 1⎥
⎢ ⎥
⎢1 1 1 0⎥
⎣ ⎦
> b:=vector(n,[-1,6,12,8]); x:=vector(n):
b := [ -1, 6, 12, 8 ]
> for i from 1 to n-1 do
k:=i:
pivote:=abs(A[i,i]):
for j from i+1 to n do
if(abs(A[j,i]) > pivote) then
k:=j:
pivote:= abs(A[j,i]):
fi:
od:
43
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
for j from i to n do
aux:= A[i,j]:
A[i,j]:= A[k,j]:
A[k,j]:= aux:
od:
aux:= b[i]:
b[i]:= b[k]:
b[k]:= aux:
44
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
xi = ρi·cos(θi) , yi = (ρi)2·cos2(θi)·sen(θi)
donde los 500 valores θi repartidos uniformemente en el intervalo [0, 6·π] y los
500 valores están dados por ρi = θi
Solución:
> restart:with(linalg):with(plots):
> n:=500;
h:=evalf(6*Pi/(n-1));
n := 500
h := 0.03777466118
> for i from 1 to n by 1 do
theta:=(i-1)*h:
rho:=sqrt(theta):
x[i]:=rho*cos(theta):
y[i]:=(x[i]**2)*sin(theta):
od:
> ptos:=[seq([x[i],y[i]],i=1..n)]:
pointplot(ptos,color=blue,connect=true,symbol=BOX,thickness
=3);
45
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
> long:=0.:
for i from 2 to n by 1 do
long:=long+sqrt((x[i]-x[i-1])**2+(y[i]-y[i-1])**2):
od:
> long;
99.81314613
> fin_del_primer_ejercicio;
fin_del_primer_ejercicio
ALGORITMO
Datos: n, v (vector fila de n elementos), y matriz B (de dimensiones (n, n))
Para i desde 1 hasta n con paso 1 hacer:
nv Å ||v||2
A Å I – (1/nv)·(vt·v)
B Å A-1
v Å {B11, B12, …., B1,n}
Fin bucle en i.
46
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
⎡ 1 1.25 −1⎤
n = 3, v = {1, 2, 3} , ⎢
B = ⎢ −2 0 1 ⎥⎥
⎢⎣3.30 1 1 ⎥⎦
Solución:
> restart:with(linalg):with(plots):
> n:=3:
v:=matrix(1,n,[1.,2.,3.]):
B:=matrix(n,n,[[1,1.25,-1],[-2.,0.,1.],[3.3,1.,1.]]):
Id:=matrix(n,n,[[1.,0,0],[0.,1.,0.],[0.,0.,1.]]):
> for i from 1 to n by 1 do
nv:=norm(v,2):
A:=evalm(Id-(1/nv)*evalm(transpose(v)&*v)):
B:=inverse(A):
for j from 1 to n by 1 do
v[1,j]:=B[1,j]:
od:
od:
> evalm(A);
⎡-24.96488338 5.406729315 8.110093978 ⎤
⎢ ⎥
⎢ 5.406729315 -0.125856083 -1.688784124⎥
⎢ ⎥
⎢⎢ 8.110093978 -1.688784124 -1.533176188⎥⎥
⎣ ⎦
> fin_del_segundo_ejercicio;
fin_del_segundo_ejercicio
2.f(a).f '(a)
b = a−
2.(f '(a))2 − f(a).f "(a)
Se pide:
47
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
Solución:
A)
> halley:=proc(a,f,fp,fs,b)
b:=a - 2*f(a)*fp(a)/(2*fp(a)*fp(a)-f(a)*fs(a)):
end proc:
> save halley, "A:halley.m":
B)
> restart:
> read "A:halley.m":
> n:=100:
alpha:=4.:
f:=x->exp(x*x-4)-8;
fp:=x->D(f)(x);
fs:=x->D(fp)(x);
(x x − 4)
f := x → e −8
fp := x → D( f )( x )
fs := x → D( fp )( x )
> x:=array(0..n):
x[0]:=alpha:
> for i from 1 to n by 1 do
halley(x[i-1],f,fp,fs,x[i]):
od:
> x[n];
2.465652356
> #Lo que sigue no se pedía en examen
with(plots):
ptos:=[seq([i,x[i]],i=0..n)]:
48
Programación y Métodos Numéricos Examen de Laboratorio
Carlos Conde, Arturo Hidalgo, Alfredo López Curso 2003- 2004
Universidad Politécnica de Madrid – ETSI Minas – Depto. Matemática Aplic. y Méts. Informát.
pointplot(ptos,color=blue,symbol=BOX);
Warning, the name changecoords has been redefined
> fin_del_tercer_ejercicio;
fin_del_tercer_ejercicio
49