|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
vpasolve(Symbolic Math Toolbox)最后再补充一个数值解法 vpasolve,vpasolve 是 R2012b 引进的函数,可以求解一元或多元函数零点。相比于 fzero 和 fsolve 来说,vpasolve 最大的一个优点就是不需要提供初值,并且能够自动搜索指定范围内的多个解。 ) k/ u, e" Y" l9 [1 W' I
3 e. Y* B* e9 F! E: I& r! N. R
vpasolve 调用形式:- S = vpasolve(eqn)
- S = vpasolve(eqn,var)
- S = vpasolve(eqn,var,init_guess)
- ___ = vpasolve(___,Name,Value)7 X3 }4 r5 J. E. U* x1 }
其中 eqn 是符号方程,var 为待求解变量,也可以不提供(第一种调用形式,默认求解变量由 symvar(eqn) 求得), init_guess 为搜索初值,Name,Value 为选项控制。- %例:对于多项式方程,vpasolve 能够给出所有解
-
- syms x
- vpasolve(4*x^4 + 3*x^3 + 2*x^2 + x + 5 == 0, x)
-
- ans =
-
- - 0.88011 - 0.76332i
- 0.50511 + 0.81599i
- 0.50511 - 0.81599i
- - 0.88011 + 0.76332i
! X( X" }0 S* D0 i4 S 对于非多项式方程,vpasolve 只能给出一个解:- syms x
- vpasolve(sin(x^2) == 1/2, x)
-
- ans =
-
- -226.946 ?* ]! D5 V8 l
这时可以提供搜索初值,来搜寻其它零点:- syms x
- vpasolve(sin(x^2) == 1/2, x,100)
-
- ans =
-
- 99.996
" i5 b& d3 K- d, L$ z7 z4 @" y 可以指定搜索范围,但不同于 solve,solve 指定求解范围是用 assume 函数,vpasolve 则是直接在输入参数中指定:- syms x
- vpasolve(x^8 - x^2 == 3, x, [-Inf Inf]) %实数范围内求解
9 m! o( N. k! R1 f) K1 Q. Z 最后,vpasolve 一个很强大的用法,将 ‘random’ 选项设置为 true 可以直接搜索指定范围内不同解:- syms x
- f = x-tan(x);
- for n = 1:3
- vpasolve(f,x,'random',true)
- end7 }" _: e& o( Z" B9 e
4 ^7 o4 ^# C' m5 L$ k
|
|