以下是用 MATLAB 实现牛顿法求解方程的代码示例:

% 方程(1)的求解
f1 = @(x) x^41 + x^3 + 1; % 定义方程
df1 = @(x) 41*x^40 + 3*x^2; % 定义方程的导数

x0 = -1; % 初始值
max_iter = 100; % 最大迭代次数
tol = 1e-6; % 收敛阈值

for iter = 1:max_iter
    f_val = f1(x0);
    df_val = df1(x0);
    x1 = x0 - f_val / df_val; % 牛顿法迭代公式

    % 检查是否满足收敛条件
    if abs(x1 - x0) < tol
        break;
    end
    
    x0 = x1; % 更新初始值
end

if iter == max_iter
    disp('未达到收敛条件');
else
    disp(['方程(1)的解为: x = ', num2str(x1)]);
end

% 方程(2)的求解
f2 = @(x) x - (1/x)*sin(x); % 定义方程
df2 = @(x) 1 + (1/x)*sin(x) - (1/x^2)*cos(x); % 定义方程的导数

x0 = 0.5; % 初始值
max_iter = 100; % 最大迭代次数
tol = 1e-6; % 收敛阈值

for iter = 1:max_iter
    f_val = f2(x0);
    df_val = df2(x0);
    x1 = x0 - f_val / df_val; % 牛顿法迭代公式

    % 检查是否满足收敛条件
    if abs(x1 - x0) < tol
        break;
    end
    
    x0 = x1; % 更新初始值
end

if iter == max_iter
    disp('未达到收敛条件');
else
    disp(['方程(2)的解为: x = ', num2str(x1)]);
end

代码中包含两个方程的求解,分别定义了方程和导数函数,并设置了初始值、最大迭代次数和收敛阈值。代码通过循环迭代计算新的近似解,并判断是否满足收敛条件。

请注意,此代码在多项式的高次方程和三角函数的情况下可能需要更多的迭代次数才能达到收敛条件。您可以根据需要调整最大迭代次数和收敛阈值。

MATLAB 牛顿法求解方程代码示例

原文地址: https://www.cveoy.top/t/topic/b3X3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录