你的解法和以下解法的错误相同:
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次了。。。。
将以上步骤写成函数,就是一个算法了,不过显然用处不大,而且不会写。。
就这样了,好像问题还没解决,说了一堆没用的。