MATLAB 符号表达式

定义符号变量

  • 定义符号表达式,首先我们应该创建符号变了,用 syms 声明,如:

syms x y
  • 这样就定义了两个符号变量 x、y

定义表达式,形式一

  • 最简单的定义函数的方式就是下面的这个形式:

y = x^2 + sin(x) + cos(x);
  • 那么问题来了,如果我要计算这个函数在 x = 2 时候的值就需要用下面的代码:

sol = subs(y, x, 2);
  • 这个 subs 函数是将旧符号用新符号进行替换。新符号可以是数字,就像上面一样,可以得到结果。

定义表达式,形式二

  • 另一种十分相近的形式如下:

syms x y
y(x) = x^2 + sin(x) + cos(x);
sol = y(2);
  • 如上的定义方式,可以直接得出函数值。

  • 在定义了一次 y(x) 之后,后面的函数即使不加 (x) 也可以,如下:

syms y x
y(x) = x^2 + sin(x) + cos(x);
y = diff(y, x, 2);
sol = y(5);
  • 即使一开始没有写 (x),但是后面也可以加上,如下:

% 其实可以不定义 y
syms x
y = x^2 + sin(x) + cos(x);
y(x) = diff(y, x, 2);
sol = y(5);
  • 在后面解微分方程的时候,我们要建立等式,这个时候在定义变量的时候就必须要加 (),如下:

syms y(x)
cond = y(0) == 1;
  • 如上,在解方程的时候,我们没有机会定义函数,要用到 y(0) ,所以定义的时候,必须定义成上面的形式。

  • 但是要注意,一旦定义了函数,就必须带 (x),下面代码会报错

% 以下代码报错
syms y(x)
y = x^2;
sol = y(5);

定义表达式,形式三

  • 还有一种定义方法,其实不是严格的符号表达式,但是形式上很像,交匿名函数。

y = @(x) x^2;
sol = y(5);
  • 如上,根本就没有定义符号变量,因为这是一个匿名函数,地位相当于 function 开头的函数文件。

  • x 是输入的变量,计算结果是输出的变量,所以上面的代码相当于:

sol = test(5);

function y = test(x)
	y = x^2;
end

本文章使用limfx的vsocde插件快速发布