matlab方程求解
来源:网络收集 点击: 时间:2024-05-07matlab是美国mathworks公司出的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
但由于其功能的强大,对于初学者显得有些困难,下面,为广大初学者介绍下matlab如何求解方程。
matlab方程求解有两种方法,符号求解和数值求解。
1.solve
通常在不确定方程是否有符号解的时候,推荐先使用solve进行尝试,因为solve相比于数值求解来说,它不需要提供初值,并且一般情况下能够得到方程的所有解。对于一些简单的超越方程,
solve还能够自动调用数值计算系统给出一个数值解。solve的调用形式:
S = solve(eqn1,eqn2,...,eqnM,var1,var2,...,varN)
= solve(eqn1,eqn2,...,eqnM,var1,var2,...,varN)
eq为符号表达式,var为指定的要求解的变量。如果不声明要求解的变量(第一和第三种形式),则matlab自动按默认变量进行求解,默认变量可以由symvar (eq)确定。
例:求解方程组:x^2 + x*y + y = 3, x^2 - 4*x + 3 = 0
matlab代码:
syms x y %声明符号变量
eq1=x^2 + x*y + y-3
eq2=x^2 - 4*x + 3
=solve(eq1,eq2,x,y)
2.fzero
然而在很多情况下solve并不能求得方程的解析解,这时就可以采用数值法求解。
数值求解法包括fzero和fsolve,其区别在于fzero只适用求解一元函数零点,而fsolve适用于求解多元函数零点(包括一元函数)。
当求解一元函数零点时,推荐优先使用fzero,原因是fzero求解一元方程往往更容易,因为它不仅支持提供初值的搜索,还支持在一个区间上进行搜索。
fzero的常用形式:
x = fzero(fun,x0)
= fzero(fun,x0)
其中fun为函数句柄,x0为搜索初值,fval为求解误差。
以一元方程sin(x)+cos(x)^2=0为例:
y=@(x)sin(x)+cos(x).^2 %这里采用匿名函数,也可以使用函数文件形式
=fzero(y,1) %1为搜索初值
如果方程有多个零点时,fzero只能根据你提供的初值求得最靠近初值的一个零点,如果希望求得多个零点的话,那么只能够通过改变初值来得到不同的零点。
对于零点的选取,目前来说没有什么比较好的办法,只能够通过分析方程的性质,或者通过作图的方法去寻找一个比较靠近零点的初值。另外,fzero能够提供区间搜索,注意区间两端的端点函数值符号需要反向:
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_701566.html