1樓:匿名使用者
說明
求解常微分方程一般使用ode系列函式(其中最常用的是ode45),基本做法就是把微分方程用函式表示出來,然後呼叫ode函式求解即可。對於本題而言,使用匿名函式描述微分方程更為方便一些。
參考**
k0=8; k1=1; k=1; k2=5; n=2; % 常數定義
ds = @(t,s)[k0-k1*(1+(s(2)/k)^n)*s(1); k1*(1+(s(2)/k)^n)*s(1)-k2*s(2)];
s0 = [0; 0]; % 初始條件,注意自行設定
tf = 10; % **時間,可根據需要自行修改
[t,s] = ode45(ds,[0 tf],s0); % 使用ode求解器求解微分方程
% 繪圖
plot(t,s)
xlabel \itt; ylabel '_1, _2'
legend('_1(\itt)', '_2(\itt)')
2樓:百川一歸大海
function myode4()
clc;close all
tspan=[0:0.1:12];
x0=[0 0];%假設t=0時s1=0,s2=0,如果不是自己改[t,x]=ode45(@(t,x) weifen(t,x),tspan,x0,);
disp(' 時間 s1 s2')disp([t,x])
plot(t,x(:,1))
hold on
plot(t,x(:,2),'r')
xlabel('t')
ylabel('s')
legend('s1(t)曲線圖','s2(t)曲線圖')function dx=weifen(t,x)dx=zeros(2,1);
k0=8;k1=1;k=1;k2=5;n=2;
dx(1)=k0-k1*(1+(x(2)/k)^n)*x(1);
dx(2)=k1*(1+(x(2)/k)^n)*x(1)-k2*x(2);
endend
matlab解多元常微分方程組
3樓:三城補橋
這個方程要解出來還要初始條件吧
不妨設(x(0),y(0))=(a,b);
還有用ode45只能得到數值解,不能給出解析式表達那麼先建立一個函式檔案
test_fun.m
function dx=tsst_fun(x,t)dx(1)= c-b*x(1)-w*x(1)*x(2);
dx(2)=w*x(1)*x(2)-(b+m)*x(2);
那麼呼叫ode45
x0=(0,0);
t0=0:0.01:10;
;%根據你所想要的求得值設定t0,間隔是任意的,與求解所用的步長無關,
[x,t]=ode45(@test_fun,t0,x0);得到了
如何用matlab求解一個二階常係數微分方程組
4樓:我行我素
用命令:dsolve('s','s1','s2',…,'x')
其中s 為方程s1,s1,s3,…為初始條件x 為自變數方程s 中用d 表示求導
數d2,d3,…表示二階三階等高階導數初始條件預設時給出帶任意常數
c1,c2,..的通解自變數預設值為t 也可求解微分方程組
例1、dsolve('dy=1+y^2')
結果ans =tan(t+c1)
2、y=dsolve('dy=1+y^2','y(0)=1','x')
結果y =tan(x+1/4*pi)
3、x=dsolve('d2x+2*d1x+2*x=exp(t)','x(0)=1','dx(0)=0')
結果x =1/5*exp(t)+3/5*exp(-t)*sin(t)+4/5*exp(-t)*cos(t)
4、s=dsolve('df=3*f+4*g','dg=-4*f+3*g') %解微分方程組
s =f: [1x1 sym]
g: [1x1 sym]
計算結果返回在一個結構 s 中為了看到其中 f,g 的值有如下指令
f=s.f
g=s.g
f =exp(3*t)*(cos(4*t)*c1+sin(4*t)*c2)
g =-exp(3*t)*(sin(4*t)*c1-cos(4*t)*c2)
5樓:minquan一人
一、理論解,用dsolve函式(在command window 中輸入doc dsolve可以檢視幫助)
示例:**:
[x,y]=dsolve('d2x+2*dx=x+2*y-exp(-t)','dy=4*x+3*y+4*exp(-t)')
二、數值解,用ode45,或ode23, ode15s其他函式。(在command window 中輸入doc ode45可以檢視幫助)
示例:1. 建立m檔案
function dy=vdp(t,y)
dy=[y(2);
1000*(1-y(1)^2)*y(2)-y(1);];
2. 呼叫matlab 函式ode15s
[t,y]=ode15s('vdp',[0 1000],[2 0]);
plot(t,y(:,1));
影象為:
matlab解微分方程組(帶引數) 20
6樓:匿名使用者
可以藉助於巢狀函式或匿名函式實現附加引數的傳遞,例如function main
y0 = [1.4; 0.1; 0.1];
a = linspace(eps, 10, 20);
y = a * nan;
for ii = length(a)
a = a(ii);
y = ode45(@eq2, [0 a], y0);
y(ii) = y(end, 1);
endplot(a, y)
function dy=eq2(t,y)
dy = y*0;
dy(1)=-(a*y(2))/(4*exp(a*t/4));
dy(2)=-(a/4)*(exp(a*t/4))*(y(1)+0.5)+(a/4)*y(2)-y(3)*((exp(a*t/4))^2);
dy(3)=4*y(2);
endend
但微分方程組似乎是剛性的,不過換用ode15s、ode23s等適合剛性系統的演算法效果也不理想(可以呼叫ode*函式時不返回引數,觀察求解的過程)。
急求matlab解常微分方程組數值解的解決方案
7樓:日向淳正
呼叫方法:[t,x] = ode45(@eqx,[0 0.2] , [0 1 1.1 1.25])x的初始值寫在一個矩陣裡.
另外你的函式定義時k少一維k(4),我給你加了一個:
function xdot = eqx(t,x);
m = 0.5;
alf = 0.15;
k=[0.0265,0.1,0.15,0.12];
q=20;
a=0.8;
xdot = zeros(4,1);
xdot(1) = q - alf * x(1) * x(2) + a*m*(x(1)+x(2)+x(3)+x(4));
xdot(2) = x(2) * (-m + k(2) * alf * x(1) - alf * x(3));
xdot(3) = x(3) * (-m + k(3) * alf * x(2) - alf * x(4));
xdot(4) = x(4) * (-m + k(4) * alf * x(3));
8樓:匿名使用者
你那個函式裡k(4)是多少啊?沒有定義
matlab求解二階微分方程並畫出y與t函式曲線
用matlab 求解二階微分方程並畫出y與t函式曲線,可以用dsolve函式和plot函式來實現。給出的二階微分方程存在著幾個疑點 1 表示式中的z是否是筆誤,還是y。如是z,其表示式是什麼?2 求解二階微分方程的數值解,必須有兩個初始條件,本題只有乙個。下列 中,z按y來處理,增加初始條件y 0 ...
考研數一是否考常係數線性微分方程組
枝葉不離 數一是要求考常係數微分方程的,以下附上數一常微分方程考試要求考研數學一大綱 常微分方程部分 考試要求 1.了解微分方程及其階 解 通解 初始條件和特解等概念.2.掌握變數可分離的微分方程及一階線性微分方程的解法.3.會解齊次微分方程 伯努利方程和全微分方程,會用簡單的變數代換解某些微分方程...
matlab代數題求解,求方程組的解。和多項式重根
盛金公式判定 a 1 b 0 c 4 d 4 e 3 d 3 b 2 8 a c e 3 b 4 16 a 2 c 2 16 a b c 16 a 2 b d 64 a 3 e f b 3 4 a b c 8 a 2 d 2 a d 2 3 e b d e 9 f c e 2 3 d f delta...