对于包含n(> 100)个变量的耦合非线性方程组,我应该使用哪种方法/求解器?

时间:2019-01-26 09:55:31

标签: matlab nonlinear-optimization

我正在解决一个涉及变量数大于100的耦合非线性方程的问题。

我使用Fsolve / lsqnonlin(MATLAB)来解决此问题,它对于较少数量的变量(大约20个)有效。但是,随着变量数量的增加,它不能收敛到解决方案。

function y2 = chec(p,n,ges,res) 
%n is the number of variables
% res is 1xn matrix with complex numbers
% ges is just a constant.
gaus=exp(-((-(n/2-0.5):(n/2-0.5)).^2)/9000);
S=gaus.*exp(1i*p);
M=S'*S;
y2=zeros(n,1);
for k = 2:n
   cv = sum(diag(M,k-1))-res(k);
   if(k<n)
       y2(2*(k-lm)+1)=real(cv);
       y2(2*(k-lm)+2)=imag(cv);
   elseif(k==n)
       y2(2*(k-lm)+1)=imag(log(sum(diag(M,k-1)))-log(aucrr(k)));
       y2(2*(k-lm)+2)=p(n)-ges;
   end
end
%%% function ends here %%%
[z,fval] = fsolve(@(x) chec(x,n,ges,res),rand(1,n));

0 个答案:

没有答案