基于python开发实现数学中各种经典曲线的可视化

news2024/11/15 16:51:33

今天正好有点时间就想着把之前零星时间里面做的一点小东西整合一下梳理出来,本文的核心目的就是想要基于python来开发实现各种有趣的数学曲线的可视化展示。

笛卡尔心形线

笛卡尔心形线是一种二维平面曲线,由法国数学家笛卡尔在17世纪提出。它得名于其形状类似于传统的心形符号 ❤️。

笛卡尔心形线的方程可以表示为:

(x^2 + y^2 - 1)^3 - x^2 * y^3 = 0

其中,(x, y) 是心形线上的点坐标。这个方程使用了平方和立方项,使得曲线具有两个对称的凸起,并相互连接形成心形的外观。

这条曲线是一个典型的代数曲线,具有对称性和美学吸引力,因此经常用于表达爱、浪漫和情感的概念。它在数学绘图、图像处理、计算机图形学和艺术领域中经常被使用。

基于python的代码实现也是很简单的如下所示:

a = 1
theta = np.linspace(0, 2*np.pi, 1000)
r = a*(1 - np.cos(theta))
plt.axes(polar = True)
plt.plot(theta, r)
plt.show()

结果如下所示:

 玫瑰曲线

玫瑰曲线(Rose Curve),也称为罗塞特曲线(Roser Curves)或罗赛花曲线,是一类具有美丽花朵形状的极坐标曲线。它的方程通常由下式给出:

r = a * cos(nθ) 或 r = a * sin(nθ)

其中,r 和 θ 是极坐标系中的半径和角度,a 是常数,n 是指示螺旋节数的整数。

当 n 为奇数时,玫瑰曲线会产生具有 n 个花瓣的形状,而当 n 为偶数时,则会产生双倍数量的花瓣。参数 a 控制着曲线的大小。

玫瑰曲线在几何学和数学可视化中广泛使用,并因其优雅的外观而成为艺术、设计和装饰中的常见图案。通过改变参数 a 和 n 的值,可以得到不同形状和花瓣数量的玫瑰曲线。

以下是一个 Python 示例代码,用于绘制玫瑰曲线:

a = 1
theta = np.linspace(0, 2*np.pi, 1000)
r = a* np.sin(10*theta)
plt.axes(polar = True)
plt.plot(theta, r)
plt.show()

结果如下所示:

 阿基米德曲线

阿基米德曲线(Archimedean Spiral),也称为等距螺线,是一种由古希腊数学家阿基米德在公元前3世纪发现的曲线。它以阿基米德的名字命名,因为他对其性质和特点做出了研究。

阿基米德曲线的参数方程可以表示为:

x = r * cos(theta) y = r * sin(theta)

其中,(x, y) 是平面上的点坐标,r 是距离原点的半径,theta 是与 x 轴的夹角。

阿基米德曲线的特点是以恒定的速率延伸出去,并且每个圈的弧长相等

基于Python的代码实现如下所示:

a = 1
theta = np.linspace(0, 10*np.pi, 1000)
r = a * theta
plt.axes(polar = True)
plt.plot(theta, r)
plt.show()

结果如下所示:

 伯努利双纽线

伯努利双纽线(Bernoulli lemniscate),也称为伯努利曲线或双纽线曲线,是数学中的一个重要曲线。它由瑞士数学家雅各布·伯努利(Jacob Bernoulli)在1694年研究椭圆催化器问题时引入,并命名为"lemniscus",意为"ribbon"(带子)。伯努利双纽线的方程可以表示为:

(x^2 + y^2)^2 = a^2 * (x^2 - y^2)

其中,a是一个常数,决定了曲线的形状和大小。伯努利双纽线是一个对称的闭合曲线,形状类似于一个蝴蝶的翅膀,两个“纽”字形状的回路从原点开始并相交于 (0, 0)。

伯努利双纽线在数学与物理学领域中有许多应用,尤其在微积分、复变函数论和流体力学等领域经常出现。它还被广泛用于图形设计和艺术表达中,因其独特的外观而备受欣赏。

