2 votos

Matlab termina el código si se produce una advertencia

Estoy ejecutando un código en el que quiero maximizar un parámetro (básicamente el rango de integración) incrementándolo por pasos hasta que se produzca una advertencia. Se trata de invertir un sistema lineal Ax=b y quiero que el script se detenga si se produce una advertencia como la siguiente:

Advertencia: La matriz está cerca de ser singular o mal escalada. Los resultados pueden ser inexactos. RCOND = 1,530374e-16.

¿Alguien conoce un método para hacerlo?

0voto

Cipher42 Puntos 31

$RCOND$ es el recíproco del número condicional. Cuanto más pequeño es, más cerca de la singularidad está la matriz. Tal vez los números de tu matriz sean demasiado pequeños, puedes intentar cambiar las condiciones iniciales o ampliar los valores en una determinada proporción. Si necesitas la inversa de una matriz, puedes usar pinv().

0voto

Algebraic Pavel Puntos 11952

Puede utilizar algo como esto (limpiar la advertencia y lanzar un error cuando se produce la advertencia):

n = 20;
A = rand(n);
A = A^10;

lastwarn('');
x = A \ ones(n,1);
if (~isempty(lastwarn))
    error(lastwarn);
end

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X