MATLAB 求解常微分方程的函數是dsolve()。應用此函數可以求得常微分方程(組)的通解,以及給定邊界條件(或初始條件)後的特解。
S=dsolve(eqn)
S=dsolve(eqn,cond)
S=dsolve(eqn,cond,Name,Value)
equ1,equ2,…為給定的常微分方程(組)。
② Value為給定的常微分方程(組)的指定符號自變量,默認變量為t。
③ cond1,cond2,…為給定的常微分方程(組)給定的邊界條件(或初始條件)。初始和邊界條件由字符串表示:y(a)=b,Dy(c)=d,D2y(e)=f 等等,
④ r 為求符號解(即解析解),若邊界條件少於方程(組)的階數,則返回的結果r 中會出現任意常數C1,C2,…
⑤ 在微分方程(組)的表達式equ 中,大寫字母D 表示對自變量(設為x)的微分算子:
D=d/dx,D2=d2/d2x,...,微分算子D 後面的字母則表示為因變量,即待求解的未知函數。
⑥ dsolve 命令最多可以接受12 個輸入參量(包括方程組與定解條件個數,當然也可以做到輸入的方程個數多於12 個,只要將多個方程置於一字符串內即可)。
⑦ 若沒有給定輸出參量,則在命令窗口顯示解列表。
⑧ 若該命令找不到解析解,則返回一警告信息,同時返回一空的sym 對象。這時,用戶可以用命令ode23 或ode45 求解方程組的數值解。
求解常微分方程的通解clc;clear all;close all;% 在求通解問題syms y(x)y=dsolve(x^2+y+(x-2*y)*diff(y)==0)結果:
y = x/2 + ((4*x^3)/3 + x^2 + C3)^(1/2)/2 x/2 - ((4*x^3)/3 + x^2 + C3)^(1/2)/2clc;clear all;close all;syms y(x)% 定義符號變量dy=diff(y);%一階導數d2y=diff(y,2);%二階導數,用於初值或邊值條件的賦值y=dsolve(diff(y,3)-diff(y,2)==x,y(1)==8,dy(1)==7,d2y(2)==4)y=simplify(y) %把計算結果化解y = (17*x)/2 + 7*exp(x - 2) - 7*x*exp(-1) - x^2/2 - x^3/6 + 1/6clc;clear all;close all;syms f(x) g(x)df=diff(f);%用於初值或邊值條件的賦值[f1,g1]=dsolve(diff(f,2)+3*g==sin(x),diff(g)+diff(f)==cos(x))%求通解f1=simplify(f1),g1=simplify(g1)
[f2,g2]=dsolve(diff(f,2)+3*g==sin(x),diff(g)+diff(f)==cos(x),df(2)==0,f(3)==3,g(5)==1)f2=simplify(f2),g2=simplify(g2)f1 = C3 + sin(x)/2 + (3^(1/2)*C4*exp(3^(1/2)*x))/3 - (3^(1/2)*C5*exp(-3^(1/2)*x))/3 g1 = sin(x)/2 - (3^(1/2)*C4*exp(3^(1/2)*x))/3 + (3^(1/2)*C5*exp(-3^(1/2)*x))/3 f2 = (18*exp(3^(1/2)*(x + 2)) - 6*exp(3^(1/2)*(2*x + 3)) - 6*exp(7*3^(1/2)) + 6*exp(3^(1/2)*(x + 4)) + 6*exp(3^(1/2)*(x + 6)) + 18*exp(3^(1/2)*(x + 8)) + 3*exp(3^(1/2)*(2*x + 3))*sin(5) + 3*exp(3^(1/2)*(x + 2))*sin(x) + 3*exp(3^(1/2)*(x + 8))*sin(x) - 3*exp(3^(1/2)*(x + 2))*sin(3) - 3*exp(3^(1/2)*(x + 4))*sin(5) - 3*exp(3^(1/2)*(x + 6))*sin(5) - 3*exp(3^(1/2)*(x + 8))*sin(3) + 3*exp(7*3^(1/2))*sin(5) + 3^(1/2)*cos(2)*exp(3^(1/2)*(x + 3)) - 3^(1/2)*cos(2)*exp(3^(1/2)*(x + 7)) + 3^(1/2)*cos(2)*exp(10*3^(1/2)) - 3^(1/2)*cos(2)*exp(2*3^(1/2)*x))/(6*(exp(3^(1/2)*(x + 2)) + exp(3^(1/2)*(x + 8)))) g2 = (6*exp(7*3^(1/2)) + 6*exp(3^(1/2)*(2*x + 3)) - 3*exp(3^(1/2)*(2*x + 3))*sin(5) + 3*exp(3^(1/2)*(x + 2))*sin(x) + 3*exp(3^(1/2)*(x + 8))*sin(x) - 3*exp(7*3^(1/2))*sin(5) - 3^(1/2)*cos(2)*exp(10*3^(1/2)) + 3^(1/2)*cos(2)*exp(2*3^(1/2)*x))/(6*(exp(3^(1/2)*(x + 2)) + exp(3^(1/2)*(x + 8))))求解線性常微分方程組
一階齊次線性微分方程組
clc;clear all;close all;
syms x(t) y(t) z(t)X=[x;y;z]% 定義符號向量A=[2 1 3;0 2 -1;0 0 2];B=[1 2 1]';[x, y, z]=dsolve(diff(X)==A*X,X(0)==B)結果:
X(t) = x(t) y(t) z(t) x = exp(2*t) + 5*t*exp(2*t) - (t^2*exp(2*t))/2 y = 2*exp(2*t) - t*exp(2*t) z = exp(2*t)非齊次線性方程組
clc;clear all;close all;syms x(t) y(t) z(t)X=[x;y;z]% 定義符號向量A=[1 0 0;2 1 -1;3 2 1];B=[0;0;exp(t)*cos(2*t)];x0=[0;1;1];%初值條件X=dsolve(diff(X)==A*X+B,X(0)==x0)%求符號解X=simplify([X.x;X.y;X.z])%顯示解的各個分量pretty(X) %分數線居中的顯示方式X(t) = x(t) y(t) z(t)
X =
包含以下欄位的 struct:
y: [1×1 sym] x: [1×1 sym] z: [1×1 sym]
X = 0 (exp(t)*(cos(2*t) + cos(2^(1/2)*t) - 2^(1/2)*sin(2^(1/2)*t)))/2 (exp(t)*(2*sin(2*t) + 2*cos(2^(1/2)*t) + 2^(1/2)*sin(2^(1/2)*t)))/2 / 0 \| || exp(t) (cos(2 t) + cos(sqrt(2) t) - sqrt(2) sin(sqrt(2) t)) || ---- || 2 || || exp(t) (sin(2 t) 2 + 2 cos(sqrt(2) t) + sqrt(2) sin(sqrt(2) t)) || --- |\ 2 /MATLAB相關內容往期回顧
MATLAB中繪製三維圖形
MATLAB的輸入輸出input函數
matlab詳細介紹畫柱形圖
matlab中矩陣的入門知識
matlab中legend函數的用法
matlab繪圖--線性規劃圖解法示意
Matlab 進度條的製作
Matlab對fig文件導出數據
Matlab中plot函數全功能解析
Matlab的fmincon函數求解非線性規劃
MATLAB線性規劃函數求解線性規劃
MATLAB求解混合整數線性規劃
電子書推薦(一)《MATLAB在數學建模中的應用》
matlab GUI實現導入txt文件(含字符和數據的文本)
matlab 畫圖——誤差條圖errorbar函數(含視頻講解)
matlab多項式(定義、四則計算、求根)
Matlab中繪製不同坐標的圖形
Matlab 多項式擬合函數關係
層次分析法(AHP)在MATLAB中的應用
MATLAB的lsqcurvefit函數擬合非線性式子中的未知參數
MATLAB的fgoalattain()函數求解多目標規劃
基於MATLAB的灰色預測模型GM(1,1)計算的GUI界面
電子書推薦(二)《Matlab 從入門到精通 》
MATLAB曲線擬合工具箱
MATLAB的主成分分析的GUI界面計算
MATLAB《自動控制原理》相關編程
MATLAB的switch選擇語句和input輸入語句
MATLAB的switch選擇語句和input輸入語句視頻
MATLAB實例講解—求二元函數的極值
MATLAB實例講解—求二元函數的極值視頻
MATLAB的ode45函數實例求常微分方程數值解
MATLAB求解微分方程組—以一種傳染病的動力學模型求解為例
Matlab編程並繪製函數或者信號包絡線
MATLAB中regress函數用法(多元線性回歸)
MATLAB實例編程之一個成績分析和處理的程序實例講解
matlab中的歸一化處理的三種方法
電子書推薦(三)《運籌學基礎及其MATLAB應用》
MATLAB非線性擬合函數nlinfit函數
Matlab作圖後的調整—線條、坐標、標題、圖例
MATLAB用GUI計算十進位轉換為二、八、十六進位
MATLAB的solve函數求非線性解方程或方程組
視頻講解MATLAB的solve函數求非線性解方程或方程組
Matlab非線性方程求解器fsolve總結
視頻講解Matlab非線性方程求解器fsolve總結
MATLAB的fzero函數求解單變量非線性方程求解
視頻講解MATLAB的fzero函數求解單變量非線性方程求解
MATLAB GUI實現簡單的計算器
視頻講解MATLAB GUI實現簡單的計算器
MATLAB的fittype函數的非線性擬合未知參數
視頻講解MATLAB的fittype函數的非線性擬合未知參數
總結MATLAB的線性擬合和非線性擬合函數參數
視頻講解總結MATLAB的線性擬合和非線性擬合函數參數
MATLAB中的數據插值函數
視頻講解MATLAB中的數據插值函數
MATLAB的拉格朗日插值
視頻講解MATLAB的拉格朗日插值
基於MATLAB的BP神經網絡預測計算GUI界面
視頻講解基於MATLAB的BP神經網絡預測計算GUI界面
MATLAB求函數的導數和偏導
視頻講解MATLAB求函數的導數和偏導
MATLAB求數值積分方法(一)
視頻講解MATLAB求數值積分方法(一)
MATLAB繪製雙y軸圖形兩種方法
視頻講解MATLAB繪製雙y軸圖形兩種方法
MATLAB實現人口預測的Logistic模型
視頻講解MATLAB實現人口預測的Logistic模型
MATLAB 蒙特卡洛方法編程並舉例分析
視頻講解MATLAB 蒙特卡洛方法編程並舉例分析