EDA365电子论坛网
标题:
MATLAB求解方程之fsolve(Optimization Toolbox)
[打印本页]
作者:
pulbieup
时间:
2020-12-24 10:55
标题:
MATLAB求解方程之fsolve(Optimization Toolbox)
fsolve 可以求解多元方程,用法和 fzero 类似。 fsolve 的常用形式:
x = fsolve(fun,x0)
[x,fval] = fsolve(fun,x0)
2 o) I/ r* [; {- \9 O5 K/ [
其中 fun 为函数句柄, x0 为搜索初值, fval 为求解误差。
%例:求解方程组 x+y = 1, x-11y = 5
eq = @(x)[x(1)+x(2)-1;x(1)-11*x(2)-5];
[sol,fval] = fsolve(eq,[1,1])
0 } h; [8 Y" t! Y
这里对于方程的的输入需要采用矩阵的形式,其中 x(1) 代表 x , x(2) 代表 y 。有时候变量较多时可能会容易混淆,这里提供另一种方法,用符号变量表达方程再利用 matlabFunction 转化为函数句柄:
syms x y
eq1 = x+y-1;
eq2 = x-11*y-5;
eq1 = matlabFunction(eq1); %将符号函数转化为函数句柄
eq2 = matlabFunction(eq2);
eq = @(x)[eq1(x(1),x(2)); eq2(x(1),x(2))];
[sol,fval] = fsolve(eq,[1,1])
& ]4 Q1 [2 D3 C3 v; x7 b) |
结果与之前相同,但不容易出错。求得的解以矩阵形式返回给 sol ,即 sol 的第一个值求解的是 x(1) ,sol 的第二个值求解的是 x(2) 。
0 c( T q- u& k* A" y
fsolve 要求求解的函数必须是连续的,而且成功求解时,fsolve 只能给出一组根。缺省情况下,trust-region dogleg 算法只能用于系统方程是方阵的情况,而 Levenberg-Marquardt 算法没有此限制。
0 H/ C( s3 s8 E+ r: n. p: J
新版本的 MATLAB 中关于此函数还有多个参数的形式,读者可以参考相关的 help。
+ T! ]: p' \& ]/ y o8 j2 P
7 D( A/ k/ b$ y3 Q( f, Q0 W
作者:
xiaogegepcb
时间:
2020-12-24 13:17
MATLAB求解方程之fsolve(Optimization Toolbox)
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2