1.3求根之牛顿迭代法

目录

  • 目录
  • 前言
  • (一)牛顿迭代法的分析
    • 1.定义
    • 2.条件
    • 3.思想
    • 4.误差
  • (二)代码实现
    • 1.算法流程图
    • 2.源代码
  • (三)案例演示
    • 1.求解:\(f(x)=x^3-x-1=0\)
    • 2.求解:\(f(x)=x^2-115=0\)
    • 3.求解:\(f(x)=x^3-x^2-x+1\)
    • 4.求解:\(f(x)=x^4-4x^2+4=0\)

目录

前言

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

(一)牛顿迭代法的分析

1.定义

迭代公式如下:
\[ x_{k+1} = x_k-\frac{f(x_k)}{f\prime(x_k)} (k=0,1,2...) \]
迭代函数是:
\[ \varphi(x) = x_k-\frac{f(x_k)}{f\prime(x_k)} \]
由于$ \varphi(x)= x_k-\frac{f(x_k)}{f\prime(x_k)}$ 与原方程\(f(x)=0\) 等价。

\(k\rightarrow \infty\) 时,\(x_k\)就是\(f(x)=0\)的近似解。

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

2.条件

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

  2. f(x)在局部收敛,当\(f(x) \times f\prime\prime(x)>0\)时,局部收敛。

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

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

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, ) * countresult = 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 resultelif "e" in r:dian = r.index("e")size = int(r[dian+2:])result = round(x, size)return resultelse:result = round(x, 0)return result

牛顿迭代法

"""牛顿迭代法,迭代的思想,不断逼近。
"""
# 求导数需要的库
import sympy as sp
from my_math.func_math import feval, flaot_numdef 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 = Noneelse:x1 = feval(y, x0)x2 = feval(y, x1)while abs(x2-x1) > r:x1 = feval(y, x2)x2 = feval(y, x1)k += 1print("次数:", k)print("x1:", x1)print("x2:", x2)result = flaot_num(x2, r)print("=" * 30)print("原始的数据是", x2)print("最后的结果是:", result)return resultif __name__ == '__main__':new_fun("x**4-4*x**2+4", 2, 10**-5)

(三)案例演示

1.求解:\(f(x)=x^3-x-1=0\)

误差:10^-5

图像分析(来确定初值)

01.png

02.png

取在1.5为初始值

运行结果:

03.png

2.求解:\(f(x)=x^2-115=0\)

误差:10^-5

图像分析(来确定初值)

04.png

05.png

取11为初始值。

运行结果:

06.png

3.求解:\(f(x)=x^3-x^2-x+1\)

误差:10^-5

图像分析(来确定初值)

07.png

08.png

取初始值为:1.6

运行结果:

09.png

4.求解:\(f(x)=x^4-4x^2+4=0\)

图像分析(来确定初值)

10.png

11.png

取初值是:0

运行结果:

12.png

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

运行结果:

13.png

作者:Mark

日期:2019/02/19 周二

转载于:https://www.cnblogs.com/zyg123/p/10400543.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

libzbar.a armv7

杨航最近在学IOS&#xfeff;&#xfeff; http://download.csdn.net/download/lzwxyz/5546365 我现在用的是这个&#xff1a;http://www.federicocappelli.net/2012/10/05/zbar-library-for-iphone-5-armv7s/ 点它的HERE开始下载 下载的libzbar.a库&#xff0c;如何查看 …

Alex Hanna博士:Google道德AI小组研究员

Alex Hanna博士是社会学家和研究科学家&#xff0c;致力于Google的机器学习公平性和道德AI。 (Dr. Alex Hanna is a sociologist and research scientist working on machine learning fairness and ethical AI at Google.) Before that, she was an Assistant Professor at th…

三位对我影响最深的老师

我感觉&#xff0c;教过我的老师们&#xff0c;不论他们技术的好坏对我都是有些许影响的。但是让人印象最深的好像只有寥寥几位。 第一位就是小学六年级下册教过我的语文老师。他是临时从一个贫困小学调任过来的&#xff0c;不怎么管班级&#xff0c;班里同学都在背地里说他不会…

安全开发 | 如何让Django框架中的CSRF_Token的值每次请求都不一样

前言 用过Django 进行开发的同学都知道&#xff0c;Django框架天然支持对CSRF攻击的防护&#xff0c;因为其内置了一个名为CsrfViewMiddleware的中间件&#xff0c;其基于Cookie方式的防护原理&#xff0c;相比基于session的方式&#xff0c;更适合目前前后端分离的业务场景&am…

UNITY3D 脑袋顶血顶名

&#xfeff;&#xfeff;杨航最近在学Unity3D&#xfeff;&#xfeff; using UnityEngine; using System.Collections; public class NPC : MonoBehaviour { //主摄像机对象 public Camera camera; //NPC名称 private string name "我是doud…

一个项目的整个测试流程

