日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python实现四阶龙格库塔法求解Ricatti方程

發(fā)布時間:2023/12/31 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python实现四阶龙格库塔法求解Ricatti方程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
# -*- coding: utf-8 -*- ''' Time: XXXX author: XX Project: XXXX File: XXX '''import numpy as np from matplotlib import pyplot as plt import seaborn as sns#由題目定義矩陣 A = np.matrix([[0, 1], [0, 0]]) AT = np.matrix([[0, 0], [1, 0]]) B = np.matrix([[0], [1]]) BT = np.matrix([[0, 1]]) F = np.matrix([[1, 0], [0, 2]]) Q = np.matrix([[2, 1], [1, 4]]) R = np.matrix([[1/2]]) RN = 2#根據(jù)邊界條件給定的值 step_num = 100 t = 3 step = -t / step_num P = F# 定義黎卡提方程 def Ricatti_P(t, P):f = -(P * A + A.T * P - P * B * R.I * B.T * P + Q)return fys_0, ys_1, ys_2, ys_3 = [], [], [], [] ts = [] while t > 0:t += stepk1 = step * Ricatti_P(t, P)k2 = step * Ricatti_P(t + step * 0.5, P + k1 * step * 0.5)k3 = step * Ricatti_P(t + step * 0.5, P + k2 * step * 0.5)k4 = step * Ricatti_P(t + step, P + k3 * step)P = P + (k1 + k2 * 2 + k3 * 2 + k4)/6P = np.array(P)ts.append(t)ys_0.append(P[0][0])ys_1.append(P[0][1])ys_2.append(P[1][0])ys_3.append(P[1][1])print(ys_0)print(P)sns.set() fig, axes = plt.subplots(2, 2) axes[0][0].plot(ts, ys_0, label='p1') axes[0][1].plot(ts, ys_1, label='p2') axes[1][0].plot(ts, ys_2, label='p3') axes[1][1].plot(ts, ys_3, label='p4') for i in range(2):for j in range(2):axes[i][j].set_xlabel('t')axes[i][j].legend(loc=3) plt.suptitle('Riccati equation\'s solve ', size=18) plt.show()

總結(jié)

以上是生活随笔為你收集整理的Python实现四阶龙格库塔法求解Ricatti方程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。