一、符号方程求解

在MATLAB中,求解用符号表达式表示的代数方程可由函数solve实现,其调用格式为:
       solve(s)(求解符号表达式s的代数方程,求解变量为默认变量,当方程右端为0时,方程可以不标出等号和0,仅标出方程的左端)
       solve(s,v)(求解符号表达式s的代数方程,求解变量为v)
       solve(s1,s2,…,sn,v1,v2,…,vn)(求解符号表达式s1,s2,…,sn组成的代数方程组,求解变量分别为v1,v2,…,vn)
       让我举个栗子:
求解如下方程:

代码:

x=solve('2*sin(3*x-pi/4)=1')


代码:

x= solve('x+x*exp(x)-10', 'x')   %仅标出方程的左端

二、求方程f ( x ) = 0数值解的基本方法

       并非所有的方程 f ( x ) = 0 都能求出精确解或解析解,存在这种解的方程就需要用数值解法求出近似解,有几种常见的数值解法:

1.二分法

2.迭代法:切线法、割线法(弦截法)

注:二分法简单方便,但收敛速度慢;
       迭代法虽然收敛速度稍微快点,但需要判断能否收敛;
       只要初值选取得当,切线法具有恒收敛且收敛速度快的优点,但需要求出函数的导数;
       弦截法不需要求导数,特别是前面介绍的快速弦截法,收敛速度很快,但是需要知道两个近似的初始根值才能作出弦,要求的初始条件较多。

三、方程f(x) = 0数值解的MATLAB实现

MATLAB中求方程数值解的办法很多,有的是专用指令,有的是根据方程性质而借用其他专用指令求得的

这里我们就先介绍求函数零点指令fzero吧

求解方程f ( x ) = 0的实数根也就是求函数f ( x)的零点。MATLAB中设有求函数f (x)零点的指令fzero,可用它来求方程的实数根。该指令的使用格式为:fzero (fun, x0, options)
       ①输入参数fun为函数f (x)的字符表达式、内联函数名或M函数文件名。
       ②输入参数x0为函数某个零点的大概位置(不要取零)或存在的区间[xi,xj],要求函数f (x)在x0点左右变号,即f (xi)f (xj) < 0。
       ③输入参数options可有多种选择,若用optimset (‘disp’, ‘iter’)代替options 时,将输出寻找零点的中间数据。
       ④该指令无论对多项式函数还是超越函数都可以使用,但是每次只能求出函数的一个零点,因此在使用前需摸清函数零点数目和存在的大体范围。为此,一般先用绘图指令plot, fplot或ezplot画出函数f (x)的曲线,从图上估计出函数零点的位置。
       让我再举个栗子:
如:求方程 x^2 + 4sin(x) = 25 的实数根(-2π<x < 2π)
解:
1)若fun为函数f (x)的字符表达式
       ①首先要确定方程实数根存在的大致范围。为此,先将方程变成标准形式f(x) =x2 + 4sin(x) - 25 = 0,作f(x)的曲线图:

x=-2*pi:0.1:2*pi;
f=x.^2+4*sin(x)-25;
plot(x,f);grid on;


从曲线上可以看出,函数的零点大约在x1= - 4和x2=5附近
       ②直接使用指令fzero求出方程在x1≈ - 4时的根

x1= fzero ('x^2+4*sin(x)-25',-4)

若键入:

fzero ('x^2+4*sin(x)-25',-4, optimset('disp', 'iter'))

将会显示迭代过程
       中间数据表明,求根过程中不断缩小探测范围,最后得出- 4附近满足精度的近似根
       ③求x2≈ 5的根:

x2= fzero ('x^2+4*sin(x)-25',5)

(2) 若fun为函数f (x)的M函数文件名
将方程x2 + 4sin(x) = 25编成M函数文件(实用中在函数较为复杂、而又多次重复调用时,才这样做),用fzero求解。
       ①在M文件编辑调试窗中键入:

function  yy=fan (x)
yy= x^2+4*sin(x)-25;

以fan为文件名存盘,退出编辑调试窗,回到指令窗。
       ②确定根的大体位置;
       ③在指令窗中键入下述指令可求出 - 4 附近的根:

x1= fzero ('fan',-4)

键入下述指令可求出5附近的根:

x2= fzero ('fan',5)

我还要再举个栗子:
如:求f(x)=x-10^x+2=0在x0=0.5附近的根
解:

x=-2.5:0.01:0.5;
fx=x-10.^x+2;
plot(x,fx)

从f(x)的曲线看出曲线的零点有两个,一个在x=-2附近,另一个在x=0.5附近
       ①建立函数文件funx.m。(function [输出变量列表]=函数名(输入变量列表))

functionfx=funx(x)
fx=x-10.^x+2;

②调用fzero函数求根。

   z=fzero('funx',0.5)

