专栏
标签
使用符号数学的derivative与substitute后传值报错?
技术分享
发布于 2025-07-18 11:46:48
查看 1过去319天

因为经过函数 derivative 与 substitute 后的数据类型是符号类型,后续操作需要通过 value 取出来为数据类型。

示例代码如下:

using TySymbolicMath
using TyMath
using TyBase

@variables x
f = x^2 + 3 * x + 5

# 利用derivative函数对表达式求x的一阶导数,c = 3+2x
c = derivative(f, x)
a = 11;
speed = Array{Float64}(undef, a);
rho = randi(4, 1, 11);

for i = 1:11
     # 指定x值,对一阶导数进行计算
     Gx = substitute(c, x => rho[i] / 180 * pi)
     Gx = Gx + 3
     speed[i] = Gx
end

运行上述代码会出现报错信息:

ERROR: MethodError: no method matching Float64(::Num)

image.png

这里可以看到在代码中定义了变量 speed 为 Array {Float64} ,而变量 Gx 为符号类型的数据,因此导致报错。

通过函数 value 将变量取为数据类型,代码如下:

using TySymbolicMath
using TyMath
using TyBase

@variables x
f = x^2 + 3 * x + 5

# 利用derivative函数对表达式求x的一阶导数,c = 3+2x
c = derivative(f, x)
a = 11;
speed = Array{Float64}(undef, a);
rho = randi(4, 1, 11);

for i = 1:11
    # 指定x值,对一阶导数进行计算,并用函数value将数值取出
    Gx = value(substitute(c, x => rho[i] / 180 * pi))
    Gx = Gx + 3
   speed[i] = Gx
end

此时可以正常运行代码不报错。

所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境
科学计算

全部回答

暂无数据
暂无数据
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天