matlab解常微分方程組並畫圖的語句

時間 2021-09-05 10:39:19

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...