Python画图[通俗易懂]

Python画图[通俗易懂]帮别人实现rubberfriction的运算公式。公式不是我专业的内容,完全不懂,只是照着公式用python计算并画图。做出的图,与论文中的图进行对比,完全一致。之所以用python,是因为mat

大家好,又见面了,我是你们的朋友全栈君。

帮别人实现rubber friction的运算公式。公式不是我专业的内容,完全不懂,只是照着公式用python计算并画图。做出的图,与论文中的图进行对比,完全一致。

之所以用python,是因为matlab实在太大了。。。

python科学计算需要用到numpy和scipy,画图需要用到matplotlib。这三个模块的安装,windows下很容易,mac下稍微麻烦一些。

matplotlib需要注意的是,因为公式涉及的三个图,分别是对数-对数,对数-常数,常数-对数坐标,所以不能仅仅使用plot。

步骤一:

公式:Python画图[通俗易懂]

代码:

Python画图[通俗易懂]
Python画图[通俗易懂]
View Code

 1 def EOmega(E1,omega,tau,a1):
 2     a=complex(1,-omega*tau)
 3     b=complex(a1+1,-omega*tau)
 4     return E1*a/b
 5 
 6 def DrawEOmega(E1,tau,a1,xmin,xmax):
 7     re=[]
 8     im=[]
 9 
10     omega = np.logspace(xmin, xmax, 1000)
11     for o in omega:
12         re.append(EOmega(E1,o,tau,a1).real)
13         im.append(abs(EOmega(E1,o,tau,a1).imag))
14 
15     plt.figure()
16     plt.loglog(omega,re,label="$Re(E)$",color="red",linewidth=2)
17     plt.loglog(omega,im,"b--",label="$Im(E)$")
18     plt.ylim(10**0,10**10)
19     plt.xlabel("frequency omega[rad/s]")
20     plt.ylabel("E-modulus[Pa]")
21     plt.title("Complex E-modulus for rheological model")
22     plt.legend(loc="center right")
23     plt.show()
24 
25 
26 E1=10.0**9
27 a1=1000.0
28 tau=1.0/10**3
29 xmin=-2
30 xmax=8
31 DrawEOmega(E1,tau,a1,xmin,xmax)

图:

Python画图[通俗易懂]

 

步骤二:

公式:Python画图[通俗易懂](注:公式有些错误,G(q)的第二个积分没有Im)

代码:

Python画图[通俗易懂]
Python画图[通俗易懂]
View Code

 1 def EOmegaExpand(E1,tau,a1,q0,zeta,v,phi):
 2     omega=q0*zeta*v*np.cos(phi)
 3     return EOmega(E1,omega,tau,a1)
 4 
 5 def GQPartTwo(phi,E1,tau,a1,q0,zeta,v,gamma,sigma0):
 6     a=EOmegaExpand(E1,tau,a1,q0,zeta,v,phi)
 7     b=(1.0-gamma**2)*sigma0
 8     c=a/b
 9     re=c.real
10     im=c.imag
11     d=re**2+im**2
12     return d
13 
14 def GQPartOne(zeta,E1,tau,a1,q0,v,gamma,sigma0,H):
15     a=quad(GQPartTwo, 0, 2*np.pi,args=(E1,tau,a1,q0,zeta,v,gamma,sigma0))[0]
16     b=(zeta**(1.0-2*H))*a
17     return b
18 
19 def GQ(E1,tau,a1,q0,v,sigma0,gamma,H,h0,q):
20     a=quad(GQPartOne,1,q/q0,args=(E1,tau,a1,q0,v,gamma,sigma0,H))[0]
21     b=((q0*h0)**2)*H
22     c=a*b/(16*np.pi)
23     return c
24 
25 def PQ(E1,tau,a1,q0,sigma0,gamma,H,h0,v,zeta):
26     q=q0*zeta
27     a=GQ(E1,tau,a1,q0,v,sigma0,gamma,H,h0,q)
28     b=1/(2*np.sqrt(a))
29     c=erf(b)
30     return c
31 
32 def DrawPQ(E1,tau,a1,q0,sigma0,gamma,H,h0,xmin,xmax):
33     p1=[]
34     p2=[]
35     p3=[]
36     p4=[]
37     p5=[]
38 
39     v1=0.00005
40     v2=0.013
41     v3=0.316
42     v4=7.85
43     v5=187
44 
45     l = np.linspace(xmin, xmax, 50)
46     for o in l:
47         p1.append(PQ(E1,tau,a1,q0,sigma0,gamma,H,h0,v1,o))
48         p2.append(PQ(E1,tau,a1,q0,sigma0,gamma,H,h0,v2,o))
49         p3.append(PQ(E1,tau,a1,q0,sigma0,gamma,H,h0,v3,o))
50         p4.append(PQ(E1,tau,a1,q0,sigma0,gamma,H,h0,v4,o))
51         p5.append(PQ(E1,tau,a1,q0,sigma0,gamma,H,h0,v5,o))
52 
53     plt.figure()
54     plt.semilogy(l,p1,"b--",label="$v=0.00005m/s$",linewidth=5)
55     plt.semilogy(l,p2,label="$v=0.013m/s$",linewidth=5)
56     plt.semilogy(l,p3,"r--",label="$v=0.316m/s$",linewidth=1)
57     plt.semilogy(l,p4,"b--",label="$v=7.85m/s$",linewidth=1)
58     plt.semilogy(l,p5,label="$v=187m/s$",linewidth=1)
59     plt.xlabel("zeta[-]")
60     plt.ylabel("P[-]")
61     plt.title("Apparent contact area")
62     plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
63     plt.show()
64 
65 E1=10.0**9
66 a1=1000.0
67 tau=1.0/10**3
68 q0=2000.0
69 sigma0=0.2*(10**6)
70 gamma=0.5
71 H=0.85
72 h0=5.0/10**4
73 xmin=1
74 xmax=100
75 DrawPQ(E1,tau,a1,q0,sigma0,gamma,H,h0,xmin,xmax)

