目录

[TOC]

前言

今天我们讲的是具有收敛速度快,能求重根的解方程之法,牛顿迭代法。

(一)牛顿迭代法的分析

1.定义

迭代公式如下:

迭代函数是:

由于

与原方程

等价。

时,

就是

的近似解。

该方法称为牛顿迭代方法。

2.条件

f(x)函数是连续可导函数。

f(x)在局部收敛,当

时,局部收敛。

注意:牛顿迭代法的局部收敛性,很依赖于初始值的取法。

也就是说,初始值的选取,决定该区域的收敛性。

3.思想

其总思想还是迭代的方法,只是其迭代公式是由泰勒展开得来的,其利用的是:用切线方程与x轴的交点来近似f(x)与x轴的交点。

4.误差

任然用的是迭代法的误差,前后两次x的差的绝对值与我们给的精度比较。

(二)代码实现

1.算法流程图

牛顿迭代法.jpg

2.源代码

feval()函数

def feval(string, a):

"""

根据值来计算数学表达式。

:param string: 含有x未知数的数学表达式

:param a: 自变量x的具体数值

:return: 数学表达式的计算结果

"""

count = string.count("x")

string = string.replace('x', '%f')

t = (a, ) * count

result = eval(string % t)

return result

float_num()函数

def flaot_num(x, r):

"""

处理保留几位小数点的函数,四舍五入法

:param x: 原始数据

:param r: 误差

:return: 处理后的数据

"""

# 处理小数点的位数

r = str(r)

if "." in r:

dian = r.index(".")

size = len(r[dian + 1:])

result = round(x, size)

return result

elif "e" in r:

dian = r.index("e")

size = int(r[dian+2:])

result = round(x, size)

return result

else:

result = round(x, 0)

return result

牛顿迭代法

"""

牛顿迭代法,迭代的思想,不断逼近。

"""

# 求导数需要的库

import sympy as sp

from my_math.func_math import feval, flaot_num

def new_fun(expr, x0, r):

"""

牛顿迭代法求解方程的根

:param expr: 代函数表达式

:param x0: 初始值

:param r: 误差

:return: 计算的结果值

"""

x = sp.Symbol('x')

k = 0

# 一阶导与二阶导

fx_1 = str(sp.diff(expr))

fx_2 = str(sp.diff(fx_1))

# 迭代公式

y = "x-" + "("+expr + ")/(" + fx_1 + ")"

# 判断收敛性

if feval(expr, x0)*feval(fx_2, x0) <= 0:

print("函数处于该点区域不收敛")

result = None

else:

x1 = feval(y, x0)

x2 = feval(y, x1)

while abs(x2-x1) > r:

x1 = feval(y, x2)

x2 = feval(y, x1)

k += 1

print("次数:", k)

print("x1:", x1)

print("x2:", x2)

result = flaot_num(x2, r)

print("=" * 30)

print("原始的数据是", x2)

print("最后的结果是:", result)

return result

if __name__ == '__main__':

new_fun("x**4-4*x**2+4", 2, 10**-5)

(三)案例演示

1.求解:

误差:10^-5

图像分析(来确定初值)

01.png

02.png

取在1.5为初始值

运行结果:

03.png

2.求解:

误差:10^-5

图像分析(来确定初值)

04.png

05.png

取11为初始值。

运行结果:

06.png

3.求解:

误差:10^-5

图像分析(来确定初值)

07.png

08.png

取初始值为:1.6

运行结果:

09.png

4.求解:

图像分析(来确定初值)

10.png

11.png

取初值是:0

运行结果:

12.png

我们换另一个点试试,取初始值为2

运行结果:

13.png

作者:Mark

日期:2019/02/19 周二

