m0_73581420 2023-05-29 20:33 采纳率: 64.7%
浏览 18
已结题

用二分法编程求解方程matlab

用二分法编程求解方程:
f(x)=x3-11.1x2+38.8x-41.77=0
在区间[2,3]之间的解,并画出该函数在此区间的图形 。

img

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-05-29 20:58
    关注
    function [x, iterations] = bisection_method(f, a, b, tol, max_iter)
    
    % 判断区间两端点是否符号相反
    if f(a) * f(b) > 0
    error('区间端点符号相同!')
    end
    
    % 开始迭代
    x = (a + b) / 2;
    fx = f(x);
    iterations = 0;
    
    while abs(fx) > tol && iterations < max_iter
    if f(a) * fx < 0 % 符号相异
    b = x;
    else
    a = x;
    end
    x = (a + b) / 2; % 二分法迭代公式
    fx = f(x);
    iterations = iterations + 1;
    end
    
    % 检查是否收敛
    if abs(fx) > tol
    x = NaN;
    end
    
    end
    
    % 定义方程f(x) = x^3 - 11.1x^2 + 38.8x - 41.77
    f = @(x) x^3 - 11.1x^2 + 38.8x - 41.77;
    
    % 设定区间[a, b]和迭代精度
    a = 2;
    b = 3;
    tol = 1e-6;
    max_iter = 100;
    
    % 调用二分法函数求解方程
    [x, iterations] = bisection_method(f, a, b, tol, max_iter);
    
    % 输出求解结果和迭代次数
    disp(['x = ' num2str(x)]);
    disp(['迭代次数 = ' num2str(iterations)]);
    
    % 绘制函数图形
    x = linspace(a, b, 1000);
    y = f(x);
    plot(x, y);
    grid on;
    xlabel('x');
    ylabel('f(x)');
    title('函数图像');
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月6日
  • 已采纳回答 5月29日
  • 创建了问题 5月29日

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?