数值积分:基于牛顿-柯茨公式的定步长和自适应积分方法 [MATLAB]

#先上代码后补笔记#

#可以直接复制粘贴使用的MATLAB函数!#

1. 定步长牛顿-柯茨积分公式

function [ integration ] = CompoInt( func, left, right, step, mode )
%   分段积分牛顿-柯茨公式;
%   输入5个参数:被积函数(FUNCTIONHANDLE)'func',积分上下界'left'/'right',步长'step',
%   模式mode共三种('midpoint','trapezoid','simpson');
%   返回积分值;
switch mode
    % 仅仅是公式不同
    case 'midpoint'
        node = left; integration = 0;
        while (node + step <= right)    % 按照给定步长开始分段积分
            pieceInt = step*(func(node + step/2));  % 使用中点积分公式
            integration = integration + pieceInt; node = node + step;
        end
        if (node < right)   % 补齐最后一段积分
            pieceInt = (right - node)*(func((node + right)/2));
            integration = integration + pieceInt;
        end
    case 'trapezoid'
        node = left; integration = 0;
        while (node + step <= right)
            pieceInt = step*(func(node) + func(node + step))/2; % 使用梯形公式
            integration = integration + pieceInt; node = node + step;
        end
        if (node < right)
            pieceInt = (right - node)*(func(node) + func(right))/2;
            integration = integration + pieceInt;
        end
    case 'simpson'
        node = left; integration = 0;
        while (node + step <= right)
            pieceInt = step*(func(node) + 4*func(node + step/2) + func(node + step))/6; % 使用辛普森公式
            integration = integration + pieceInt; node = node + step;
        end
        if (node < right)
            pieceInt = (right - node)*(func(node) + 4*func((node + right)/2) + func(right))/6;
            integration = integration + pieceInt;
        end
end

  

2. 自适应分段积分方法

通过函数内调用自身的方法使得积分函数显得简洁明快。因为需要调用自身计算原积分的一段,必须传入参数length标识原积分上下限总长,通过left, right和length三个参数才能够得到某一段的要求精度。

function [ integration ] = AdaptInt( func, left, right, prec, length )
%   自适应分段积分函数AdaptInt;
%   输入五个参数:被积函数(句柄)func,积分上下限right,left,要求精度prec,积分总长length;
%   输出一个参数:积分值integration;
trapeInt = (right - left)*(func(left) + func(right))/2;
midInt = (right - left)*func((left + right)/2);
err = (trapeInt - midInt)/3;    % 由中点公式和梯形公式差估算误差
if (abs(err) < prec && (right - left) < length/5)   % 如果误差符合要求,则使用辛普森公式计算较精确结果
    integration = (right - left)*(func(left) + 4*func((left + right)/2) + func(right))/6;
else    % 否则,二分该段,分别进行自适应分段积分
    integration = AdaptInt(func, left, (left + right)/2, prec/2, length) + AdaptInt(func, (left + right)/2, right, prec/2, length);
end
end

 

转载于:https://www.cnblogs.com/gentle-min-601/p/9638145.html

市场推广是企业实现营销目标的关键环节,它包括了多种手段和策略,如广告、促销、公关、直销等。以下是市场推广方面的文献综述: 1.《市场推广的战略与实践》(作者:菲利普·科特勒):该书是市场学大师菲利普·科特勒的经典著作之一,全面介绍了市场推广的理论和实践,特别是强调了品牌管理和数字营销的重要性。 2.《市场推广策略》(作者:欧文·杜伊奇):该书重点讲述了市场推广策略的制和实施,包括了市场细分、目标市场选择、位策略、产品策略、促销策略等方面。 3.《营销基础》(作者:菲利普·科特勒):该书是市场学中的经典教材之一,全面介绍了营销理论和实践,包括了市场推广的策略、渠道管理、销售管理、客户关系管理等方面。 4.《数字营销》(作者:戴夫·柯茨):该书介绍了数字营销的概念和实践,包括了搜索引擎优化、社交媒体营销、电子邮件营销、内容营销等方面,对于数字营销从业者和学生都有很大的参考价值。 5.《影响力》(作者:罗伯特·西奥迪尼):该书介绍了影响力的原理和策略,包括了社会认同、权威、互惠、稀缺性等方面,对于市场推广人员了解人类心理学和行为学有很大的帮助。 以上是市场推广方面的文献综述,涉及了市场推广的理论和实践、数字营销、影响力等方面,对于市场推广人员和学生都有很大的参考价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值