函数性质分析(functions/functions.py)
functions/functions.py 提供函数值域、单调区间、奇偶性、周期、最值等分析。所有函数接收字符串形式的函数 f、自变量 s、定义域 d,fs 为函数字典。
Note
下列函数中 is_increase、arg 为保留/占位参数:传入与否不影响 frange/monotonic_interval 的解析结果;odd_or_even/period 当前以 arg=None 调用。
frange — 值域
作用:求函数在给定定义域上的值域。
def frange(f, s, d, is_increase, fs):
...
| 参数 | 类型 | 含义 |
|---|---|---|
f |
str |
函数表达式,如 "x**2" |
s |
str |
自变量符号,如 "x" |
d |
str |
定义域,SymPy Interval 形式字符串,如 "Interval(0, 3)" |
is_increase |
bool |
占位参数(未使用) |
fs |
dict |
函数字典 |
返回:值域,SymPy Set(由 function_range 计算)。
monotonic_interval — 单调区间
作用:求函数的单调递增或递减区间。
def monotonic_interval(f, s, d, is_increase, fs):
...
| 参数 | 类型 | 含义 |
|---|---|---|
f |
str |
函数表达式 |
s |
str |
自变量符号 |
d |
str |
定义域(Interval 形式) |
is_increase |
bool |
True 求递增区间,False 求递减区间 |
fs |
dict |
函数字典 |
返回:单调区间,SymPy Set(区间)。
odd_or_even — 奇偶性
作用:判断函数的奇偶性。
def odd_or_even(f, s, d, arg, fs):
...
| 参数 | 类型 | 含义 |
|---|---|---|
f |
str |
函数表达式 |
s |
str |
自变量符号 |
d |
str |
定义域 |
arg |
占位 | 不使用(传 None) |
fs |
dict |
函数字典 |
返回:字符串 "既奇又偶函数" / "奇函数" / "偶函数" / "非奇非偶函数"。
period — 周期
作用:求函数的周期。
def period(f, s, d, arg, fs):
...
| 参数 | 类型 | 含义 |
|---|---|---|
f |
str |
函数表达式 |
s |
str |
自变量符号 |
d |
str |
定义域 |
arg |
占位 | 不使用(传 None) |
fs |
dict |
函数字典 |
返回:周期表达式;无周期时返回字符串 "该函数无周期"。
mvalues — 最值
作用:求函数在定义域上的最大值或最小值。
def mvalues(f, s, d, is_max, fs):
...
| 参数 | 类型 | 含义 |
|---|---|---|
f |
str |
函数表达式 |
s |
str |
自变量符号 |
d |
str |
定义域(Interval 形式) |
is_max |
bool |
True 求最大值,False 求最小值 |
fs |
dict |
函数字典 |
返回:最值表达式(SymPy maximum / minimum)。
get_function_attr — 统一入口
作用:按 attr 编号统一调用上述属性分析,供 UI 调色板使用。
def get_function_attr(f, s, d, attr, fs):
...
| 参数 | 类型 | 含义 |
|---|---|---|
f |
str |
函数表达式 |
s |
str |
自变量符号 |
d |
str |
定义域 |
attr |
int |
属性编号 0–7(见下表) |
fs |
dict |
函数字典 |
返回:attr 对应属性的结果。
attr 取值映射
| attr | 含义 | 调用 |
|---|---|---|
| 0 | 函数表达式与定义域 | (sympify(f), sympify(d)) |
| 1 | 值域 | frange |
| 2 | 单调递增区间 | monotonic_interval(is_increase=True) |
| 3 | 单调递减区间 | monotonic_interval(is_increase=False) |
| 4 | 奇偶性 | odd_or_even |
| 5 | 周期 | period |
| 6 | 最大值 | mvalues(is_max=True) |
| 7 | 最小值 | mvalues(is_max=False) |
Example
python
frange("x**2", "x", "Interval(0, 3)", True, {}) # -> Interval(0, 9)
odd_or_even("x**3", "x", "Interval(-oo, oo)", None, {}) # -> "奇函数"
get_function_attr("x**2", "x", "Interval(0, 3)", 1, {}) # -> 值域 Interval(0, 9)