Matlab求解方程或函数的根,root,fzero,solve,fsolve的区别

这篇具有很好参考价值的文章主要介绍了Matlab求解方程或函数的根,root,fzero,solve,fsolve的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.引言

Matlab中有很多求解方程和方程组的函数,这些函数的使用可能有很多人都模棱两可,这里做一个简单的介绍,给个大方向,学会这些函数的基本使用场景。想要学习每个函数的更多细节和案例,Matlab官方帮助文档是最好的材料。假传万卷书,真传一案例,我们一起用例子来学习,走你~

2.四个函数

四个函数中用到了函数名字函数句柄这两个概念,我们分别说明下。所谓函数名字就是函数变量名左右加上单引号,使其成为字符串,例如你在func.m中定义了一个名为为func的函数(function f=func(x)),那么它的函数名字就是'func'。至于函数句柄,简单理解就是一个函数指针,用@func来获取。匿名函数的结果直接就是一个函数句柄,例如f=@(x)x^2+1得到的f本身就是一个函数句柄了。

2.1 root

root函数针对的是多项式求根问题,如下

% 求解x^3-2*x^2+x+1=0;
p=[1,-2,1,1];
roots(p)
2.2 fzero

一元非线性函数求根推荐使用fzero
语法:x=fzero(f,x0),其中f为函数名字或者函数句柄。函数名字和函数句柄是什么请看上面。x0是根的一个初始猜测值或者猜测范围,如果是猜测范围,x0的定义就是[-1,1]这样子的。

% 案例一: 求解exp(x)+cos(x)=0
f=@(x)exp(x)+cos(x);
% 第一个参数是函数名字,或者函数句柄。第二个参数是其实猜测值或者猜测区间
fzero(f,0)

% 案例二: 
% 在function.m中定义一个名为function的函数
fzero('function',0)
% 或者
fzero(@function,0)
% 都可以求出函数的根
2.3 fsolve

多元/多维情况下,非线性方程组的求解用fsolve

% 求解方程组 x^2+y-4=0, x-y-10=0
% 在test.m中定义如下函数
function r = test(x)
    r(1)=x(1).^2+x(2)-4;
    r(2)=x(1)-x(2)-10;
end

% 使用函数名或者函数句柄
fsolve('test',[0,0])
% 或者
fsolve(@test,[0,0])
2.4 solve

还有个比较特殊的存在就是solve函数,它也可以进行函数的求根和方程的求解,而且它能做到远远不止这些,还可以进行优化。在进行函数求根或者方程求解时,它与其他上面三个函数显著不同的地方是,它针对的函数是符号函数或者等式,下面分别举例:

syms x;
f = x^3+2*x^2-x+1;
s = solve(f); % f为符号函数,当不采用包含等式==的方程时,默认求根,否则求方程的解
double(s)

% solve的第一个参数是等式时
s = solve(x^3+2*x^2==x-1)
double(s) %结果同上
2.5 其他

上述函数求根时,有时需要提供一个初始猜测,例如fzerofsolve函数。所以一般最好先大致画一下函数看看解的大致范围,具体绘画函数的函数大概有以下这么几个,都可以简单尝试下

f = @(x,y) x.*exp(-x.^2-y.^2)+(x.^2+y.^2)/20;
g = @(x,y) x.*y/2+(x+2).^2+(y-2).^2/2-2;
% 隐函数绘制
fimplicit(g,'k')
axis([-6 0 -1 7])
hold on
% 等值线绘制
fcontour(f)
% 三维曲面绘制
figure;
fsurf(f)

Matlab求解方程或函数的根,root,fzero,solve,fsolve的区别

总结

这几个函数看起来都很相似,不仔细对比一下总是傻傻分不清,笔者也是饱受困扰所以花了点时间分类对比了一下,希望对你有帮助。如果你是注册登录状态,点个赞或者评论就更棒了!文章来源地址https://www.toymoban.com/news/detail-461630.html

