你的解法和以下解法的错误相同:
solve({a+b = 0,a+b = 1},{a,b}) #无解.
问题在于solve命令解方程组时,方程个数应该和未知数个数相等.
你的命令中,有3个方程,但只有2各未知数在z1,z2.任意两个方程都可以解出z1,z2.但是解出的结果各不相同,所以solve无解,不显示任何信息.
解法1:
最后一句求解命令改成 solve({dλ,dz1,dz2},{λ,z1,z2})
当然这样得出得结果用Rootof描述,未必能解出你要的结果.
解法2:
显然电脑计算速度虽快,但认知有限,算法局限.一个solve算法能解决的问题确实少得可怜.所以,你亲自告诉她:
①从式子(3)(4)消去λ就可以得到z1和z2的关系:
eqn1 := solve(dz1,v) = solve(dz2,v); #消去λ得到关于z1和z2的方程eqn1
②化简公式
eqn1 := lhs(eqn1)/rhs(eqn1) = 1
③用z2表示z1
z1 = solve(eqn1,z1)
③代入式(5),化简解出z2,再解z1.
其实按以上步骤做完,笔算都完成10次了.
将以上步骤写成函数,就是一个算法了,不过显然用处不大,而且不会写.
就这样了,好像问题还没解决,说了一堆没用的.