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

Mathematica中的ResourceFunction

在Mathematica中,ResourceFunction 的作用是访问并调用 Wolfram Function Repository(Wolfram 函数仓库)中用户或官方贡献的预定义函数。

这里给出两个使用案例:MortonCurve和LevyCCurve。

MortonCurve

和Peano曲线和Sierpinski曲线一样,MortonCurve也是一种平面填充曲线,不过填充曲线为‘Z’-型线。

ResourceFunction["MortonCurve"][n] gives the line segments representing the nth-step Morton (z-order) curve.

在实际使用中,我们可以将ResourceFunction["MortonCurve"]定义为一个新的函数,然后像调用PeanoCurve一样,调用这个函数。

使用如下代码:

可以看到如下对比图:

也可以指定坐标范围:

Graphics[mortonC[3, DataRange -> {{0, 1}, {0, 1}}], PlotRange -> 2, Axes -> True]

和Peano曲线一样,也可以做曲线的参数化:

BSplineFunction[mortonC[3, DataRange -> {{-1, 1}, {-1, 1}}][[1]], SplineDegree -> 1]; ParametricPlot[%[t], {t, 0, 1}, PlotPoints -> 400]

也可以使用如下方式:

Graphics[{Thickness[Large], mortonC[3] /. Line -> BSplineCurve}]

有了参数化之后,可以感测曲线的填充平面过程:

tempFunc00 = BSplineFunction[mortonC[6, DataRange -> {{-1, 1}, {-1, 1}}][[1]], SplineDegree -> 1]; Animate[ParametricPlot[tempFunc00[t], {t, 0, n}, PlotPoints -> 400, PlotRange -> {{-1, 1}, {-1, 1}}], {n, 0.01, 1, 0.01}]

也可以使用如下方式来观察:

With[{curve = mortonC[6]}, Manipulate[ Graphics[{curve, Red, Thick, Line[Take[First[curve], i]]}, ImageSize -> Medium], {i, 1, 4096, 1}, SaveDefinitions -> True]]

LevyCCurve

Levy C 曲线的调用语法为:

ResourceFunction["LevyCCurve"][n] generates the line segments of the Lévy C curve with n iterations. equivalent to ResourceFunction["LevyCCurve"][{{-1,0},{1,0}},n].

基本使用方法,和MortonCurve一样:

使用代码:

GraphicsGrid[ { {Graphics[levyC[2]], Graphics[levyC[3]]}, {Graphics[levyC[4]], Graphics[levyC[5]]} } ]

可以看到对比图:

从图中可以看到:Levy C曲线,有自交。因此,不能使用BSplineFunction进行参数化。

这里提供两个比较有意思的案例,来自于官方文档的。

Graphics[{ResourceFunction["LevyCCurve"][ Line[{{0, 0}, {0, 1}, {1, 1}, {1, 0}, {0, 0}}], 10], ResourceFunction["LevyCCurve"][ Line[Reverse@{{3, 0}, {3, 1}, {4, 1}, {4, 0}, {3, 0}}], 10]}]

pts = First@levyC[10]; colors = Blend[{Red, Blue, Green, Orange}, #] & /@ Subdivide[Length[pts] - 1]; Graphics[Line[pts, VertexColors -> colors]]

http://www.xdnf.cn/news/302869.html

相关文章:

  • Oracle中游标和集合的定义查询及取值
  • 使用 git subtree 方法将六个项目合并到一个仓库并保留提交记录
  • Python Cookbook-7.4 对类和实例使用 cPickle 模块
  • 家庭宽带IP与IDC机房IP
  • 第100+40步 ChatGPT学习:R语言实现多轮建模
  • 用 Tailwind CSS 优化你的 Vue 3 项目! ! !
  • MySQL从入门到精通(一):MySQL介绍及数据库相关概念
  • 高级java每日一道面试题-2025年5月02日-基础篇[反射篇-编码]-使用反射,获取Class对象
  • WPF MVVM入门系列教程(五、命令和用户输入)
  • 如何使用vmstat 和 free 查看内存碎片化信息?
  • Qwen3与Deepseek R1对比(截止20250506)
  • C++ - 仿 RabbitMQ 实现消息队列(1)(环境搭建)
  • 典籍知识问答模块AI问答功能feedbackBug修改+添加对话名称修改功能
  • MySQL基础关键_009_DDL 和 DML(二)
  • vue源代码采用的设计模式分解
  • Hive优化秘籍:大数据处理加速之道
  • Excel 数据 可视化 + 自动化!Excel 对比软件
  • Excel Vlookup
  • Tomcat中Web应用程序停止时为了防止内存泄漏,JDBC驱动程序被强制取消注册出现原因
  • 荣耀A8互动娱乐组件部署实录(终章:后台配置系统与整体架构总结)
  • 链表的面试题2反转单链表
  • 第三章:langchain加载word文档构建RAG检索教程(基于FAISS库为例)
  • 5.6 react组件化开发基础
  • Elasticsearch知识汇总之ElasticSearch部署
  • conda 环境克隆
  • ϵ-prediction和z0-prediction是什么意思
  • 关于EIDE中debug的使用问题
  • 如何打造一个高并发系统?
  • linux redis 设置密码以及redis拓展
  • ROS2:话题通信CPP语法速记