一、实验原理

二、实验步骤

三、实验过程

1.(程序)

(1)二分法:求

 在区间(1,2)之间的根,取

(a)bipart.m:

function [x,m]=bipart(fun,a0,b0,tol)

a=a0;b=b0;

m=1+round(round(log((b-a)/tol))/log(2));

for k=1:m

p=(a+b)/2;

if fun(p)*fun(b)<0

a=p;

else

b=p;

end

x=p;

end

end

(b)fun1.m:

function f=fun1(x)

f=x^3+10*x-20;

(2)不动点迭代法:求方程

附近的根,取

(a)budong.m:

function [x,k]=budong(fun,x0,tol,m)

for k=1:m

x=fun(x0);

if abs(x-x0)

break;

end

x0=x;

end

x=vpa(x,8);

(b)fun.m

function t=fun(x1)

syms x;

f=x^3-2*x-5;

s=subs(diff(f,x),x,x1);

x=x1;

f=x^3-2*x-5;

t=x-f/s;

(3)牛顿迭代法:求方程

附近的根,取

newton.m:

function x1=newton(t1,esp,m)

syms x;

fun=x^3+2*x-5;

for k=1:m

if abs(subs(diff(fun,‘x‘),x,t1))

x1=t1;

break;

else

if subs(diff(fun,‘x‘,2),x,t1)==0

break;

disp(‘解题失败!‘)

else

t0=t1;

t1=t0-subs(fun,x,t0)/subs(diff(fun,‘x‘),x,t0);

if abs(t1-t0)

x1=t1;

break;

end

end

end

end

x1=vpa(x1,8);

2.(运算结果)

(1)二分法:

>> [x,m]=bipart(@fun1,1,2,0.0001)

x =

1.5945

m =

14

(2)不动点迭代法:

>> [x,k]=budong(@fun,2,1e-5,100)

x =

2.0945515

k =

4

(3)牛顿迭代法:

>> x1=newton(2,1e-4,20)

x1 =

1.3282689

3.(拓展(方法改进、体会等))

对于方程的根为重根的情形,newton法求重根只是线性收敛,迭代缓慢,如果对于求重根的情形,对newton法进行改进,取

 ,

。用迭代法

求m重根,则具有二阶收敛性,但要知道的重数m。

计算方程

的根

是二重根,用newton法与改进方法求根。

源程序:

newton_biroot.m:

function t=newton_biroot(x1)

syms x;

f=x^4-4*(x^2)+4;

s=subs(diff(f,x),x,x1);

x=x1;

f=x^4-4*(x^2)+4;

t=x-f/s;

biroot1.m:

function t=biroot1(x1)

syms x;

f=x^4-4*(x^2)+4;

s=subs(diff(f,x),x,x1);

x=x1;

f=x^4-4*(x^2)+4;

t=x-2*f/s;

budong.m:

function [x,k]=budong(fun,x0,tol,m)

for k=1:m

x=fun(x0);

if abs(x-x0)

break;

end

x0=x;

x=vpa(x,8)

end

x=vpa(x,8);

运行结果:取初值为2

k

xk

newton法

改进方法

1

x1

1.75

1.5

2

x2

1.5982143

1.4166667

3

x3

1.5115099

1.4142157

4

x4

1.4644275

1.4142157

计算4步,改进方法就已经收敛,而newton法只是线性收敛,要达到同样精度需迭代17次。

附结果:

>> [x,k]=budong(@biroot1,2,1e-5,3)

x =

1.5

x =

1.4166667

x =

1.4142157

x =

1.4142157

k =

3

>> [x,k]=budong(@biroot1,2,1e-5,10)

x =

1.5

x =

1.4166667

x =

1.4142157

x =

1.4142136

k =

4

>> [x,k]=budong(@newton_biroot,2,1e-5,50)

x =

1.75

x =

1.5982143

x =

1.5115099

x =

1.4644275

x =

1.439751

x =

1.4270955

x =

1.4206836

x =

1.4174559

x =

1.4158366

x =

1.4150256

x =

1.4146197

x =

1.4144166

x =

1.4143151

x =

1.4142643

x =

1.414239

x =

1.4142263

x =

1.4142199

k =

17

原文:http://www.cnblogs.com/kailugaji/p/6920975.html

