MATLAB符号运算问题运行下面:syms a b x X Y>> k=sym('3');>> z=sym('c*sqrt(d)+y*sin(t)');>> EXPR=a*z*X+(b*x^2+k)*Y;>> symvar(EXPR)得到:ans =[ X,Y,a,b,c,d,t,x,y]这是书上的一个例子.但有一点比较疑惑:符号运算不是都
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/18 17:13:34
MATLAB符号运算问题运行下面:syms a b x X Y>> k=sym('3');>> z=sym('c*sqrt(d)+y*sin(t)');>> EXPR=a*z*X+(b*x^2+k)*Y;>> symvar(EXPR)得到:ans =[ X,Y,a,b,c,d,t,x,y]这是书上的一个例子.但有一点比较疑惑:符号运算不是都
MATLAB符号运算问题
运行下面:syms a b x X Y
>> k=sym('3');
>> z=sym('c*sqrt(d)+y*sin(t)');
>> EXPR=a*z*X+(b*x^2+k)*Y;
>> symvar(EXPR)
得到:ans =
[ X,Y,a,b,c,d,t,x,y]
这是书上的一个例子.但有一点比较疑惑:符号运算不是都要先定义符号变量吗?这个例子没有定义c,d,t,但运算还是可以,而没有提示说未定义c,d,t三个变量.
MATLAB符号运算问题运行下面:syms a b x X Y>> k=sym('3');>> z=sym('c*sqrt(d)+y*sin(t)');>> EXPR=a*z*X+(b*x^2+k)*Y;>> symvar(EXPR)得到:ans =[ X,Y,a,b,c,d,t,x,y]这是书上的一个例子.但有一点比较疑惑:符号运算不是都
经过测试,我发现你运行完程序后,workspace中是没有c,d,t的.因此z=sym('c*sqrt(d)+y*sin(t)');这一句中产生的c,d,t只在用到z时才起作用.即EXPR=a*z*X+(b*x^2+k)*Y;这一句通过z引出了c,d,t,且matlab认为c,d,t比z更为基础,因此ans中只有c,d,t而没有z.
一言以蔽之,c,d,t这种定义形式是局部的,z的赋值形式使其成为中间变量.
你运行完程序后输入ss=c会出错,找不到c,因为c不在全局的变量堆栈中,而运行findsym(z)会找到c,因为c在z的局部变量堆栈中.