想自己定义一个二分法求根的函数怎么定义
mathematica吧
全部回复
仅看楼主
level 11
大韬Greatao 楼主
x = 3
low = 1
high = 2
guess[low_, high_] := (low + high)/2
e = 0.01
f[x_] := If[guess[low, high]^2 > x, high = guess[low, high],
low = guess[low, high]]
While[
Abs[high - low] > e,
f[x]]
guess[low, high] // N
2015年02月28日 14点02分 1
level 11
大韬Greatao 楼主
上面是我写的代码,运算过,可以达到想要的精度,但是我想写成可调用的函数形式。
型如:sqrtMy[x_,e_,low_,high_]
或者low和high都给初始值都行,分别是0和x+1,
总之我想以后输入sqrtMy[x,e],就能达到我想要的精度,求出根号,
也就是类似与编程中的自定义函数
怎么定义?
2015年02月28日 14点02分 2
level 11
大韬Greatao 楼主
中间如果不用f[x_]的话就是:
x = 3
low = 1
high = 2
guess[low_, high_] := (low + high)/2
e = 0.01
While[
Abs[high - low] > e,
If[guess[low, high]^2 > x, high = guess[low, high],
low = guess[low, high]]]
guess[low, high] // N
2015年02月28日 14点02分 3
吧务
level 12
sqrtMy[x_, e_, lowrange_, highrange_] :=
Module[{low, high, f},
low = 1;
high = 2;
guess[a_, b_] := (a + b)/2;
f = If[guess[low, high]^2 > #, high = guess[low, high],
low = guess[low, high]] &;
While[Abs[high - low] > e, f[x]];
guess[low, high]
] // N
2015年02月28日 15点02分 4
level 6
可以尝试下用Mma自带的精度控制。。
sqrtMy[x_, e_, low_, high_] :=
FixedPoint[If[
#^2 > x, {#
2, #}, {#,
#3}] &[Mean[#
], Sequence @@ #] &,
SetAccuracy[{low, high}, -Log10[e]]] // Mean
2015年03月01日 02点03分 7
[大拇指][大拇指][大拇指]
2024年10月26日 22点10分
1