数值积分——复化梯形求积公式 | 北太天元

复化求积法的思想:
将区间 [ a , b ] [a,b] [a,b]进行 n n n等分,步长 h = b − a n h=\frac{b-a}{n} h=nba,等分点 x k = a + k h , k = 0 , 1 , 2 , ⋯   , n x_{k}=a+kh,k=0,1,2,\cdots,n xk=a+kh,k=0,1,2,,n,
先在每个子区间 [ x k , x k + 1 ] [x_k,x_{k+1}] [xk,xk+1]上采用低阶的数值求积公式求得近似积分值 I k I_k Ik,
再将它们累加并以和 ∑ k = 0 n − 1 I k \sum_{k=0}^{n-1}I_k k=0n1Ik作为积分 I = ∫ a b f ( x ) d x \mathrm{I}=\int_{\mathrm{a}}^{\mathrm{b}}\mathrm{f}(\mathrm{x})\mathrm{d}\mathrm{x} I=abf(x)dx的近似值.

复化梯形求积公式

将积分区间 [ a , b ] [a,b] [a,b]进行 n n n等分,步长为 h = b − a n h=\frac{b-a}{n} h=nba,节点 x k = a + k h , ( k = 0 , 1 , 2 , ⋯   , n ) x_{k}=a+kh,(k=0,1,2,\cdots,n) xk=a+kh,(k=0,1,2,,n)
I ( f ) = ∫ a b f ( x ) d x = ∑ i = 0 n − 1 ∫ x i x i + 1 f ( x ) d x I(f)=\int_a^bf(x)\mathrm{d}x=\sum_{i=0}^{n-1}\int_{x_i}^{x_{i+1}}f(x)\mathrm{d}x I(f)=abf(x)dx=i=0n1xixi+1f(x)dx

[ x i , x i + 1 ] [x_i,x_{i+1}] [xi,xi+1]上使用梯形公式
∫ x i x i + 1 f ( x ) d x = h 2 [ f ( x i ) + f ( x i + 1 ) ] − f ′ ′ ( ξ i ) h 3 12 ≈ h 2 [ f ( x i ) + f ( x i + 1 ) ] \int_{x_i}^{x_{i+1}}f(x)\mathrm{d}x=\frac{h}{2}[f(x_i)+f(x_{i+1})]-f''(\xi_i)\frac{h^3}{12}\approx\frac{h}{2}[f(x_i)+f(x_{i+1})] xixi+1f(x)dx=2h[f(xi)+f(xi+1)]f′′(ξi)12h32h[f(xi)+f(xi+1)]


I ( f ) = ∑ i = 0 n − 1 { h 2 [ f ( x i ) + f ( x i + 1 ) ] − f ′ ′ ( ξ i ) h 3 12 } ≈ h [ 1 2 f ( a ) + ∑ i = 1 n − 1 f ( x i ) + 1 2 f ( b ) ] I(f)=\sum_{i=0}^{n-1}\left\{\frac{h}{2}[f(x_{i})+f(x_{i+1})]-f^{\prime\prime}(\xi_{i})\frac{h^{3}}{12}\right\} \approx h\left[\frac{1}{2}f(a)+\sum_{i=1}^{n-1}f(x_{i})+\frac{1}{2}f(b)\right] I(f)=i=0n1{2h[f(xi)+f(xi+1)]f′′(ξi)12h3}h[21f(a)+i=1n1f(xi)+21f(b)]

得复化梯形公式
T ( h ) = T n ( f ) = h [ 1 2 f ( a ) + ∑ i = 1 n − 1 f ( x i ) + 1 2 f ( b ) ] ≈ ∫ a b f ( x ) d x T(h)=T_n(f)=h\left[\frac{1}{2}f(a)+\sum_{i=1}^{n-1}f(x_i)+\frac{1}{2}f(b)\right]\approx \int_a^bf(x)\mathrm{d}x T(h)=Tn(f)=h[21f(a)+i=1n1f(xi)+21f(b)]abf(x)dx


算法

