优化MATLAB中的功能

时间:2014-11-28 16:31:06

标签: matlab optimization modeling

我多次尝试使用c的不同初始值。我没有使用函数c获得fminsearch的最佳值。我发现sigma的模拟值和测量值之间存在更多误差。请帮帮我:如何优化我的功能?

clc
close all
clear all    

syms c sigma est_bio mea_bio

sigma=[-15.1015 -13.7879    -13.0576    -12.7818    -12.3839    -11.7587    -11.1756    -10.6291    -9.9176];    
mea_bio=[0.181  0.204   0.529   0.632   1.059   1.533   1.934   1.977   1.861];

%%%  create model function q with parameters    
 q = @(c, mea_bio) ((c(1)/(-2*c(2))).*(1-exp(2*c(2).*mea_bio))+c(3).*exp(2*c(2).*mea_bio))     

%// create the desired error-functions for minimization    
h = @(c) sum((q(c, mea_bio) - sigma).^2); %// default minimizaton function    
c= [-.05 -.0500 -.0500]; % an initial guess   
[p_fit_e, r_e] = fminsearch(h, c) % Optimize
est_q = ((c(1)/(-2*c(2))).*(1-exp(2*c(2).*mea_bio))+c(3).*exp(2*c(2).*mea_bio))
err=est_q-sigma

1 个答案:

答案 0 :(得分:0)

为什么要将csigma est_biomea_bio定义为符号变量?这没有意义。这是一种数值优化,无需涉及符号计算。从代码中删除该行,它应该工作:

syms c sigma est_bio mea_bio