6. Matplotlib(四) - 画方程图像

本文详细介绍了如何使用Matplotlib库在Python中,通过参数方程绘制圆、复杂的曲线图形以及三维空间曲线。包括圆的两种绘制方法和空间曲线的两种分段绘制方式,提供代码示例以便理解和实践。
摘要由CSDN通过智能技术生成
简述

​ 使用Matplotlib画简单的折线图曲线图往往比较直接,在已知 y = f ( x ) y=f(x) y=f(x)的表达式的情况下,即可直接使用plt.plot(x, f(x)) 绘制。而对于较为复杂的函数如 y 2 = f ( x ) y^2 = f(x) y2=f(x) 往往需要借助参数方程或者分次画图的方式。

1. 绘制圆

不使用Matplotlib内置的画圆函数绘制 x 2 + y 2 = 1 x^2+y^2=1 x2+y2=1 的图形

  • 方法一:使用参数方程可将原圆表示为
    { x = c o s ( t ) y = s i n ( t ) t ∈ ( 0 , 2 π ) \begin{cases}x=cos(t) \\ y = sin(t)\\ t\in(0, 2\pi) \end{cases} x=cos(t)y=sin(t)t(0,2π)

    import numpy as np
    import matplotlib.pyplot as plt
    
    plt.figure(figsize=(6, 6))  # 画布建立为方形,成图看起来比较具体
    
    theta = np.linspace(0, 2*np.pi, 100)# 参数的取值范围
    x = np.cos(theta)    # x的参数方程
    y = np.sin(theta)    # y的参数方程
    
    plt.plot(x, y)
    plt.show()
    
  • 方法二:将x视为自变量,分两次画上半圆和下半圆
    { y = 1 − x 2 y = − 1 − x 2 x ∈ ( − 1 , 1 ) \begin{cases} y = \sqrt{1-x^2} \\ y = -\sqrt{1-x^2} \\ x \in (-1, 1) \end{cases} y=1x2 y=1x2 x(1,1)

    import numpy as np
    import matplotlib.pyplot as plt
    
    plt.figure(figsize=(5, 5))
    
    x = np.linspace(-1, 1, 1000)
    y = np.sqrt(1 - x**2)
    
    plt.plot(x, y)  # 上半圆
    plt.plot(x, -y) # 下半圆
    
    plt.show()
    
2. 绘制空间曲线

空间曲线的方程为:
{ x 2 + y 2 = 1 2 x + 3 z = 6 \begin{cases} x^2 + y^2 = 1 \\ 2x + 3z = 6 \end{cases} {x2+y2=12x+3z=6

  • 方法一:使用参数方程,可将原方程表示为
    { x = c o s ( t ) y = s i n ( t ) z = 1 3 ( 6 − 2 x ) t ∈ ( 0 , 2 π ) \begin{cases} x = cos(t) \\ y = sin(t) \\ z = {1\over3}(6 - 2x) \\ t \in (0, 2 \pi) \end{cases} x=cos(t)y=sin(t)z=31(62x)t(0,2π)

    import numpy as np
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    
    figure = plt.figure(figsize=(5, 5))
    ax : Axes3D = figure.add_subplot(projection = '3d') # 创建三维坐标轴
    
    theta = np.linspace(0, 2*np.pi, 100) # 参数取值范围
    
    x = np.cos(theta)
    y = np.sin(theta)
    z = (6 - 2*x) / 3  # 参数方程
    
    ax.plot(x, y, z)  # 绘图
    plt.show()
    
  • 方法二:将x视为自变量,分两次画前半部和后半部
    { y = ± 1 − x 2 z = 1 3 ( 6 − 2 x ) x ∈ ( − 1 , 1 ) \begin{cases} y = \pm\sqrt{1-x^2} \\ z = {1 \over 3}(6 - 2x) \\ x \in (-1, 1) \end{cases} y=±1x2 z=31(62x)x(1,1)

    import numpy as np
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    
    figure = plt.figure(figsize=(5, 5))
    ax : Axes3D = figure.add_subplot(projection = '3d') # 创建三维坐标轴
    
    
    x = np.linspace(-1, 1, 100) # 取值范围
    y = np.sqrt(1 - x**2)
    z = (6 - 2*x)/3
    ax.plot(x, y, z)  # 前半部
    ax.plot(x, -y, z)  # 后半部
    
    plt.show()
    

    如有错误, 还请指正, 持续更新ing

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啥都想学的大学生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值