我试图解决以下问题。我试图先用0.1设置步长h来求解它。不过,我需要在代码中更改这一点,并使用for循环遍历值0,1,…,20。我有点困惑如何解决这个问题,但我希望能得到一些帮助来修复我目前为止生成的代码。谢谢!在
import numpy as np
from math import sin
def derivative(func , x, h ):
for h in range(20):
return (func(x+h)-func(x))/h
def f(x):
return sin(x)
print(derivative(f, pi/4))
给出输出
^{pr2}$我的编辑:
def derivative(func , x, h ):
for h in range(20):
return (func(x+h)-func(x))/h
这个练习要求您使用可变精度计算导数(用变量
h
表示),并将其与函数的精确/实导数进行比较。在设
h
=10^-j,j从0到20变化。这意味着h将(离散地)从10⁻变为10⁻。您可以使用for
-循环和range(...)
函数。然后将其传递给derivative
函数(可以为h
的值指定第三个参数)接下来,您需要将其与精确导数进行比较。函数
f(x) = sin(x)
有一个已知的(精确的)导数cos(x)
。在数学符号中,d(sin x)/dx = cos x
。这意味着对于任何x
,cos(x)
都会给出sin
的精确导数。在所以您需要将
^{pr2}$derivative(...)
函数的结果与cos(x)
的值进行比较。这会让你与众不同。然后,可以使用基本的Python函数abs(x)
来获得差值的绝对值,这将得到绝对差值,这是所需的结果。对从0到20的每个j
执行此操作,并将结果存储在某个位置,即数组或dict中然后,可以使用pyplot的
loglog
函数在图上绘制这些结果,将range(...)
结果作为X传递给Y,将包含结果的数组作为Y传递。在相关问题 更多 >
编程相关推荐