Minimizing a multivariable function
이전 댓글 표시
Hello, i am trying to find the minimum of a multivariable function (the number of variables may vary also but there is a pattern to construct the function) the code i am running is the following:
function F = jac(x)
n=input('n=');
x0=random('unid',90,1,n,1);
x0=pi./x0;
E=input('E=');
h=3;
F=0;
for i=1:n
D= 0.5;
% V=0;
% b=0;
for j=1:n
if (mod(j,2)==0)
D = D + cos(h*x(j));
else
D = D - cos(h*x(j));
end
end
D=(2*E*sqrt(2)/(pi*h))*abs(D);
F = F + 1/h*(D^2);
h=h+2;
end
M=fminsearch(@(x)jac,x0);
the error i am getting is that the function x is undefined can anyone help me please? thanks in advance
댓글 수: 2
John D'Errico
2014년 8월 24일
Please learn to format your code to make it readable. I did it for you this time. (Look for the code button.)
John D'Errico
2014년 8월 24일
편집: John D'Errico
2014년 8월 24일
Now that I can read your code, I see the call to random. random functions are quite difficult to minimize. However, it looks like you think that is a call to create starting values.
Worse, you have several input statements in the beginning of the function you are trying to minimize? WHY????
My guess from all these things (and others in your code) is you don't have a clue how an optimizer works or how to call one. Or maybe you don't understand how to write functions. It looks like you are confused about what the objective function called by an optimizer should be doing.
Time to start reading the help. Look at the examples. Then and only then, try solving a SMALL optimization problem where you know the answer. Work up to real world problems only when you understand how to solve basic ones.
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Performance and Memory에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!