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

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

如何轉為矢量形式

如何轉為矢量形式

繁星淼淼 2023-10-11 20:05:04
我之前發布過問題如何創建具有二維的單個向量?,并通過一些有用的答案,我能夠更改我的代碼。在上一個問題中,我被要求不要分隔“x”和“v”的值,而是使用具有二維的單個向量“x”(即“x”和“v”可以由 x(1) 處理和 x(2) )??紤]到這一點,我能夠改變:# Runge-kutta Methodx = np.empty(N);v = np.empty(N);x[0] = x0;v[0] = v0;從我的上一個問題的代碼變為:# Runge-kutta Methodx = np.zeros([2, N]);x[0,0] = x0x[1,0] = v0并將主循環切換為以下內容:for i in range(N - 1):    #MAIN LOOP    K1x = f1(te[i], x[0, i], x[1, i])    K1v = f2(te[i], x[0, i], x[1, i])    K2x = f1(te[i] + h / 2, x[0, i] + h * K1x / 2, x[1, i] + h * K1v / 2)    K2v = f2(te[i] + h / 2, x[0, i] + h * K1x / 2, x[1, i] + h * K1v / 2)    K3x = f1(te[i] + h / 2, x[0, i] + h * K2x / 2, x[1, i] + h * K2v / 2)    K3v = f2(te[i] + h / 2, x[0, i] + h * K2x / 2, x[1, i] + h * K2v / 2)    K4x = f1(te[i] + h, x[0, i] + h * K3x, x[1, i] + h * K3v)    K4v = f2(te[i] + h, x[0, i] + h * K3x, x[1, i] + h * K3v)    x[0, i + 1] = x[0, i] + h / 6 * (K1x + 2 * K2x + 2 * K3x + K4x)    x[1, i + 1] = x[1, i] + h / 6 * (K1v + 2 * K2v + 2 * K3v + K4v)這些改變有效并提供了我需要的結果。問題: 我的問題是,我被告知主循環不是矢量形式。我必須進行哪些更改才能使其成為矢量形式?
查看完整描述

1 回答

?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

定義

def f(t,x): return np.array([f1(t,*x), f2(t,*x)])

從而刪除 RK4 循環中的每隔一行。例如最后兩個是

    K4 = f(te[i] + h, x[:, i] + h * K3)
    x[:, i + 1] = x[:, i] + h / 6 * (K1 + 2 * K2 + 2 * K3 + K4)


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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