最近一直在进行接口自动化的测试工作&#xff0c;同时对于一个项目的整个测试流程进行了梳理&#xff0c;希望能对你有用~~~ 需求分析&#xff1a; 整体流程图&#xff1a; 需求提取 -> 需求分析 -> 需求评审 -> 更新后的测试需求跟踪xmind 分析流程&#xff1a; 1. 需…

python度量学习_Python的差异度量

python度量学习Hi folks, welcome back to my new edition of the blog, thank you so much for your love and support, I hope you all are doing well. In today’s learning, we will try to understand about variance and the measures involved in it. Although the blo…

多个摄像机之间的切换

杨航最近在学Unity3D&#xfeff;&#xfeff; Unity3D入门 第捌章: 多个摄像机之间的切换 内容描述&#xff1a;这章&#xff0c;我们来学习一下同个场景中多个摄像机怎么切换。 接着我们创建一个空对象 GameObject -> Create Empty 命名为CamearController&#xff0…

Kubernetes的共享GPU集群调度

问题背景 全球主要的容器集群服务厂商的Kubernetes服务都提供了Nvidia GPU容器调度能力&#xff0c;但是通常都是将一个GPU卡分配给一个容器。这可以实现比较好的隔离性&#xff0c;确保使用GPU的应用不会被其他应用影响&#xff1b;对于深度学习模型训练的场景非常适合&#x…

django-celery定时任务以及异步任务and服务器部署并且运行全部过程

Celery 应用Celery之前&#xff0c;我想大家都已经了解了&#xff0c;什么是Celery&#xff0c;Celery可以做什么&#xff0c;等等一些关于Celery的问题&#xff0c;在这里我就不一一解释了。 应用之前&#xff0c;要确保环境中添加了Celery包。 pip install celery pip instal…

网页视频15分钟自动暂停_在15分钟内学习网页爬取

网页视频15分钟自动暂停什么是网页抓取&#xff1f; (What is Web Scraping?) Web scraping, also known as web data extraction, is the process of retrieving or “scraping” data from a website. This information is collected and then exported into a format that …

Unity3D面试ABC

Unity3D面试ABC 杨航最近在学Unity3D&#xfeff;&#xfeff; 最先执行的方法是&#xff1a; 1、&#xff08;激活时的初始化代码&#xff09;Awake&#xff0c;2、Start、3、Update【FixUpdate、LateUpdate】、4、&#xff08;渲染模块&#xff09;OnGUI、5、再向后&#xff…

前嗅ForeSpider教程:创建模板

今天&#xff0c;小编为大家带来的教程是&#xff1a;如何在前嗅ForeSpider中创建模板。主要内容有&#xff1a;模板的概念&#xff0c;模板的配置方式&#xff0c;模板的高级选项&#xff0c;具体内容如下&#xff1a; 一&#xff0c;模板的概念 模板列表的层级相当于网页跳转…

2.PHP利用PDO连接方式连接mysql数据库

代码如下 <?php$serverName "这里填IP地址";$dbName "这里填数据库名";$userName "这里填用户名&#xff08;默认为root&#xff09;";$password "";/*密码默认不用填*/try { $conn new PDO("mysql:host$serverName;…

django 性能优化_优化Django管理员

django 性能优化Managing data from the Django administration interface should be fast and easy, especially when we have a lot of data to manage.从Django管理界面管理数据应该快速简便&#xff0c;尤其是当我们要管理大量数据时。 To improve that process and to ma…

3D场景中选取场景中的物体。

杨航最近在学Unity3D&#xfeff;&#xfeff;&#xfeff;&#xfeff;在一些经典的游戏中&#xff0c;需要玩家在一个3D场景中选取场景中的物体。例如《仙剑奇侠传》&#xff0c;选择要攻击的敌人时、为我方角色增加血量、为我方角色添加状态&#xff0c;通常我们使用鼠标来选…

xpath之string(.)方法

from lxml import etreehtml <li class"tag_1">需要的内容1<a>需要的内容2</a></li> selector etree.HTML(html ) contents selector.xpath ( //li[class "tag_1"]) contents1 selector.xpath ( //li[class "tag…

循环语句

循环语句&#xff1a; 当我们要做一些重复的操作时&#xff0c;首先想到的是有没有一种循环的语句&#xff1f; 答案当然有 Java提供了三种循环&#xff1a; for循环&#xff0c;在Java5中引入了一种主要用于数组的增强型for循环。while循环do……while循环for循环语法1&#x…

canva怎么使用_使用Canva进行数据可视化项目的4个主要好处

canva怎么使用(Notes: All opinions are my own. I am not affiliated with Canva in any way)(注意&#xff1a;所有观点均为我自己。我与Canva毫无关系) Canva is a very popular design platform that I thought I would never use to create the deliverable for a Data V…

如何利用Shader来渲染游戏中的3D角色

杨航最近在学Unity3D&#xfeff;&#xfeff; 本文主要介绍一下如何利用Shader来渲染游戏中的3D角色&#xff0c;以及如何利用Unity提供的Surface Shader来书写自定义Shader。 一、从Shader开始 1、通过Assets->Create->Shader来创建一个默认的Shader&#xff0c;并取名…