在使用fortran编写UMAT子程序时,遇到了一个比较繁琐的积分问题 要求A的值,其余量均为已知量,积分上下限也已知,积分值已知。 为了节省程序计算量,避免过于繁琐的循环嵌套,该方程能不能解出A的值,即给出A的表达式? 貌似是个超越方程... 期待大手子解答! 返回小木虫查看更多
公式在附件里,第一次发帖没设置好 捕获.PNG 捕获2.PNG
[latex]Q=-\frac{\varepsilon_0(e^{\frac{pA(\varepsilon_0-D)}{\varepsilon_0}}-1)}{pA} \Rightarrow pAQ+\varepsilon_0(-1+e^{\frac{pA(\varepsilon_0-D)}{\varepsilon_0}})=0,\frac{pA}{\varepsilon_0}=x,\frac{\varepsilon_0-D}{Q}=y \Rightarrow xQ+e^{xyQ}-1=0,xyQ+ye^{xyQ}-y=0,xyQ=\xi \Rightarrow \xi+ye^{\xi}-y=0 \Rightarrow ye^ye^{\xi-y}+(\xi-y)=0 \Rightarrow \xi=y-W(ye^y) \Rightarrow x=\frac{1-\frac{1}{y}W(ye^y)}{Q} \Rightarrow A=\frac{\varepsilon_0(1-\frac{Q}{\varepsilon_0-D}W(\frac{\varepsilon_0-D}{Q}e^{\frac{\varepsilon_0-D}{Q}}))}{pQ}[/latex]
补充一下,3楼层主的解答过程用了一个Lambert W Function,即所求的参数A并不能用初等函数来表示。 该函数的一些内容可见网址链接:https://baike.baidu.com/item/%E6 ... /2500676?fr=aladdin
这个方程明显是个关于A的超越方程,不可能得到A的解析式的。
公式在附件里,第一次发帖没设置好
捕获.PNG
捕获2.PNG
[latex]Q=-\frac{\varepsilon_0(e^{\frac{pA(\varepsilon_0-D)}{\varepsilon_0}}-1)}{pA} \Rightarrow pAQ+\varepsilon_0(-1+e^{\frac{pA(\varepsilon_0-D)}{\varepsilon_0}})=0,\frac{pA}{\varepsilon_0}=x,\frac{\varepsilon_0-D}{Q}=y \Rightarrow xQ+e^{xyQ}-1=0,xyQ+ye^{xyQ}-y=0,xyQ=\xi \Rightarrow \xi+ye^{\xi}-y=0 \Rightarrow ye^ye^{\xi-y}+(\xi-y)=0 \Rightarrow \xi=y-W(ye^y) \Rightarrow x=\frac{1-\frac{1}{y}W(ye^y)}{Q} \Rightarrow A=\frac{\varepsilon_0(1-\frac{Q}{\varepsilon_0-D}W(\frac{\varepsilon_0-D}{Q}e^{\frac{\varepsilon_0-D}{Q}}))}{pQ}[/latex]
补充一下,3楼层主的解答过程用了一个Lambert W Function,即所求的参数A并不能用初等函数来表示。
该函数的一些内容可见网址链接:https://baike.baidu.com/item/%E6 ... /2500676?fr=aladdin
谢谢您的热心解答,不胜感激
我有个疑问是因为这个A的值我是要用fortran语言编写出来的。而朗伯W函数应该无法用程序语言编写的吧.....
所以我想再咨询您一下有没有通过近似表达的方式把朗伯W函数用较易于使用程序书写的函数表达出来?
因为并不需要精确的A的值,只需要近似值即可所以再麻烦您一下?
本来通过循环迭加 A的值是很好求的,但由于求A的程序已经包含在一个循环中,所以使用循环会大大增加运算量,故不得已才向坛友们求助。
谢谢您的热心解答,不胜感激
我有个疑问是因为这个A的值要用fortran语言编写出来的。而朗伯W函数应该无法用程序语言编写的吧.....
所以我想再咨询您一下有没有通过近似表达的方式把朗伯W函数用较易于使用程序书写的函数表达出来?
因为并不需要精确的A的值,只需要近似值即可所以再麻烦您一下?
本来通过循环迭加 A的值是很好求的,但由于求A的程序已经包含在一个循环中,所以使用循环会大大增加运算量,故不得已才向坛友们求助
,
python 里有 from scipy.special import lambertw 能用,可以看看相应的源参考。
这个方程明显是个关于A的超越方程,不可能得到A的解析式的。