定义符号
syms x
等同于
sym('x')
解多元一次方程组
最后的
A
变量是一个struct,通过A.x
查看x的值,X.y
查看y的值
符号化
解方程
matlab自动认未知数,按26各英文字母排列,以距离x的远近定义,离x越近的,定为未知数。
例如解这个方程
可以用(注意在新版本matlab中,solve中的方程式不加引号)
syms x a b
solve(a*x^2-b)
结果(自动按照x为未知数)
ans =
b^(1/2)/a^(1/2)
-b^(1/2)/a^(1/2)
若要把b当作未知数,可以
syms x a b
solve(a*x^2-b,b)
求导
例如求这个函数的导数
syms x
y = 4*x^5;
yprime=diff(y)
结果
yprime =
20*x^4
积分
例如求
syms x
y = x^2*exp(x);
z=int(y)
求解出
z =
exp(x)*(x^2 - 2*x + 2)
符号数值代入
我们如果希望把此处的x的值代入z中,可以用subs()
函数
subs(z,x,0)
此处相当于求z(x=0)的值。
这样我们就能得到刚才积分的常数C了。
最终脚本
syms x
y = x^2*exp(x);
z=int(y);
z=z-subs(z,x,0)
注意,此处用int(y)
求不定积分。如果要求定积分,可以用int(y,0,10)
类似的语句定义上下限。
fsolve
Function Handle
matlab中,@
表示Function Handle,即函数指针。
我们可以在函数调用的xy_plot(@sin,1:pi/10:pi)
,这里使用@
相当于传入函数指针。
求解
例如求解
可以用
fsolve(function_handle,init_guss_value)
求解脚本:
f2 = @(x) (1.2*x+0.3+x*sin(x));
fsolve(f2,0)
fzero
类似fsolve
,都是求解为0时的解。但是fzero
不能求解那些不穿过x轴,(即使和x轴相切)的方程。
例如
f =@(x) x.^2;
fzero(f,-0.1)
fsolve(f,0.1)
这里,fzero求不出解,而fsolve可以。
(单元非线性方程可用fzero,多元非线性方程可用fsolve)
optimset设置进阶选项
可以参考
optimset官方文档
optimset
例如关闭多余帮助显示
options=optimset('Display','None');