微分

https://zh.d2l.ai/chapter_preliminaries/calculus.html

Here are my answers:

1.plot(x, [x**3-1/x, 4*x-4], ‘x’, ‘f(x)’, legend=[‘f(x)’, ‘Tangent line (x=1)’])

2.[6x_1, 5e^(x_2)]

3.let y=f(x), Df(x) = x/y

4.similar to 2.4.11

3 Likes

4.similar to 2.4.11

where is the 2.4.11 ?

为什么可以给 plot 中的 Y 传两个参数([f(x), 2 * x - 3])呢?

1 Like
def set_figsize(figsize=(3.5, 2.5)):
    """Set the figure size for matplotlib."""
    use_svg_display()
    d2l.plt.rcParams['figure.figsize'] = figsize

上述函数里为何要写成 d2l.plt.rcParams 呢?而不是 plt.rcParams ?我看源码里写了 plt 的导入,那么添加前缀 d2l 是否多余?

原来是给 Y 传入一个列表… 不过 2 * x - 3 错了,应该是 6*x−4,
然后自己太菜了,发一个注释版的,希望帮到和我一样菜的~

if legend is None:
    legend = []

# set_figsize(figsize)
display.set_matplotlib_formats('svg')
d2l.plt.rcParams['figure.figsize'] = figsize # matplotlibrc动态配置

# 如果未传入axes的值则获取画布当前的axes(本例会默认创建)
axes = axes if axes else d2l.plt.gca()

# 如果 `X` 有一个轴,输出True
def has_one_axis(X):
    return (hasattr(X, "ndim") and X.ndim == 1 or # X有ndim属性且其值为1
            isinstance(X, list) and not hasattr(X[0], "__len__")) # X为列表且其首个元素没有"__len__"属性

if has_one_axis(X):
    # 如果是一个轴,将其列表化
    X = [X]

if Y is None:
    # 如果没有传入Y参数,X为包含X长度个空列表的大列表,Y为X
    X, Y = [[]] * len(X), X

elif has_one_axis(Y):
    # 如果 Y 只有一个轴,将其列表化
    Y = [Y]

if len(X) != len(Y):
    # 如果X的长度和Y的长度不一样,X改为Y长度数个X
    X = X * len(Y)

axes.cla() # 清除axes

for x, y, fmt in zip(X, Y, fmts):
    if len(x): # 如果X的元素x不为空
        axes.plot(x, y, fmt)
    else:
        axes.plot(y, fmt)
12 Likes

有谁可以帮助解释一下第3道练习题的答案吗?我还是不能理解。多谢!

2 * x - 3是没错的。
f(x) = 3 * x ** 2 - 4 * x 在(1, -1)点的切线斜率 k = f '(1) = 2,该切线经过(1, -1),因此在该点的切线方程为y = 2 * x - 3

2 Likes

请问第三题应该怎么思考,f(x)不是x的L2范数吗?能像普通数学那样算吗,
Df(x) = 1/2||x||, 是这样吗?

第3题这样行吗?求解答

3 Likes

第三题我的想法是这样的,但感觉符号表示好像不太对?

10 Likes

梯度是一个向量,写成向量的形式就对了。。。。。。。。。。。。。。。。

2 Likes

6 Likes

form
我觉得这不是应该这么写?

5 Likes

總算有正確的人,簡化點寫 image
form 相同。

12 Likes

set_axes 函数中
if legend:
axes.legend(legend)
axes.grid()
是用来干嘛的啊

和上面的参数设置一样,不过不一定每个图都有图例,这个判断相当于if legend!=0,即:如果有legend参数输入的话,设置axes.legend为输入的参数(legend)。
axes.grid()是按照坐标轴的步进(step)画网格线(grid)。
在下面的画2x-3的时候就可以看到左上角的图例以及网格线。
我也是第一次看,希望可以帮到你。
//我没系统学过py,上面的判断是用的c语言的格式,抱歉。


请问这个求导为啥会有个转置

可以参考微分