我正在尝试计算以下函数的一阶和二阶导数,而pytest检查我的计算错误。
我试图更改h的值以通过pytest,但我无法通过。
def error_5_1_11(x):
def f(x): return x ** 3 - 0.3 * x ** 2 - 8.56 * x + 8.448
def f_1(f, x, h=10E-10):
return (f(x + h) - f(x - h)) / (2 * h)
def f_2(f, x, h=10E-4):
return (f(x + h) - 2 * f(x) + f(x - h)) / h ** 2
return f_1(f, x)-(-8.56), f_2(f, x)-(-0.6)
import pytest
from error import *
from numpy import allclose, array
from numpy import allclose
def test_error():
(a, b) = error_5_1_11(0)
assert(abs(a) < 10E-13 and abs(b) < 10E-14)
为了通过以下pytest,我需要进行哪些修改,谢谢。
最佳答案
一个简单的解决方法是在主函数上添加关键字参数。
def error_5_1_11(x, h1 = 10E-10, h2=10E-4):
def f(x):
return x ** 3 - 0.3 * x ** 2 - 8.56 * x + 8.448
def f_1(f, x, h=h1):
return (f(x + h) - f(x - h)) / (2 * h)
def f_2(f, x, h=h2):
return (f(x + h) - 2 * f(x) + f(x - h)) / h ** 2
return f_1(f, x)-(-8.56), f_2(f, x)-(-0.6)
import pytest
from error import *
from numpy import allclose, array
def test_error():
(a, b) = error_5_1_11(0, h1=10E-13, h2=10E-14)
assert all(abs(a) < 10E-13 and abs(b) < 10E-14)
关于python - 如何通过以下pytest,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58773589/