Here is an image that states the question I am working on.
到目前为止我所拥有的:
import numpy as np
import matplotlib.pyplot asplt
import math
def graph (formula):
x = np.arrange(-4,4,0.1)
y = formula(x)
plt.plot(x,y)
plt.show()
def my_formula(x):
return ((n**(n-.5))/(math.factorial(n-1)))*((1+x/(math.sqrt(n)))**(n-1))*
(math.e**(-n*(1+x/(math.sqrt(n)))))
n=1
graph(my_formula)
我无法弄清楚如何将x> -sqrt(n)约束包含在等式中。任何帮助都将非常感谢!!
- 这是一个甚至不是编程的课程,但我们还是要做这种事情,所以我真的不是那么棒
答案 0 :(得分:0)
x > sqrt(n)
约束限制了x值的范围,您可以在创建x数组时轻松执行此操作。
以下是一种方法(请参阅max
行和后续行),但我也将图表的xlim
设置为-4到4范围,以便轻松实现比较不同的n值:
import numpy as np
import matplotlib.pyplot as plt
from math import factorial, sqrt
def graph(formula, n):
xmin = max(-sqrt(n), -4) # set the lower x limit for the calculation
x = np.arange(xmin,4,0.1)
y = formula(x, n)
plt.plot(x,y)
plt.xlim(-4, 4) # set the graph limits to the full range
plt.show()
def my_formula(x, n):
z = 1 + x/sqrt(n)
a = n**(n-.5)/factorial(n-1)
b = z**(n-1)
c = np.exp(-n*z)
return a*b*c
n = 4
graph(my_formula, n)
此外,我在这里重写了一些代码,尽管这些代码主要是为了清晰起见。首先,我将n
作为变量传递,因为多个图表正在更改n
(如果您想将n
视为常量,请在导入后直接放置,以便人们可以找到它)。其次,我将数学函数导入全局命名空间,因为用代码编写的数学方程很复杂,没有命名空间的所有权重。第三,我把等式的三个术语分成了一小块。总的来说,可读性很重要。