SageMath - 预合成向量值函数
SageMath - Precomposing a vector-valued function
给定一个从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 是多值的。
原始代码的以下变体完全符合我的要求
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)
门票:
给定一个从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 是多值的。
原始代码的以下变体完全符合我的要求
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)
门票: