zoukankan      html  css  js  c++  java
  • 数值分析实验之常微分方程的数值解法(Python实现)

    应用Python求解上篇函数在一系列离散点处的近似值。

     1 # -*- coding: utf-8 -*-
     2 
     3 import numpy as np
     4 import random as r
     5 import matplotlib.pyplot as plt
     6 import math
     7 
     8 p0=2
     9 lam=5
    10 #dp/dt=lam*p,p(0)=p0,求p(t)
    11 x=[]
    12 y=[]
    13 for i in np.arange(0, 1.5, 0.001):
    14     x.append(i)
    15     y.append(p0*math.exp(lam*i))
    16 
    17 plt.plot(x,y,linewidth=5)
    18 
    19 
    20 #欧拉求解,向前分成300点分
    21 xx=[0]
    22 yy=[p0]
    23 ds=1*1.0/100
    24 for i in np.arange(0+ds, 1.5, ds):
    25     xx.append(i)
    26     yy.append(yy[-1]+lam*yy[-1]*ds)
    27     
    28 plt.plot(xx,yy,'b',marker='+') 
    29 
    30 
    31 #欧拉求解,向后分成300点分
    32 xx2=[0]
    33 yy2=[p0]
    34 ds=1*1.0/100
    35 for i in np.arange(0+ds, 1.5, ds):
    36     xx2.append(i)
    37     yy2.append(yy2[-1]*1.0/(1-lam*ds))
    38     
    39 plt.plot(xx2,yy2,'r',marker='*') 
    40 
    41 #欧拉求解,修正分成300点分
    42 xx3=[0]
    43 yy3=[p0]
    44 ds=1*1.0/100
    45 for i in np.arange(0+ds, 1.5, ds):
    46     xx3.append(i)
    47     yy3.append((yy3[-1]+ds/2*lam*yy3[-1])/(1-ds/2*lam))
    48     
    49 plt.plot(xx3,yy3,'--','r',linewidth=2) 
    50 
    51 plt.show()

    运行结果:

         

  • 相关阅读:
    shell:定时任务crontab
    shell:采集进程的cpu和内存利用率_随手记1
    临时记录
    python:numpy库和matplotlib库
    python:urllib:HTTPResponse对象的用法
    美国亚马逊图片打不开
    互联网协议
    range 和 xrange
    国内服务器的端口开放问题
    Mac上设置Chrome跨域
  • 原文地址:https://www.cnblogs.com/ynly/p/13048657.html
Copyright © 2011-2022 走看看