功能:采用遗传算法求解复系数非线性方程组

格式:
[a,er,n]=nlinSolvePluralGA(f,an,a0,aMin,aMax,Nbird,LoopSum,Error)
[a,er,n]=nlinSolvePluralGA(f,an,a0,aMin,aMax,Nbird,LoopSum)
[a,er,n]=nlinSolvePluralGA(f,an,a0,aMin,aMax,Nbird)
[a,er,n]=nlinSolvePluralGA(f,an,a0,aMin,aMax)
[a,er,n]=nlinSolvePluralGA(f,an,a0,aMin)
[a,er,n]=nlinSolvePluralGA(f,an,a0)
[a,er,n]=nlinSolvePluralGA(f,an)

f:存储拟合的符号表达式,每个表达式以逗号分隔,注意表达式支持虚数单位i
an:以符号变量存储的需要拟合的变量名称,每个名称以逗号分隔,注意变量当中不能以需单位i命名
a0:存储an初始估计值的列数为1或者2的矩阵变量,如果an当中有变量个数为m，则此矩阵变量行数也为m，其中每一行对应an当中的值，其中第1列代表实数部分，第2列代表虚数部分。如果此值为一个常数,则每个初值均初始化为此值。
aMin:存储an下限值的列数为1或者2的矩阵变量,如果an当中有变量个数为m，则此矩阵变量行数也为m，其中每一行对应an当中的值，其中第1列代表实数部分，第2列代表虚数部分。如果此值为一个常数,则每个初值均初始化为此值，注意初始化时只针对实数项。程序默认虚数与实数部分的下限为-512
aMax:存储an上限值的列数为1或者2的矩阵变量,如果an当中有变量个数为m，则此矩阵变量行数也为m，其中每一行对应an当中的值，其中第1列代表实数部分，第2列代表虚数部分。如果此值为一个常数,则每个初值均初始化为此值，注意初始化时只针对实数项。程序默认虚数与实数部分的上限为512
Nbird:种群数,默认200
LoopSum:总循环次数,默认3000
Error:误差控制变量,默认1e-12

a:返回的拟合数据变量,返回变量的每一行对应an的每一个变量,第1列为实数部分,第2列为虚数部分
er:返回的误差
n:返回的迭代终止程序循环次数

原理:内部调用函数{nlinSolve<矩阵运算\nlinSolve>}

例子:
/*已知一组非线性方程为如下,且x、y为复数,求解这个复系数方程

  sin(x/y*2)*3.6/x-3*x+4*y = 7.50459623413099-20.6444941301263*i
x^2-y^2*5+x*y*cos(x*y/100) = -16.2904287024851+104.537681749008*i

*/
f="sin(x/y*2)*3.6/x-3*x+4*y-7.50459623413099+20.6444941301263*i,x^2-y^2*5+x*y*cos(x*y/100)+16.2904287024851-104.537681749008*i";
x="x,y";
[a,er,n]=nlinSolvePluralGA(f,x)//输入上两条命令,以及本条命令回车得到如下结果
a =
[ 1.99999962838802    5.00000011631563
  2.99999997458028   -2.50000009080606 ]//即x=1.99999962838802+5.00000011631563i,y=2.99999997458028-2.50000009080606i
er =
[ 9.7935065048E-13 ]
n =
[ 36.0000000000000 ]