matlab实现二分法解方程

在这里插入图片描述
在这里插入图片描述

function [x] = halfSolve(a, b, f ,tol)  % tol 是 tolerance 的缩写,表示绝对误差
    c = (a + b) / 2; k = 1;
    m = 1 + round((log(b - a) - log(2 * tol)) / log(2)); % <1>
    while k <= m + 10
        if (f(c) == 0)
            x = c;
            break;
        elseif f(a) * f(c) < 0
            b = (a + b) / 2;
        else
            a = (a + b) / 2;
        end
        c = (a + b) / 2; k = k + 1;
    end
    x = c; % 这里加分号是为了不再命令行中输出
    k % 不加分号就会在控制台输出
    c
end


clc;clear all;
v_y = 10;
R = 565.98;      %光源轨迹半径

syms lamda
fun = @(lamda)(lamda + (R/v_y) * sin(lamda) - pi);
a = 0;
b = pi;
tol = 1.0e-15;         %控制误差精度
result = halfSolve(a, b,fun,tol);

%% 求交点
syms lamda
eqn1 =  lamda + (R/v_y) * sin(lamda) - pi  == 0;
solx1 = vpasolve(eqn1 , lamda,[0,pi])



参考链接:
https://www.cnblogs.com/fanlumaster/p/14551258.html

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值