首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >常值变化时常微分方程求解的作图

常值变化时常微分方程求解的作图
EN

Stack Overflow用户
提问于 2017-01-26 05:19:53
回答 1查看 115关注 0票数 1

我目前正在编写一组代码,用来解决一个常微分方程……我的代码是工作的,但是,我希望能够修改它,以解决一组不同常量的微分方程。这就是我目前所拥有的,如果ran可以工作的话。

代码语言:javascript
运行
复制
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt

def f(w, x):
    # d1 = omega lambda
    d1 = w
    b2 = 0.0

    # 0.2<c<1.4, 0.20 increments
    c = 0.2  

    q = (1 - d1 - (2*((d1**1.5)/c))) / (2 + (3*(b2)))    

    f = (d1**2) * (1 - d1) * ((1 / d1) + (2 / (c * (d1**0.5))) - ((3 * b2 *    q) / (d1 * (1-d1))))
    return f

#determine domain, x
x = np.linspace(-80, 80, 1000001)

d1 = 10 ** -8

sol = odeint(f, d1, x)

plt.xlabel("x")
plt.ylabel("Omega Lambda")
plt.plot(x, sol, 'r')
plt.show() 

然而,我想构建一个由一组不同的c值将产生的每一条线组成的图。我想要生成的c的图表是:

代码语言:javascript
运行
复制
c = 0.2,0.4,0.6,0.8,1.0,1.2,1.4
EN

回答 1

Stack Overflow用户

发布于 2017-11-06 21:00:21

代码语言:javascript
运行
复制
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt

def f(w, x , b2 , c):
    # d1 = omega lambda
    d1 = w


    # 0.2<c<1.4, 0.20 increments
    #c = 0.2  

    q = (1 - d1 - (2*((d1**1.5)/c))) / (2 + (3*(b2)))    
    f = (d1**2) * (1 - d1) * ((1 / d1) + (2 / (c * (d1**0.5))) - ((3*b2*q)/(d1*1-d1))))
    return f

#determine domain, x
x = np.linspace(-80, 80, 1000001)

d1 = 10 ** -8
b2 = 0.0
c = [  0.2,0.4,0.6,0.8,1.0,1.2,1.4 ]
for i in c:

    sol = odeint(f, d1, x, args = (b2 , i))
    plt.xlabel("x")
    plt.ylabel("Omega Lambda")
    plt.plot(x, sol, 'r')
    plt.show()
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41861859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档