牛顿迭代法理论推导及python代码实现
公式不便于在这里编辑,所以在word中编辑好了,截图过来。
用python+牛顿迭代法 求 y =(x-2)**3的解
import numpy as np
import matplotlib.pyplot as plt
'''
牛顿迭代法实现 y =(x-2)**3的解
'''
def f(x):
return (x-2)**3
def fd(x):
return 3*((x-2)**2)
def newtonMethod(n,assum):
time = n
x = assum
next = 0
a = f(x)
b = fd(x)
print('a = '+str(a)+',b = '+str(b)+',time = '+str(time))
if f(x) == 0.0:
return time,x
else:
next = x-a/b
print('next x = '+str(next))
if a - f(next)<1e-6:
print('meet f(x) = 0 , x = '+ str(next)) ##设置跳出条件,同时输出满足f(x) = 0 的x的值
else:
return newtonMethod(n+1,next) newtonMethod(0,4.0)
C:\ProgramData\Anaconda3\python.exe D:/python/TensorFlow/算法实例/牛顿迭代法.py
a = 8.0,b = 12.0,time = 0
next x = 3.3333333333333335
a = 2.370370370370371,b = 5.333333333333334,time = 1
next x = 2.888888888888889
a = 0.7023319615912207,b = 2.3703703703703702,time = 2
next x = 2.5925925925925926
a = 0.20809835898999132,b = 1.0534979423868311,time = 3
next x = 2.3950617283950617
a = 0.0616587730340715,b = 0.4682213077274805,time = 4
next x = 2.263374485596708
a = 0.018269266084169365,b = 0.20809835898999157,time = 5
next x = 2.1755829903978054
a = 0.005413115876790937,b = 0.09248815955110752,time = 6
next x = 2.11705532693187
a = 0.001603886185715827,b = 0.04110584868938101,time = 7
next x = 2.078036884621247
a = 0.0004752255365083959,b = 0.01826926608416941,time = 8
next x = 2.052024589747498
a = 0.00014080756637285685,b = 0.008119673815186359,time = 9
next x = 2.034683059831665
a = 4.17207604067724e-05,b = 0.0036087439178606037,time = 10
next x = 2.023122039887777
a = 1.2361706787192059e-05,b = 0.0016038861857158443,time = 11
next x = 2.015414693258518
a = 3.662727936945795e-06,b = 0.0007128383047625975,time = 12
next x = 2.0102764621723455
a = 1.0852527220580603e-06,b = 0.00031681702433894134,time = 13
next x = 2.0068509747815635
meet f(x) = 0 , x = 2.0068509747815635 Process finished with exit code 0
从运行的结果可以看出近似根x = 2.0068509747815635
牛顿迭代法理论推导及python代码实现的更多相关文章
- python 牛顿迭代法
使用牛顿迭代法求方程 在x附近的一个实根. 赋值X,即迭代初值:用初值x代入方程中计算此时的f(x)=(a * x * x * x + b * x * x + c * x + d)和f’(x)=(3 ...
- 牛顿迭代法--求任意数的开n次方
牛顿迭代法是求开n次方近似解的一种方法,本文参考. 引言 假如\(x^n = m\),我们需要求x的近似值. 我们设\(f(x) = x^n - m\), 那么也就是求该函数f(x)=0时与x轴的交点 ...
- 牛顿迭代法解指数方程(aX + e^x解 = b )
高中好友突然问我一道这样的问题,似乎是因为他们专业要做一个计算器,其中的一道习题是要求计算器实现这样的功能. 整理一下要求:解aX + e^X = b 方程.解方程精度要求0.01,给定方程只有一解, ...
- 数学相关比较 牛顿迭代法求开方 很多个n的平方分之一
牛顿迭代法求开方 牛顿迭代法 作用: 求f(x) = 0 的解 方法:假设任意一点 x0, 求切线与x轴交点坐标x1, 再求切线与x轴交点坐标x2,一直重复,直到f(xn) 与0的差距在一个极小的范围 ...
- 学习 27 门编程语言的长处,提升你的 Python 代码水平
Python猫注:Python 语言诞生 30 年了,如今的发展势头可谓如火如荼,这很大程度上得益于其易学易用的优秀设计,而不可否认的是,Python 从其它语言中偷师了不少.本文作者是一名资深的核心 ...
- 一个 11 行 Python 代码实现的神经网络
一个 11 行 Python 代码实现的神经网络 2015/12/02 · 实践项目 · 15 评论· 神经网络 分享到:18 本文由 伯乐在线 - 耶鲁怕冷 翻译,Namco 校稿.未经许可,禁止转 ...
- 如何让你的Python代码更加pythonic ?
pythonic如果翻译成中文的话就是很python.很+名词结构的用法在中国不少. 以下为了简略,我们用P表示pythonic的写法,NP表示non-pythonic的写法,当然此P-NP非彼P-N ...
- 牛顿迭代法实现平方根函数sqrt
转自利用牛顿迭代法自己写平方根函数sqrt 给定一个正数a,不用库函数求其平方根. 设其平方根为x,则有x2=a,即x2-a=0.设函数f(x)= x2-a,则可得图示红色的函数曲线.在曲线上任取一点 ...
- Python 代码实现模糊查询
Python 代码实现模糊查询 1.导语: 模糊匹配可以算是现代编辑器(如 Eclipse 等各种 IDE)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列 ...
随机推荐
- 【数据库运维】数据库(server)的时区设置及世界主要地区的时区
[时区设置不当会有什么问题] 当进行海外项目运维的时候,常常会遇到时区设置的问题.假设时区设置不当 或者 同样项目的server之间的时区不一致,都会有导致项目的数据异常的风险. 假设数据表的字段使用 ...
- Sublime text设置快捷键让编写的HTML文件在打指定浏览器预览
作者:浪人链接:https://www.zhihu.com/question/27219231/answer/43608776来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...
- vue防抖节流函数---组件封装,防止按钮多次点击
1.vue 封装utils.js /** * @param {function} func 执行函数 * @param {number} time 防抖节流时间 * @param {boolean} ...
- JQ的简单使用(基础)——————JQ
JQ基础--JQ的简单使用 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /&g ...
- vue.js(13)--按键修饰符
v-on监听事件时可添加按键修饰符 <!-- 只有在 `key` 是 `Enter` 时调用 `vm.submit()` --> <input v-on:keyup.enter=&q ...
- jsp页面转换时间戳
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <fmt:fo ...
- Django 路由层与视图层
1.路由层 1.1无名分组 1.2 有名分组 1.3 反向解析 1.4 路由分发 1.5 名称空间 2.伪静态网页 3.虚拟环境 4.视图层 1.1 JsonResponse 1.2 FBV与CBV ...
- 搭建Keepalived+LNMP架构web动态博客 实现高可用与负载均衡
环境准备: 192.168.193.80 node1 192.168.193.81 node2 关闭防火墙 [root@node1 ~]# systemctl stop firewalld #两台都 ...
- 使用国外 DNS 造成国内网站访问慢的解决方法
本文原载于 wzyboy's blog,转载请注明本文地址: https://wzyboy.im/post/874.html ,谢谢合作. 为什么要用国外 DNS 由于众所周知的问题,国内 DNS 服 ...
- python tkinter画圆
x0=150 #圆心横坐标 y0=100 #圆心纵坐标 canvas.create_oval(x0-10,y0-10,x0+10,y0+10) #圆外矩形左上角与右下角坐标 canv ...