问题描述
给定一个从R到R ^ n的函数,我想通过预合成来定义一个新函数,例如,如下所示
alpha(x) = [e^x,e^(-x)]
beta(x) = alpha(-x+2)
但是,以此方式尝试这样做会引发错误 “无法将(e ^(-x + 2),e ^(x-2))转换为符号表达式”
现在类似但更简单的代码
alpha(x) = e^x
beta(x) = alpha(-x+2)
工作完美,因此问题出在阿尔法是多值这一事实上。
原始代码的以下变体完全符合我的要求
alpha(x) = [e^x,e^(-x)]
beta(x) = [alpha[0](-x+2),alpha[1](-x+2)]
但要求我假设alpha的长度,这是不希望的。以及解决该问题的明显方法
alpha(x) = [e^x,e^(-x)]
for i in range(0,len(alpha)):
beta[i](x) = alpha[i](x)
我的问题如下:
有什么办法可以进行这种预合成吗?特别是在不假设alpha长度的情况下。我控制如何定义函数alpha和beta,因此,如果有另一种定义它们的方式(例如使用lambda表示法或类似的方式)可以让我做到这一点,那也是可以接受的。但是请注意,我想在代码中的某些时候做以下等效的工作
... + beta.derivative(x).dot_product( ...
解决方法
按问题定义,alpha不是符号函数 返回向量,但是可调用函数的向量。
下面,我们描述定义Alpha和Beta的其他两种方法, 要么将alpha定义为符号环上的向量, 并通过替换定义beta,或定义alpha和 beta作为Python函数。
问题的原始方法:
sage: alpha(x) = [e^x,e^-x]
sage: alpha
x |--> (e^x,e^(-x))
sage: alpha.parent()
Vector space of dimension 2 over Callable function ring with argument x
在符号环上使用向量
sage: alpha = vector([e^x,e^-x])
sage: alpha
(e^x,e^(-x))
sage: alpha.parent()
Vector space of dimension 2 over Symbolic Ring
sage: beta = alpha.subs({x: -x + 2})
sage: beta
(e^(-x + 2),e^(x - 2))
使用Python函数
sage: def alpha(x):
....: return vector([e^x,e^-x])
....:
sage: def beta(x):
....: return alpha(-x + 2)
....:
sage: beta(x)
(e^(-x + 2),e^(x - 2))
一些相关资源。
查询:
问题:
- Ask Sage question 8066: Composite function
- Ask Sage question 24943: Define vector valued function of a vector of symbolic variables?
- Ask Sage question 43550: vector constants and vector functions
- Ask Sage question 9375: functions with vector inputs
- Ask Sage question 23758: Defining a function of vector variables
- Ask Sage question 36127: Plotting 2d vector fields – how to delay function evaluation
- Ask Sage question 10704: How to create a vector function (mapping)?
- Ask Sage question 8924: Basic vector functions in Sage
- Ask Sage question 30025: How can I define a function with quaternion argument,and other non-vector input
- Ask Sage question 47710: Vector valued function: unable to convert to symbolic expression
- Ask Sage question 36159: apply functions iteratively (modified re-post)
门票: