常微分方程组求解 解常微分方程组步骤
求解常微分方程组的几种方法
分享到:
收藏推荐 0引言在科学应用中,常需要建立实际问题的数学模型,建立各种变量的常微分方程组及对其求解。微分方程是指方程中未知的是一个变量或几个变量的函数,并且在方程中不仅有函数本身而且有它们的导数。如果方程中的未知函数是有多个变量的函数,该方程为偏微分方程;若未知函数是只有一个变量的函数,该方程为常微分方程。微分方程中出现的未知函数导数的最高阶数,叫做微分方程的阶数[1]。在实际应用中,经常需要建立若干个物理量随时间变化的常微分方程组及求常微分方程组初值问题的数值解,由于处理问题时使用的编程语言不同,常遇到如下问题:如何在各种语言内处理该问题?通常的使用其他工具的求解办法?如果使用其他工具求解,如何实现编程语言与求解工具之间的参数传递?在工程实际与科学研究中遇到的微分方程往往比较复杂,在很多情况下,都不能给出解析表达式,这些情况下不适宜采用解析法来求解,而需采用数值解法来求近似解[2]。常微分方程数值解法的思路:对求解区间进行剖分,然后把常微分方程离散成在节点上的近似公式或近似方程,最后结合定解条件求出近似解。
常微分方程求解,要步骤,谢谢
dx/x = - λdt, lnx = - λt + lnC, x = Ce^(-λt),
x(0) = 1100, C = 1100, x = 1100e^(-λt).
dy/dt + μy = 1100λe^(-λt)
y = e^(∫-μdt) [∫1100λe^(-λt)e^(∫μdt)dt + D]
= e^(-μt) [1100λ∫e^(-λt)e^(μt)dt + D]
= e^(-μt) [1100λ∫e^(μ-λ)tdt + D]
= e^(-μt) [1100λe^(μ-λ)t/(μ-λ) + D]
= 100λe^(-λ)t/(μ-λ) + De^(-μt),
y(0) = 0, D = -100λ/(μ-λ) ,
y = [100λ/(μ-λ)] [e^(-λ)t - e^(-μt)].
怎么求常微分方程的解
微分方程的概念
方程对于学过中学数学的人来说是比较熟悉的;在初等数学中就有各种各样的方程,比如线性方程、二次方程、高次方程、指数方程、对数方程、三角方程和方程组等等。这些方程都是要把研究的问题中的已知数和未知数之间的关系找出来,列出包含一个未知数或几个未知数的一个或者多个方程式,然后取求方程的解。
matlab常微分方程组求解
上面两题用dsolve都解不出,用ode45数值解法如下:
1题中x1=i,x2=s,则:
syms x1(t) x2(t)
lamda=0.5;u=0.1;
V = odeToVectorField(diff(x1) ==lamda*x1*x2-u*x2,diff(x2) ==-lamda*x1*x2+0.1)
M = matlabFunction(V,'vars', {'t','Y'})
%计算区间[0 1],初值[0 0]
options = odeset('OutputFcn',@odeplot);
sol = ode45(M,[0 1],[0 0],options)
2题中x=x1,y=x2,z=x3,则:
syms x1(t) x2(t) x3(t)
V = odeToVectorField(diff(x1) ==-8/3*x1+x2*x3,diff(x2) ==-10*x2+10*x3,diff(x3)==-x1*x2+28*x2-x3)
M = matlabFunction(V,'vars', {'t','Y'})
%计算区间[0 1],初值[0 0 1.0e-8]
options = odeset('OutputFcn',@odeplot);
sol = ode45(M,[0 4],[0 0 1.0e-8],options)
figure
x = linspace(0,4,100);
y = deval(sol,x,1:3);
plot(y(1,:),y(2,:))
title('x-y相图')
xlabel('x'),ylabel('y')
grid on
figure
plot(y(1,:),y(3,:))
title('x-z相图')
xlabel('x'),ylabel('z')
grid on
figure
plot3(y(1,:),y(2,:),y(3,:))
title('x-y-z相图')
xlabel('x'),ylabel('y'),zlabel('z')
grid on