[問題] 函數有錯該如何修改(函數的建立和求min)已回收
這是m-file裡: 變數有三個x(1),x(2),x(3)
function[c,ceq] =objfun(x)
y=rand(1,100);
i=1:98;
f(i)=2*log(1+x(3)*(y(i+2)*y(i+1)-x(1)*y(i+1)^2-x(1)*y(i+1)*y(i))+x(4)*(y(i+2)*y(i)-x(1)*y(i+1)*y(i)-x(2)*y(i)^2));
f=sum(f);
c=[];
ceq=[eq11,eq22];
i=1:98;
eq1(i)=(y(i+2)*y(i+1)-x(1)*y(i+1)^2-x(2)*y(i+1)*y(i)) / (1+x(3)*(y(i+2)*y(i+1)-x(1)*y(i+1)^2-x(2)*y(i+1)*y(i))+x(4)*(y(i+2)*y(i)-x(1)*y(i+1)*y(i)-x(2)*y(i)^2));
eq11=sum(eq1);
eq2(i)=(y(i+2)*y(i)-x(1)*y(i+1)*y(i)-x(2)*y(i)^2) /(1+x(3)*(y(i+2)*y(i+1)-x(1)*y(i+1)^2-x(2)*y(i+1)*y(i))+x(4)*(y(i+2)*y(i)-x(1)*y(i+1)*y(i)-x(2)*y(i)^2));
eq22=sum(eq2);
x0=[0.2 0.3 1 1];
[x,fval,exitflag,output] = fminunc(@objfun,x0);
執行會出現 Error in ==> objfun at 5
f(i)=2*log(1+x(3)*(y(i+2)*y(i+1)-x(1)*y(i+1)^2-x(1)*y(i+1)*y(i))+x(4)*(y(i+2)*y(i)-x(1)*y(i+1)*y(i)-x(2)*y(i)^2));
這行是我的函數..我看不出來哪裡有錯?
Error in ==> fminunc at 184
f = feval(funfcn{3},x,varargin{:}); 那這個是matlab裡跑的..為什麼會出現錯誤?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.224.40.240
→
02/11 20:39, , 1F
02/11 20:39, 1F
→
02/11 20:44, , 2F
02/11 20:44, 2F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 4 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章