From: Daniel Lichtblau on 4 Jun 2010 08:02 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
|
Pages: 1 Prev: DSolve bug in 7.0.0 Next: Mac OS X hard disk space used up by virtual memory |