Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PhD defense

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

PhD defense

Slides from my PhD thesis defense "Forward modeling and inversion of gravitational fields in spherical coordinates".

More information at http://www.leouieda.com

Avatar for Leonardo Uieda

Leonardo Uieda

April 29, 2016
Tweet

More Decks by Leonardo Uieda

Other Decks in Science

Transcript

  1. A COORDENADORA DE PÓS-GRADUAÇÃO ADVERTE: Efeitos colaterais dessa defesa incluem:

    discussão discórdia crítica choro aprovação reprovação
  2. fatiando a terra modelagem direta otimização regularização, etc método: inversão

    não-linear rápida aplicação: Moho da América do Sul modelagem direta aprox. esférica
  3. g z =Gρ∭ λ 1 ϕ 1 r 1 λ2

    ϕ2 r 2 K z dr d ϕd λ
  4. g z =Gρ∭ λ 1 ϕ 1 r 1 λ2

    ϕ2 r 2 K z dr d ϕd λ cte.
  5. g z =Gρ∭ λ 1 ϕ 1 r 1 λ2

    ϕ2 r 2 K z dr d ϕd λ cte. densidade
  6. g z =Gρ∭ λ 1 ϕ 1 r 1 λ2

    ϕ2 r 2 K z dr d ϕd λ cte. densidade kernel (Grombein et al., 2013)
  7. ∫ a b f (x)dx≈ b−a 2 ∑ i=1 N

    W i f (x i ) pesos ordem
  8. ∫ a b f (x)dx≈ b−a 2 ∑ i=1 N

    W i f (x i ) pesos raízes de P N (x) ordem
  9. ∭ Ω K z (r ,ϕ,λ)d Ω A ∑ i=1

    N r ∑ j=1 N ϕ ∑ k=1 N λ W i W j W k K z (r i ,ϕj ,λk )
  10. A ∑ i=1 N r ∑ j=1 N ϕ ∑

    k=1 N λ W i W j W k K z (r i ,ϕj ,λk ) ∭ Ω K z (r ,ϕ,λ)d Ω massa pontual
  11. 1. pólo h=2km 1°x 1°x 1km 2. equador h=2km 1°x

    1°x 1km 3. pólo h=260km 1°x 1°x 1km 4. pólo h=2km 30°x 30°x 1km Casca x Quadratura
  12. gzz

  13. Discretização adaptativa: algoritmo melhor definido pilha x recursivo Quantificação do

    erro: D ótimo Ds diferentes: V, gz, gzz Implementação: open-source usuários desenvolvedores
  14. from fatiando.mesher import Prism modelo = [ Prism(0, 1000, 0,

    2000, 1500, 2500, props={'magnetization': [4,-1,3]})] from fatiando.vis import myv myv.figure() myv.prisms(modelo) myv.show() In: Out:
  15. from fatiando import gridder area = (-5000, 5000, -5000, 5000)

    shape = (50, 50) x, y, z = gridder.regular(area, shape, z=0) print(x) print(x.size) In: Out: [-5000. -5000. -5000. ... 5000. 5000. 5000.] 2500
  16. from fatiando.gravmag import prism mag = prism.tf(x, y, z, modelo,

    inc=-60, dec=20) import matplotlib.pyplot as plt plt.tricontourf(y, x, mag, 50, cmap="RdBu_r") plt.colorbar().set_label('nT') In: Out:
  17. from fatiando.gravmag import transform up = transform.upcontinue(x, y, mag, shape,

    1500) plt.tricontourf(y, x, up, 20, cmap="RdBu_r") plt.colorbar().set_label('nT') In: Out:
  18. from fatiando.mesher import Tesseroid mod = [Tesseroid(-60, -50, -25, -20,

    2000, 0, props={'density': 2670})] myv.figure() myv.tesseroids(mod, scale=(1, 1, 500)) myv.earth() myv.continents() In: Out:
  19. lon, lat, h = gridder.scatter( (-70, -40, -35, -10), 500,

    z=250e3) from fatiando.gravmag import tesseroid g = tesseroid.gz(lon, lat, h, mod) plt.tricontourf(lon, lat, g, 50, cmap="Reds") plt.colorbar() In: Out:
  20. y 1 =a x 1 +b y 2 =a x

    2 +b ⋮ y N =a x N +b
  21. [y 1 y 2 ⋮ y N ]= [x 1

    1 x 2 1 ⋮ ⋮ x N 1 ][a b ]
  22. [y 1 y 2 ⋮ y N ]= [x 1

    1 x 2 1 ⋮ ⋮ x N 1 ][a b ] ¯ d
  23. [y 1 y 2 ⋮ y N ]= [x 1

    1 x 2 1 ⋮ ⋮ x N 1 ][a b ] ¯ d ¯ ¯ A
  24. [y 1 y 2 ⋮ y N ]= [x 1

    1 x 2 1 ⋮ ⋮ x N 1 ][a b ] ¯ d ¯ p ¯ ¯ A
  25. [y 1 y 2 ⋮ y N ]= [x 1

    1 x 2 1 ⋮ ⋮ x N 1 ][a b ] ¯ d ¯ p ¯ ¯ A dados preditos matriz Jacobiana vetor de parâmetros
  26. específico genérico y i =a x i +b ¯ ¯

    A ϕ=‖¯ do−¯ d‖2 minimizar
  27. específico genérico y i =a x i +b ¯ ¯

    A ϕ=‖¯ do−¯ d‖2 minimizar usuário implementa
  28. específico genérico y i =a x i +b ¯ ¯

    A ϕ=‖¯ do−¯ d‖2 minimizar fatiando.inversion
  29. from fatiando.inversion import Misfit class Regressao(Misfit): def __init__(self, x, y):

    Misfit.__init__(self, data=y, nparams=2, islinear=True) self.x = x def predicted(self, p): a, b = p return a*self.x + b def jacobian(self, p): A = np.empty((self.ndata, self.nparams)) A[:, 0] = self.x A[:, 1] = 1 return A
  30. from fatiando.inversion import Misfit class Regressao(Misfit): def __init__(self, x, y):

    Misfit.__init__(self, data=y, nparams=2, islinear=True) self.x = x def predicted(self, p): a, b = p return a*self.x + b def jacobian(self, p): A = np.empty((self.ndata, self.nparams)) A[:, 0] = self.x A[:, 1] = 1 return A
  31. from fatiando.inversion import Misfit class Regressao(Misfit): def __init__(self, x, y):

    Misfit.__init__(self, data=y, nparams=2, islinear=True) self.x = x def predicted(self, p): a, b = p return a*self.x + b def jacobian(self, p): A = np.empty((self.ndata, self.nparams)) A[:, 0] = self.x A[:, 1] = 1 return A
  32. from fatiando.inversion import Misfit class Regressao(Misfit): def __init__(self, x, y):

    Misfit.__init__(self, data=y, nparams=2, islinear=True) self.x = x def predicted(self, p): a, b = p return a*self.x + b def jacobian(self, p): A = np.empty((self.ndata, self.nparams)) A[:, 0] = self.x A[:, 1] = 1 return A y i =a x i +b
  33. from fatiando.inversion import Misfit class Regressao(Misfit): def __init__(self, x, y):

    Misfit.__init__(self, data=y, nparams=2, islinear=True) self.x = x def predicted(self, p): a, b = p return a*self.x + b def jacobian(self, p): A = np.empty((self.ndata, self.nparams)) A[:, 0] = self.x A[:, 1] = 1 return A ¯ ¯ A y i =a x i +b
  34. específico genérico y i =a x i +b ¯ ¯

    A ϕ=‖¯ do−¯ d‖2 minimizar usuário implementa
  35. específico genérico y i =a x i +b ¯ ¯

    A ϕ=‖¯ do−¯ d‖2 minimizar fatiando.inversion
  36. reg = Regressao(x, yo) reg.fit() print(reg.estimate_) In: Out: [ 20.395431

    4980.22844991] plt.plot(x, yo, 'ok') plt.plot(x, reg.predicted(), '-r') In: Out: a b
  37. reg.config('newton', initial=[1, 1]).fit() print(reg.estimate_) In: Out: [ 20.395431 4980.22844991] reg.config('levmarq',

    initial=[0, 0]).fit() print(reg.estimate_) In: Out: [ 20.39562568 4980.21718193]
  38. reg.config('newton', initial=[1, 1]).fit() print(reg.estimate_) In: Out: [ 20.395431 4980.22844991] reg.config('levmarq',

    initial=[0, 0]).fit() print(reg.estimate_) In: Out: [ 20.39562568 4980.21718193] reg.config('acor', bounds=[0, 1000, 0, 10e5]).fit() print(reg.estimate_) In: Out: [ 20.39543101 4980.22844959]
  39. from fatiando.inversion import Damping phi = Regressao(x, yo) gamma =

    phi + 10e-7*Damping(nparams=2) In: Γ(¯ p)=ϕ(¯ p)+μθ(¯ p)
  40. from fatiando.inversion import Damping phi = Regressao(x, yo) gamma =

    phi + 10e-7*Damping(nparams=2) In: Γ(¯ p)=ϕ(¯ p)+μθ(¯ p) gamma.fit() print(gamma.estimate_) In: Out: [ 20.395431 4980.22844991]
  41. from fatiando.inversion import Damping phi = Regressao(x, yo) gamma =

    phi + 10e-7*Damping(nparams=2) In: Γ(¯ p)=ϕ(¯ p)+μθ(¯ p) gamma.fit() print(gamma.estimate_) In: Out: [ 20.395431 4980.22844991] gamma.config('acor', bounds=[0, 1000, 0, 10e5]).fit() print(gamma.estimate_) In: Out: [ 20.14654754 4992.15040076]
  42. biblioteca: funções e classes modelagem, processamento, visualização inversão: fatiando.inversion Simples

    Complexos (reais) Caching Matrizes esparsas BLAS, LAPACK, MKL fatiando a terra
  43. Inversão não-linear em coordenadas esféricas com aplicação na Moho da

    América do Sul com aplicação na Moho da América do Sul rápida
  44. ( ¯ ¯ AkT ¯ ¯ Ak) ¯ Δ pk=

    ¯ ¯ AkT [ ¯ do−¯ d(¯ pk)] ¯ p0 ¯ p1=¯ p0+ ¯ Δ p0
  45. ( ¯ ¯ AkT ¯ ¯ Ak) ¯ Δ pk=

    ¯ ¯ AkT [ ¯ do−¯ d(¯ pk)] ¯ p0 ¯ p1=¯ p0+ ¯ Δ p0 A i j = ∂ f i ∂ p j Jacobiana
  46. ( ¯ ¯ AkT ¯ ¯ Ak) ¯ Δ pk=

    ¯ ¯ AkT [ ¯ do−¯ d(¯ pk)] ¯ p0 ¯ p1=¯ p0+ ¯ Δ p0 A i j = ∂ f i ∂ p j Jacobiana mal posto
  47. Gauss-Newton ¯ Δ p=( ¯ ¯ AT ¯ ¯ A

    + μ ¯ ¯ RT ¯ ¯ R)−1[ ¯ ¯ AT ¯ rk−μ ¯ ¯ RT ¯ ¯ R ¯ pk ]
  48. Gauss-Newton ¯ Δ p=( ¯ ¯ AT ¯ ¯ A

    + μ ¯ ¯ RT ¯ ¯ R)−1[ ¯ ¯ AT ¯ rk−μ ¯ ¯ RT ¯ ¯ R ¯ pk ] custoso (computacionalmente)
  49. caso particular ¯ Δ p= ¯ r 2πG Δρ ¯

    Δ p=( ¯ ¯ AT ¯ ¯ A)−1 ¯ ¯ AT ¯ r
  50. caso particular ¯ Δ p= ¯ r 2πG Δρ ¯

    Δ p=( ¯ ¯ AT ¯ ¯ A)−1 ¯ ¯ AT ¯ r
  51. caso particular ¯ Δ p= ¯ r 2πG Δρ ¯

    Δ p=( ¯ ¯ AT ¯ ¯ A)−1 ¯ ¯ AT ¯ r A ii =2πGΔρ A ij =0 para i≠ j
  52. (2πG Δρ 0 ⋯ 0 0 2πGΔρ ⋯ 0 ⋮

    ⋮ ⋱ ⋮ 0 0 ⋯ 2πGΔρ ) ~ A
  53. Gauss-Newton ¯ Δ p=( ¯ ¯ AT ¯ ¯ A)−1

    ¯ ¯ AT [¯ do−¯ d(¯ pk)]
  54. ¯ Δ p=( ¯ ¯ AT ¯ ¯ A)−1 ¯

    ¯ AT [¯ do−¯ d(¯ pk)] Gauss-Newton tesseroides
  55. ¯ Δ p=( ~ AT ~ A)−1 ~ AT [¯

    do−¯ d(¯ pk)] Gauss-Newton tesseroides ~ A ii =2πGΔρ i
  56. ¯ Δ p=( ~ AT ~ A+μ ¯ ¯ RT

    ¯ ¯ R)−1[ ~ AT ¯ rk−μ ¯ ¯ RT ¯ ¯ R ¯ pk ]
  57. esparsas ¯ Δ p=( ~ AT ~ A+μ ¯ ¯

    RT ¯ ¯ R)−1[ ~ AT ¯ rk−μ ¯ ¯ RT ¯ ¯ R ¯ pk ]
  58. esparsas ~99.8% tempo de computação ~ AT ¯ rk−μ ¯

    ¯ RT ¯ ¯ R ¯ pk ] ¯ Δ p=( ~ AT ~ A+μ ¯ ¯ RT ¯ ¯ R)−1[
  59. para em : μn inversão: ¯ d inv o ¯

    d test n ^ ¯ pn prever ^ ¯ pn [μ1, …,μN ]
  60. para em : μn inversão: ¯ d inv o ¯

    d test n ^ ¯ pn prever ^ ¯ pn MSE n = ‖¯ d test o −¯ d test n‖2 N test [μ1, …,μN ]
  61. para cada e : Δρ m inversão: ¯ d inv

    o ¯ z s l ,m ^ ¯ pl ,m interpolar ^ ¯ pl ,m z ref ,l
  62. para cada e : Δρ m inversão: ¯ d inv

    o ¯ z s l ,m ^ ¯ pl ,m interpolar ^ ¯ pl ,m MSE l,m = ‖¯ z s o−¯ z s l,m‖2 N s z ref ,l
  63. Baseado em Bott (1960) e Silva et al. (2014) Tesseroides

    Gauss-Newton + Regularização Matrizes esparsas Validação cruzada Novo método μ Δρ z ref
  64. Compatível com soluções anteriores (grav e sismo) Correções (topo e

    sedimentos) apropriadas ~6 km desvio padrão com sísmica Diferença grande concentrada nos Andes Resolução pode ser falsa Depende de correções corretas Difícil estimar o erro Moho América do Sul
  65. Compatível com soluções anteriores (grav e sismo) Correções (topo e

    sedimentos) apropriadas ~6 km desvio padrão com sísmica Diferença grande concentrada nos Andes Resolução pode ser falsa Depende de correções corretas Difícil estimar o erro Moho América do Sul
  66. fatiando a terra modelagem direta otimização regularização, etc método: inversão

    não-linear rápida aplicação: Moho da América do Sul modelagem direta aprox. esférica
  67. fatiando a terra Biblioteca em Python Vários módulos Pesquisa +

    educação Usuários + desenvolvedores Além dessa tese
  68. Inversão rápida + Moho Am. do Sul Método novo +

    eficiente Approx. esférica Python + Fatiando a Terra Depende das correções Incerteza
  69. Inversão rápida + Moho Am. do Sul Método novo +

    eficiente Approx. esférica Python + Fatiando a Terra Depende das correções Incerteza