matlab实现的嵌套乘法、高精度、二分法

嵌套乘法的计算:

\[ P(x) = 1 - x + x^2 - x^3 + ...+ x ^ {98} - x^{99} \]

function y = nest( d, c, x, b )
    if nargin < 4, b = zeros(d, 1); end
    y = c(d + 1);
    for i = d : -1 : 1
        y = y.*(x - b(i)) + c(i);
    end
end

等比数列的实现方式:
\[ P(x) = \frac{1 - (-x)^{100} } {1 - (-x)} \]

function y = nestup(x, n, a)
    if nargin < 3, a = 1;   end
    q = -1 * x;
    y = (a * (1 - q ^ n)) / (1 - q);
end

高精度计算的处理
\[ \sqrt{c^2 + d} - c \]

转换为下述形式
\[ \frac{c^2}{\sqrt{c^2 + d} + c} \]

 c = 246886422468;
 d = 13579;
 
 x = sqrt(c * c + d) - c;   % x = 0     wrong answer
 % x must equals to y
 y = d / (sqrt(c * c + d) + c) % y = 2.7500e-08

二分法的实现:

function xc = CalDetBisect(f, a, b, tol)
   fa = f(a);
   fb = f(b);
   if sign(fa) * sign(fb) >= 0
       error('f(a)f(b)<0  not satisified!')
   end
   while (b - a) / 2 > tol
       c = (a + b) / 2;
       fc = f(c);
       if fc == 0
           break;
       end
       if sign(fc) * sign(fa) < 0
            b = c;
            fb = fc;
       else
            a = c;
            fa = fc;
       end
   end
   xc = (a + b) / 2;
end

转载于:https://www.cnblogs.com/wsine/p/4634496.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值