一、实验目的

  1. 掌握逐步搜索法求解非线性方程根区间
  2. 掌握二分法求解非线性方程根的近似解
  3. 掌握迭代法求解非线性方程的解

二、实验平台

  1. 计算机
  2. MATLAB集成环境

三、实验内容

(1) 用逐步搜索法求方程f(x) = x^3 - x - 1 = 0的一个有根区间,要求有根区间范围不得超过0.1。 (2) 用二分法求解方程f(x) = 1 - x - sin(x) = 0在区间[0,1]内的一个实根,使误差不大于1/2*10^-4. (3) 用迭代法求解方程f(x) = x^3 - x^2 - 1 = 0在区间[1.4,1.6]上的根,要求保留至少5位有效数字。

四、实验步骤

  1. 逐步搜索法求解非线性方程根区间:

    • 设定搜索区间起点和步长
    • 逐步向右搜索,直到找到f(x)正负变化的位置
    • 根据搜索步长细化搜索区间,直到找到根的范围不超过0.1
  2. 二分法求解非线性方程根的近似解:

    • 确定搜索区间
    • 通过二分法不断缩小区间,直到误差不大于1/2*10^-4
    • 输出区间中点的值作为近似解
  3. 迭代法求解非线性方程的解:

    • 选择合适的迭代公式,如牛顿迭代法或者弦截法
    • 确定初始值和迭代精度
    • 迭代计算,直到达到指定精度
    • 输出迭代结果作为解

五、实验结果

% 逐步搜索法求解方程f(x)=x^3-x-1=0的一个有根区间
% 区间[1.0,1.5]内搜索,结果为有根区间的范围不得超过0.1

% 初始化搜索起点
a = 1.0;
b = 1.5;

% 定义步长
delta = 0.01;

% 迭代搜索
while (b-a) > 0.1
    % 计算f(a)和f(b)
    fa = a^3-a-1;
    fb = b^3-b-1;
    
    % 判断f(a)和f(b)的符号
    if fa*fb > 0
        % 若符号相同,则无根或有多个根
        error('No root or multiple roots found in the given interval.');
    end
    
    % 搜索下一个区间
    c = a + delta;
    fc = c^3-c-1;
    while fa*fc > 0
        % 若f(a)和f(c)同号,则继续搜索下一个区间
        a = c;
        fa = fc;
        c = a + delta;
        fc = c^3-c-1;
    end
    
    % 更新b
    c = b - delta;
    fc = c^3-c-1;
    b = c;
end

% 输出结果
fprintf('The root interval is [%f, %f].\n', a, b);





% 使用二分法求解方程f(x)=1-x-sin(x)=0在区间[0,1]内的一个实根
a = 0; % 区间左端点
b = 1; % 区间右端点
tol = 0.5*10^(-4); % 误差容忍度

while (b-a)/2 > tol
    c = (a+b)/2; % 取中点
    fa = 1-a-sin(a); % 左端点函数值
    fc = 1-c-sin(c); % 中点函数值
    if fa*fc < 0 % 根在左半区间
        b = c; % 新区间右端点为中点
    else % 根在右半区间
        a = c; % 新区间左端点为中点
    end
end

fprintf('方程f(x)=1-x-sin(x)=0在区间[0,1]内的实根为:%f\n', c);


x0 = 1.4;
tol = 1e-5;
max_iter = 1000;
for i = 1:max_iter
    x1 =( 1 + x0^2)^(1/3);
    if abs(x1-x0) < tol
        break
    end
    x0 = x1;
end
fprintf('The root of f(x)=x^3-x^2-1=0 in [1.4,1.6] is approximately %.5f\n',x1);

结果: 1.The root interval is [1.320000, 1.420000]. 2.方程f(x)=1-x-sin(x)=0在区间[0,1]内的实根为:0.510925 3.The root of f(x)=x^3-x^2-1=0 in [1.4,1.6] is approximately 1.46557

六、实验总结

本次实验主要学习了逐步搜索法、二分法和迭代法求解非线性方程的根和近似解。在实验中,通过逐步搜索法可以找到非线性方程的一个有根区间,二分法则可以在给定区间内求解非线性方程的实根,而迭代法则可以通过迭代计算逼近非线性方程的根。在实验中,我们需要注意选择合适的搜索区间、步长和迭代公式,以及控制误差容忍度和迭代次数等参数,以便得到准确的根和近似解。通过本次实验,我们不仅掌握了求解非线性方程的方法,还提高了MATLAB编程的能力和实践经验。

非线性方程求解方法实验:逐步搜索法、二分法和迭代法

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

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