其实怎么说呢……这个函数你要是写不对函数其实是非常难用的。很多人幻想着用它来求解析解……只要你的函数复杂点,很多可能就GG了。
1.solve输入形式,一般用两种,要不你加'',要么你一个都不加。
例如:
syms x y %创建符号变量x,y
q='x+y=3'; %构建x和y的公式
w = solve(q,'x') %解函数q,关于x的解析解
这种写的话,y的值就没办法传入了,不过可以在后面加上
y=3; %给变量y赋值
subs(w); %求解析解w在新的变量更新后的解
不加''的写法
syms x y
z=3; %这里可以直接引入变量的值,而用引号创建的函数是无法直接引入的
q1=x+y+z==5;
q2=x+2*y==3;
solve([q1,q2],[x,y]); %这种情况下,是求满足等式组的变量的解析解(或直接为数值解)。
2.在solve中你要是想求解析解,最好不要用cosd,sind之类的,亲试,很难使用的,甚至是不能使用。
syms x y %创建符号变量x,y
q='sin(x)+cos(y)+sin(y)=2'; %构建x和y的公式
w = solve(q,'x') %解函数q,关于x的解析解
这个方程比较好解,但是如果遇到多个sin,cos的叠加和嵌套,求解会非常困难
这时求带有sin,cos的时候,也可以化成
AA,sqrt(1-AA^2);这样需要在最前面加上,assume(AA>-1&AA<1);这个就相当于规定了AA在(-1,1)范围内。
syms BB AA %创建符号变量,用BB代替sinx,用AA代替cos(y),用sqrt(1-AA^2)代替sin(y)
assume(AA>-1&AA<1);
assume(BB>-1&BB<1);
q='BB+AA+sqrt(1-AA^2)=2'; %构建x和y的公式
w = solve(q,'BB') %解函数q,关于x的解析解
3.求解析解的时候一定要检查清楚到底有没有解,这个很关键。要不你自己写错了公式还怪matlab解不出来就尴尬了。