我仔细看了一下公式和程序,发现有以下几点问题:
1、从你给的公式看,有两处积分上限是正无穷,但程序中写的是2,请核实那个是正确的。
如果是正无穷可能比较麻烦,因为无法求出符号解,而数值积分不支持无穷区间。
2、下面这个求解方程的语句
[qq,aa]=solve(Q,A);
存在多个问题:
(1)方程组中方程个数小于变量个数时,需要指定变量,否则,系统自动指定最接近x的变量,所以实际上是求关于t和q的方程。
(2)输出不可以写成[qq,aa],因为返回的结果是按照字母表顺序的,这种写法会把结果顺序搞错。
(3)求解结果有可能存在多个解,需要慎重处理(按照现在的写法求关于t和q的方程有多个解,但如果求关于a和q的方程,则无法求得封闭形式的解)。
3、我有点没太搞明白你的用意,大概理解是:你本意是希望求解无约束最大化问题,所以通过求偏导数为0来求极值点,但有几点疑问:
(1)导数为0只是函数取极值的必要条件而非充分条件。
(2)你的目标函数是两个,一般来说,很难保证两个目标函数同时取极值。是要进行多目标优化,求帕累托意义上的最优吗?这一点需要你进一步明确。
(3)函数取极值需要对几个变量的偏导数都为0,而你的做法是对第一个函数求两个变量的偏导数,对第二个函数求另外两个变量的偏导数,这种思路在理论上讲得通吗?只怕即使能求出结果,也无法保证任何一个目标函数取极值。
(4)假如上述思路可行,那么,为什么不是对式(1)求偏导后联立求出q和t关于a和n的表达式,然后代入(2)中呢?
(5)换一个角度,为什么不是同时对(1)或(2)式求四个变量的偏导,直接联立求解呢?
4、如果按照优化问题来做,很可能需要借助数值方法来做(也可能结合符号数学工具箱的功能),这几个变量的值完全没有范围限制吗?
漫无目的的指定初值很可能会陷入局部最优,或者遇到某些表达式不合乎本意的情况(比如积分限上限是否允许小于下限)。
如果用全局优化,方法多数属于进化算法,带有不小的偶然性,得到什么样的结果可能要看运气。
5、其它表达式我没仔细核对,请再仔细检查一下。