%演示subs的各种置换方式
%产生符号函数
clear
syms a b x;
f = a*sin(x)+b
%符号表达式置换,得到新的符号表达式
f1 = subs(f,sin(x),'log(y)') %subs的第三输入量可以使“字符串”
class(f1) %为观察结果的类型而设
%单个变量被双精度数字置换,结果依然是符号对象
f2 = subs(f,a,3.11) %双精度数字3.11先被sym(3.11)处理后再代入
class(f2) %为观察结果的类型
%所有变量被数字(至少含一个符号数字)置换,结果依然是符号对象
f3 = subs(f,{a,b,x},{2,5,sym('pi/3')}) %注意胞元数组的用法
class(f3)
%所有变量被双精度数值置换,结果是双精度数字
format %为恢复对双精度数字显示的默认设置
format compact %为使在Motebook中显示紧凑
f4 = subs(f,{a,b,x},{2,5,pi/3}) %注意胞元数组的用法
class(f4)
%一个变量被双精度数组置换,得到符号数组
f5 = subs(f,x,0:pi/2:pi) %注意:该指令的理论结果应是[b,a+b,b]
class(f5)
%所有变量被双精度数(其中一个是数组)置换,得到双精度数组
t = 0:pi/10:2*pi;
f6 = subs(f,{a,b,x},{2,3,t}) %注意胞元数组的用法
plot(t,f6) %绘图
%通过两次置换获得双精度数组
k = (0.5:0.1:1)';
f6 = subs(subs(f,{a,b},{k,2}),x,t); %注意两次置换
size(f6) %观察f6数组大小
plot(t,f6) %绘图
运行结果
f =
b + a*sin(x)
错误使用 sym>convertChar (line 1448)
Character vectors and strings in the first argument can only specify a variable or number. To evaluate character vectors and strings
representing symbolic expressions, use 'str2sym'.
出错 sym>tomupad (line 1214)
S = convertChar(x);
出错 sym (line 211)
S.s = tomupad(x);
出错 sym/subs>normalize (line 211)
Y = {sym(Y)};
出错 sym/subs>mupadsubs (line 157)
[X2,Y2,symX,symY] = normalize(X,Y); %#ok
出错 sym/subs (line 145)
G = mupadsubs(F,X,Y);
出错 Li224 (line 7)
f1 = subs(f,sin(x),'log(y)') %subs的第三输入量可以使“字符串”