当前位置: 首页 > news >正文

在Mathematica中实现Newton-Raphson迭代的收敛时间算法

对于给定的比较简单的三次多项式,可以使用FixedPoint直接给出不动点,进而在一定程度上回答Cayley问题。但是这里不能够给出收敛速度。作为类比,这里的收敛速度,类似于绘制Mandelbrot集合的逃逸时间,可以用来对图形进行染色。

收敛时间算法:对于给定的一个点,将计数以此点为初始点的迭代收敛速度,并将相应的计数划分为从0到255的三个等分区间中。

NewtonCounter = Compile[{{z, _Complex}},Module[{counter = 0, zold = N[z] + 1.0, znew = N[z]},If[Abs[znew] < 10^(-9), znew = 10^(-9) + 0.0*I, znew = znew];For[counter = 0,(Abs[zold - znew] > 10^(-6)) && (counter < 85), counter++,(zold = znew; znew = 2*zold/3 + 1/(3*zold^2))];Which[Abs[znew - 1] < 10^(-4), counter,Abs[znew + 0.5 - 0.866025 I] < 10^(-4), 85 + counter,Abs[znew + 0.5 + 0.866025 I] < 10^(-4), 170 + counter,True, 255]]];

使用函数NewtonCounter,对于平面中的某个区域,可以构造一个数表:

NewtonArray1[{{remin_, remax_}, {immin_, immax_}}, steps_] :=Table[NewtonCounter[x + y I],{y, immin, immax, (immax - immin)/steps},{x, remin, remax, (remax - remin)/steps}]

这样,就可使用ListDenstiyPlot函数进行绘图了:

region1 = NewtonArray1[{{-2, 2}, {-2, 2}}, 1000]; ListDensityPlot[region1]

http://www.lqws.cn/news/138295.html

相关文章:

  • gitlab rss订阅失败
  • video-audio-extractor:视频转换为音频
  • 什么是分布式锁?几种分布式锁分别是怎么实现的?
  • 优化技巧--滑动窗口
  • Golang——7、包与接口详解
  • c++第6天--运算符重载
  • return this;返回的是谁
  • 散货拼柜业务:多货主财务结算如何高效管理?
  • machine_env_loader must have been assigned before creating ssh child instance
  • 开源模型应用落地-OpenAI Agents SDK-集成Qwen3-8B-function_tool(二)
  • 【HarmonyOS 5】游戏开发教程
  • C++初阶 | 模板
  • 《复制粘贴的奇迹:小明的原型工厂》
  • 人工智能:网络安全的“智能守护者”
  • 驱动:字符设备驱动注册、读写实操
  • Visual Studio C++ 调试日志与异常定位指南
  • Spring BeanPostProcessor
  • 大数据学习(130)-zookeeper
  • 深度解析ArrayList
  • LLM:Scaling Law
  • java判断一个字符串(如 str1)是否在给定的一组字符串
  • el-table 树形数据,子行数据可以异步加载
  • Vue指令修饰符、v-bind对样式控制的增强、computed计算属性、watch监视器
  • Deepfashion2 数据集使用笔记
  • MyBatis-Plus LambdaQuery 高级用法:JSON 路径查询与条件拼接的全场景解析
  • sqli-labs靶场38-45关(堆叠注入)
  • 2025年五一数学建模竞赛A题-支路车流量推测问题详细建模与源代码编写(一)
  • fmod产生的误差应该如何解决?
  • Android studio初体验
  • yoloe优化:可支持点提示进行检测分割