用ode45解微分方程遇到的实际问题

        最近在用ode45解微分方程数值解,试图复现论文中的图。一般来说说微分方程(组)只要按照响应的条件去撰写好对应的回调函数即可,基本没什么难度,但对于本文遇到的的这个问题,可能还需要一些技巧去实现解法,这篇文章就来说说我们其中遇到的几个问题。

       一、问题提出和简单分析:

       方程的条件和初值如下:

        常系数和初始变量:        

  模型参数:Ms=1.6x10^6;a=1000;alpha=0.001;,mu0=4πx10^7 ;c=0.1;gamma1=7x10^-18;gamma1_p=-1x10^-25 ;gamma2 =-3.3x10^-30 ;gamma2_p=2.1x10^-38 ;E=2.02x10^11 ;ksi=2000 ;H=40 ;

        自变量σ区间为[0,300]MPa 注意:1MPa=1×106 Pa ,代入公式计算的时候注意这一点,上面的模型参数都是在Pa的基础上赋值的。

       M初始值分别为: M(0)=0 ;M(0)=10000 ;M(0)=20000;M(0)=30000;M(0)=40000;

        简单的分析,这应该是一个二元一阶常系数微分方程组,只有dM和dMan需要关注,其他变量,Heff,Hsigma都是与Man有关,Man是比较关键的变量,但是Man和dMan的表达都没有直接形式,这个需要注意。Hsigma是搭桥,基本联通Heff和Hman,Heff和Man相互纠缠。

        二、解决初值问题

         我们在带入ode45的表达式中,初值是一个必要的参数。

        题目中给了M的初始值,但是Man没有给出,这个得想办法求出来。通过观察应该是由原方程组的前三个式子组成的方程来求解。

        也即解决由这三个式子在sigma=0的条件下,Man的值

        第三个式子由于sigma为零,Hsigma=0,另外Man 和Heff 这俩显然是个超越方程,估计没有解析解,我们求数值解。

         我们使用fsolve解数值解,因为不知道初值,随便定了Man和Heff为1,Hsigma为0

% Man ,Heff,Hsigma 初值,sigma=0 下
[x,fval,exitflag]=fsolve(@myfun,[1 1 0]);

myfun中关键代码如下:

eq1 = Man -( Ms*(coth(Heff/a)-a/Heff));
eq2 = Heff- (H+Hsigma+alpha*Man);
eq3 = Hsigma - (3*sigma/mu0*((gamma1 + gamma1_p*sigma)*Man + 2*(gamma2 + gamma2_p*sigma)*Man*Man*Man));F = [eq1;eq2;eq3];

 

结果是找不到,这说明初值没有选定,找了几个初值都不行,看来要具体分析一下Man和Heff的关系了,这边使用画图法,实际曲线来看看两者到底交叠在哪个点上,根据eq1和eq2,我们稍微变动一下,画出 Man和Heff的走势曲线

Ms = 1.6e6;
a = 1000;
H = 40;
alpha = 0.001;
Heff = [1:500];for i = 1:length(Heff)Man1(i) =( Ms*(coth(Heff(i)/a)-a/Heff(i)));Man2(i) = (Heff(i)- H)/alpha;endplot(Heff,Man1,'r');
hold on
plot(Heff,Man2,'b');

 

大概交叉在Heff = 86,Man=46000,左右,【这种初值靠你随便指定手写,估计是不可能的】,好了初值问题选定,现在终于可以迈入第下一步了!, 这一步算出来的 Man的初值 是 45666.419496657

二、dMan的确定

[x,y] = ode45(@(x,y)f(x,y,st),[t(1),t(end)],y0,nstep); 

   其中y是[M0,Man0], 在回调函数内部,大致的结构如下

 function dydt = f(x,y,st)  sigma = x;dydt = zeros(size(y));%y(1), y(2)%M, ManMan = y(2);%想办法求出来 dMan_dtdydt(2)= dMan_dt;       dydt(1) = sigma /(E*ksi) * (y(2) - y(1)) + c* dydt(2);end

        这里面的步骤很有讲究,你要先取出 积分自变量x也就是t,也是sigma,另外y的值y(1) = M,y(2)=Man, 但是M的值基本用不上,sigma、Man的值要用在 求dMan_dt上,算出来的dydt(2) 又要被dydt(1)用,所以写在最后面。       

        dMan不知道,是不是可以对前面三个式子都对sigma求导,解一个 [Man,Heff,dHsigma,dMan,dHeff,dHsigma,sigma] 这么一个五元的方程组(Man和sigma能知道),还得是数值解。这个最麻烦的就是初值,Heff的初值还好办,那些微分式子的初值很难估计。

       求dMan_dsigma 非常关键。上述办法估计行不动,需要变通一下思维。经过前面的分析,Heff和Man相互嵌套,可以利用这点,

