<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
>> Could you explain more about the task you're trying to do.
<br>
<br>
Well, I can try. That is pretty specific task, I wouldn't like to go
deep into details. <br>
<br>
Let'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 >> M (e.g. 10^7 >> 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'*A)b=A'*r<br>
<br>
Which is a Gauss-Newton system now, <br>
A'*A is truncated Hessian, <br>
A'*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'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's a simple scalar expression, but has
to be applied to each element of A.<br>
<br>
Did it help? :)<br>
<br>
Regards,<br>
Alexander<br>
<br>
<br>
On 16.06.2011 14:55, Jed Brown wrote:
<blockquote
cite="mid:BANLkTim9AR+YVojdrykFhMQ3iKqi2Tj4ig@mail.gmail.com"
type="cite">
<div class="gmail_quote">On Thu, Jun 16, 2011 at 14:48, Alexander
Grayver <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:agrayver@gfz-potsdam.de">agrayver@gfz-potsdam.de</a>></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's also not a linear operator itself.</blockquote>
</div>
<div><br>
</div>
<div>Could you explain more about the task you'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>
</body>
</html>