:Ⱥ㷨Ըз

ʽ:
[a,er,n]=nlinFitPluralPSO(f,an,xn,y,x,a0,aMin,aMax,Nbird,LoopSum,Error)
[a,er,n]=nlinFitPluralPSO(f,an,xn,y,x,a0,aMin,aMax,Nbird,LoopSum)
[a,er,n]=nlinFitPluralPSO(f,an,xn,y,x,a0,aMin,aMax,Nbird)
[a,er,n]=nlinFitPluralPSO(f,an,xn,y,x,a0,aMin,aMax)
[a,er,n]=nlinFitPluralPSO(f,an,xn,y,x,a0,aMin)
[a,er,n]=nlinFitPluralPSO(f,an,xn,y,x,a0)
[a,er,n]=nlinFitPluralPSO(f,an,xn,y,x)

f:洢ϵķűʽ,עʽ֧λi
an:Էű洢Ҫϵı,ÿԶŷָ,עв赥λi
xn:Էű洢ʵɼݵı,ÿԶŷָ ,עв赥λi
y:Ϊ12ľ߳,洢ʵɼĵʽұߵĳΪ,1жӦʵ,2жӦ
x:Ϊżľ,洢ӦxnƵ,yǾΪm,xnбΪn,xΪm2nľ,xnеĵ1Ӧxе12ݣxnеĵ2Ӧxе34ݡ˱ежӦʵ,żӦ
a0:洢anʼֵΪ12ľ,anбΪm˾ҲΪmÿһжӦanеֵе1дʵ֣2дֵ֡Ϊһ,ÿֵʼΪֵ
aMin:洢anֵΪ12ľ,anбΪm˾ҲΪmÿһжӦanеֵе1дʵ֣2дֵ֡Ϊһ,ÿֵʼΪֵעʼʱֻʵĬʵֵΪ-512
aMax:洢anֵΪ12ľ,anбΪm˾ҲΪmÿһжӦanеֵе1дʵ֣2дֵ֡Ϊһ,ÿֵʼΪֵעʼʱֻʵĬʵֵΪ512
Nbird:Ⱥ,Ĭ200
LoopSum:ѭ,Ĭ3000
Error:Ʊ,Ĭ1e-12

a:صݱ,رÿһжӦanÿһ,1Ϊʵ,2Ϊ
er:ص
n:صĵֹѭ

ԭ:ڲú{nlinSolve2<\nlinSolve2>}

:

//һ(x,y,z),֪ʽ z=a*sin(x)+b*cos(y)+c*i ,ϳѸϵabԼʵc
x=rand(3,20,2);
y=rand(3,20,2);
a=[1 2];//a=1+2*i
b=[-3.5 -1];//b=-3.5-i
c=4;
d1=PluralRun("sin(x)");
d2=PluralRun("mul(a,d1)");
d3=PluralRun("cos(y)");
d4=PluralRun("mul(b,d3)");
d5=[0 1];
d6=PluralRun("mul(d5,c)");
d7=PluralRun("add(d2,d4)");
z=PluralRun("add(d7,d6)");
//δֻΪ˲ݶеĴ,ȵõ(x,y,z)

f="a*sin(x)+b*cos(y)+c*i";
an="a,b,c";
xn="x,y"
xy=[x,y];
a0=[10,-5;11,-6;0,0];//ʼʱĬa=10-5*i,b=11-6*i,c=0
amin=[-50,-60;-51,-61;-52,0];//ע޶ӦĹϵ,anеaʵΪ-50,Ϊ-60
amax=[256,100;257,101;255,0];//ΪancΪʵ,cΪ0,ϸaminamaxһ0
[a,er,n]=nlinFitPluralPSO(f,an,xn,z,xy,a0,amin,amax,100,3000,1e-16)//سõ½
a =
[ 1.00000000055712    1.99999999783559
 -3.49999999784349   -1.00000000087484
  4.00000000675976    0.00000000000000 ]
er =
[ 1.9295219801E-15 ]
n =
[ 3000.00000000000 ]