EDA365电子论坛网
标题:
MATLAB求解方程之vpasolve(Symbolic Math Toolbox)
[打印本页]
作者:
pulbieup
时间:
2020-12-31 18:06
标题:
MATLAB求解方程之vpasolve(Symbolic Math Toolbox)
vpasolve(Symbolic Math Toolbox)
最后再补充一个数值解法 vpasolve,vpasolve 是 R2012b 引进的函数,可以求解一元或多元函数零点。相比于 fzero 和 fsolve 来说,vpasolve 最大的一个优点就是不需要提供初值,并且能够自动搜索指定范围内的多个解。
3 Q# O% T& v. _3 t8 t- W! d
' [! ^. }) J9 Z0 S7 l
vpasolve 调用形式:
S = vpasolve(eqn)
S = vpasolve(eqn,var)
S = vpasolve(eqn,var,init_guess)
___ = vpasolve(___,Name,Value)
% H% W. F% K v$ D O) o
其中 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
! ]" j( k0 Y$ I
对于非多项式方程,vpasolve 只能给出一个解:
syms x
vpasolve(sin(x^2) == 1/2, x)
ans =
-226.94
( z6 k T! B' m7 T2 P2 T
这时可以提供搜索初值,来搜寻其它零点:
syms x
vpasolve(sin(x^2) == 1/2, x,100)
ans =
99.996
9 z5 J: Q- F+ Z. n; Y( I
可以指定搜索范围,但不同于 solve,solve 指定求解范围是用 assume 函数,vpasolve 则是直接在输入参数中指定:
syms x
vpasolve(x^8 - x^2 == 3, x, [-Inf Inf]) %实数范围内求解
3 z( ]( ?, z4 u- Q0 \0 J0 L
最后,vpasolve 一个很强大的用法,将 ‘random’ 选项设置为 true 可以直接搜索指定范围内不同解:
syms x
f = x-tan(x);
for n = 1:3
vpasolve(f,x,'random',true)
end
" D& |2 c7 R! }
3 ]' u+ t5 D% D$ N8 T5 T* @
作者:
NingW
时间:
2020-12-31 18:19
MATLAB求解方程之vpasolve(Symbolic Math Toolbox)
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2