到了这里,关于Matlab求解方程或函数的根,root,fzero,solve,fsolve的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python数学建模之用sympy.solve求解方程组的解

    在sympy.solve(expression)方法的帮助下,我们可以很容易地求解数学方程,它将返回使用sympy.solve()方法作为参数提供的方程的根。 参考文档: 参考文档 https://www.geeksforgeeks.org/python-sympy-solve-method/ 在下面这个例子中,我们可以看到通过使用sympy.solve()方法,我们可以求解数

    2024年02月10日
    浏览(41)
  • MATLAB-常微分方程求解

    MATLAB中可以用来求解常微分方程(组)的函数有ode23、 ode23s、 ode23t、 ode23tb 、ode45、ode15s和odel13等,见下表。它们的具体调用方法类似,为了方便后面的描述, 在后面的介绍中将使用solver统一代替它们。 函数的具体调用方法如下。 [T,Y] =solver( odefun, tspan,y0) [T,Y] = solver( odefun,

    2024年02月02日
    浏览(50)
  • MATLAB-线性方程组求解

    线性方程组是线性代数中的重要内容之一,其理论发展的最为完善。MATLAB中包含多种处理线性方程组的命令,下面进行详细介绍。 对于形如AX=B的方程组来说,假设其系数矩阵A是m×n的矩阵,根据其维数可以将方程组分以下3种情况。 1)若m=n,则为恰定方程组,即方程数等于未知

    2023年04月16日
    浏览(45)
  • MATLAB:方程组的求解

    综合实例应用:方程组的求解 无论工程应用问题,还是数学计算问题,方程组都是解决问题转化的重要途径之一,将复杂问题转化为简单的方程组矩阵求解问题。 利用矩阵分解来求解线性方程组,是工程计算中最常用的计算。 LU分解法是先将系数矩阵A进行LU分解,得到LU=P

    2024年01月19日
    浏览(37)
  • MATLAB 之 非线性方程数值求解、最优化问题求解和常微分方程初值问题的数值求解

    非线性方程的求根方法很多,常用的有牛顿迭代法,但该方法需要求原方程的导数,而在实际运算中这一条件有时 是不能满足的,所以又出现了弦截法、二分法等其他方法。 在 MATLAB 中,非线性方程的求解和最优化问题往往需要调用最优化工具箱来解决。优化工具箱提供了一

    2024年02月08日
    浏览(56)
  • 矩阵方程的计算求解:使用 MATLAB

    矩阵方程的计算求解:使用 MATLAB 矩阵方程是数学中一类重要的方程,它以矩阵的形式表示,并涉及到矩阵的乘法、加法和逆运算等。在 MATLAB 中,我们可以使用多种方法来求解矩阵方程,包括直接求解、迭代法和数值方法等。本文将介绍几种常见的方法,并给出相应的 MATL

    2024年02月08日
    浏览(54)
  • MATLAB 之 线性方程组求解

    在 MATLAB 中,关于线性方程组的解法一般分为两类:一类是直接法,就是在没有舍入误差的情况下,通过有限步的矩阵初等运算来求得方程组的解;另一类是迭代法,就是先给定一个解的初始值,然后按照一定的迭代算法进行逐步逼近,求出更精确的近似解。 线性方程组的直

    2024年02月08日
    浏览(50)
  • 热传导方程以及Matlab求解

    设 u = u ( x ⃗ , t ) u=u(vec{x},t) u = u ( x , t ) 表示某一个均匀物体 Ω ⊂ R 3 Omegasubsetmathbb{R}^3 Ω ⊂ R 3 在位置 x ⃗ vec{x} x ,时刻 t t t 的温度(单位: K K K ), c c c 表示比热(单位: J / ( k g ⋅ K ) J/(kgcdot K) J / ( k g ⋅ K ) ), ρ rho ρ 表示密度(单位: k g / m 3 kg/m^3 k g / m 3 ),令

    2024年02月06日
    浏览(54)
  • 单模光纤的特征方程以及MATLAB求解

    在之前的文章中,我们写出了单模光纤的特征方程以及对应的导波模式 这里我们在MATLAB中求解特征方程并表示出几个归一化参数的变化曲线 用到的公式是单模光纤导波模式的特征方程: fzero函数能求解fun(x) = 0 的点 x。 使用方式: 其中x0表示初始值 我们从0-10之间选取了N(

    2024年02月05日
    浏览(61)
  • MATLAB 之 级数计算和方程符号求解

    级数是表示函数,研究函数性质以及进行数值计算的一种工具,特别是可以利用收敛的无穷级数来逼近一些无理数,使它们的求值变得更方便。 前面曾讨论过有限级数求和的函数 sum ,sum 处理的级数是以一个向量形式表示的,并且只能是有穷级数,对于无穷级数求和,sum 是

    2024年02月10日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包