MATLAB subs()函数的用法(附带实例)
符号运算的操作与算术运算基本一致,包括符号对象的加、减、乘、除、乘方和开方等操作。除此之外,MATLAB 还提供了专门用于符号运算的函数,以便进行更复杂的符号运算。
在 MATLAB 中,利用 subs() 函数可以在符号表达式中进行变量代换,即将符号表达式中的某个符号变量替换为其他符号、数值或表达式。这在求解方程、进行符号推导或简化时非常有用。
subs() 函数的调用格式如下:
1) 替换符号变量和函数:
2) 替换符号矩阵和函数:
【实例】已知 f=axn+by+k,试对其进行符号变量替换:a=sint、b=lnw、k=ce-dt;符号常量替换:n=5、k=p,及数值数组替换:k=[1234]。在命令行窗口中输入以下语句,并查看输出结果:
【实例 2】已知 f=asinx+k,试求当 a=1:1:2 与 x = 0:π/6:π/3 时函数 f 的值。在编辑器中编写以下程序并运行:
程序运行第一组(当 a=1 时)后的结果如下:
程序运行第二组(当 a=2 时)后的结果如下:
在 MATLAB 中,利用 subs() 函数可以在符号表达式中进行变量代换,即将符号表达式中的某个符号变量替换为其他符号、数值或表达式。这在求解方程、进行符号推导或简化时非常有用。
subs() 函数的调用格式如下:
1) 替换符号变量和函数:
snew = subs(s,old,new) % 将 s 中出现的所有 old 替换为 new,并计算 s snew = subs(s,new) % 将 s 中所有默认的符号变量替换为 new,并计算 s snew = subs(s) % 将 s 中的符号变量替换为工作区中分配的值,并计算 sold 一定是符号表达式 s 中的符号变量,而 new 可以是符号变量、符号常量、双精度数值与数值数组等。
2) 替换符号矩阵和函数:
sMnew = subs(sM,oldM,newM) % 将 sM 中出现的所有 oldM 替换为 newM,并计算 sM sMnew = subs(sM,newM) % 将 sM 中所有默认的符号矩阵替换为 newM,并计算 sM sMnew = subs(sM) % 将 sM 中的符号矩阵替换为工作区中分配的值,并计算 sM
【实例】已知 f=axn+by+k,试对其进行符号变量替换:a=sint、b=lnw、k=ce-dt;符号常量替换:n=5、k=p,及数值数组替换:k=[1234]。在命令行窗口中输入以下语句,并查看输出结果:
>> clear >> syms a b c d k n x y w t >> f = a*x^n + b*y + k f = k + a*x^n + b*y % 符号变量替换:a = sin t, b = ln w >> f1 = subs(f,[a b],[sin(t) log(w)]) f1 = k + x^n*sin(t) + y*log(w) % 符号常量替换:n = 5, k = π >> f2 = subs(f,[a b k],[sin(t) log(w) c*exp(-d*t)]) f2 = c*exp(-d*t) + x^n*sin(t) + y*log(w) >> f3 = subs(f,[n k],[5 pi]) f3 = a*x^5 + pi + b*y % 数值数组替换:k = [1 2 3 4] >> f4 = subs(f1,k,1:4) f4 = [ x^n*sin(t) + y*log(w) + 1, x^n*sin(t) + y*log(w) + 2, ... x^n*sin(t) + y*log(w) + 3, x^n*sin(t) + y*log(w) + 4 ]若要对符号表达式进行两个变量的数值数组替换,可以用循环程序来实现,而不必使用函数 subs,这样既简单又明了且高效。
【实例 2】已知 f=asinx+k,试求当 a=1:1:2 与 x = 0:π/6:π/3 时函数 f 的值。在编辑器中编写以下程序并运行:
syms a k; f = a*sin(x) + k; for a = 1:2 for x = 0:pi/6:pi/3 f1 = a*sin(x) + k end end
程序运行第一组(当 a=1 时)后的结果如下:
f1 = k f1 = k + 1/2 f1 = k + 3^(1/2)/2
程序运行第二组(当 a=2 时)后的结果如下:
f1 = k f1 = k + 1 f1 = k + 3^(1/2)