python牛顿迭代法求根例题_1.3求根之牛顿迭代法
目录
[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求根之牛顿迭代法相关推荐
- python解椭圆方程的例题_如何求椭圆方程
求五个二次曲线方程的一般公式是: A x2+B xy+C y2+D x+E y+F=0.在 一开始我试着用六个点.下面是我的python代码:import numpy as np def conic_ ...
- c语言中的除法求商例题,除法算式求商的方法 教案
<除法算式求商的方法 教案>由会员分享,可在线阅读,更多相关<除法算式求商的方法 教案(2页珍藏版)>请在人人文库网上搜索. 1.二年级数学五环节课堂教学案编撰教师: 审核: ...
- python牛顿迭代法求根例题_python求根算法
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! scipy官网:https:www.scipy.org这个库是python科学计 ...
- 弦截法求方程根例题c语言,弦截法求方程根.ppt
弦截法求方程根弦截法求方程弦截法求方程根弦截法求方程根 12 §3 迭代收敛的加速法 取g(x)=x3-1 , 则: 程序设计 function [f,k]= Steffensen(eps,x0) % ...
- 例题(8.3) 求一元二次方程的根 (1051)
题目 - 例题(8.3) 求一元二次方程的根 (1051) 来源 计算概论05 描述 利用公式 x1 = (-b + sqrt(b*b-4*a*c))/(2*a) x2 = (-b - sqr ...
- [CTF密码学]RSA相关题目解题方法与python脚本总结(附例题)
目录 RSA算法概述 思路一.分解n得到p,q 例题:BUUCTF:[WUSTCTF2020]babyrsa 思路二.低加密指数攻击(e很小) 例题:BUUCTF DangrousRSA 思路三.低指 ...
- matlab求方程在X附近的根,matlab 实验03 求代数方程的近似根(解)
实验三 求代数方程的近似根(解) 求代数方程的根是最常见的数学问题之一(这里称为代数方程,主要是想和后面的微分方程区别开.为简明起见,在本实验的以下叙述中,把代数方程简称为方程),当是一次多项式时,称 ...
- matlab求方程实根,matlab怎么求方程的根
MATLAB解方程_IT/计算机_专业资料.一般的代数方程函数solve用于求解一般代数方程的根,假定S为符 号表达式,命令solve (S)求解表达式等于0的根,也 可以再输入一个...... MA ...
- 求二叉树中以x为根的子树的深度_还在玩耍的你,该总结啦!(本周小结之二叉树)...
给「代码随想录」一个星标吧! ❝ 有学习就要有总结 ❞ 本周小结 本周赶上了十一国庆,估计大家已经对本周末没什么概念了,但是我们该做总结还是要做总结的. 本周的主题其实是「简单但并不简单」,本周所选的 ...
最新文章
- tensorflow tuner 调参,示例代码(jupyter notebook 版)
- 关卡设计快速入门_2. 导航视口
- python学习书籍推荐-推荐python机器学习实践的书籍?
- 从理论到实践,全方位认识HTTP/2
- PAT 1016 部分A+B
- “adb不是内部或外部命令,也不是可运行的程序或批量文件“
- php静态数组变量初始化,为什么数组初始化时,赋值不能是常量?
- 【flink】Flink 1.12.2 源码浅析 : yarn-per-job模式解析 从脚本到主类
- python中的继承有什么特点_Python类的继承机制是什么
- AsciidocFX相关
- 序列化和反序列化的几种方式(JavaScriptSerializer 、XmlSerializer、DataContractSerializer)(一)...
- [翻译] Canvas 不用写代码的动画
- 吉利汽车借助阿里云进行汽车行业新零售模式探索
- Java学到什么程度可以面试工作?
- 计算机没网络怎么更新网卡驱动,电脑显示没有网卡驱动怎么办?电脑显示没有网卡驱动的解决方法...
- 分位数回归及Stata实现
- 图扑软件数字孪生民航飞联网,构建智慧民航新业态
- 两步使用Ubuntu 创建自己的网站
- 织梦dede列表分页样式
- 【小白笔记】EAST:Learning Policies for Adaptive Tracking with Deep Feature Cascades
热门文章
- JavaScript 如何计算两个日期之间的天数
- 直通滤波(PassThrough 过滤器)
- MySQL Manual
- java实现QQ微信扫码登录
- IBM x3750 M4安装ESXi5.5
- 金蝶KIS财务接口使用说明
- 四年的女友......
- [CGAL] CGAL-5.2.1的安装与编译(Win10+vs2019+CGAL-5.2.1)
- windows置顶程序DeskPins的下载、安装和使用
- 8*8LED点阵图原理(74HC595芯片使用方法)