解方程

定义符号

syms x

等同于

sym('x')

解多元一次方程组

解方程_第1张图片

最后的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

解方程_第2张图片

例如关闭多余帮助显示

options=optimset('Display','None');

你可能感兴趣的:(解方程)