python牛顿迭代法求根例题_1.3求根之牛顿迭代法相关推荐

  1. python解椭圆方程的例题_如何求椭圆方程

    求五个二次曲线方程的一般公式是: A x2+B xy+C y2+D x+E y+F=0.在 一开始我试着用六个点.下面是我的python代码:import numpy as np def conic_ ...

  2. c语言中的除法求商例题,除法算式求商的方法 教案

    <除法算式求商的方法 教案>由会员分享,可在线阅读,更多相关<除法算式求商的方法 教案(2页珍藏版)>请在人人文库网上搜索. 1.二年级数学五环节课堂教学案编撰教师: 审核: ...

  3. python牛顿迭代法求根例题_python求根算法

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! scipy官网:https:www.scipy.org这个库是python科学计 ...

  4. 弦截法求方程根例题c语言,弦截法求方程根.ppt

    弦截法求方程根弦截法求方程弦截法求方程根弦截法求方程根 12 §3 迭代收敛的加速法 取g(x)=x3-1 , 则: 程序设计 function [f,k]= Steffensen(eps,x0) % ...

  5. 例题(8.3) 求一元二次方程的根 (1051)

    题目 - 例题(8.3) 求一元二次方程的根 (1051)   来源 计算概论05 描述 利用公式  x1 = (-b + sqrt(b*b-4*a*c))/(2*a)  x2 = (-b - sqr ...

  6. [CTF密码学]RSA相关题目解题方法与python脚本总结(附例题)

    目录 RSA算法概述 思路一.分解n得到p,q 例题:BUUCTF:[WUSTCTF2020]babyrsa 思路二.低加密指数攻击(e很小) 例题:BUUCTF DangrousRSA 思路三.低指 ...

  7. matlab求方程在X附近的根,matlab 实验03 求代数方程的近似根(解)

    实验三 求代数方程的近似根(解) 求代数方程的根是最常见的数学问题之一(这里称为代数方程,主要是想和后面的微分方程区别开.为简明起见,在本实验的以下叙述中,把代数方程简称为方程),当是一次多项式时,称 ...

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

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

  9. 求二叉树中以x为根的子树的深度_还在玩耍的你,该总结啦!(本周小结之二叉树)...

    给「代码随想录」一个星标吧! ❝ 有学习就要有总结 ❞ 本周小结 本周赶上了十一国庆,估计大家已经对本周末没什么概念了,但是我们该做总结还是要做总结的. 本周的主题其实是「简单但并不简单」,本周所选的 ...

最新文章

  1. tensorflow tuner 调参,示例代码(jupyter notebook 版)
  2. 关卡设计快速入门_2. 导航视口
  3. python学习书籍推荐-推荐python机器学习实践的书籍?
  4. 从理论到实践,全方位认识HTTP/2
  5. PAT 1016 部分A+B
  6. “adb不是内部或外部命令,也不是可运行的程序或批量文件“
  7. php静态数组变量初始化,为什么数组初始化时,赋值不能是常量?
  8. 【flink】Flink 1.12.2 源码浅析 : yarn-per-job模式解析 从脚本到主类
  9. python中的继承有什么特点_Python类的继承机制是什么
  10. AsciidocFX相关
  11. 序列化和反序列化的几种方式(JavaScriptSerializer 、XmlSerializer、DataContractSerializer)(一)...
  12. [翻译] Canvas 不用写代码的动画
  13. 吉利汽车借助阿里云进行汽车行业新零售模式探索
  14. Java学到什么程度可以面试工作?
  15. 计算机没网络怎么更新网卡驱动,电脑显示没有网卡驱动怎么办?电脑显示没有网卡驱动的解决方法...
  16. 分位数回归及Stata实现
  17. 图扑软件数字孪生民航飞联网,构建智慧民航新业态
  18. 两步使用Ubuntu 创建自己的网站
  19. 织梦dede列表分页样式
  20. 【小白笔记】EAST:Learning Policies for Adaptive Tracking with Deep Feature Cascades

热门文章

  1. JavaScript 如何计算两个日期之间的天数
  2. 直通滤波(PassThrough 过滤器)
  3. MySQL Manual
  4. java实现QQ微信扫码登录
  5. IBM x3750 M4安装ESXi5.5
  6. 金蝶KIS财务接口使用说明
  7. 四年的女友......
  8. [CGAL] CGAL-5.2.1的安装与编译(Win10+vs2019+CGAL-5.2.1)
  9. windows置顶程序DeskPins的下载、安装和使用
  10. 8*8LED点阵图原理(74HC595芯片使用方法)