level 1
这个是非线性的方程,用智慧计算器解不了,不过可以用mfp编程,用牛顿法解
function NewtonRaphson(expr, var)
variable tolerance = 0.0000001 // 最大误差
variable varval = 100 //初值
variable oscillation = 0.0001 // 用于计算导数
variable numberofsteps = 0
while abs(evaluate(expr, var, varval)) > tolerance
if numberofsteps > 100
throw "牛顿法不能收敛"
else
numberofsteps = numberofsteps + 1
endif
variable left = evaluate(expr, var, varval - oscillation)
variable right = evaluate(expr, var, varval + oscillation)
//这里其实要考虑derivative等于0的情况,不过我只是抛砖引玉。
variable derivative = (right - left)/2/oscillation
varval = varval - evaluate(expr, var, varval)/derivative //新的值
Loop
print("最后结果是" + varval)
endf
2017年02月07日 23点02分

