修正牛顿法编程python_GitHub - Maples7/newtonMethod: 牛顿法求解复数域上x^4-1=0收敛域的程序 using Python...

本文介绍了使用Python编程实现牛顿法解决复数域上的非线性方程x^4-1=0的收敛域。程序通过迭代判断收敛条件,包括最大迭代次数、值间距离精度和函数值精度。通过在复平面上绘制收敛域,观察到其自相似的神奇图案,展示了自然和宇宙的奇妙。程序选用Python作为实现语言,利用matplotlib库进行图形绘制。
摘要由CSDN通过智能技术生成

newtonMethod

牛顿法求解复数域上x^4-1=0收敛域的程序 using Python

[总体分析]

1、牛顿法本质上是关于迭代求解非线性方程解的方法,而迭代是为了不断逼近精确解。牛顿法迭代的关键在于对非线性函数(方程)的线性化。它是一种近似求解的方法,关于其原理不再赘述。

2、求解收敛域,程序的关键在于如何判断对于给定的初值,是收敛的还是发散的。如果收敛,收敛于哪个解。

3、经过综合考量程序性能和解的正确性,同时根据牛顿法在收敛域内能以平方量级快速收敛的特点,确定程序中牛顿法退出迭代的限制条件为:①最大迭代次数限制(判定为发散);②迭代值之间距离精度限制(收敛);③函数值精度限制(收敛)。

4、通过枚举一定范围内的点,来绘制出收敛域。

5、同时需要注意一些特殊情况,比如在运用迭代时,分母为0的情况。

[编程语言与环境]

C/C++/C#/Java等编译型语言:由于编译型语言对变量类型限制严格(在编译之前必需确定变量类型),容易让程序员花费过多精力纠结于程序实现细节而忽略问题本身的分析,为了提高效率,不采用;

MALTAB:解释型语言,不支持面向对象,抽象程序高,函数库强大。但同时正式因为其极高的抽象程度,致使程序运行速度偏低,可能增高程序调试成本;且网络上有关于此题的MATLAB版本,挑战不大。

Python:解释型语言,支持面向对象,抽象程序略低于MATLAB(但一般认为比C++/Java高,理论上比MATLAB运行速度快),并且有类似于MATLAB的支持图形绘制的成熟函数库(matplotlib),是一个均衡的不错的选择。

IDE:VS 2013

Python Version:Python 2.7.6(需要安装matplotlib库)

程序的关键部分便是newtonMethod函数部分,主体部分通过一个二重循环枚举一定范围内的每一个点,并且通过对其施用牛顿法后的返回值来确定其是收敛还是发散。如果是收敛,同时返回其收敛于的值。

其他函数和代码块程序中均有详细注解。

[总结与感悟]

通过在复平面上画出收敛域,发现其收敛域在着色之后是一个不断细分自相似的神奇图案,它并没有确切的边界(边界处是不断细分的自相似)。如果提高精度一定可以看到更加精细的结果。

通过这个程序做出来的图案,可以深切的体会的自然和宇宙的奇妙和伟大。简单中蕴含着复杂,而往往自然又能轻易的化繁为简。

宇宙和原子结构的相似性似乎是这种自相似性最好的佐证。

近似随机的结果可以在无随机的确定性系统中产生

上述这句话似乎冥冥中昭示着宇宙的真理。从量子力学的发展,测不准原理、薛定谔的猫、蝴蝶效应等等有意思的发现都可以窥见一二。世界是概率的,每一件事情发生都有其概率性,而事物的相互作用会改变其发生的概率。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值