专栏
标签
数模小白打卡第五天
主题活动
发布于 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科学计算环境
MWORKS体验官全国大学生数学建模竞赛

全部回答

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