MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: discretized Laplacian or linear inverse problem with extremely

  • To: mathgroup at smc.vnet.net
  • Subject: [mg110154] Re: discretized Laplacian or linear inverse problem with extremely
  • From: Daniel Lichtblau <danl at wolfram.com>
  • Date: Fri, 4 Jun 2010 08:03:02 -0400 (EDT)
  • References: <hu7tmv$jl3$1@smc.vnet.net>

On Jun 3, 4:47 am, Igor <i.e.koz... at gmail.com> wrote:
> Hello!
>
> There are:
> A n*n matrix
> x n*1 matrix==column
> b n*1 matrix==column
> and the well known equation
> A.x==b
>
> I know columns x and b
> I want Mathematica to derive matrix A
>
> Of course, generally, this is a complicated problem, but
> in my case all values of matrix A are small (less than 20
> in absolute value) integers, because I am interested in a
> very special case.(I am looking for the matrix of discretized
> Laplacian in D={1,2,3,4} dimensions)
>
> As an example of my problem
> for (D=2) n=2 we have:
> x= {
>  {f[1, 1]},
>  {f[2, 1]},
>  {f[1, 2]},
>  {f[2, 2]}}
>
> b=
> {
>  {-4 f[1, 1] + f[1, 2] + f[2, 1]},
>  {f[1, 1] - 4 f[2, 1] + f[2, 2]},
>  {f[1, 1] - 4 f[1, 2] + f[2, 2]},
>  {f[1, 2] + f[2, 1] - 4 f[2, 2]}}
>
> and the solution (the matrix A) is
> -4  1  1  0
>  1 -4  0  1
>  1  0 -4  1
>  0  1  1 -4
>
> So, I would like Mathematica to do similar
> derivation of matrix A for me.
>
> I have the following questions:
>
> 1. Is there any method in Mathematica to find A from
> A.x==b if I know that this problem is well defined,
> I know x, b and that A elements have only integer values?
>
> 2. An obvious (or obviously mad :-) ) solution of the problem
> would be to perform an exhaustive search. I mean to
> ran n*n loops for all elements of matrix A from -20 to 20
> till A.x==b. But, I don't know how to perform this in
> Mathematica (as the number of loops is n*n and thus
> depend on n, that I want to vary).
>
> 3. If the matrix A of the discretized Laplacian is
> written somewhere for cases D==3 and D==4,
> please, send me a link.
>
> Thank you very much for your attention!
> All suggestions are welcome!

Could use SolveAlways, for a start.

amat = Array[a, {Length[x],Length[b]}];
vars = Flatten[amat];
exprs = Flatten[amat.x-b];
params = Variables[{x,b}];

amat /. SolveAlways[exprs==0, params]
Out[14]= {{{-4, 1, 1, 0}, {1, -4, 0, 1}, {1, 0, -4, 1}, {0, 1, 1,
-4}}}

When it is underdetermined you might need to use e.g. Reduce to get
integer solutions.

Daniel Lichtblau
Wolfram Research


  • Prev by Date: Re: Export
  • Next by Date: Re: discretized Laplacian or linear inverse problem with extremely simple
  • Previous by thread: Puzzlement about DumpSave (and/or DownValues)
  • Next by thread: Re: discretized Laplacian or linear inverse problem with extremely simple