필터 지우기
필터 지우기

Error: Operator '-' is not supported for operands of type 'function_handle'.

조회 수: 167 (최근 30일)
Hello, i have the following Code:
f1 = [-1,-1];
f2=@(x)-10*x(1)+x(1)^2-4*x(2)+x(2)^2;
A = [3 1;
2 1 ;
1 2];
b = [12; 9; 12];
z = [0,0];
d = [-1,0];
Method(f1,f2,A,b,z,d);
function [x,alpha] = Method(f1,f2,A,b,z,d)
f =@(x)-x(size(A,2)+1);
x0 = (zeros(1,size(A,2) + 1));
lb = [(zeros(1,size(A,2))),-Inf];
if (~isempty(f1))
Anew = [f1,-d(1)];
Anew(2:size(A,1)+1,1:size(A,2)) = A;
bnew = [z(1);b];
c1 =@(x) f2 - d(2)*x(size(A,2)+1) - z(2);
(else ... %in this case Anew,bnew and c1 would look different)
end
nonlincon = @constr;
function [c,ceq] = constr(x)
c = c1;
ceq = [];
end
[x,alpha]=fmincon(f,x0,Anew,bnew,[],[],lb,[],nonlincon);
end
This gives me the following error: Operator '-' is not supported for operands of type 'function_handle'.
I know that it is because of the line "c1 =@(x) f2 - d(2)*x(size(A,2)+1) - z(2);". Does someone knows how i could solve this problem? Thanks.
  댓글 수: 2
David Hill
David Hill 2022년 2월 10일
A general description of what you are trying to do with inputs and expected outputs would be helpful. I cannot follow your code (lots of problems).
Daniela Würmseer
Daniela Würmseer 2022년 2월 10일
It is a part of a specific Algorithm. I want to use the fmincon function to solve a nonlinear Problem. At the beginning f1, f2, A,b,z and d are given. But inside the function "Method" we want to change this problem still a bit before giving it into fmincon.

댓글을 달려면 로그인하십시오.

채택된 답변

Star Strider
Star Strider 2022년 2월 10일
To be used in calculations, functions must be evaluated, and that means providing them with an argument.
See if this provides the desired result:
c1 =@(x) f2(x) - d(2)*x(size(A,2)+1) - z(2);
I am confindent that will work and not throw the previous error. I have not tested the code with this correction.
.
  댓글 수: 6
Daniela Würmseer
Daniela Würmseer 2022년 2월 10일
Thank you again. Now it is working :D
Star Strider
Star Strider 2022년 2월 10일
As always my (our with the contribution by @Steven Lord) pleasure!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Get Started with MATLAB에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by