作者:凯鲁嘎吉 - 博客园

http://www.cnblogs.com/kailugaji/

一、实验原理

二、实验步骤

三、实验过程

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

内容来源于网络如有侵权请私信删除

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

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

    一.实验原理 二.实验步骤 三.实验过程 1.(程序) (1)二分法:求  在区间(1,2)之间的根,取 (a)bipart.m: function [x,m]=bipart(fun,a0,b0,to ...

  2. python 拟牛顿法 求非线性方程_C语言实现迭代法求非线性方程的根

    迭代法求非线性方程的根 迭代法是一种逐次逼近法.它是求解代数方程,超越方程及方程组的一种基本方法,但存在收敛性及收敛快慢的问题. 为了用迭代法求非线性方程f(x) = 0的近似根: 1.首先需要将此方 ...

  3. 【Python】Python用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。提示:牛顿迭代法求非线性方程的根的迭代公式为x`(n+1)`=x`n`-f(x)/f'(x) 。

    用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根.提示:牛顿迭代法求非线性方程的根的迭代公式为x(n+1)=xn-f(x)/f'(x) . 算法源码 def f(x): ##原函数ret ...

  4. 用弦截法求方程的根matlab,matlab 语言 用弦截法任意实数方程求实根

    满意答案 dwgg2n0das8 2013.04.26 采纳率:45%    等级:12 已帮助:8202人 弦截法这个方法一般用作学习,实际用的很少.这里我提供一个较完整的弦截法求根的函数.func ...

  5. 不动点迭代法matlab视频,不动点迭代法matlab

    不动点迭代法的 MATLAB 程序代码如下: Function [root,n]=StablePoint(f,x0,eps) %用不动点迭代法求函数的一个零点 %初始迭代向量:x0 %根的精度:eps ...

  6. matlab编jacobi方法,jacobi迭代法matlab

    h Matlab 线性方程组的迭代解法(Jacobi 迭代法 Gauss-Seidel 迭代法)实验报告 2008年11月09日 星期日 12:49 1.熟悉 Jacobi 迭代法,并编写 Matla ...

  7. 数值分析2-解非线性方程的不动点迭代法,斯蒂芬森(steffensen)迭代法,牛顿法以及简化牛顿法的matlab程序

    对于形如f(x)=0的单变量非线性方程,可以构造不同的迭代函数进行迭代求根,以f(x)=x3-x-1为例,我们可以简单的通过等式变形构造出x=x3-1和x=(x+1)(1/3)两种等价形式:也可以自己 ...

  8. matlab求方程实根,matlab怎么求方程的根

    MATLAB解方程_IT/计算机_专业资料.一般的代数方程函数solve用于求解一般代数方程的根,假定S为符 号表达式,命令solve (S)求解表达式等于0的根,也 可以再输入一个...... MA ...

  9. 单个方程的不动点迭代法

    1. 不动点和不动点迭代法 设 f 是连续函数,为了解方程 把方程变换为等价的方程 其中φ 是连续函数.若x* 是f 的零点,即f(x*)=0 则有 x*称为函数φ 的一个不动点.构造的迭代法 这称为 ...

最新文章

  1. 第三章| 3.1文件处理
  2. Dora.Interception,为.NET Core度身打造的AOP框架 [1]:更加简练的编程体验
  3. 使用FFmpeg生成HLS
  4. linux常用命令解析
  5. artTemplate的使用总结
  6. mybatis一对一联表查询的两种常见方式
  7. linux c 文件拷贝函数,Linux C函数库参考手册
  8. Rosenbrock函数的梯度与海瑟矩阵
  9. 关于CSP-J/S2019准考证下载、考点查询等问题的说明
  10. 神舟计算机主板bios,最详细的各种主板bios设置方法
  11. python爬楼梯多少种_LeetCode70爬楼梯-Python3-两种方法实现
  12. 局域网互传文件工具_如何在 iOS、Android、macOS、Windows 之间快速文件互传?
  13. VMware无法启动虚拟机的解决办法
  14. AWS云迁移工具方法汇总
  15. 知物由学 | SO VMP 加壳与混淆,为移动应用提供函数级保护
  16. MySQL的数据类型 .
  17. android显示通知图标大全,Android应用开发之android 桌面APP应用图标显示通知消息的数量显示与去除...
  18. 【FAQ】软件保护系统Themida常见问题集锦(一)—Themida和WinLicense有什么区别?...
  19. js 回车与空格转义
  20. jmeter 聚合报告的吞吐量与常数吞吐量定时器吞吐量的关系

热门文章

  1. JZ18_二叉树的镜像
  2. C++11中的智能指针unique_ptr、shared_ptr和weak_ptr详解
  3. c++系列 —— 智能指针auto_ptr和unique_ptr
  4. 分治算法——快速幂(平方求幂)
  5. “信号声源定位实验”
  6. Flag Engine(动画系统)学习笔记(六)——动画片段
  7. matlab 自定义的snr,Matlab信号添加噪声及信噪比SNR的计算
  8. win2012R2安装KB2919355 补丁的问题
  9. Redis高可用之哨兵模式
  10. 腾讯云优惠券-腾讯云优惠券领取