在定义函数的某些方面(如求导或绘图)可能会造成困惑。在本节中,我们试图解决一些相关问题。
1.如“函数,缩进和计数”一节所述,定义一个函数。这样的函数可以进行绘图,但是无法求导或者积分。
代码: 全选
sage: def f(z): return z^2
sage: type(f)
<type 'function'>
sage: f(3)
9
sage: plot(f, 0, 2)
代码: 全选
sage: var('z') # 将z定义为变量
z
sage: f(z)
z^2
sage: plot(f(z), 0, 2)
2.定义“可调用符号表达式”。其可被绘图输出,求导和积分。
代码: 全选
sage: g(x) = x^2
sage: g #g将x转为x^2
x |--> x^2
sage: g(3)
9
sage: Dg = g.derivative(); Dg
x |--> 2*x
sage: Dg(3)
6
sage: type(g)
<class 'sage.calculus.calculus.CallableSymbolicExpression'>
sage: plot(g, 0, 2)
代码: 全选
sage: type(g(x))
<class 'sage.calculus.calculus.SymbolicArithmetic'>
sage: g(x).derivative()
2*x
sage: plot(g(x), 0, 2)
代码: 全选
sage: type(sin)
<class 'sage.calculus.calculus.Function_sin'>
sage: plot(sin, 0, 2)
sage: type(sin(x))
<class 'sage.calculus.calculus.SymbolicComposition'>
sage: plot(sin(x), 0, 2)
代码: 全选
sage: f = sin
sage: f.derivative()
0
代码: 全选
sage: S(x) = sin(x)
sage: S.derivative()
x |--> cos(x)
4.意外结果。
代码: 全选
sage: def h(x):
... if x<2:
... return 0
... else:
... return x-2
代码: 全选
sage: type(x<2)
<class 'sage.calculus.equations.SymbolicEquation'>
解决办法:不要用plot(h(x), 0, 4);用
代码: 全选
sage: plot(h, 0, 4)
代码: 全选
sage: f = x
sage: g = f.derivative()
sage: g
1
代码: 全选
sage: type(f)
<class 'sage.calculus.calculus.SymbolicVariable'>
sage: type(g)
<class 'sage.calculus.calculus.SymbolicConstant'>
解决办法:有几种办法。
-将最开始的f定义为一个符号表达式。
代码: 全选
sage: f(x) = x # 而不是“f = x”
sage: g = f.derivative()
sage: g
x |--> 1
sage: g(3)
1
sage: type(g)
<class 'sage.calculus.calculus.CallableSymbolicExpression'>
代码: 全选
sage: f = x
sage: g(x) = f.derivative() # i而不是 “g = f.derivative()”
sage: g
x |--> 1
sage: g(3)
1
sage: type(g)
<class 'sage.calculus.calculus.CallableSymbolicExpression'>
代码: 全选
sage: f = x
sage: g = f.derivative()
sage: g
1
sage: g(x=3) # 而不是“g(3)”
1
代码: 全选
sage: f(x) = x
sage: g = f.derivative()
sage: g.variables() # g中的变量
()
sage: g.arguments() #可传入g的参数
(x,)
sage: f = x
sage: h = f.derivative()
sage: h.variables()
()
sage: h.arguments()
()