【发布时间】:2020-03-30 05:46:15
【问题描述】:
我有这样一个问题,我会在matlab中做。但是,我得到了一些错误:
求 x ∈ [0, 1] 的值最小化矩阵 A(x) = xM +(1−x)P 的最大特征值,其中 M 是 5×5 幻方,P 是 5 × 5 帕斯卡矩阵。
我的 matlab 代码:
%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)
我收到此错误;
使用 fmincon 时出错(第 221 行) FMINCON 要求以下输入为双精度数据类型:'X0'。
或者如果我使用另一个函数:fminsearch
x = fminsearch(目标,约束,x0) 在这种情况下,我收到以下错误:
使用 fminsearch 时出错(第 96 行) FMINSEARCH 只接受双精度数据类型的输入。
我该如何处理这些错误?我的错误在哪里?我该如何纠正它们?
【问题讨论】:
-
您为什么要使用符号数学工具箱?
fmincon声明它假定矩阵具有某种形式。您实际上并没有为此定义符号函数。如果您确实想求解符号函数,请使用符号数学工具箱中的solve -
错误消息告诉您问题的确切原因。你读过它们吗? “FMINCON 要求以下输入为双精度数据类型:‘X0’。”这意味着 X0 必须是双精度数。因此,要修复此错误,请查看代码中 X0 的数据类型,并确保其为双精度。您应该能够自己解决这些问题,Matlab 错误消息通常很有帮助——请阅读它们!
标签: matlab fminsearch