Python实现四阶龙格库塔法求解Ricatti方程
# -*- 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#根据边界条件给定的值
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()
Python实现四阶龙格库塔法求解Ricatti方程相关推荐
- 四阶龙格库塔法求解一次常微分方程组(python实现)
四阶龙格库塔法求解一次常微分方程组 一.前言 二.RK4求解方程组的要点 1. 将方程组转化为RK4求解要求的标准形式 2. 注意区分每个方程的独立性 三.python实现RK4求解一次常微分方程组 ...
- 欧拉法、预估校正法(改进的欧拉法)与四阶龙格库塔法求解常微分方程的数值解C++程序
以y'=x+y,0<x<1,y(0)=1为例,取步长h=0.1,已知精确值为y=-x-1+2e^x,用来进行精度比较 #include<stdio.h> using names ...
- python —— 使用sympy模块求解数学方程
SymPy是符号数学的Python库.它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁.易于理解和扩展. 符号表示 In [1]:from sympy import * In [2]:x = ...
- 四阶龙格库塔法的基本思想_利用龙格库塔法求解郎之万方程.doc
利用龙格库塔法求解郎之万方程.doc 利用龙格-库塔法求解朗之万方程1. 待解问题布朗颗粒是非常微小的宏观颗粒,其直径的典型大小为10-710-6m.颗粒不断受到液体介质分子的碰撞,在任一瞬间,一个颗 ...
- matlab龙格库塔法求通解,基于matlab及龙格库塔法求解布拉修斯方程.doc
基于matlab及龙格库塔法求解布拉修斯方程 Runge-Kutta法求解布拉修斯解 摘要 薄剪切层方程主要有三种解法,即相似解,非相似条件下对偏微分方程组的数值解和近似解.布拉修斯解是布拉修斯于19 ...
- 用四阶龙格库塔法(RK4)求解二阶微分方程
import math import matplotlib.pyplot as plt# 龙格-库塔法的定义 def runge_kutta(y, h, f):k1 = h * f(t, x1, x2 ...
- python解常微分方程龙格库_excel实现四阶龙格库塔法runge-kutta解二阶常微分方程范例.xls...
excel实现四阶龙格库塔法runge-kutta解二阶常微分方程范例,rungekutta,四阶rungekutta法,rungekuttamatlab,四阶rungekutta,rungekutt ...
- 四阶龙格库塔法-实现异步电机模型仿真
序言 龙格库塔法是求解线性.非线性微分方程数值解的经典方法.具有计算精度高,稳定性好的特点.由于该方法在基于现代控制理论的观测器应用中十分重要,因此有必要通过一个经典的例子实现该方法的仿真应用. 关键 ...
- 龙格库塔法求解微分方程
在https://blog.csdn.net/weixin_42141390/article/details/110184743一文中,我们曾经讨论了欧拉法,龙格-库塔法也跟欧拉法一样,是用梯形的面积 ...
- matlab解二阶微分方程组,[微分方程组]急急急!用MATLAB按二阶龙格库塔法求解微分方程组,急用于毕业设计!...
急急急!用MATLAB按二阶龙格库塔法求解微分方程组,急用于毕业设计! 问题补充:今天才发现自己之前做的一点都不对,17号就交论文了,我傻了,急死了!求各位大侠帮帮忙.谢谢!要求解的微分方程如图所示. ...
最新文章
- c++中声明和定义的区别(这个兄弟写的解决了我的疑惑)
- Kanboard简单的可视化任务板,项目管理
- ASP.NET Core 进程内(InProcess)托管(6)《从零开始学ASP.NET CORE MVC》:
- android条形图,MPAndroid组条形图未显示
- finally不管有没有错都会运行 finally 块用于清除 try 块中分配的任何资源,以及运行任何即使在发生异常时也必须执行的代码...
- shiny动态仪表盘应用 | 中国世界自然文化遗产可视化案例
- MySQL客户端使用
- 高程(DEM) ASCII数据获取
- 基于遗传算法(deap库)的一元函数寻优代码详解
- 【Linux】之 从源代码安装软件(HelloWorld)
- 级数 p级数 q级数 调和级数为什么叫做“调和”级数 等比数列求和公式和等差数列求和 斜率:
- 在哪能查到英文论文?
- Linux unison 效率,Linux下inotify+unison双向同步环境部署
- Gradle依赖本地aar包
- 真实评测 rtx3080ti对比rx6800xt选哪个好
- 如何提高工作激情,打造狼性团队
- lnmp搭建qq农场
- Oracle 字段自增
- 微型计算机的基本组成及各个部分的作用
- C++和C语言求解一个数的阶乘以及多个数的阶乘之和