python差分方程求解_时间序列分析第一章 差分方程(Simulation)

本文通过Python代码详细介绍了如何使用递归法求解一阶差分方程,并通过可视化展示不同Φ值对时间序列的影响。进一步探讨了二阶差分方程的动态模拟,分析了不同特征值情况下系统的稳定性。
摘要由CSDN通过智能技术生成

上一篇文章已经将差分方程的相关理论推导说明,本节将用代码将某些结论可视化。

一、一阶差分方程

1、递归法求解差分方程

给定y在t=-1期的值,以及w在t=0,1,2,...时期的值,则通过递归可以求出各时期的y值,代码如下

%matplotlib inline

import numpy as np

import matplotlib.pyplot as plt

A = [0.5,1,2] #设定Φ分别小于、等于、大于1

t = 1000 #给定总的时期为1000

for i,a in enumerate(A):

y = [0] #给定y在t=-1期的值

print(f'动态模拟Φ={a}:')

print('y-1=',y[-1])

for j in range(0,t+1):

w = np.random.randn() #这里w是一个随机变量

y_ = a*y[-1] + w #由上一期计算当期

y.append(y_) #将当期加载y列表的最后

print(f'y{j}=',y[-1]) #将动态模拟过程打印出来

#这个条件判断是为了输出好看一点

if i == 1:

num = f'51{i+2}'

#plt.subplot(int(num))

elif i == 2:

num = f'51{i+3}'

else:

num = f'51{i+1}'

plt.subplot(int(num))

plt.plot(range(-1,t+1),y,'-') #将y的整个变化过程可视化

plt.title(f'y(t) = {a}*y(t-1)+w(t)')

动态模拟过程结果如下

变化趋势可视化:

从图形中可以看到,Φ<1时,y围绕均值0波动,波动的幅度(方差)也基本没有改变,所以可以判断该时间序列是平稳的;Φ=1时,数据表现出明显的随机游走特征,有明显的符号集群现象,即前一期为‘+’,则后一期有很大概率也为‘+’;前一期为‘-’,则后一期很大概率也为‘-’,这是一个明显的单位根过程; Φ>1时

【有限差分初学者必备】如何根据问题的特点将定解区域作网格剖分;如何把原微分方程离散化为差分方程组以及如何解此代数方程组。此外为了保证计算过程的可行和计算结果的正确,还需从理论上分析差分方程组的性态,包括解的唯一性、存在性和差分格式的相容性、收敛性和稳定性。对于一个微分方程建立的各种差分格式,为了有实用意义,一个基本要求是它们能够任意逼近微分方程,这就是相容性要求。另外,一个差分格式是否有用,最终要看差分方程的精确解能否任意逼近微分方程的解,这就是收敛性的概念。此外,还有一个重要的概念必须考虑,即差分格式的稳定性。因为差分格式的计算过程是逐层推进的,在计算第n+1层的近似值时要用到第n层的近似值 ,直到与初始值有关。前面各层若有舍入误差,必然影响到后面各层的值,如果误差的影响越来越大,以致差分格式的精确解的面貌完全被掩盖,这种格式是不稳定的,相反如果误差的传播是可以控制的,就认为格式是稳定的。只有在这种情形,差分格式在实际计算中的近似解才可能任意逼近差分方程的精确解。关于差分格式的构造一般有以下3种方法。最常用的方法是数值微分法,比如用差商代替微商等。另一方法叫积分插值法,因为在实际问题中得出的微分方程常常反映物理上的某种守恒原理,一般可以通过积分形式来表示。此外还可以用待定系数法构造一些精度较高的差分格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值