a = 1
theta = np.linspace(0, 2*np.pi, 1000)
r = np.sqrt(2*(a**2)*np.cos(2*theta))
plt.axes(polar = True)
plt.plot(theta, r)
plt.show()

结果如下所示:

 二项分布

二项分布曲线(Binomial distribution curve)是描述二项分布的概率分布曲线。二项分布是离散型概率分布,用于描述在一系列独立的、相同的随机试验中成功次数的概率分布情况。

二项分布曲线以两个参数来描述:试验的次数(n)和每次试验成功的概率(p)。它的概率质量函数可以表示为:

P(X = k) = C(n, k) * p^k * (1 - p)^(n-k)

其中,X 是成功次数,k 是取值范围内的一个特定值,C(n, k) 是组合数,等于 n! / (k!(n-k)!),p 是每次试验成功的概率,(1 - p) 是每次试验失败的概率。

二项分布曲线通常呈现出对称的钟形,其峰值出现在成功次数的期望值附近。随着试验次数增加,二项分布趋向于正态分布,这是由于中心极限定理的效应。

二项分布曲线在统计学和概率论中具有广泛的应用,特别是在重复进行二元决策或随机事件的实验中,例如硬币投掷、品质控制和调查研究等方面。该曲线可以帮助我们推断在给定概率下出现特定结果的可能性,并提供统计推断和决策依据。

mean,var,skew,kurt=binom.stats(n,p,moments='mvsk')
print(mean,var,skew,kurt)
#ppf:累积分布函数的反函数。q=0.01时,ppf就是p(X<x)=0.01时的x值。
x=np.arange(binom.ppf(0.01,n,p),binom.ppf(0.99,n,p))
ax.plot(x,binom.pmf(x,n,p),'o')
plt.rcParams['font.sans-serif']=['SimHei']
plt.title(u'二项分布概率质量函数')
plt.show()

结果图像如下所示:

 星形线

星形线(Astroid)是一种数学曲线,也被称为星形四叶草。它的名称来自于其形状类似于一个具有尖角和凹面的星星。

星形线的参数方程可以表示为:

x = a * cos^3(t) y = a * sin^3(t)

其中,t 是参数,a 是控制曲线大小的常数。

星形线具有对称性,且在原点处交汇。它们的形状紧凑且具有锐利的角度,这使得它们在几何学、数学和物理学等领域中具有一定的重要性。星形线经常出现在曲线绘图、图形设计和计算机生成图像等应用中,因为其美观而有吸引力的外观。

代码实现如下所示:

delta = 2/(2*num)
points1=np.zeros((2*(2*num+1),2),dtype=np.float64)
points=np.zeros(((2*num+1),2),dtype=np.float64)
for i in range(2*num+1):
    points[i,0] = -1.0+delta*i
    #points[i+2*num+1,0] = -1+delta*i
    points[i,1] = (1-(np.abs(-1+delta*i))**ntype)**(1./ntype)
    #points[i+2*num+1,1] = -(1-(np.abs(-1+delta*i))**ntype)**(1./ntype)
points1[:2*num+1,0]=points[:,0]
points1[2*num+1:,0] =points[:,0]
x=points[:,0]
y=points[:,1]
plt.clf()
plt.plot(x,y,color='b')
plt.plot(x,-1*y,color='b')
plt.show()

结果如下所示:

 心形曲线

心形曲线(Heart curve)是一种浪漫景象中常见的数学曲线,其轮廓形状类似于一个风格化的心形。它有多种方式可以表示,以下是其中一种常见的参数方程:

x = 16 * sin^3(t) y = 13 * cos(t) - 5 * cos(2t) - 2 * cos(3t) - cos(4t)

其中,t 是参数,x 和 y 分别表示心形曲线上点的横纵坐标。

心形曲线通常被视为爱、情感和浪漫的象征,因此在各种庆祝活动、情人节或表达爱意的场合中经常出现。它也在数学、图形设计和艺术创作中广泛应用,并成为人们传达深情意味和感情表达的图形符号之一。

python代码实现如下所示:

