亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何用 matplotlib 繪制以線性代數形式給出的線?

如何用 matplotlib 繪制以線性代數形式給出的線?

偶然的你 2023-12-12 20:26:36
這是一個微不足道的問題,但我一次又一次地遇到它,我確信有一個優雅的解決方案,我想使用它。我用 numpy 做數學,想繪制線性代數計算結果的線。這些行的形式為 因此,我想將查找線條起始端點的工作“外包”給一個聰明的 python 代碼片段,以便將生成的線條繪制到我的 3D 繪圖中,從而尊重繪圖的現有尺寸。例如,如果我從 x = -2 到 2 和 z = -3 到 3 繪制一條 3D 平行線,并且我想畫一條線 ,它會發現它需要從 (-2,1,-2) 開始并結束于 (2,1,2)。這怎么可能行得通呢?
查看完整描述

1 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

首先,定義projection參數很重要。其次,您需要使用不同形狀的P, v,z以獲得與方法坐標相對應的X, Y,參數:Zplot


import matplotlib.pyplot as plt

import numpy as np


fig = plt.figure()

ax = fig.add_subplot(111, projection='3d')


P = np.array([1,1,1]).reshape(-1,1)

v = np.array([1,0,1]).reshape(-1,1)

z = np.linspace(-3,3,100)

X, Y, Z = P + v*z


ax.plot(X, Y, Z)

plt.show()

根據評論

reshape(-1, 1)添加了廣播所需的額外維度。它也是 的替代品reshape(3, 1)。簡單情況 (?arr1 = v;?arr2 = np.linspace(-3,3,11)) 可以像這樣可視化:

https://img1.sycdn.imooc.com/657851d10001b57010810275.jpg

曲線的終點g = (1, 1, 1) + z * (1, 0, 1)位于 的區間邊界處z,即:

g1?=?(1,?1,?1)?+?(-3)?*?(1,?0,?1)?=?(-2,?1,?-2)
g2?=?(1,?1,?1)?+?3?*?(1,?0,?1)?=?(4,?1,?4)

請注意,z = 1需要獲得終點 =(2,1,2)


查看完整回答
反對 回復 2023-12-12
  • 1 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號