2026a

# log2


符号输入的以 2 为底的对数

函数库: TySymbolicMath

# 语法

log2(X)

log2(X, nargout)

# 说明

Y = log2(X) 返回 X 的以 2 为底的对数, 满足 。此时 X 不能是非负数,也不能是数组。示例

Y = log2(X, Val(1)) 返回 X 的以 2 为底的对数, 满足 。此时 X 既可以是非负数,也可以是数组。示例

F, E = log2(X, Val(2)) 返回尾数 F 和 指数 E, 满足 , 。此时 X 既可以是非负数,也可以是数组, 当 X 为零时,F 和 E 都为零。示例

nargout 只能为 Val(1) 或 Val(2)。当 nargout 为 Val(1) 时,返回一个参数,当 nargout 为 Val(2) 时,返回两个参数。

# 示例

计算以 2 为底的对数

计算符号矩阵的每一元素的以 2 为底的对数。

using TySymbolicMath
using TyMath
@variables x
M = x*hilb(2)
log2.(M)
2×2 Matrix{Num}:
log2(x)      log2(0.5x)
log2(0.5x)  log2(0.333333x)
求符号表达式微分

求下列符号表达式微分:

using TySymbolicMath
@variables x
D = Differential(x)
expand_derivatives(D(log2(x^3)))
4.32808512266689 / x
绘制以 2 为底的对数函数

在区间 0 到 100 上绘制以 2 为底的对数函数图。

using TySymbolicMath
using TyPlot
@variables x
flog2 = x-> log2(x)
fplot(flog2,[0 100])
grid("on")
求符号输入以 2 为底的对数

在指定输出参数个数的情况下,求符号输入以 2 为底的对数。

using TySymbolicMath
y1 = log2(Num(4^(1/3)))
y2 = log2(Num(4^(1/3)), Val(1))
y1 = 0.6666666666666665

y2 = 0.6666666666666665

当输入为符号负数时

y = log2(Num(-3), Val(1))
y = 1.5849625007211563 + 4.532360141827193im

而此时 log2(Num(-3) 会报错。

当输入为符号表达式时

@variables x
ySym = log2(x^(1 / 3), Val(1))
ySym = 1.4426950408889634log(x^0.3333333333333333)

使用 substitute 函数将符号变量 x 替换为数字。

yVal = substitute(ySym, Dict(x => 4))
yVal = 0.6666666666666665
求以 2 为底的对数的尾数和指数

求输入 X 的以 2 为底的对数的尾数和指数。尾数 F 和指数 E 满足关系式

using TySymbolicMath
@variables a
X = [1 0.5 * 2^a 5 / 7]
F, E = log2(X, Val(2))
F = 1×3 Matrix{Num}:
  1//2  0.25(2^(a - floor(-1.0 + a)))  0.714286

E = 1×3 Matrix{Num}:
  1  1 + floor(-1.0 + a)  0

# 输入参数

X - 输入
符号数 | 符号变量 | 符号表达式 | 符号函数 | 符号数组

输入,指定为符号数,符号变量,符号表达式,符号函数,符号数组。当指定输出参数个数时,即 nargout 为 Val(1) 或 Val(2) 时,X 才可以是负数或数组。

数据类型: Num

# 输出参数

Y - 以 2 为底的对数值
符号数 | 符号表达式 | 符号数组

以 2 为底的对数值,指定为和 X 大小相同的符号数、符号表达式、符号数组。

数据类型: Num

F - 尾数值
符号数 | 符号表达式 | 符号数组

尾数值,指定为和 X 大小相同的符号数、符号表达式、符号数组。F 和 E 中的值满足

数据类型: Num

E - 指数值
符号数 | 符号表达式 | 符号数组

指数值,指定为和 X 大小相同的符号数、符号表达式、符号数组。F 和 E 中的值满足

数据类型: Num

# 另请参阅

log | log10 | exp | expm1