t = np.linspace(0 , 2 * np.pi, 1024)
X = a*(2*np.cos(t)-np.cos(2*t))
Y = a*(2*np.sin(t)-np.sin(2*t))
plt.plot(Y, X,color='r')
plt.show()

结果如下所示:

 

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

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

相关文章

基于springboot+Redis的前后端分离项目(三)-【黑马点评】

&#x1f381;&#x1f381;资源文件分享 链接&#xff1a;https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA?pwdeh11 提取码&#xff1a;eh11 优惠券秒杀 优惠券秒杀1 -全局唯一ID2 -Redis实现全局唯一Id3 添加优惠卷4 实现秒杀下单5 库存超卖问题分析6 优惠券秒杀-一人一单…

Spring Boot 异常处理的主要特点

Spring Boot 异常处理的主要特点 在 Web 应用程序中&#xff0c;异常处理是非常重要的一部分。在 Spring Boot 中&#xff0c;异常处理是非常简单和灵活的。本文将介绍 Spring Boot 异常处理的主要特点&#xff0c;并提供一些示例代码来帮助您更好地理解。 异常处理的主要特点…

王道计算机网络学习笔记(1)——计算机网络基本知识

前言 文章中的内容来自B站王道考研计算机网络课程&#xff0c;想要完整学习的可以到B站官方看完整版。 一&#xff1a;计算机网络基本知识 1.1.1&#xff1a;认识计算机网络 计算机网络的功能 网络把许多计算机连接在一起&#xff0c;而互联网则将许多网络连接在一起&#x…

第一章JavaScript简介