♡ \heartsuit 复化梯形求积公式:T = comp_tra_integral(a,b,n,f)

  1. 输入

    • [ a , b ] [a,b] [a,b]
    • n n n:将 [ a , b ] [a,b] [a,b] n n n等分
    • f f f:已经定义好的函数,支持向量运算
  2. 实现步骤

    • 计算出 [ a , b ] [a,b] [a,b] n n n等分后得到的 n + 1 n+1 n+1个节点,构成向量 x 0 x_0 x0
    • y 0 = f ( x 0 ) y_0 = f(x_0) y0=f(x0)
    • 代入
      ∫ a b f ( x ) d x ≈ h [ 1 2 f ( a ) + ∑ i = 1 n − 1 f ( x i ) + 1 2 f ( b ) ] = T \int_a^bf(x)\mathrm{d}x\approx h\left[\frac{1}{2}f(a)+\sum_{i=1}^{n-1}f(x_i)+\frac{1}{2}f(b)\right] = T abf(x)dxh[21f(a)+i=1n1f(xi)+21f(b)]=T
  3. 输出

    • T T T:通过复化梯形求积公式得到的积分近似值

北太天元源程序

function T = comp_tra_integral(a,b,n,f)
% [a,b]
% n :小区间的个数
% f:定义好的函数
%
%   Version:            1.0
%   last modified:      07/10/2023
    h = (b-a)/n;
    k = 0:1:n;
    xi = a + k * h;
    yi = f(xi);
    sumy = sum(yi(2:1:n));
    T = (yi(1)/2 + sumy + yi(n+1)/2)*h;
end

保存为 comp_tra_integral.m文件

数值算例

用数值积分法近似计算
π = 4 ∫ 0 1 1 1 + x 2 d x \pi = 4\int_0^1 \frac{1}{1+x^2}\mathrm{d}x π=4011+x21dx
编写复化梯形公式的实现程序,分别取剖分段数 $ n = 10, 20, 40, 80, 160, $ 计算积分值与 π \pi π 的误差并作图;

% 复化梯形求积例子
%   last modified:      07/11/2023
%   file need: comp_tra_integral.m
%%
clc;clear all;format long;
f = @(x) 4./(1+x.^2);

N = [10 20 40 80 160];
delta = zeros(1,5);
k = 1;
for n = N
    T = comp_tra_integral(0,1,n,f);
    delta(k) = abs(pi-T);
    k++;
end
    	plot(N,delta,'b');
disp(delta);

运行后得到
在这里插入图片描述
可以发现,复化求积法下对积分的计算是非常稳定的,避开了Newton-Cotes 公式下随阶数升高带来的不稳定性。

  • 23
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是使用Python和sklearn库计算tf-idf的示例代码,以北太天元为例: ```python from sklearn.feature_extraction.text import TfidfVectorizer # 定义文本集合 corpus = [ '北太天元是一个高端住宅小区', '北太天元地理位置优越', '北太天元的物业服务很好', '北太天元的环境优美', '北太天元的房价较高' ] # 创建TfidfVectorizer对象 vectorizer = TfidfVectorizer() # 计算tf-idf值 tfidf = vectorizer.fit_transform(corpus) # 输出结果 print(tfidf.toarray()) print(vectorizer.get_feature_names()) ``` 输出结果为: ``` [[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.364524 0. 0. 0. 0. 0. 0. 0.364524 0. 0.364524 0. 0. 0. 0. 0. 0.364524 0. 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.526405 0. 0. 0. 0.526405 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.526405] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.629228 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ] [0. 0. 0. 0. 0. 0.546454 0.546454 0. 0. 0. 0. 0. 0.546454 0. 0. 0. 0.546454 0. 0. 0. 0.546454 0. 0.546454 0. 0. 0. 0. 0. 0.546454 0. 0. 0. ] [0. 0.546454 0. 0.546454 0.546454 0. 0. 0.546454 0.546454 0. 0.546454 0.546454 0. 0.546454 0. 0.546454 0. 0. 0.546454 0.546454 0. 0. 0. 0. 0.546454 0.546454 0. 0.546454 0. 0.546454 0.546454 0. ]] ['一个', '优美', '优越', '位置', '北太天元', '地理', '小区', '房价', '物业', '服务', '很好', '环境', '的', '较高', '高端'] ``` 可以看到,输出结果是一个5行31列的矩阵,每行代表一个文本的tf-idf值,每列代表一个单词,对应的tf-idf值表示该单词在该文本中的重要程度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清水折木

谢谢前辈的鼓励,我会继续加油的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值