数模小白打卡第五天
主题活动
发布于 2025-08-23 16:02:30
查看 6过去309天
使用TySymbolicMath.gradient计算梯度
using TySymbolicMath
@variables x y z
# 函数f的导数
f = 2*x*y*tan(x) + exp(3*x*z) + cos(y*z)
df_dx = derivative(f, x)
df_dy = derivative(f, y)
df_dz = derivative(f, z)
# 函数g的导数
g = (x + y + y*z) / sin(x*y)
dg_dx = derivative(g, x)
dg_dy = derivative(g, y)
dg_dz = derivative(g, z)
println("df/dx: ", df_dx)
println("df/dy: ", df_dy)
println("df/dz: ", df_dz)
println("dg/dx: ", dg_dx)
println("dg/dy: ", dg_dy)
println("dg/dz: ", dg_dz)
using TySymbolicMath
using TyBase
using LinearAlgebra
# 计算梯度
@variables x y
# 定义温度函数
T = 100 * exp(-x^2 - 2*y^2)
# 计算梯度(符号表达式)
grad_T = TySymbolicMath.gradient(T, [x, y])
# 定义代入点 (0.5, -0.5)
x0 = 0.5
y0 = -0.5
grad_val = map(g -> substitute(g, Dict(x => x0, y => y0)), grad_T)
grad_num = value.(grad_val)
println("梯度∇T在点(0.5, -0.5)处的值为:", grad_num)
#计算方向导数
v = [3, 4]
v_norm = norm(v)
u = v / v_norm
# 计算方向导数
directional_deriv = dot(grad_num, u)
println("沿方向v=(3,4)的方向导数为:", directional_deriv)
所属专栏:Julia语言
产品信息:Syslab科学计算环境