作为一项家庭作业,我正在编写一个代码,该代码使用二分法来计算一个函数的根,其中一个变量在一个范围内。我创建了一个执行计算的用户函数,但是该函数的输入之一应该是“有趣的”,应该设置为等于该函数。
这是我的代码,在我继续之前:
function [ Ts ] = BisectionRoot( fun,a,b,TolMax )
%This function finds the value of Ts by finding the root of a given function within a given range to a given
%tolerance, using the Bisection Method.
Fa = fun(a);
Fb = fun(b);
if Fa * Fb > 0
disp('Error: The function has no roots in between the given bounds')
else
xNS = (a + b)/2;
toli = abs((b-a)/2);
FxNS = fun(xns);
if FxNS == 0
Ts = xNS;
break
end
if toli , TolMax
Ts = xNS;
break
end
if fun(a) * FxNS < 0
b = xNS;
else
a = xNS;
end
end
Ts
end
输入参数由我们的老师定义,所以我不能乱用它们。我们应该在运行函数之前在命令窗口中设置这些变量。这样,我们以后可以将该程序用于其他事情。(即使我认为 fzero() 可以用来做到这一点)
我的问题是我不确定如何为某事设置乐趣,然后以我可以做乐趣(a)或乐趣(b)的方式使用它。在我们的书中,他们做了一些他们称之为将 f(x) 定义为匿名函数的事情。他们这样做是为了解决一个示例问题:
F = @ (x) 8-4.5*(x-sin(x))
但是当我尝试这样做时,我得到了错误,错误:意外的 MATLAB 运算符。
如果你们想在发布之前尝试运行程序来测试您的解决方案(希望我的程序有效!),您可以使用书中示例中的这些变量:
fun = 8 - 4.5*(x - sin(x))
a = 2
b = 3
TolMax = .001
使用这些的书中得到的答案是2.430664
。
我敢肯定,这个问题的答案非常简单明了,但由于某种原因,我找不到解决方法!感谢您的帮助。