龙贝格求积公式

利用龙贝格法求f(x)=x^3-2x*x+7x-5的积分值

2019.4.17

# -*- coding: utf-8 -*-
"""
Created on Wed Apr 17 19:29:54 2019

@author: xh216
"""
import numpy as np
a=1
b=3
N=800

R=[0.038271604938272,
   0.180599647266314,
   0.062081128747795,
   0.180599647266314,
   0.076895943562610,
   0.180599647266314,
   0.062081128747795,
   0.180599647266314,
   0.038271604938272]   #龙贝格系数
R=np.transpose(R)
K=N/8   #分8个小区间
Nk=N/K
aa=[]
tt=[]

#tt=[(i/Nk) for i in range(Nk+1)] 步长必须为整数
for i in range(8+1):
    tt.append(i/Nk)
for i in range(100+1):
    aa.append(a+i*(b-a)/K) 
x=[]
w=[]
x0=[]
tt=np.array(tt)
for k in range(100):
    x0=aa[k]+(aa[k+1]-aa[k])/2*(tt+1)
    x.extend(x0)
    w0=(aa[k+1]-aa[k])*R
    #w=[w,w0]
    w.extend(w0)

#print(x)
def f(x):
    N=len(x)
    y=np.zeros(900)
    for i in range(N):
        y[i]=x[i]*x[i]*x[i]-2*x[i]*x[i]+7*x[i]-5
    return y
y=f(x)
w=np.transpose(w)
I=np.matmul(y,w)
error=abs(I-20-2/3)
print(error)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值