On Thu, Jun 16, 2011 at 1:43 PM, Alexander Grayver <span dir="ltr">&lt;<a href="mailto:agrayver@gfz-potsdam.de">agrayver@gfz-potsdam.de</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">


  
    
  
  <div bgcolor="#ffffff" text="#000000"><div class="im">
    &gt;&gt; Could you explain more about the task you&#39;re trying to do.
    <br>
    <br></div>
    Well, I can try. That is pretty specific task, I wouldn&#39;t like to go
    deep into details. <br>
    <br>
    Let&#39;s say we have a discretized model of some physical parameter m
    (say acoustic velocity). Number of model parameters is N. We need to
    take M measurements d within model (say time traveling of acoustic
    wave) based on M different sets of receiver/source positions.<br>
    In our case N &gt;&gt; M (e.g. 10^7 &gt;&gt; 10^3).<br>
    We have operator F (which might linear or not) that defines
    relationship between m and d:<br>
    d=F(m)<br>
    <br>
    The operator F is just a system of equations actually. I have no
    problem now to solve it for any m.<br>
    <br>
    What I need now is to compute the variation of this operator:<br>
    <br>
    A = \frac{\partial d_i}{\partial m_j}, for all i=1..M, j=1..N<br>
    <br>
    After some maths this calculation could be reformulated as a triple
    product:<br>
    <br>
    A_i = C*F(m)^-1*v<br>
    <br>
    Where C some sparse matrix.<br>
    <br>
    Once the A is computed I want to solve another problem:<br>
    <br>
    (A&#39;*A)b=A&#39;*r<br>
    <br>
    Which is a Gauss-Newton system now, <br>
    A&#39;*A is truncated Hessian, <br>
    A&#39;*r is gradient, <br>
    r = d - d_obs, where d_obs is the real observed data.<br>
    b -- model change which have to applied to original model m in order
    to explain your observed data better<br>
    <br>
    The latter problem I want to solve using petsc matrix-free
    formulation and some iterative solver (haven&#39;t decided yet which,
    could you advice one?).<br>
    <br>
    But the POINT here is that the latter problem must be solved not in
    the original m-space, but in transformed x-space. For that we need
    another A:<br>
    <br>
    A_tr = \frac{\partial d_i}{\partial x_j}<br>
    <br>
    However, using chain rule you can represent A_tr in terms of A:<br>
    <br>
    A = \frac{\partial d_i}{\partial m_j} * \frac{\partial m_j}{\partial
    x_j} <br>
    <br>
    \frac{\partial m_j}{\partial x_j} - is the exactly transformation I
    want to apply to matrix A. It&#39;s a simple scalar expression, but has
    to be applied to each element of A.<br>
    <br>
    Did it help? :)<br></div></blockquote><div><br></div><div>Do you ever actually use A? If not, why not just build the transformed operator directly?</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div bgcolor="#ffffff" text="#000000">
    Regards,<br><font color="#888888">
    Alexander</font><div><div></div><div class="h5"><br>
    <br>
    <br>
    On 16.06.2011 14:55, Jed Brown wrote:
    <blockquote type="cite">
      <div class="gmail_quote">On Thu, Jun 16, 2011 at 14:48, Alexander
        Grayver <span dir="ltr">&lt;<a href="mailto:agrayver@gfz-potsdam.de" target="_blank">agrayver@gfz-potsdam.de</a>&gt;</span>
        wrote:<br>
        <blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex"> by the grid I meant that this matrix is
          2d array, not a real grid of some physical parameters or
          whatever and it&#39;s also not a linear operator itself.</blockquote>
      </div>
      <div><br>
      </div>
      <div>Could you explain more about the task you&#39;re trying to do.
        Pseudocode or Matlab for the whole process would be useful.
        There might be a better way to do this without using Mat to
        store something that is not a linear operator.</div>
    </blockquote>
    <br>
  </div></div></div>

</blockquote></div><br><br clear="all"><br>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener<br>