You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于MATLAB syms的两个技术问题:表达式展开与导数定义

MATLAB符号运算问题解决方案

问题1:展开向量内积平方的表达式

你的代码中f = (y-z*x).'*(y-z*x)是向量内积的平方,本质是标量表达式,直接用expand即可展开,若需要按变量z整理可结合collect,示例代码:

syms x y [5,1] matrix;
syms z;
f = (y-z*x).'*(y-z*x);

% 展开完整表达式
f_expanded = expand(f);
% 按z的幂次整理(更直观)
f_collected = collect(f_expanded, z);

展开后会得到y.'*y - z*y.'*x - z*x.'*y + z^2*x.'*x,如果x、y是实向量,可再用simplify(f_expanded)合并同类项,得到y.'*y - 2*z*y.'*x + z^2*x.'*x(实向量转置内积满足x.'*y = y.'*x)。

问题2:构造关于t的导数函数并求值

无需手动复制表达式,可通过符号替换、求导后转为符号函数或数值函数句柄实现,示例代码:

syms x y w [5,1] matrix;
syms z t;
f = (y - z*x).'*(y - z*x);

% 构造phi(t) = f(x+tw, y, z)
phi(t) = subs(f, x, x + t*w);
% 对t求导
dphi_dt = diff(phi(t), t);

% 方式1:转为符号函数,直接代入t值计算
dphi_symfun = symfun(dphi_dt, t);
% 示例:计算t=0时的导数
t0_val = dphi_symfun(0);

% 方式2:转为MATLAB匿名函数,支持数值计算
dphi_handle = matlabFunction(dphi_dt, 'Vars', {t, x, y, z, w});
% 示例:代入数值向量/标量求值
x_num = rand(5,1); y_num = rand(5,1); w_num = rand(5,1); z_num = 2;
num_val = dphi_handle(0, x_num, y_num, z_num, w_num);

两种方式分别适用于符号推导和数值计算场景,避免手动复制表达式的繁琐操作。

内容的提问来源于stack exchange,提问作者kaienfr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:56:50