Matlab's numeric solution to det of Matrix is incorrect

In summary: I would recommend checking your code against the Mathematica source to see if there are any errors there.
  • #1
Thanos_ST
2
4
TL;DR Summary
Equation solved numerically with vpasolve does not provide accurate solution. The solution is extracted from a PhD Thesis and was verified with Mathematica's numeric solver.
Hello everyone,

I have an equation derived as the det of a matrix, which I have solved in Mathematica 11 with Findroot and verified with the respective PhD Thesis' data. However, I now try to get more accustomed to Matlab (R2017b) and hence I tried to reproduce the problem and find its solution at this platform with vpasolve.
To my surprise, the Matlab solution is different! I also saw the plot, and it differs as well from the one Mathematica produces (which matches the one on the PhD Thesis). I even specify the solution of Mathematica to define the area (else the initial solution of Matlab is vastly different, see below).

So my code is the following:
Code:
syms L

B = [(-cos(L)+cosh(L))/(2*L^2) (-sin(L)+sinh(L))/(2*L^3); (-L*sin(L)+L*sinh(L))/(2*L^2) (-L*cos(L)+L*cosh(L))/(2*L^3)]

vpasolve (det(B) == 0, L, 4.7000) % L=4.73004 is the initial solution derived from Mathematica %

fplot (det(B), [-10, 10])

And the solution I get is 3.9407331356929149250770292025221 (instead of 4.73004). If I do not specify the area of the initial solution, the answer is -226.94495142003040084517833499812.

What am I doing wrong?

Thank you for reading my post.
 
Last edited:
  • Wow
Likes Wrichik Basu
Physics news on Phys.org
  • #2
Why not post this on the Matlab website so they can look at it?

You're using Matlab 2017 not their latest product so even if there is an error and it doesn't happen on the latest Matlab they will not likely change it. They may test it themselves on the latest product and then again maybe not.
 
  • #3
Something interesting is going on here. I could reproduce it on R2020b. Using solve returns the same as vpasolve without an initial condition. I don't think there is an error in MATLAB; probably we are not doing something correctly.

@Thanos_ST, Please let us know if you post it to MATLAB Central. I am interested in this.
 
  • #5
Wrichik Basu I posted it on MATLAB central, per jedishrfu's suggestion.
EDIT: not on the one you found, I posted it on a different topic. Also, solve does not produce any solution for me.
 
  • #6
How many solutions of your equation are there? Are you sure that your choice of initial guess will converge to the solution you are looking for?

EDIT: It should be straightforward to plot a graph of [itex]\det B(L)[/itex] against [itex]L[/itex] and see what's going on. This is always a necessary first step if you need to select an initial value for an iterative method; otherwise you may end up at a different solution than the one you expect.

EDIT: I see you did plot it.

Digging further at https://uk.mathworks.com/help/matlab/ref/det.html I found this:
Limitation: det uses the LU decomposition to calculate the determinant, which is susceptible to floating-point round-off errors.
Result: The determinant calculation is sometimes numerically unstable. For example, det can produce a large-magnitude determinant for a singular matrix, even though it should have a magnitude of 0.

However, Wolfram Alpha's symbolic calculation of the determinant (here), appears to agree with your Matlab result; in particular there is no root near 4.7 (detail plot for L=3 to 5).

It does seem like it is the original Mathematica result which is wrong, or else you have made a copying error when converting it to Matlab.
 
Last edited:
  • Like
Likes jedishrfu

1. Why is Matlab's numeric solution to det of Matrix incorrect?

Matlab's numeric solution to det of Matrix may be incorrect due to rounding errors or limitations in the precision of floating point numbers. These errors can accumulate and result in a slightly different value for the determinant than the exact solution.

2. Can these errors be avoided?

Yes, these errors can be avoided by using symbolic math functions in Matlab instead of numeric solutions. This allows for a more precise calculation of the determinant.

3. Are there any specific cases where Matlab's numeric solution to det of Matrix is more likely to be incorrect?

Yes, Matlab's numeric solution to det of Matrix is more likely to be incorrect for matrices with large values or a high condition number. In these cases, the rounding errors can have a greater impact on the final result.

4. How can I check the accuracy of Matlab's numeric solution to det of Matrix?

You can check the accuracy of Matlab's numeric solution to det of Matrix by comparing it to the exact solution calculated using symbolic math functions. This can help identify any discrepancies and determine the level of accuracy in the numeric solution.

5. Is it possible to improve the accuracy of Matlab's numeric solution to det of Matrix?

Yes, you can improve the accuracy of Matlab's numeric solution to det of Matrix by increasing the precision of floating point numbers used in the calculation, or by using specialized functions in Matlab such as "vpa" for variable precision arithmetic.

Similar threads

  • MATLAB, Maple, Mathematica, LaTeX
Replies
2
Views
1K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
1K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
3
Views
2K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
4
Views
2K
  • Differential Equations
Replies
5
Views
2K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
2
Views
1K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
3
Views
6K
Replies
2
Views
615
  • Advanced Physics Homework Help
Replies
4
Views
1K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
2
Views
2K
Back
Top