I'm getting an error related to fmincon
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Zeynep Toprak
am 29 Mär. 2020
Kommentiert: Ameer Hamza
am 29 Mär. 2020
Question is this;
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/280390/image.png)
My matlab code is as follows:
%Define Matrices
>> M = magic(5);
>> P = pascal (5);
% Define the variable x
>> syms x
%Define the given matrix A
>> A = x*M + (1-x)*P;
%Define the eigenvalue lambda as y;
>> syms y
%Find determinant of |A - lambda * I|
>> D = det (A - y*eye(5))
%Define Objective function
objective = @(y) y
%And Define the constraint
constraint = @(x,y) (-1)*D
%initial value x0 = (0:0.001:1);
%Minimization problem solving
x = fmincon(objective, constraint, x0)
I get this error;
Error using fmincon (line 221)
FMINCON requires the following inputs to be of data type double: 'X0'.
If I use another function: fminsearch
x = fminsearch(objective, constraint, x0)
In this case I get the following error:
Error using fminsearch (line 96)
FMINSEARCH accepts inputs only of data type double.
How can I deal with these errors ? Where is my mistake? How can I correct them?
3 Kommentare
Akzeptierte Antwort
Ameer Hamza
am 29 Mär. 2020
This is an example with fmincon
M = magic(5);
P = pascal (5);
f = @(x) max(abs(eig(x*M + (1-x)*P)));
x_sol = fmincon(f, rand, [], [], [], [], 0, 1);
9 Kommentare
Weitere Antworten (1)
Torsten
am 29 Mär. 2020
Bearbeitet: Torsten
am 29 Mär. 2020
If you mean the eigenvalue largest in magnitude, this should give you a start.
Incorporating fmincon can automatize the search for an optimal x.
M=magic(5);
P=pascal(5);
A=@(x) x*M+(1-x)*P;
x=0:0.02:1;
for i=1:numel(x)
d(i) = abs( eigs(A(x(i)),1) );
end
[dmin,idd] = min(d);
x(idd) %show x for which eigenvalue largest in magnitude is minimum
4 Kommentare
Siehe auch
Kategorien
Mehr zu Linear Algebra finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!