求解非线性方程f (x)= 0的MATLAB数值法指令介绍(solve、fzero的方法与实例)相关推荐

  1. [C++]已知f(x) = cosx - x。x的初值为3.14159/4,用牛顿法求解方程f(x) = 0的近似解,要求精确到10-6。f(x)的牛顿法的表达式为xn+1 = xn + (cosxn

    (附加题)已知f(x) = cosx - x.x的初值为3.14159/4,用牛顿法求解方程f(x) = 0的近似解,要求精确到10-6.f(x)的牛顿法的表达式为xn+1 = xn + (cosxn ...

  2. python牛顿法解非线性方程组_科学网—求解多元非线性方程组F(x)=0的Newton-Raphson方法及其MATLAB实现 - 王福昌的博文...

    科学网对公式支持不太好,在博客园有相同博文 牛顿迭代法可以推广到多元非线性方程组 $boldsymbol{F}(boldsymbol{x})=boldsymbol{0}$的情况,称为牛顿-- 拉夫逊方 ...

  3. matlab四元一次非线性方程求解,[转载]MATLAB求解非线性方程(转)

    1.解方程 最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法: (1)x=i ...

  4. MATLAB求解非线性方程

    1.解方程 最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法: (1)x=i ...

  5. MATLAB弦截法求解非线性方程

    MATLAB弦截法求解非线性方程 用Newton法解非线性方程时,当f比较复杂时就比较难以实现了,弦解法的好处可以用f(x)在两点上的值构造一次插值函数来回避微商的计算.其迭代格式: 1.弦截法的MA ...

  6. matlab求非线性函数的解,MATLAB求解非线性方程(转)

    1.解方程 最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法: (1)x=i ...

  7. matlab解方程x 2-x-2=0,matlab用三种方法求解二阶微分方程x''+0.2x'=0.4x=0.2u(t),u(t)是单位阶跃函数,初始状态为0...

    问题描述: matlab用三种方法求解二阶微分方程x''+0.2x'=0.4x=0.2u(t),u(t)是单位阶跃函数,初始状态为0 1个回答 分类: 数学 2014-11-28 问题解答: 我来补答 ...

  8. 算法设计与分析-习题-用生成函数求解递归方程f(n)=2f(n/2)+cn,f(1)=0

    目录 题目描述 求解思路 求解过程 题目描述 用生成函数求解递归方程f(n)=2f(n/2)+cn,f(1)=0. 求解思路 换名 求解过程 把n表示成k的关系,原递归方程改写为: 再令 ,于是原递归 ...

  9. matlab容许误差范围,s2 给定初值及容许误差,编制牛顿法解方程f(x) 0的通用程序 联合开发网 - pudn.com...

    s2 所属分类:matlab例程 开发工具:matlab 文件大小:2KB 下载次数:6 上传日期:2016-10-20 17:16:56 上 传 者:幸福vip 说明:  给定初值及容许误差,编制牛 ...

最新文章

  1. rsync+inotify实时备份
  2. hdu6380(2018 “百度之星”程序设计大赛 - 初赛(B))
  3. ubuntu18系统搭建ftp服务器详解
  4. jQuery的筛选选择器
  5. Password Creator(HTA)
  6. java去0,Java如何处理除零?
  7. Ubuntu安装ffmpeg教程
  8. MATLAB图像形状识别
  9. 人工智能“剧透”《权游》大结局,第一个“领便当”的居然是ta
  10. 【短视频运营】查找对标账号 ( 关键词搜索 | 第三方工具查找 | 对标账号学习 | 视频文案 | #话题 | 评论内容 | 历史视频 )
  11. 树莓派3B+ 远程下载服务器(Aria2)
  12. 成功解决numpy.ndarray size changed
  13. 赛尔无人机 | 航测新标杆 Phantom 4 RTK
  14. POI导出EXCEL自定义背景颜色
  15. 美团面试——餐饮系统开发
  16. Geoffrey Hinton——Godfather of Deep Learning
  17. IOS9 xcode7 You must rebuild it with bitcode enabled
  18. JS中事件绑定的方式以及事件监听和事件的委托
  19. 保弘实业|大学生为什么要学会理财
  20. GeekPwn2019国际安全极客大赛

热门文章

  1. 腾讯视频怎么设置下载视频位置
  2. spring(java,js,html) 截图上传
  3. @requestbody和@requestparam到底什么作用
  4. 学习Spring Boot:(二十二)使用 AOP
  5. 关于异常nested exception is java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactor
  6. JAVA中的那些名词解释
  7. python中的reindex_Pandas之ReIndex重新索引的实现
  8. appium自动化测试_Appium自动化测试入门教程No.1—— Appium介绍
  9. css如何实现一个小三角形,用纯css写一个常见的小三角形
  10. jitter 如何优化网络_如何做好关键词优化网络?