Determinant or matrix from symbolic equation
2 ビュー (過去 30 日間)
古いコメントを表示
Suppose as an example we have 6 symbolic variables,
syms a b c d e f
We have an expression
a*b*d*e^3-a^2*c^3*d+b^2*e*f*a*b+a*b*c*d*e*f -c^3*d^3-a*b*d^3*f +2*5*7^2*1*5
I would like to construct a matrix or determinant of any order or rank or rows or columns such that the determinant of that matrix gives the expression. For example b^2-ac may be expressed as [b,a;c,b]. The elements should be as simple as possible. Example instead of [c*b,a*f;c*d,b*e] matrix should be like [a,f,1;e,b,f]. The individual elements shall be as simple as possible
12 件のコメント
Walter Roberson
2020 年 6 月 19 日
John: What if we took advantage of the fact that no minimization of the size of the matrix has been imposed, as long as the entries are "as simple as possible" ?
Suppose for example we started by breaking the expressions into terms and putting the terms along diagonals:
a
-a b
b a d
a b c e
-c b e c e
-a c c f c e
2 b c d a d 1
? 5 d d e b 1 1
? ? 5 d d f 1 1 1
? ? ? 7 d d 1 1 1 1
? ? ? ? 7 f d 1 1 1 1
? ? ? ? ? 1 1 1 1 1 1 1
Then because the permutations that occur will include the diagonals (as a subset), all of the original terms will occur "as is" in the determinant.
Now by filling out with 0's can we prevent any other term of the determinant from having non-zero value? Even if it requires enlarging the matrix with a selection of 1's and 0's? My intuition is that it could done with at most 7 * 2^7 rows / columns to act as selectors (and quite possibly fewer.)
回答 (1 件)
Saikat Banerjee
2020 年 6 月 19 日
1 件のコメント
Walter Roberson
2020 年 6 月 19 日
The determinant has 720 terms in 36 variables, which has to be compared to the 7 additive terms in 6 variables. You can hypothesize a term match such as a*b*d*e^3 == x11*x26*x34*x45*x52*x63 and solve for one of the 36 variables, and substitute the resulting variable into the list of 720 terms.
Having done that, you can look at the resulting list and find the ones that can no longer match because they would duplicate the e^3 term (which occurs only once. Each of those will involve some x terms that have not been dealt with yet. Pick one of them and hypothesize that it is 0 (in order to zero out the e^3 term), substitute that in, go on to the next term that still has an e^3, pick one of the x's from that, hypothesize it is 0, substitute, and so on, until you have reached a hypothesis of zero for a number of x terms that brings the overall sum into agreement with the e^3 terms. You can do this.
But... what if one of those hypotheses was wrong, and leads to a situation in which some other terms cannot match? Then you need to withdraw the hypothesis and go on to the next hypothesis there. And you will almost certainly get to the point where all of the terminal hypotheses fail and you have to go back and revoke an earlier hypothesis.
So to do this work, as well has writing the intelligent pattern matching logic, you have to have a robust multi-level backtracking system that can deal with about 36 levels of backtracking.
Mechanically possible? Probably. Length of time that it would take to find a solution... rather large !!!
A brute force solution that will work theoretically but in practice will take several decades, is not a realistic solution.
参考
カテゴリ
Help Center および File Exchange で Calculus についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!