如何递归二分算法代码

30视图(30天)
Dimitra
Dimitra 2023年6月4日在9:08
评论道: Dimitra2023年6月4日可以。14:55分离开
这就是我想让代码递归。但是我有一些错误:
你能请haelp我吗?
2的评论
Dimitra
Dimitra 2023年6月4日可以。14:55分离开
好的我将会完成!

登录置评。

接受的答案

印度央行
印度央行 2023年6月4日在34
嗨Dimitra,
我认为我们可以这样做:
函数根= bisection_recursive (f, a, b, tol max_it)
fa =函数宏指令(f);
fb =函数宏指令(f, b);
%检查是否已经找到根
如果abs (fa) <托尔
根=一个;
返回;
elseifabs(神奇动物)<托尔
根= b;
返回;
结束
%检查间隔是有效的
如果fa * fb > 0
错误(“无根存在于给定的区间。”);
结束
%递归二分算法
函数根= bisection_recursive_helper (a, b,我x_previous)
如果我> max_it
错误(“最大迭代次数达到了。”);
结束
x = (a + b) / 2;%中点
流(迭代% 3 d: % 10.8 f \ n '我x);
fx =函数宏指令(f (x);
如果abs (x - x_previous) < tol | | abs (fx) <托尔
根= x;
返回;
结束
如果fa *外汇< 0
根= bisection_recursive_helper (a, x, x, i + 1);
其他的
根= bisection_recursive_helper (x、b x,我+ 1);
结束
结束
%调用递归helper函数
根= bisection_recursive_helper (a, b, b, 1);
结束
要使用这个功能,您需要定义函数 f 并提供初始区间 [a, b] ,宽容 托尔 和迭代的最大数量 max_it 。函数将递归划分区间和收敛到根内指定的公差或最大迭代数。
这是一个如何使用的例子 bisection_recursive 函数找出根本的功能:
%定义函数
f = @ (x) x ^ 2 - 4;
%定义区间[a, b]
= 1;
b = 3;
%设置公差和最大迭代数
托尔= 1 e-6;
max_it = 100;
%调用bisection_recursive函数
根= bisection_recursive (f, a, b, tol max_it);
%显示结果
流(“根:% 10.8 f \ n”、根);
确保修改功能 f 和输入参数 一个 , b , 托尔 , max_it 根据您的特定问题。
1评论
Dimitra
Dimitra 2023年6月4日可以。14:55分离开
非常感谢!我要现在就试试吧

登录置评。

更多的答案(0)

类别

找到更多的在数学帮助中心文件交换

下载188bet金宝搏


释放

R2023a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!