如何利用matlab解微分方程
1樓:肥仙女愛遊戲
第一種方法:利用dsolve函式求微分方程的符號解(通解):對於一些不是很難,要求出通解的微分方程,用dsolve函式求解。
1、 開啟matlab軟體-->點選新建指令碼選單,新建乙個指令碼檔案用於編寫微分方程求解程式。
2、 輸入微分方程求解程式-->點選儲存-->點選執行。
3、在matlab的命令視窗即可看到求解結果,是乙個關於引數a,b的表示式。
第二種方法:利用matlab中的solver函式(包括ode45、ode23、ode15s等)來求解微分方程的數值解,這種方法是最常用的方法,對於dsolve函式難以求解的方程就可以利用這種方法求解方程的數值解。
1、 開啟matlab-->新建乙個指令碼檔案用於編寫求解程式。
2、 在指令碼檔案中輸入求解程式-->點選儲存-->點選執行。
3、 這裡需要先編寫乙個函式檔案用於表示方程-->點選儲存-->編寫求解程式-->點選儲存-->點選執行。
4、在figure頁面就可以看到所求解的微分方程的圖形。
用matlab求解乙個條件微分方程組
2樓:網友
題主給出的微分方程組,用matlab求解的話,可以使用ode函式得到其數值解。
求解過程:第一步,根據微分方程組,自定義其函式,odefun(t,x)
第二步,確定t的範圍,如tspan=[0 1];
第三步,確定初始條件,確定y0的初值,即y0=[100,20];
第四步,使用ode45函式,得到其數值解,即。
t,x] =ode45(@odefun,tspan,y0);
第五步,使用plot函式,繪出t—x(t)和t—y(t)的曲線圖,即。
plot(t,x(:,1),t,x(:,2));
執行程式後,可以得到如下結果。
matlab微分方程的解?
3樓:網友
如何用matlab求解微分方程。
的數值解和解析解?
一、微分方程的數值解可以ode函式來求解。其求解方法:
1、自定義微分方程組函式,仔襲odefun(x,y)2、定義x【0,10】間若干等份的數值,如n=503、定義y的初值,即。
y0=[2,7];
4、使用ode45函式求y(x),z(x)數值解,即。
x,y]=ode45(@odefun,x,y0);
5、使用plot函式,繪製x—y(x),x—悄桐z(x)曲線圖。
這裡,y(1)代表y(x)的數值解,y(2)代表z(x)的數值解。
二、微分方程的解析解可以dsolve函式來求解。
1、對變數y(x),z(x)進行宣告,即。
syms y(x) z(x)
2、對變數y(x),z(x)求一階導數。
即。dy=diff(y,1);dz=diff(z,1);
3、使用dsolve求y(x),z(x)解析表示式。
即。y,z]=dsolve(dy-z==sin(x),dz+y==1+x,y(0)==2,z(0)==7)
4、將x【0,10】間劃分若干等份,如n=505、分別念運兄計算與x對應的y(x),z(x)值。
6、使用plot函式,繪製x—y(x),x—z(x)曲線圖。
三、使用hold on命令,將微分方程組的數值解曲線圖和解析解曲線圖,表示在同一圖窗中。
4樓:匿名使用者
首先得介紹一下,在matlab中解常微分方程有兩種方法,一種是符慶銷號解法,另一種是數值解法。在本科階段的微分數學題,基本上可以通過符號解法解決。
用matlab解決常微分問題的符號解法的關鍵命令是dsolve命令。該命令中可以用d表示微分符號,其中d2表示二階微分,d3表示三階微分,以此類推。值得注意的悔差老是該微分預設是對自變數t求導,也可以很容易在命令中改為對其他變數求導。
說了半天,該命令的最完整的形式如下。
r=dsolve('eqn1','eqn2',.cond1','cond2',.var').
解釋如下:eqni表示第i個微分方程,condi表示第i個初始碧公升條件,var表示微分方程中的自變數,預設為t。
解釋了半天,不如用例項來說明。下面以解決乙個簡單的微分方程入手。方程如下。
5樓:十全小秀才
解:∵微分方程組為y'-z=sinx,z'+y=1+x有z=y'-sinx,將z=y'-sinx代入方程。
z'+y=1+x,得:y"-cosx+y=1+x,有y"+y=1+x+cosx ∴有。
y"sinx+y'cosx-y'cosx+ysinx=1+x)sinx+sinxcosx,y'sinx)'-ycosx)'=1+x)sinx+
sinxcosx,y'sinx-ycosx=-(x+1)cosx+ 為任意常數),y'/sinx-ycosx/sin²x=
x+1)cosx/sin²x+1/sinx-,y/sinx=(x+1)/sinx-(
c(c為任意常數)
方程的通解為y=x+1-(
哪轎z=1+(
y(0)=2,z(0)=7 ∴有2=1-(,行手。
7=1+c ∴方程的解為。
y=x+1+cosx+(,z=
希望對你有幫李帶肆助。
matlab怎麼解微分方程
6樓:網友
1.可以解析求解的微分方程。
dsolve()
呼叫格式為:
y=dsolve(f1,f2,..fmo;
y=dsolve(f1,f2,..fm,'x');
如下面的例子,求解了微分方程。
syms t;
u=exp(-5*t)*cos(2*t-1)+5;
uu=5*diff(u,t,2)+4*diff(u,t)+2*u;
syms t y;
y=dsolve(['d4y+10*d3y+35*d2y+50*dy+24*y=87*exp(-5*t)*cos(2*t-1)+92*exp(-5*t)*sin(2*t-1)+10'])
yc=latex(y)
將yc的內容copy到latex中編譯,得到結果。
在上一篇中,我們使用dsolve可以解決一部分能夠解析求解的微分方程、微分方程組,但是對於大多數微分方程(組)而言不能得到解析解,這時數值求解也就是沒有辦法的辦法了,好在數值解也有很多的用處。
數值分析方法中講解了一些eular法、 runge-kutta 法等一些方法,在matlab中內建的ode求解器可以實現不同求解方法的相同格式的呼叫,而不必太關心matlab究竟是用什麼演算法完成的。
這一回我們來說明ode45求解器的使用方法。
求解的上手例子:
求解方程組。
dx=y+x(1-x^2-y^2);
dy=-x+y*(1-x^2-y^2)
初值x=;y=;
先說明一下最常用的ode45呼叫方式,和相應的函式檔案定義格式。
t,x]=ode45(odefun,tspan,x0);
其中,fun就是導函式,tspan為求解的時間區間(或時間序列,如果採用時間序列,則必須單調),x0為初值。
這時,函式檔案可以採用如下方式定義。
function dx=odefun(t,x)
對於上面的小例子,可以用如下的程式求解。
function jixianhuan
clear;clc
x0=[;;
t,x]=ode45(@jxhdot,[0,100],x0);
plot(x(:,1),x(:,2))
function dx=jxhdot(t,x)
dx=[x(2)+x(1).*1-x(1).^2-x(2).^2);
x(1)+x(2).*1-x(1).^2-x(2).^2)
太多不好說。你去看這個。
祝學習進步@@
用matlab求解微分方程組
7樓:網友
題主給出的微分方程組,可以這樣求解:
1、根據題意,該微分方程組可以使用ode45函式來求解。
2、完善自定義微分方程組的函式,即。
function dy = odefun(t,y)a,b,c,d,e,f都為引數。
a=;b=;c=;d=;e=;f=; %為解題而設定。
dy(1)=y(3)*c-y(1)*d;
dy(2)=-a*y(3)*e-b*y(3)*f+y(1)*d;
dy(3)=y(2)*y(3)*e*a+y(2)*y(3)*f*b-y(3)*c;
3、確定邊界條件,即y0=[0,0,0];
4、確定時間區間,即tspan=[0 1];
5、使用ode45函式,得到其數值解。即。
t,y]=ode45(@odefun,tspan,y0)6、使用plot函式,顯示t-y1,y2,y3的函式曲線關係。即。
plot(t,y)
xlabel('t');ylabel('x(t),y(t),z(t)')
legend('x(t)',y(t)',z(t)')7、執行結果。
如何用matlab求特徵向量,如何用MATLAB求特徵向量
用eig函式,例如bai b 3 2 9 2 eps 2 4 1 eps eps 4 eps 2 1 0 5 5 1 1 u v eig b u 0.6153 0.4176 0.0000 0.1496 0.7881 0.3261 0.0000 0.1317 0.0000 0.0000 0.0000 ...
如何用matlab畫有效前沿曲線
根據你的描述 可以用frontcon 也可以甩portopt 兩者有相同點也有不同點,函式具體用法可以檢視幫助文件 cad樣條曲線怎麼畫?1.樣條曲線命令只有1個選項 物件 2.物件 啟動樣條曲線命令輸入 o 啟動物件命令,選擇先前用 pl 畫多段線命令畫好的物件,然後用pe命令變成樣條曲線.然後再...
如何用matlab生成這樣的陣列 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6
其實你bai這個問題,du用程式設計是很簡單的。zhi但是如果單用daomatlab函式實現,我現在回只想到一個辦答法。比如 a 1 n 是你自己假定的長度 然後呼叫複製函式b repmat a,1,5 生成相同的矩陣,組合成為一個大矩陣。最後sort b,2 進行排序。就出來你想要的結果了。mat...