I'm using R2022a: I received this when I tried solve of mixed PDEs using finite difference method.
Warning: Failure at t=6.122922e-01. Unable to meet integration tolerances without reducing the step size below the
smallest value allowed (1.776357e-15) at time t.

3 comentarios

Star Strider
Star Strider el 6 de Oct. de 2022
That indicates that your function has a singularity (±Inf) at that point.
Plotting the function is the easiest way to figure out what the problem is. If it’s inherent in the problem itself, there may not be much you can do about it other than to reformulate it to avoid the singularity. If it’s a coding error, that can be remedied.
University Glasgow
University Glasgow el 6 de Oct. de 2022
Hmmmm, Okay, thank you.
Star Strider
Star Strider el 6 de Oct. de 2022
My pleasure!

Iniciar sesión para comentar.

 Respuesta aceptada

Star Strider
Star Strider el 6 de Oct. de 2022

0 votos

Singularities occur when the denominator of a fraction approaches zero, or for certrain transcendental functions (e.g. exp, tan) when they have arguments that cause them to approach ±Inf, and (similar to exp) a value is raised to a power and the value is high enough to create a singularity.
Look for those occurrences. Plotting the function over the intended independent variable range defining the integration is the easiest way to find them.
I looked at your code, however I can’t follow what you’re doing. The initial conditions vector ‘u0’ is a 198-element column vector, indicating to me that you’re integrating 198 separate differential equations.
I discourage the use of global variables, since they create problems and make the code extremely difficult to troubleshoot. It would be better to pass them as additional parameters, as described in Passing Extra Parameters.
.

2 comentarios

University Glasgow
University Glasgow el 6 de Oct. de 2022
Okay, thank you.
Star Strider
Star Strider el 6 de Oct. de 2022
My pleasure!

Iniciar sesión para comentar.

Más respuestas (1)

Torsten
Torsten el 6 de Oct. de 2022

0 votos

The ode integrators try to guarantee a predefined error tolerance when solving your system of ordinary differential equations. If they cannot succeed (even by reducing the stepsize dt to a very small value), they give up.
Usual reasons are errors in the implementation, singularities in the solutions for the differential equations etc.

4 comentarios

University Glasgow
University Glasgow el 6 de Oct. de 2022
Thank you for your response. Is there any way to get of the singularies please?
Torsten
Torsten el 6 de Oct. de 2022
Editada: Torsten el 6 de Oct. de 2022
Does the solution look unexpected (blows up or something) if you integrate up to 0.6 and inspect the result ?
Are there unexpectedly high values for the dydx terms you return to the solver ?
Debug to your best.
University Glasgow
University Glasgow el 6 de Oct. de 2022
I don't understand what you are saying. Find attached the code
Torsten
Torsten el 6 de Oct. de 2022
I mean integrate up to t=0.6 and write out "rhsode" to inspect its values.
Further plot the solution up to 0.6 to see if it looks as expected.

Iniciar sesión para comentar.

Productos

Versión

R2022a

Preguntada:

el 6 de Oct. de 2022

Comentada:

el 6 de Oct. de 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by