在 MATLAB 中实现您的目标有两种方法:利用 fplot 画出参数方程;
利用 fplot3 画出空间曲线;
在 MATLAB Live Script 中输入如下代码:
clear
clc
warning('off')
% 利用 fplot, fplot3 绘制非线性函数的图像,
% 可能会输出警告,暂时禁止输出警告
xt = @(t) t + sin(t)/2;
yt = @(t) sin(t)*sin(t);
fplot(xt, yt, [-pi/2, pi/2]) % 参数方程图像
zt = @(t) t; % 构造 z(t)
fplot3(xt, yt, zt, [-pi/2, pi/2]) % 空间曲线图像
xlabel('x(t)');
ylabel('y(t)');
zlabel('z(t)');
运行结果如下图所示:参数方程图像
空间曲线图像
在 Python 中我们可以使用符号运算库 SymPy 画出
和
的图像。需要使用以下 2 个函数:plot_parametric ,画出参数方程的图像
plot3d_parametric_line ,画出空间曲线的图像
在 JupyterLab Notebook 中输入如下代码:
from sympy import *
from sympy.plotting import plot3d_parametric_line
from sympy.abc import theta
x = theta + sin(theta)/2
y = trigsimp((1 - cos(2*theta))/2)
p1 = plot_parametric(x, y, (theta, -pi/2, pi/2),\
xlabel = 'y(t)', ylabel = 'x(t)',\
title = 'parametric curve')
p2 = plot3d_parametric_line(x, y, theta, (theta, -pi/2, pi/2),\
xlabel = 'x(t)', ylabel = 'y(t)',\
title = 'spatial curve')注意:SymPy 的 plot3d_parametric_line 函数与 MATLAB 的 fplot3 函数在画图时坐标轴顺序是不同的,所以输出图像呈现效果不一样。
下图是运行结果:
在 Python 中我们还可以使用数值运算库 NumPy 和绘图库 Matplotlib 画出上述参数方程的图像,在 JupyterLab Notebook 中输入如下代码:
import numpy as np
import matplotlib.pyplot as plt
theta = np.arange(-0.5*np.pi, 0.5*np.pi, 0.01*np.pi)
x = theta + np.sin(theta)*0.5;
y = np.sin(theta)**2;
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('parametric curve');
运行结果如下图所示: