Check if function handle is nonlinear with Matlab

3 visualizaciones (últimos 30 días)
Daniela Würmseer
Daniela Würmseer el 2 de Abr. de 2022
Comentada: Torsten el 3 de Abr. de 2022
Hello,
is it possible to check with matlab if a Function Handle is nonlinear?
For example:
f1=@(x) x(1)+x(2)-5;
f2=@(x)10*x(1)-x(1)^2+4*x(2)-x(2)^2;
So here i would need something which tells me that f1 is linear and f2 is nonlinear. Thanks
  1 comentario
Paul
Paul el 2 de Abr. de 2022
The first function is linear in x, I suppose, but is not linear from a system theoretric perspective, as it doesn't satisfy superposition or scaling. Just want to make sure we're clear on the definition of linear in the question.

Iniciar sesión para comentar.

Respuesta aceptada

Torsten
Torsten el 2 de Abr. de 2022
Editada: Torsten el 2 de Abr. de 2022
Call your function handle f with symbolic vectors x and y and a symbolic scalar a and check whether
f(x+y) - (f(x) + f(y)) - f(0) == 0
f(a*x) - a*f(x) == 0
  4 comentarios
Daniela Würmseer
Daniela Würmseer el 3 de Abr. de 2022
Thank you for your answers.
Perhaps i could solve my Problem differently: My Problem is that i have an Algorithm which takes an Optimization Problem with two functions f1, f2 which can be linear or nonlinear. And the Algorithm solves this Problem by a kind of direction Method. So it solves first a "new" Optimization Problem with one function (max alpha) and the constraints are the constraints of the origin Problem and we add as constraints for example: (those are only for illustration and not the real algorithm):
f1(x)-alpha <= 0 and f2(x)-alpha <=0.
I could just define those functions in nonlincon of fmincon but nonlincon is normally for nonlinear functions. Would it be a problem to use nonlincon with linear functions (normally not or)?
For example if f1 and f2 are linear to still use nonlincon like this:
%Definitions of f, x0, Aneq.....
nonlincon = @constr;
function [cneq,ceq] = constr(x)
ceq = [];
cneq(1) = f1(x)-alpha;
cneq(2) = f2(x)-alpha;
end
options = optimoptions('fmincon','Algorithm','sqp');
[x,alpha]=fmincon(f,x0,Aneq,bneq,Aeq,beq,lb,[],nonlincon,options);
Torsten
Torsten el 3 de Abr. de 2022
I could just define those functions in nonlincon of fmincon but nonlincon is normally for nonlinear functions. Would it be a problem to use nonlincon with linear functions (normally not or)?
No problem. Implementing linear constraints either in lb,ub or A, Aeq, b, beq should only make the code run faster.

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by