第一章JavaScript简介 js是一门,高级,动态,解释型编程语言 每种语言都必须有一个平台或标准库,用于执行包括基本输入和输出在内的基本操作.核心js语言定义了最小限度的API,可以操作数组,文本,数组,集合,映射等,但不包括任何输入输出的功能.输入和输出(以及更加复杂的特性,如联…

基于Servlet实现分页查询

Servlet JSPJSTL MySQLBootstrap 等技术实现分页查询功能。 所用工具&#xff1a;IDEA 2022.3.3 Navicat Tomcat 等。 本文目录 一&#xff1a;运行效果 二&#xff1a;代码详解 &#xff08;1&#xff09;index.jsp &#xff08;2&#xff09;PageBean &#xff08…

图解操作系统笔记

硬件基础 CPU是如何执行程序的&#xff1f; 程序执行的基本过程 第一步&#xff0c;CPU 读取「程序计数器」的值&#xff0c;这个值是指令的内存地址&#xff0c;然后 CPU 的「控制单元」操作「地址总线」指定需要访问的内存地址&#xff0c;接着通知内存设备准备数据&#…

python:并发编程(十七)

前言 本文将和大家一起探讨python并发编程的实际运用&#xff0c;会以一些我实际使用的案例&#xff0c;或者一些典型案例来分享。本文使用的案例是我实际使用的案例&#xff08;中篇&#xff09;&#xff0c;是基于之前效率不高的代码改写成并发编程的。让我们来看看改造的过…

excel数据的编排与整理——行列的批量处理

excel数据的编排与整理——行列的批量处理 1 一次性插入多行多列 1.1 插入连续行 1.1.0 题目内容 1.1.1 选中插入的位置➡按住shift键➡往下选中2行 1.1.2 鼠标右击➡点击插入 1.1.3 插入后的效果 1.2 插入不连续行 1.2.0 题目内容 1.2.1 按下ctrl键➡选中插入的位置,需要插…

7.4_1B树(二序查找树BST的升级版)

如果需要查找的值比节点小&#xff0c;会向左子树方向查找&#xff0c;如果比节点值大&#xff0c;会向右子树方向查找 拓展为5叉的形态 5叉排序树的定义 num是这个节点中真实存在的节点个数 那么一个节点中 最少有1个关键字&#xff0c;两个分叉 最多有4个关键字&#xff0c…

数据结构:二叉树详解

目录 概念&#xff08;在做习题中常用的概念&#xff09; 两种特殊的二叉树 二叉树的性质 二叉树的遍历&#xff08;重点&#xff09; 如上图&#xff1a; 二叉树的构建&#xff08;代码表示一颗二叉树和一些操作二叉树的方法&#xff09; 二叉树的oj习题讲解&#xff0…

代码审计-Java项目Filter过滤器CNVD分析XSS跨站框架安全

文章目录 Demo-Filter-过滤器引用Demo-ST2框架-组件安全CNVD-Jeesns-XSS跨站绕过CNVD-悟空CRM-Fastjson组件 Demo-Filter-过滤器引用 Filter&#xff1a;Javaweb三大组件之一(另外两个是Servlet、Listener) 概念&#xff1a;Web中的过滤器&#xff0c;当访问服务器的资源时&am…

编程语言的优劣评选标准与未来发展趋势——探索最佳编程语言选择

编程语言的优劣评选标准与未来发展趋势——探索最佳编程语言选择 评判标准不同编程语言的优点与缺点分析对编程语言未来发展的猜测和未来趋势 &#x1f495; &#x1f495; &#x1f495; 博主个人主页&#xff1a; 汴京城下君–野生程序员&#x1f495; &#x1f495; &#x…

编程输出三位数的水仙花数

目录 题目 分析思路 代码 题目 编程输出三位数的水仙花数 标准的 水仙花数 就是三位数&#xff0c;即将三位数的个位&#xff1b;十位&#xff1b;百位取出来&#xff0c;分别三次方相加&#xff0c;若个位&#xff1b;十位&#xff1b;百位三次方相加与原来的三位数相等&a…

模拟电路系列文章-频率响应的描述

目录 概要 整体架构流程 技术名词解释 技术细节 1.为什么受频率的影响 2.频率响应 小结 概要 提示&#xff1a;这里可以添加技术概要 电容和电感是储能元件&#xff0c;对不同频率的交流信号&#xff0c;它们具有不同的感抗或者容抗。虽然它们不消耗功率&#xff0c;但同电阻一…

【PHP】文件写入和读取详解

一&#xff0e;实现文件读取和写入的基本思路&#xff1a; 1&#xff0e;通过fopen方法打开文件&#xff1a;$fp fopen(/*参数&#xff0c;参数*/)&#xff0c;fp为Resource类型 2&#xff0e;进行文件读取或者文件写入操作&#xff08;这里使用的函数以1中返回的$fp作为参数…

Python网络爬虫基础进阶到实战教程

文章目录 认识网络爬虫HTML页面组成Requests模块get请求与实战效果图代码解析 Post请求与实战代码解析 发送JSON格式的POST请求使用代理服务器发送POST请求发送带文件的POST请求 Xpath解析XPath语法的规则集&#xff1a;XPath解析的代码案例及其详细讲解&#xff1a;使用XPath解…

macOS Sonoma 14 beta 2 (23A5276g) ISO、IPSW、PKG 下载

macOS Sonoma 14 beta 2 (23A5276g) ISO、IPSW、PKG 下载 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Windows 和 Linu…

【致敬未来的攻城狮计划】打卡2:keil 程序下载尝试

下载 终于考完试了&#xff0c;然而攻城狮的截止期限也快到了QAQ&#xff0c;得尽快水&#xff08;划掉&#xff09;写几篇文章了&#xff01; 先争取可以成功下载一个空的程序。 先对上一篇文章下载 DFP 也就是 keil MDK Software Packs 做一个补充。我们要下载的是 RA_DFP…

[进阶]TCP通信综合案例:群聊

代码演示如下&#xff1a; 客户端&#xff1a; public class Client {public static void main(String[] args) throws Exception{System.out.println("客户端开启&#xff01;");//1.创建Socket对象&#xff0c;并同时请求与服务端程序的连接。Socket socket new…

网线制作实验

计算机网络综合实训 网线制作 所在院系 计算机与信息工程学院 学科专业名称 计算机科学与技术 导师及职称 柯宗武 教授 提交时间 2023.4.30 计算机网络综合实训报告 一、实验目的 1、掌握三类UTP线缆的制作和测试方法 2、了解三类UTP线缆的作用及布线方式 二、实验内容 1、局…