From: Daniel Lichtblau on
On Jun 3, 4:47 am, Igor <i.e.koz...(a)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