MATLAB 中的Newton-Raphson 法
本教程将讨论在 MATLAB 中使用 Newton-Raphson 方法求函数的根。
MATLAB 中的牛顿-拉夫逊法
我们使用 Newton-Raphson 方法求函数的根。 该方法使用公式来逼近具有切线的连续函数,以找到给定函数的根的近似值。
用于使用 Newton-Raphson 方法求根的公式如下。
该公式使用先前的值、函数及其导数来查找给定函数的下一个根。 要求函数的导数,我们可以使用 MATLAB 的 diff() 函数。
我们需要使用一个循环来使用上面的公式来获取根。 例如,如果我们需要找到四个根,我们将循环重复四次。
我们将把给定的函数存储在一个变量中,使用 diff() 函数获取它的导数,并将它存储在一个变量中。 我们还必须将所有根值存储在一个数组中,以便轻松访问先前的根值。
之后,我们需要使用循环来查找根,我们将使用根数组更新值。 我们可以使用 subs() 函数来更新循环中的值并将根值存储在根数组中。
例如,让我们定义一个函数并使用随机函数,并在 MATLAB 中使用上述公式找到它的前五个根。 请参阅下面的代码。
clc
clear
fun = @(x) sin(x);
roots = mynewton(fun, 2, 5)
function output = mynewton(fun,a,n)
syms x;
z = fun(x);
derZ = diff(z);
out = zeros(1,n+1);
out(1) = a;
for idx = 1 : n
numeratorZ = subs(z,x,out(idx));
denominatorZ = subs(derZ,x,out(idx));
out(idx+1) = out(idx) - double(numeratorZ)/double(denominatorZ);
end
output = out;
end
输出:
roots =
2.0000 4.1850 2.4679 3.2662 3.1409 3.1416
请注意,如果上面的代码显示错误,请将函数 mynewton() 保存在一个单独的 .m 文件中,该文件与函数名称同名,如 mynewton.m ,然后创建另一个 .m 文件并将前四行代码写入 它调用函数或从 MATLAB 的命令窗口调用它。 测试文件和 mynewton.m 应该在同一个目录中。
在上面的代码中,我们定义了 mynewton()
函数,我们必须在其中传递给定的函数,我们想要找到它的根,根的初始猜测,以及我们想要找到的根的数量。
我们使用 zeros()
函数用零初始化根数组,以便我们可以在使用公式计算值后放置这些值。
我们使用 subs()
函数来更新上述 Newton-Raphson 法公式中分子和分母的值。 subs()
函数的第一个参数是我们要查找其根的给定函数。
第二个参数是我们要更改的旧值,第三个是我们要在给定函数中替换旧值的新值。
在 subs()
函数之后,输出将是函数形式,如 cos(number)
,所以我们使用 double()
函数将值转换为数值,然后将 Newton-Raphson 公式应用于这些值以求值 的根。
输出显示根和初始猜测已存储在输出数组中。 上面的代码是 Newton-Raphson 方法的基本表示,但我们可以添加其他内容,例如公差或检查算法是否收敛的方法。
相关文章
MATLAB 检查变量类型
发布时间:2023/04/23 浏览次数:92 分类:MATLAB
-
在本教程中,我们将讨论如何使用 MATLAB 中的 class() 和 whos 函数检查给定变量的类型。