【编程实践】使用matlab求椭圆弧长
创始人
2024-06-03 16:00:00
0

1 椭圆的表达式

Standard equation:
x2a2+y2b2=1\frac{x^2}{a^2}+\frac{y^2} {b^2}=1 a2x2​+b2y2​=1
Parametric equation:
x=acosαy=bsinα\begin{align*} x=acos\alpha \\y=bsin\alpha \end{align*}x=acosαy=bsinα​
General form equation:
Ax2+Bxy+Cy2+Dx+Ey+F=0Ax^2+Bxy+Cy^2+Dx+Ey+F=0Ax2+Bxy+Cy2+Dx+Ey+F=0
thereinto

A=a2sin2θ+b2cos2θB=2(b2−a2)sinθcosθC=a2cos2θ+b2sin2θD=−2Ax0−By0E=−Bx0−2Cy0F=−12(Dx0+Ey0)−a2b2\begin{align*} A = a^2sin^2\theta+b^2cos^2\theta \\B=2(b^2-a^2) sin\theta cos\theta \\C=a^2cos^2\theta +b^2sin^2\theta \\D=-2Ax_0-By_0 \\E=-Bx_0-2Cy_0 \\F=-\frac{1}{2}(Dx_0+Ey_0)-a^2b^2 \end{align*}A=a2sin2θ+b2cos2θB=2(b2−a2)sinθcosθC=a2cos2θ+b2sin2θD=−2Ax0​−By0​E=−Bx0​−2Cy0​F=−21​(Dx0​+Ey0​)−a2b2​
x0,y0x_0,y_0x0​,y0​为椭圆圆心坐标,a,ba,ba,b分别为椭圆的长短半轴,θ\thetaθ为长半轴与x轴的夹角。

2 椭圆的弧长计算理论公式

l=a∫θ1θ21−e2sin2θ,θ1,θ2∈[0,π2]l=a\int_{\theta_1}^{\theta_2}\sqrt{1-e^2sin^2\theta} ,\theta_1,\theta_2\in[0,\frac{\pi}{2}]l=a∫θ1​θ2​​1−e2sin2θ​,θ1​,θ2​∈[0,2π​]
thereinto, e=1−b2a2e=\sqrt{1-\frac{b^2}{a^2}}e=1−a2b2​​. Here, the angle we talk about is in the first quadrant.

C=4lC=4lC=4l
Using the Taylor series expansion, the circumference of the ellipse is
C≈π(a+b)C\approx\pi(a+b) C≈π(a+b)

3 以具体案例计算

x232+y222=1\frac{x^2}{3^2}+\frac{y^2}{2^2}=132x2​+22y2​=1

// 参数方程
theta = 0:0.01:2*pi %起止角度和步长
X = 3*cos(theta)
Y = 2*sin(theta)
plot(X,Y)

绘图输出显示🦢:
在这里插入图片描述

// 标准形式
theta = 0:0.01:2*pi
f =@(X,Y)X.^2/9+Y.^2/4-1
plot(X,Y)

绘图输出显示🦏:
在这里插入图片描述

// An highlighted block% 参数设定
a = 3
b = 2
e = sqrt(1-b^2/a^2)theta_1 = 0 %起始角度
theta_2 = pi/2 %终止角度
theta_x = theta_1:0.01:theta_2 % 被积区间y= a * sqrt(1-e.^2*sin(theta_x).^2) % 直接以被积函数声明
syms theta_vx
y2=@(theta_vx)a * sqrt(1-e.^2*sin(theta_vx).^2) % 匿名函数,被积函数句柄trapz(theta_x,y) % 梯度积分,trapz(X,Y)根据X指定的坐标或标量间距对Y进行积分,因椭圆第一象限曲线为凸曲线,则梯度法计算结果略小于精确值
quadgk(y2,theta_1,theta_2) % 高斯-勒让德积分,使用高阶全局自适应积分和默认误差容限在区间内对函数句柄求积分
integral(y2,theta_1,theta_2) % 数值积分,使用全局自适应积分和模型误差容限在区间内以数值形式为函数求积分

运行结果🐳:
在这里插入图片描述
另,[0,π2][0, \frac{\pi}{2}][0,2π​]区间四分之一椭圆弧长不精确计算结果:
ans=π∗(a+b)/4=3.1415∗(2+3)/4=3.9268ans=\pi*(a+b)/4=3.1415*(2+3)/4=3.9268ans=π∗(a+b)/4=3.1415∗(2+3)/4=3.9268

相同角度范围,椭圆弧长结果对比:
----------🌴----------[π4,π2][\frac{\pi}{4},\frac{\pi}{2}][4π​,2π​]间距下,

----------🌴----------[0,π4][0,\frac{\pi}{4}][0,4π​]间距下,
在这里插入图片描述

相关内容

热门资讯

122.(leaflet篇)l... 听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行...
育碧GDC2018程序化大世界... 1.传统手动绘制森林的问题 采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这...
育碧GDC2018程序化大世界... 1.传统手动绘制森林的问题 采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这...
Vue使用pdf-lib为文件... 之前也写过两篇预览pdf的,但是没有加水印,这是链接:Vu...
PyQt5数据库开发1 4.1... 文章目录 前言 步骤/方法 1 使用windows身份登录 2 启用混合登录模式 3 允许远程连接服...
Android studio ... 解决 Android studio 出现“The emulator process for AVD ...
Linux基础命令大全(上) ♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维...
再谈解决“因为文件包含病毒或潜... 前面出了一篇博文专门来解决“因为文件包含病毒或潜在的垃圾软件”的问题,其中第二种方法有...
南京邮电大学通达学院2023c... 题目展示 一.问题描述 实验题目1 定义一个学生类,其中包括如下内容: (1)私有数据成员 ①年龄 ...
PageObject 六大原则 PageObject六大原则: 1.封装服务的方法 2.不要暴露页面的细节 3.通过r...
【Linux网络编程】01:S... Socket多进程 OVERVIEWSocket多进程1.Server2.Client3.bug&...
数据结构刷题(二十五):122... 1.122. 买卖股票的最佳时机 II思路:贪心。把利润分解为每天为单位的维度,然后收...
浏览器事件循环 事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间࿰...
8个免费图片/照片压缩工具帮您... 继续查看一些最好的图像压缩工具,以提升用户体验和存储空间以及网站使用支持。 无数图像压...
计算机二级Python备考(2... 目录  一、选择题 1.在Python语言中: 2.知识点 二、基本操作题 1. j...
端电压 相电压 线电压 记得刚接触矢量控制的时候,拿到板子,就赶紧去测各种波形,结...
如何使用Python检测和识别... 车牌检测与识别技术用途广泛,可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计...
带环链表详解 目录 一、什么是环形链表 二、判断是否为环形链表 2.1 具体题目 2.2 具体思路 2.3 思路的...
【C语言进阶:刨根究底字符串函... 本节重点内容: 深入理解strcpy函数的使用学会strcpy函数的模拟实现⚡strc...
Django web开发(一)... 文章目录前端开发1.快速开发网站2.标签2.1 编码2.2 title2.3 标题2.4 div和s...