如何用matlab求解常微分方程?matlab解常微分方程之符號解法介紹
應(yīng)該如何用matlab求解常微分方程?MATLAB是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級技術(shù)計算語言和交互式環(huán)境,主要包括MATLAB和Simulink兩大部分。用matlab可以解決許多數(shù)學(xué)問題,如果用得好的話,老師布置的數(shù)學(xué)作業(yè)就不用愁了。接下來小編將給大家介紹matlab解常微分方程之符號解法,一起去看看吧!
matlab解常微分方程符號解法:
1、首先得介紹一下,在matlab中解常微分方程有兩種方法,一種是符號解法,另一種是數(shù)值解法。在本科階段的微分?jǐn)?shù)學(xué)題,基本上可以通過符號解法解決。
2、用matlab解決常微分問題的符號解法的關(guān)鍵命令是dslove命令。該命令中可以用D表示微分符號,其中D2表示二階微分,D3表示三階微分,以此類推。值得注意的是該微分默認(rèn)是對自變量t求導(dǎo),也可以很容易在命令中改為對其他變量求導(dǎo)。
3、說了半天,該命令的最完整的形式如下。r=dsolve('eqn1','eqn2',...,'cond1','cond2',...,'var').解釋如下:eqni表示第i個微分方程,condi表示第i個初始條件,var表示微分方程中的自變量,默認(rèn)為t。
4、解釋了半天,不如用實例來說明。下面以解決一個簡單的微分方程入手。方程如下。
5、首先啟動matlab軟件,在命令行中歡快地敲入
dslove(Dy=3*x*x,x),然后輕松地摁一下鍵盤上的enter建,最后答案就蹦出來了。
6、下面,我們來加大難度,在上面的方程條件下加入初始條件x=0時,y=2。
只需在相同的命令中加入一個條件語句就可以了。命令形式為
dslove(Dy=3*x*x,y(0)=2,x)。可以看到答案中的常數(shù)項
C2已經(jīng)變成了2。
7、最后,我再加大一下難度。這次來求一個微分方程組。方程組如下。初始條件為x(0)=2,y(0)=1,dy(0)=1.
8、在命令中只需改一下相應(yīng)的方程與條件即可以了,由于是對t求導(dǎo),所以可以用默認(rèn),不需要在末尾添加t。
9、可以看到用matlab中的dslove命令確實可以解決許多常微分問題。
教程結(jié)束,以上就是關(guān)于如何用matlab求解常微分方程?matlab解常微分方程之符號解法介紹。如果你還不知道如何用matlab求解常微分方程,那就按照以上方法試試吧!更多matlab使用技巧,盡在我們網(wǎng)站哦!
相關(guān)評說:
密云縣嚙入: ______[答案] y=dsolve('Dy=y/x-y^2/x','y(1)=0.5','x') y = 1/(1/x + 1) 梯形公式: y(1)=0.5;x(1)=1;h=0.1; for n=1:99 x(n+1)=x(n)+h; y(n+1)=y(n)+h*( y(n)/x(n)-y(n)^2/x(n)); y(n+1)=y(n)+h/2*( y(n)/x(n)-y(n)^2/x(n) +y(n+1)/x(n+1)-y(n+1)^2/x(n+1) ); end plot(x,y,'y')
密云縣嚙入: ______ 你這個不是求微分方程,而是求這個微分方程的穩(wěn)定點,也就是平衡點,那么就是一個解方程組的問題了. 首先你定義所有的變量,使用syms函數(shù),方法是 syms s e ep epsp P ez epsz Z a beta N Kn Rm lmdz dltap 然后把三個方程寫出來,例如 ...
密云縣嚙入: ______ 首先要明確,simulink的作用為求解常微分方程(組)!且這是他唯一的作用!也就是說偏微分方程在simulink中是無法求解的,需要其他工具或軟件作為接口. Dx=diff(A,n,dim)計算數(shù)值微分 用dsolve(''表達(dá)式1','表達(dá)是',...,'表達(dá)式n','初始值','獨立變量'); 也可以用ode23或者ode45函數(shù)計算. 要查函數(shù)調(diào)用格式可以在matlab workspace輸入>>help ode23即可.
密云縣嚙入: ______ 用例子吧 dy/dt+2x=0 dx/dt+3y=0 >> [x,y]=dsolve('Dy+2*x=0','Dx+3*y=0') x = C1*exp(6^(1/2)*t)+C2*exp(-6^(1/2)*t) y = -1/3*6^(1/2)*(C1*exp(6^(1/2)*t)-C2*exp(-6^(1/2)*t))
密云縣嚙入: ______ clear all A=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8]; b=[1 4 0]' %輸入矩陣A,b A;b; %輸入矩陣A,b [m,n]=size(A); R=rank(A); B=[A b]; Rr=rank(B); format rat if R==Rr&R==n % n為未知數(shù)的個數(shù),判斷是否有唯一解 x=A\b; elseif R==Rr&R
密云縣嚙入: ______ t0 = 0; tf = 5; % y'' = (2-3y-2ty')/(1+t^2) dy = @(t,y) [y(2);(2-3*y(1)-2*t*y(2))/(1+t^2)]; [T,Y] = ode45(dy,[t0 tf],[0 1]); plot(T,Y(:,1))
密云縣嚙入: ______[答案] 把自變量x變?yōu)閠 >> y=dsolve('(t^2+1)*Dy-(y^2+1)=0') y =tan(atan(t)+C1) 即 y =tan(atan(x)+C1) 給10分吧,好嗎?看看我的回答 總分:16464 ;回答總數(shù):682;題均:16464/682=24.1408
密云縣嚙入: ______ 有符號法和數(shù)值法.一般使用dsolve和ode命令,比如: 符號法 dsolve('Df = f + sin(t)') ans = C4*exp(t) - sin(t)/2 - cos(t)/2 數(shù)值法 sol = ode45(@vdp1,[0 20],[2 0]); x = linspace(0,20,100); y = deval(sol,x,1); plot(x,y);
密云縣嚙入: ______ 沒試過matlab,算這玩意太慢了,有fortran版的要不,有興趣的話可以參考一下. 代碼: SUBROUTINE runge_kutta() !關(guān)于Runge-Kutta方法,該方法是用來解形如y'=f(t,y)的常微分方程的 !經(jīng)典的4階R-K方法的公式如下: ! Yn+1 = Yn + ...
密云縣嚙入: ______ 1.新建一個m文件,編寫隱式Euler法的程序: function [x,y]=Implicit_Euler(odefun,xspan,y0,h,varargin) % 隱式Euler公式求解常微分方程 % 輸入?yún)?shù): % ---odefun:微分方程的函數(shù)描述 % ---xspan:求解區(qū)間[x0,xn] % ---y0:初始條件 % ---h:迭...