15.1 symbolic variable
我们以一个例子开头,有一个方程式:y=x^2-2x-8,我们要求y=0时,x的值。首先我们试着把y输入到matlab里去看看
图15-1 示例1
我们发现结果并不对,因为没有定义x,那x应该怎么定义呢?我们要求的是x,x在这里只是一个符号而已,所以我们就要用到符号变量syms
定义一个变量为符号变量的格式为:syms x或x=sym(‘x’)
讲到这里我们发现定义为符号变量其实有很大的作用,我们不需要给她一个实际的数值,只需要声明它表示一个符号即可,我们上一章节讲了diff函数,这里拓展一下,配合符号变量求一个函数的微分或者偏微分
图15-2 示例2
图15-3 求解微分
图15-4 求解偏微分
利用symbolic variable求解微分我们讲完了,下面我们学习如何利用syms求解积分。上一章我们也讲了求解积分的函数是int,我们不妨试一下
图15-5 求解积分1
到这一步还没结束,因为我们积分后面还会跟一个常数,一般条件都会给当z(x)=c,假设我们这里给定条件z(0)=0,应该如何求解呢?这里我们需要用到一个函数subs,其调用格式为subs(z,x,c),他表达的含义是函数z中的符号变量被c替代,那么下面我们就来试试添加条件以后,求出来的积分是什么样的
图15-6 求解积分2
15.2 solve()
上面我们已经讲了如何定义一个symbolic variable,下面我们就解决一个例子y=x*sin(x)-x=0,要解决这个方程,我们首先要用到一个函数solve,其调用格式为:solve(eq,var),其中,eq代表一个符号表达式或者字符串,var代表变量名称
示例:
图15-7 solve函数
刚才我们做的是一个方程式求解,那如果我有两个甚至多个方程组要求解,应该怎么做呢,其实还是用到solve函数,下面给出示例
实例:
图15-8 求解方程组
看完了方程组的求解,我们再想想,还有什么是我们学过的方程,代数方程也可以用solve函数求解
示例:
图15-9 代数方程求解
我们要用a和b来表示x,就只需要在solve的第二个参数里写上x,反过来,想用其他的变量来表示某个变量,只需要把这个变量写在solve的第二个参数里即可