如何使用 Scipy 整合辛普森一家的规则来绘制一维图形
How to integrate Simpsons rule using Scipy to plot a 1D graph
我需要一些帮助,我有一项任务是使用辛普森规则对函数的集成进行编码。我需要使用内置的 scipy integratesimps 函数来绘制一维图形。我只是不知道从哪里开始。我想我必须为对应于每个 x 值的函数获得每个 y 值的 list/array:例如
如果我的函数是 x^2
然后什么时候
x 为 0 y 为 0,
x 为 1 y 为 1,
x 是 2 y 是 4,
等等直到一个巨大的极限...
然后使用 integrate.simps(y,x) 其中 y 是如上所示的所有 y 值,x 是所有对应的 x 值。
但是,我根本无法让它工作...有没有人有任何使用 integrate.simps(y,x) 绘制 x^2 函数的图表示例?
这是我目前得到的:
import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
x = np.linspace(-10,10,N)
N = 100
yarray = []
def f(x):
return x**2
for i in x :
y = f(i)
yarray.append(y)
print(yarray)
E = integrate.simps(yarray,x)
print(E)
plt.plot(x,E)
基本上,您需要计算 x 的每个范围的整数值,从 [-10,-10] 到 [-10,10]
此示例代码绘制了
import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
def f(x):
return x**2
N = 100
x = np.linspace(-10,10,N)
integrals = []
x_range = []
y_range = []
for i in x:
x_range.append(i)
y_range.append(f(i))
integral = integrate.simps(y_range, x_range)
integrals.append(integral)
plt.plot(x, integrals)
plt.show()
总结一下
import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
def integrals(f, xs):
x_range = []
y_range = []
results = []
for x in xs:
x_range.append(x)
y_range.append(f(x))
integral = integrate.simps(y_range, x_range)
results.append(integral)
return results
def f(x, b):
return (x-b)**2
xs = np.linspace(-10, 10, 100)
plt.plot(xs, integrals(lambda x: f(x, 0), xs), label='b=0')
plt.plot(xs, integrals(lambda x: f(x, 2), xs), label='b=2')
plt.plot(xs, integrals(lambda x: f(x, 4), xs), label='b=4')
plt.title('$y(x) = \int_{-10}^{x}(t-b)^2dt$')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()
你得到
我需要一些帮助,我有一项任务是使用辛普森规则对函数的集成进行编码。我需要使用内置的 scipy integratesimps 函数来绘制一维图形。我只是不知道从哪里开始。我想我必须为对应于每个 x 值的函数获得每个 y 值的 list/array:例如
如果我的函数是 x^2 然后什么时候 x 为 0 y 为 0, x 为 1 y 为 1, x 是 2 y 是 4, 等等直到一个巨大的极限...
然后使用 integrate.simps(y,x) 其中 y 是如上所示的所有 y 值,x 是所有对应的 x 值。
但是,我根本无法让它工作...有没有人有任何使用 integrate.simps(y,x) 绘制 x^2 函数的图表示例?
这是我目前得到的:
import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
x = np.linspace(-10,10,N)
N = 100
yarray = []
def f(x):
return x**2
for i in x :
y = f(i)
yarray.append(y)
print(yarray)
E = integrate.simps(yarray,x)
print(E)
plt.plot(x,E)
基本上,您需要计算 x 的每个范围的整数值,从 [-10,-10] 到 [-10,10]
此示例代码绘制了
import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
def f(x):
return x**2
N = 100
x = np.linspace(-10,10,N)
integrals = []
x_range = []
y_range = []
for i in x:
x_range.append(i)
y_range.append(f(i))
integral = integrate.simps(y_range, x_range)
integrals.append(integral)
plt.plot(x, integrals)
plt.show()
总结一下
import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
def integrals(f, xs):
x_range = []
y_range = []
results = []
for x in xs:
x_range.append(x)
y_range.append(f(x))
integral = integrate.simps(y_range, x_range)
results.append(integral)
return results
def f(x, b):
return (x-b)**2
xs = np.linspace(-10, 10, 100)
plt.plot(xs, integrals(lambda x: f(x, 0), xs), label='b=0')
plt.plot(xs, integrals(lambda x: f(x, 2), xs), label='b=2')
plt.plot(xs, integrals(lambda x: f(x, 4), xs), label='b=4')
plt.title('$y(x) = \int_{-10}^{x}(t-b)^2dt$')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()
你得到