,

     dMan_dHeff, 它出来的结果基本都是Man的函数,另外Heff的微分也都是sigma和Man,这就好办了, 也就是找到了下面的这个函数关系,最重要的是Man和sigma都是已知!

   

 只是链式微分式子比较可怕

没有关系,我们交给Matlab吧

    Hsigma = (3*sigma/mu0*((gamma1 + gamma1_p*sigma)*Man + 2*(gamma2 + gamma2_p*sigma)*Man*Man*Man));Heff = H + Hsigma + alpha *Man;pp = (gamma1 + 2*gamma1_p*sigma)*Man + 2*(gamma2 + 2*gamma2_p*sigma)*Man*Man*Man;dMan_dt = 3*Ms/(mu0*a)*( -(csch(Heff/a))^2 + (a/Heff)^2) *pp;

 至此已经解决掉这些问题了,我们最后看看图像如何;

三、心心念念的图

 和论文的附图是可以对上的

 另外观察到的Man的图,它的值是不随M的初值而改变的,显然,首先Man的初值固定的(在积分从0开始时候),另外dMan的过程和M0的初值也没毛线关系,一个变量就是这两个因素决定,积分初值和积分步长。M对Man相当于应变随自变量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/43995.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB-常微分方程求解

MATLAB中可以用来求解常微分方程(组)的函数有ode23、 ode23s、 ode23t、 ode23tb 、ode45、ode15s和odel13等,见下表。它们的具体调用方法类似,为了方便后面的描述, 在后面的介绍中将使用solver统一代替它们。 函数的具体调用方法如下。 [T,Y…

Mathematica解一个精巧的差分方程

Mathematica解差分方程很方便,记住一个词就可以了RSolve或者RSolveValue就可以了。以下这个例子比较特殊,存在解析解,但是软件算不出。 问题: 已知: a [ 1 ] 1 2 a[1]\sqrt{1\over2} a[1]21​ ​ a [ n 1 ] ( 1 …

解方程C++

数学上经常需要解方程。现在有函数: f(x) 2x^57x^3100,求f(x)y解。 提示:下面是goc程序画出的函数图形,可以看出函数是单调上升的。 输入格式 第一行1个实数:y,范围在[-1000000000,1000000000]。 输出格式 一个实数x…

matlab 差分方程的解(解答qq网友)

1、问题见图 2、解题代码 clear x(1)0; ybuchang0.01; y0:ybuchang:10; for n1:length(y)x(n1)x(n)ybuchang^(1/0.23)0.01*ybuchang; end plot(x(1:(end-1)),y,r) 3 结果:

计算物理中matlab处理微分方程解析解和欧拉法数值解的算法演示

我先来看一个问题的引入: 我们根据题目给出的微分方程编写matlab求解代码如下: syms cd m g v(t); eqn diff(v,t) g - cd/m*v^2; vt dsolve(eqn,cond)求解结果如下: 在得知相关初始条件后,对代码进一步设置求解: …

chatgpt赋能python:Python解代数方程,让你轻松求解复杂方程!

Python解代数方程,让你轻松求解复杂方程! 代数方程一直都是数学领域一个非常关键的研究领域,而求解这些方程也是一个非常复杂而又繁琐的任务。Python作为一门高效且强大的编程语言,可以帮助我们快速、准确地解决代数方程问题。在…

matlab解方程

工具/材料 matlab 2016a 打开matlab,首先定义变量x: syms x; matlab中solve函数的格式是solve(f(x), x),求解的是f(x) 0的解。 第一个例子,求解最常见的一元二次方程x^2-3*x10: solve(x^2-3*x1,x),解出的结果用精确的…

欧拉法与梯形法求解微分方程【含matlab源代码】

本文介绍两种入门级求解微分方程的方法 —— 梯形法与欧拉法。 将上述方程组改写成matlab语言: function F fun(t,Y)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % 程序作…

【计算方法】python求解常微分方程|显式欧拉、改进欧拉、龙格库塔

显式欧拉 import numpy as np from scipy.integrate import odeintdef f(x,y):return y-2*x/y def f_ode(y,x):return y-2*x/ydef Explicit_Euler(f,a,b,y0,h):x_p np.linspace(a,b,int(1/h)1)n len(x_p)value np.zeros(n)value[0] y0for i in range(1,n):value[i] value…

【Matlab】求解微分方程{上}(通解和特解)

求解微分方程 desolve函数实例1实例2实例3实例4 求解有条件的微分方程微分方程显示隐式解未找到显式解决方案时查找隐式解决方案求微分方程级数解为具有不同单边限制的函数指定初始条件(特解)练习题 desolve函数 S dsolve(eqn)求解微分方程eqn&#xf…

常微分方程数值解——差商、欧拉公式详细推导及代码实现

引言 在自然科学的许多领域特别是科学与工程计算中,经常会遇到常微分方程的求解问题。然而只有非常少数且十分简单的微分方程可以用初值等方法求得它们的解,多数只能近似方法求解。 一、预备知识 (差商的推导) 二、 一阶常微分方…

PINN解偏微分方程实例3(Allen-Cahn方程)

PINN解偏微分方程实例3之Allen-Cahn方程 1. Allen-Cahn方程2. 损失函数如下定义3. 代码4. 实验细节及复现结果参考资料 1. Allen-Cahn方程 考虑偏微分方程如下: u t − 0.0001 u x x 5 u 3 − 5 u 0 u ( 0 , x ) x 2 c o s ( π x ) u ( t , − 1 ) u ( t , 1 …

chatgpt赋能python:用Python解方程

用Python解方程 介绍 解方程是数学中最基础的技能之一,也是很多实际问题中必须掌握的技能。Python是一种功能强大的编程语言,通过它,我们可以编写程序来解方程。在本篇文章中,我们将介绍如何使用Python来解方程。 Python中的方…

PINN解偏微分方程--程函方程

目录 前言 一、什么是程函方程? 二、配置环境及库的导入 三、构建训练数据集 四、用Pytorch搭建PINN网络 1.网络搭建 2.一些基本参数变量的确定以及数据格式的转换 五、用Pytorch搭建PINN网络 六、查看loss下降情况 七、导入网络模型,输入验证数据&#…

【免费下载】2023年1月份热门报告合集(附下载链接)

省时查报告-专业、及时、全面的报告库 省时查方案-专业、及时、全面的方案库 2023年1月份省时查报告平台十大热门报告新鲜出炉,本期的热门报告关键词有:2023、趋势、投资、房地产、展望、消费、短视频、抖音、直播电商、零售等;快来看看都谁上…

【免费下载】2023年2月份热门报告合集(附下载链接)

省时查报告-专业、及时、全面的报告库 省时查方案-专业、及时、全面的方案库 2023年2月份省时查报告平台十大热门报告新鲜出炉,本期的热门报告关键词有:ChatGPT、AIGC、人工智能、情人节、营销、直播电商、跨境电商、数字化等;快来看看都谁上…

【免费下载】2023年3月份热门报告合集(附下载链接)

省时查报告-专业、及时、全面的报告库 省时查方案-专业、及时、全面的方案库 【限时免费】无需翻墙,ChatGPT4直接使用 2023年2月十大热门报告盘点 2023年3月份省时查报告平台十大热门报告新鲜出炉,本期的热门报告关键词有:ChatGPT、GPT4、小红…

初学Python到月入过万最快的兼职途径(纯干货)

不错过任何一次干赚钱干货 1.兼职薪资,附行哥工资单 2.兼职门槛,附学习知识清单 3.兼职途径,附入职考核过程 4.行哥的兼职感受 答应行友的第一篇赚钱干货推文来啦,行哥第一个在读书期间通过兼职赚到的10w收入,这也…

AIGC|我让AI来写今年高考作文

作者:谢凯 | 神州数码云基地-需求分析师 目录 一、人工智能究竟强在哪 //以ChatGPT为例,人工智能其优势何在? 二、BingAI如何处理高考作文 三、总结 一、人工智能究竟强在哪 随着ChatGPT(Chat Generative Pre-trained Transfo…

ChatGPT|谷歌首席决策科学家Cassie Kozyrkov介绍 ChatGPT

文章目录 介绍 ChatGPT!对抗网络GANs使用 ChatGPT 编写代码 大揭秘一些自动生成的废话 介绍 ChatGPT! 原文:地址 作者:Cassie Kozyrkov 谷歌首席决策科学家。 ❤️ 统计、ML/AI、数据、双关语、艺术、戏剧、决策科学。 有句话介绍…