T=[-7.96870652074371e-05,0.000510728291346416;0.000151475553124232,3.20199086056143e-05;3.21565182869639e-05,-0.000463197744425942;0.000263127498248740,-7.96320365188935e-05;-3.21565182869639e-05,0.000463197744425942;-0.000263127498248740,7.96320365188935e-05;7.96870652074371e-05,-0.000510728291346416;-0.000151475553124232,-3.20199086056143e-05];
F=[0;0;0;0;0;-38494;0;-38494];
% % TC=F,T是8*2矩阵,C是2*1矩阵,F是8*1矩阵;
fun1=@(C) sum(((C(1)/(1-C(2)^2)).*T(:,1)+(C(1)*C(2)/(1-C(2)^2)).*T(:,2)-F(:,1)).^2);
fun=@(C) (C(1)/(1-C(2)^2)).*T(:,1)+(C(1)*C(2)/(1-C(2)^2)).*T(:,2)-F(:,1);
% % fun1是fun中各向量的平方之和
lb=[1e9,-0.5];
ub=[1e11,0.5];
options=optimoptions('particleswarm','display','off'); %粒子群算法
nars=2; % 未知量个数
C0=particleswarm(fun1,nars,lb,ub,options);%求初值
start_num=2000; % 计算起始点个数
opts=optimoptions(@lsqnonlin ,'Algorithm','trust-region-reflective','Display','off');
problem=createOptimProblem('lsqnonlin','x0',C0,'objective',fun,'lb',lb,'ub',ub,'options',opts);
% % 最小二乘法,给定初值
gs=MultiStart('UseParallel',true,'Display','iter');% 开启并行计算
parpool
[C,fval,exitflag,output,manymins]=run(gs,problem,start_num);
delete(gcp) %关闭并行计算