Numerical Error/Large Condition number

Click For Summary
SUMMARY

The discussion centers on a MATLAB implementation for solving fluid dynamics problems using Newton Relaxation. The user encounters numerical errors and spurious results due to large condition numbers in the matrix equations, particularly with a 600x600 matrix. They initially use MATLAB's rand function to generate random parameters and filter results based on condition numbers but express dissatisfaction with this method. The user considers rescaling the matrix coefficients and acknowledges that a poor initial profile choice contributed to the method's failure.

PREREQUISITES
  • Proficiency in MATLAB programming, particularly with matrix operations.
  • Understanding of numerical methods, specifically Newton Relaxation.
  • Familiarity with condition numbers and their impact on numerical stability.
  • Knowledge of fluid dynamics principles relevant to free surface calculations.
NEXT STEPS
  • Research techniques for improving matrix conditioning in numerical methods.
  • Explore MATLAB's built-in functions for matrix rescaling and optimization.
  • Study the impact of initial conditions on convergence in iterative methods.
  • Investigate literature on numerical errors in polynomial root computations.
USEFUL FOR

This discussion is beneficial for fluid dynamics researchers, MATLAB developers, and numerical analysts focused on improving the accuracy and stability of iterative numerical methods.

cathalcummins
Messages
43
Reaction score
0
Hi there,

I am working on a problem in Fluid dynamics. I've written a code in MATLAB which finds the shape of the free surface of the liquid based on Newton Relaxation. The code is fairly robust and produces good results which agree with current papers on the same problem.

Unfortunately, for some values of the parameters of the problem, the results are just plain wrong. It's not straightforward to identify a priori which values of the parameters will lead to the correct results and which will give spurious ones.

The method boils down to solving a matrix equation successively in a relaxation fashion. The number of iterates is generally quite modest ~30 and the matrix is usually about 600X600.

The quantity being calculated, the height of the free surface, is fairly smooth but displays some fine structure too.

The way I have the problem working now is to use MATLAB's rand function to generate random parameter values and then filter the results based on the condition numbers of the resulting system. This seems to get me a little further but I am unhappy with this approach.

I was thinking about rescaling the large matrix of coefficients and dumping them onto the right hand side of the matrix equation. Is this usually advantageous? Does anyone have similar experience with numerical error/scaling?

Thanks for reading
 
Technology news on Phys.org
I just heard a talk about errors showing up when the problem involves the "computation of multiple roots of polynomials whose coefficients are inexact". All the research was done using matlab. Are you doing something like that?

google pulls up some papers on this.
 
That sounds about right, thank you. Fortunately, since I wrote the last post, I discovered that the method was failing for a different reason. The "initial profile" I used to start the relaxation procedure was a very poor choice.
 

Similar threads

  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 15 ·
Replies
15
Views
3K
  • · Replies 4 ·
Replies
4
Views
6K
  • · Replies 22 ·
Replies
22
Views
3K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 9 ·
Replies
9
Views
2K
  • · Replies 42 ·
2
Replies
42
Views
6K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K