MENU

Matlab—方程式求根

November 22, 2018 • Read: 398 • matlab

symbolic variable

给一个方程式$y = x^2-2x-8$,要求y=0时x的值

定义一个变量为符号变量的格式为:syms xx = sym('x')

定义符号变量其实有很大的作用,我们不需要给她一个实际的数值,只需要声明它表示一个符号即可,我们之前讲了diff 函数,这里拓展一下,配合符号变量求一个函数的微分或者偏微分

$$ f(x) = \frac{e^{x^2}}{x^3 - x + 3} , \frac{d(x)}{d(y)} = ? \\ g(x) = \frac{x^2+xy-1}{y^3+x+3} , \frac{\partial f}{\partial x} = ? \\ $$

syms x
y - exp(x^2) / (x^3-x+3)
yprime = diff(y)
syms x y
z = (x^2+x*y-1)/(y^3+x+3)
zprime = diff(z)

求解积分

求解积分的函数是int

syms x
y = x^2 * exp(x);
z = int(y)

积分后面有时还会跟一个常数,一般条件都会给当 z(x)=c, 假设这里给定条件 z(0)=0, 应该如何求解呢?需要用到一个函数subs,其调用格式为subs(z,x,c),他表达的含义是函数 z 中的符号变量被 c 替代

syms x
y = x^2 * exp(x);
z = int(y)
z = z - subs(z,x,0);

solve()

给出方程,要求其中某一变量在另外变量确定的条件下的值,就需要用solve()函数,其调用格式为:solve(eq,var),eq 代表一个符号表达式或者字符串,var 代表变量名称

syms x
y = 1 + x;
ans = solve(y == 0,x)

slove()还可以用来求解方程组

syms x y;
eq1 = x - 2 * y - 5;
eq2 = x + y - 6;
[a,b] = solve(eq1,eq2,x,y)

代数方程也可以用slove()函数求解

syms x a b;
y = a * x^2 - b;
ans = slove(y==0,x)

用 a 和 b 来表示 x,就只需要在 solve 的第二个参数里写上 x,反过来,想用其他的变量来表示某个变量,只需要把这个变量写在 solve 的第二个参数里即可

最后编辑于: November 25, 2018
Archives Tip
QR Code for this page
Tipping QR Code