7.1 在区间[0,10]上等间距取1000个点Xi(i为下标,i=1,2,3,...,1000),并计算在这些点Xi处函数g(x)=((3x^2+4x+6)sinx)/(x^2+8x+6)的函数值yi(i为下标),利用观测点(Xi,Yi)(i=1,2,3,...,1000),求三次样条插值函数h(x),并求积分g(x)从0到10和h(x)从0到10

import numpy as np
import scipy.interpolate as spi
import scipy.integrate as spi_integrate

def g(x):
return ((3x**2 + 4x + 6) * np.sin(x)) / (x**2 + 8*x + 6)

x_values = np.linspace(0, 10, 1000)

y_values = g(x_values)

spline = spi.CubicSpline(x_values, y_values)

def h(x):
return spline(x)

integral_g, _ = spi_integrate.quad(g, 0, 10)

x_fine = np.linspace(0, 10, 10000)
y_fine = h(x_fine)
integral_h = np.trapz(y_fine, x_fine)

print(f"积分 g(x) 从 0 到 10 的结果: {integral_g}")
print(f"积分 h(x) 从 0 到 10 的结果: {integral_h}")

print("学号后四位:3004")

posted on 2024-10-29 14:27  黄元元  阅读(138)  评论(0)    收藏  举报