matlab牛顿法求区间根程序,MATLAB用二分法、不动点迭代法及Newton迭代(切线)法求非线性方程的根...相关推荐

  1. 重根的二阶迭代法matlab,MATLAB用二分法、不动点迭代法及Newton迭代(切线)法求非线性方程的根...

    作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.实验原理 二.实验步骤 三.实验过程 1.(程序) (1)二分法:求  在区间(1,2)之间的根,取 ...

  2. matlab求曲线极值程序,matlab函数求极值matlab函数求极值.ppt

    matlab函数求极值matlab函数求极值 * * 函数的极值 1.一元函数的极值 函数命令:fminbnd 调用格式:[x,feval,exitflag,output]=fminbnd(fun,x ...

  3. matlab用while循环编写程序,MATLAB程序设计

    MATLAB 程序设计 1. 编写M 主程序文件,分别使用for 和while 循环语句计算sum=∑=101i i i 的程序. 方法一: sum=0; i=1; while i<11 sum ...

  4. matlab中运用demod解调程序,matlab调制解调源码有代码解释原理分析

    解调程序\am\am模拟信号调制解调\am.m .............\..\..................\am_demod.m .............\..\............ ...

  5. matlab 累积和,区间累积求和 – MATLAB

    diff和cumum的一种方法 – %// Setup few arrays: cx = cumsum(x) %// Continuous Cumsumed version reset_mask = ...

  6. 数值分析方程求根实验matlab,数值分析实验之非线性方程求根(MATLAB实现)

    一.实验目的 1. 了解一般非线性方程的求根是比较复杂的事情:要讨论(或知道)它有无实根,有多少实根:知道求近似根常用的几种方法,每种方法的特点是什么. 2. 用通过二分法(区间半分法).不动点(也P ...

  7. matlab 计算变异系数,变异系数法求权重matlab代码

    <变异系数法求权重matlab代码>由会员分享,可在线阅读,更多相关<变异系数法求权重matlab代码(1页珍藏版)>请在读根文库上搜索. 1.变异系数 法求权重 matlab ...

  8. matlab画气温和地表温度关系图,matlab三维温度分布图

    传热学MATLAB温度分布大作业完整版_物理_自然科学_专业资料.东南大学能源与环境学院课程作业报告作业名称:传热学大作业--利用 matlab 程序解决热传导问题院系:能源...... #MATLA ...

  9. 【牛顿迭代逼近】求根号2的快速方法

    如果要求根号2,比较快的方法有:1)二分法:2)牛顿迭代逼近法 二分法不多说了,很简单.下面介绍牛顿迭代逼近法. 原理:X(n+1) = ( X(n) + P/X(n) ) / 2      (P为待 ...

最新文章

  1. python爬虫科研数据提取_python爬虫数据提取四之pyquery
  2. 任务记录:OEA 框架中的多类型树控件
  3. android 应用模式之mvp
  4. 项目合作需求、数据集合作需求
  5. 通力法评 | 简评中国证监会关于MOM产品的征求意见稿
  6. 机械设计(机电)_简要问答_复习笔记
  7. WPS或Excel将姓名变为拼音
  8. Java 读取Word中的脚注、尾注
  9. 彩球滑梯java_玩过这些手机游戏的人都老了 那些曾经风靡一时的手机游戏大盘点(二)...
  10. 微信实现qq群的qq小冰功能
  11. 【备品备件】入库流程--采购入库--0180363009
  12. 第七十七篇:车辆安全-车载软件C++语言开发指南(AUTOSAR C++)
  13. android图片异步加载图片,Android 异步加载图片分析总结
  14. Android EditText密码显示隐藏和全部属性的介绍
  15. 计算机网络-谢希仁-第7版 第6章 应用层
  16. 离线安装vs2019
  17. 滴答清单支持订阅哪些日历?
  18. 编译原理(十八)——运行时存储空间管理
  19. Java的多态到底是什么意思?-sunziren
  20. 加速度传感器安装注意事项

热门文章

  1. vue中activated和deactivated是什么
  2. java开发自我介绍范文(合集)
  3. 一台服务器控制上百个抖音账号,怎么批量管理上百个抖音,抖音mcn一键高效运营软件...
  4. js快速获取当前链接和域名
  5. 对JRTPLIB的学习
  6. Oracle 数据压缩(Compression) 技术 说明
  7. FFmpeg av_frame_free崩溃可能原因
  8. 双机(51单片机)串行通信最基本的方法
  9. Bootstarp:网站导航栏的编写设计
  10. ORACLE修改processes和sessions参数