ExamenMM

826 days ago by trinidad1415

Examen de Métodos Matemáticos. Julio. Curso 2014/2015.

Alumno:

Pregunta 1.

 
       

Pregunta 2.

 
       

Pregunta 3.

 
       

Funciones auxiliares.

#auto var('y','z') Esfera=implicit_plot3d(x^2+y^2+z^2==1,(x,-1.2,1.2),(y,-1.2,1.2),(z,-1.2,1.2),rgbcolor='white',opacity=0.7); def vertice(V,color='green'): return point3d((cos(V[0])*cos(V[1]),sin(V[0])*cos(V[1]),sin(V[1])),rgbcolor=color,size=20); def lado(nueva_arista,color='red'): Va=nueva_arista[0] a=nueva_arista[1] if a in RR: # Si a es un valor de un ángulo c=circle((0,0),1,rgbcolor=color,thickness=5); ch=c.plot3d(z=0).rotate((1, 0, 0), pi/2) if Va[0]>0: cv=ch.rotate((0,0,1),(2*pi-Va[0])) else: cv=ch.rotate((0,0,1),-Va[0]) p=(cos(Va[0])*cos(Va[1]),sin(Va[0])*cos(Va[1]),sin(Va[1])) if a<0: dibarista=cv.rotate(p,(2*pi+a)) else: dibarista=cv.rotate(p,a) return dibarista else: # En caso contrario, consideramos que es un segundo punto latA=Va[1];lonA=Va[0];latB=a[1];lonB=a[0]; Cc=lonB-lonA;ac=pi/2-latA;bc=pi/2-latB; if Cc<0: Cc=2*pi-Cc cc=arccos(cos(bc)*cos(ac)+sin(ac)*sin(bc)*cos(Cc)) Bc=arccos(((cos(bc)-cos(ac)*cos(cc))/(sin(ac)*sin(cc))).simplify()) c=circle((0,0),1,rgbcolor=color,thickness=5); ch=c.plot3d(z=0).rotate((1, 0, 0), pi/2) if Va[0]>0: cv=ch.rotate((0,0,1),(2*pi-Va[0])) else: cv=ch.rotate((0,0,1),-Va[0]) p=(cos(Va[0])*cos(Va[1]),sin(Va[0])*cos(Va[1]),sin(Va[1])) if Bc<0: dibarista=cv.rotate(p,2*pi+Bc) else: dibarista=cv.rotate(p,Bc) return dibarista def distanciaVertice(V1,distancia,color='purple'): c=circle((0,0),sin(distancia),rgbcolor=color,thickness=5) return c.plot3d(z=cos(distancia)).rotate((sin(V1[0]),-cos(V1[0]), 0), pi/2-V1[1]) def rad_to_deg(arad): arad=arad*180/pi signo=sign(arad) arad=abs(arad+10^-14) return signo*floor(arad),floor((arad-floor(arad))*60),((((arad-floor(arad))*60)-floor((arad-floor(arad))*60))*60).n() def deg_to_rad(grados,minutos,segundos): return (sign(grados)*(abs(grados)+minutos/60+segundos/60/60)*pi/180).n() 
       
#auto def matriz_spline(puntos,tipo='natural'): # Comenzamos creando matrices vacías y definiendo algunos valores MP=Matrix(puntos) n=MP.dimensions()[0]-1 A=matrix(RDF,4*n) b=vector(RDF,4*n) # Rellenamos las condiciones de los puntos extremos A[0,0:4]=matrix(RDF,[[1,MP[0,0],MP[0,0]^2,MP[0,0]^3]]); b[0]=MP[0,1] A[1,(4*n-4):(4*n)]=matrix(RDF,[[1,MP[n,0],MP[n,0]^2,MP[n,0]^3]]); b[1]=MP[n,1] # Rellenamos las condiciones que dependen del tipo de método if tipo=='natural': # La derivada segunda en el origen A[2,0:4]=matrix(RDF,[[0,0,2,6*MP[0,0]]]); b[2]=0 # La derivada segunda en el final A[3,(4*n-4):(4*n)]=matrix(RDF,[[0,0,2,6*MP[n,0]]]); b[3]=0 elif tipo=='periodico': A[2,0:4]=matrix(RDF,[[0,1,2*MP[0,0],6*MP[0,0]]]) A[3,0:4]=matrix(RDF,[[0,0,2,6*MP[0,0]]]) b[2]=0 A[2,(4*n-4):(4*n)]=matrix(RDF,[[0,-1,-2*MP[n,0],-3*MP[n,0]^2]]) A[3,(4*n-4):(4*n)]=matrix(RDF,[[0,0,-2,-6*MP[n,0]]]) b[3]=0 # Rellenamos las condiciones de los puntos intermedios for i in range(1,n): A[4*i,4*(i-1):4*i]=matrix(RDF,[[1,MP[i,0],MP[i,0]^2,MP[i,0]^3]]); b[4*i]=MP[i,1] A[4*i+1,4*i:4*(i+1)]=matrix(RDF,[[1,MP[i,0],MP[i,0]^2,MP[i,0]^3]]); b[4*i+1]=MP[i,1] A[4*i+2,4*(i-1):4*(i+1)]=matrix(RDF,[[0,1,2*MP[i,0],3*MP[i,0]^2, 0,-1,-2*MP[i,0],-3*MP[i,0]^2]]); b[4*i+2]=0 A[4*i+3,4*(i-1):4*(i+1)]=matrix(RDF,[[0,0,2,6*MP[i,0],0,0,-2,-6*MP[i,0]]]); b[4*i+3]=0 return A,b