图:

Python画图[通俗易懂]

步骤三:

公式:Python画图[通俗易懂]

这一步的代码没有什么难度,只是注意一下坐标的问题即可。

 

目前还有一点问题,即第二张图中的图例不知道为什么总是无法显示完全,需要再查一下官方文档。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155983.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月5日 下午5:46
下一篇 2022年7月5日 下午6:00


相关推荐

  • pagerank 的介绍

    pagerank 的介绍以下文章来自博客 https www cnblogs com jpcflyer p 11180263 html 一 PageRank 的简化模型我们先来看下 PageRank 是如何计算的 我假设一共有 4 个网页 A B C D 它们之间的链接信息如图所示 这里有两个概念你需要了解一下 出链指的是链接出去的链接 入链指的是链接进来的链接 比如图中 A 有 2 个入链 3 个出链 简单来说 一个网页的影响力 所有入链集合的页面的加权影响力之和 用公式表

    2026年3月17日
    2
  • 费曼学习法

    费曼学习法费曼学习法我的理解:费曼学习法就是把学好的东西用简洁易懂的语言,传授给别人举例:你学完微积分,然后自己去培训班,自己做老师,传授给学生们,并且学生们都能听懂费曼学习法的四个步骤:1.确定目标

    2022年8月6日
    8
  • 用户路径的分析结果_用户账号文件的路径

    用户路径的分析结果_用户账号文件的路径1.什么是用户路径分析用户行为分析是数据分析中非常重要的一项内容,在统计活跃用户,分析留存和转化率,改进产品体验、推动用户增长等领域有重要作用。单体洞察、用户分群、行为路径分析是用户行为数据分析的三大利器。用户路径分析,就是用户在APP或网站中的访问行为路径。用户行为路径分析是互联网行业特有的一类数据分析方法,它主要根据每位用户在App或网站中的点击行为日志,分析用户在App或网站中各个模块的流转规律与特点,挖掘用户的访问或点击模式,进而实现一些特定的业务用途,如App核心模块的到达率提升、特定用户群

    2022年8月24日
    6
  • 【C++ 程序】 数字推盘游戏(15-puzzle)(EasyX图形界面)

    【C++ 程序】 数字推盘游戏(15-puzzle)(EasyX图形界面)也是比较简单的程序 基于我的博客 C 程序 数字推盘游戏 15 puzzle 的逻辑 运用我的博客 C 程序 井字棋游戏 人 VSLv3 电脑 战绩统计版 EasyX 图形界面 的 EasyX 使用技巧完成此程序 程序 Thisisasimpl puzzlegame include iostream include vector include Windows h include string string Windows h vector iostream

    2026年3月18日
    3
  • 收集的84个网站源码分享

    收集的84个网站源码分享2019帝国CMS7.5仿《ITBear科技资讯》源码——————链接:https://pan.baidu.com/s/1dIOJ16pu4eRiPh7feAPQ0A提取码:svr9YMYS009强大专业的x站——————链接:https://pan.baidu.com/s/1FHWIq6VLgndBiyCXwrkHUA提取码:gvuw粉色小说网站——————链接:https://pan.baidu.com/s/1sm

    2022年6月14日
    66
  • Python打印九九乘法表的7种方式|编程私教

    Python打印九九乘法表的7种方式|编程私教你好 我是悦创 Python 系列练习题 请访问 https bornforthis cn column py basequestion 1 九九乘法表输出结果 1×1 11×2 22×2 41×3 32×3 63×3 91×4 42×4 83×4 124×4 161×5 52×5 103×5 154×5 205×5 251×6 62×6 123×6

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号