$30 off During Our Annual Pro Sale. View Details »

PhD defense

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

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