作者:张朵荔 · 更新日期:2026-08-10
在MATLAB中绘制八字图形(即数学中的双纽线或伯努利双纽线)可以通过参数方程或 🐯 隐 🕊 函数方程实现以。下是两种常用的方法:
方法1:使用参数方程绘 🐠 制 🌷 双纽线
双纽线 🕷 的参数方程 🦋 为:
\[x = a \sqrt{2} \cos(t) / (\sin^2(t) + 1), \quad y = a \sqrt{2} \cos(t) \sin(t) / (\sin^2(t) + 1)
\]其中 \( a \) 控 🐧 制图 🐅 形大小 🐝 ,\( t \in [0, 2\pi] \)。
MATLAB代码示 🦅 例 🐯 :
matlab
a = 2; % 缩放 ☘ 因子 🍀
t = linspace(0, 2pi, 1000); % 参 🐧 t数的范围 🐳
x = a sqrt(2) cos(t) ./ (sin(t).^2 + 1);
y = a sqrt(2) cos(t) . sin(t) ./ (sin(t).^2 + 1);
plot(x, y, 'r', 'LineWidth', 2);
axis equal;
title('双纽线(八 🐞 字 🐯 图 🌴 形)');
grid on;
方法 🐡 2:使 🌻 用隐函数方程绘制
双 🌺 纽线的隐 🦆 函数方程为:
\[(x^2 + y^2)^2 = 2a^2(x^2 y^2)
\]可以 🦅 通过 `ezplot` 或 `fimplicit` 直接绘制。
MATLAB代 🌴 码 🐟 示 🐒 例:
matlab
a = 2;
f = @(x,y) (x.^2 + y.^2).^2 2a^2(x.^2 y.^2);
fimplicit(f, [3, 3], 'LineWidth', 2); % 调 🦊 整范 🐶 围[3,3]使图形完整
axis equal;
title('隐函数 🐈 绘 🌾 制的双纽 🌻 线');
grid on;
方 🐕 法 🌿 3:极坐标方程绘制
双 🌻 纽线的极坐标 🦉 方程为:
\[r^2 = 2a^2 \cos(2\theta)
\]使 🐴 用 🌿 `polarplot` 绘制:
matlab
a = 2;
theta = linspace(0, 2pi, 1000);
r = a sqrt(2 abs(cos(2theta))); % 注意 🐛 绝对值 🦍 保证实 🌾 数解
polarplot(theta, r, 'LineWidth', 2);
title('极坐标 🌵 下 🐈 的双纽线');
注意 🦍 事 🌴 项 🐴 :
1. 隐函数方法可能需要调整绘图范围(如 `[3,3]`)以确保图形 🦅 完整。
2. 极 🌹 坐标方法 🐒 中 `cos(2θ)` 可能导致负值,需θ取绝对值或限定 🐈 范围(如 \( \theta \in [\pi/4, \pi/4] \cup [3\pi/4, 5\pi/4] \))。
3. 使用 `axis equal` 保持纵横比例一致,避免图形 🦟 变形。
效 🐺 果 🦢 图 🌿 示例:
运行上述任一代 🍁 码后,将 🐋 得到一个对称的“8”字形曲线。通过调整 🐳 参数 `a` 可。以缩放图形大小
如果需要更复杂的八字形变体如(斜交双纽线需),修改方程或引入旋转 🪴 变换。