MATLAB的dsolve函數求微分方程的符號解

2021-12-29 雲龍派

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)/2

clc;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/6

clc;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 蒙特卡洛方法編程並舉例分析

相關焦點

  • 用MATLAB巧解微分方程實例分析
    大二選了matlab課,感覺這玩意兒tql(太強了),然後突發奇想,用這軟體不恰可以撫慰我那被微分方程傷害了的幼小得心靈嘛。說弄就弄:解決我們的微分方程就要用到dsolve()這個重要的函數。其完整形式為:dsolve(『eqn』,』cond』,』var』)沒接觸過matlab的小兄弟可能看著有點懵,這是啥。暫且聽我慢慢道來:eqn代表微分方程,cond代表初始條件(無初始條件可以預設),var代表微分方程中的自變量(默認為t)。對了,重要的一階導,二階導,等高階導怎麼表示呢?別著急,也很簡單。
  • 2019數學建模國賽|Matlab 求解微分方程(組)
    1.在 Matlab 中,用大寫字母 D 表示導數,Dy 表示 y 關於自變量的一階導數,D2y 表示 y 關於自變量的二階導數,依此類推.函數 dsolve 用來解決常微分方程(組)的求解問題,調用格式為            X=dsolve(『eqn1』,』eqn2』,…)如果沒有初始條件,則求出通解,如果有初始條件,則求出特解系統預設的自變量為
  • 帶你用matlab輕鬆搞定微分方程
    考慮大多數讀者對微分方程求解方法比較陌生,所以過冷水本期簡單普及一下微分方程的求解問題。關於微分方程你需要了解:含有未知的函數及其某些階的導數以及其自變量本身的方程稱為微分方程。如果未知函數是一元函數,則稱為常微分方程。如果未知函數是多元函數,則稱為偏微分方程。聯繫一些未知函數的一組微分方程稱為微分方程組。
  • MATLAB二分法求方程的根(實例加程序)
    matlab詳細介紹畫柱形圖matlab中矩陣的入門知識matlab中legend函數的用法matlab繪圖--線性規劃圖解法示意Matlab 進度條的製作Matlab對fig文件導出數據Matlab中plot函數全功能解析Matlab的fmincon函數求解非線性規劃
  • MATLAB的stem函數繪製枝幹圖(實例加程序)
    'MarkerEdgeColor','green')MATLAB相關內容往期回顧MATLAB中繪製三維圖形MATLAB的輸入輸出input函數matlab詳細介紹畫柱形圖matlab中矩陣的入門知識matlab中legend函數的用法matlab
  • MATLAB建模實例——微分方程
    ❞1 微分方程的解析解求微分方程(組)的解析解命令:dsolve(『方程1』,『方程2』,…『方程n』,『初始條件',『自變量』)記號: 在表達微分方程時,用字母D表示求微分,D2、D3等表示求高階微分.任何D後所跟的字母為因變量,自變量可以指定或由系統規則選定為確省。
  • MATLAB的ezplot函數繪製隱函數圖像
    的主成分分析的GUI界面計算MATLAB《自動控制原理》相關編程MATLAB的switch選擇語句和input輸入語句MATLAB的switch選擇語句和input輸入語句視頻MATLAB實例講解—求二元函數的極值MATLAB實例講解—求二元函數的極值視頻MATLAB的ode45函數實例求常微分方程數值解
  • MATLAB符號計算(二)
    一、代數方程符號求解在MATLAB中,求解用符號表達式表示的代數方程可由函數solve()實現,其調用格式為:①solve(s):求解符號表達式s的代數方程式,求解變量為默認變量。②solve(s,v):求解符號表達式s代數方程,求解變量為v。③solve(s1,s2,..,sn,v1,v2,...
  • 先從求解符號微分方程講起
    本次公眾號將介紹符號微分方程的求解方法,包括求解符號微分方程的通解和特解。在MATLAB中,求解符號微分方程通解的命令格式為:y=dsolve('equation','x');其中,equation為符號微分方程,x為符號自變量。利用該命令可以非常方便的求出符號微分方程的解析通解。舉例說明:求微分方程y'=x+1的通解y=f(x)。
  • MATLAB繪製交互式圖形
    matlab詳細介紹畫柱形圖matlab中矩陣的入門知識matlab中legend函數的用法matlab繪圖--線性規劃圖解法示意Matlab 進度條的製作Matlab對fig文件導出數據Matlab中plot函數全功能解析Matlab的fmincon函數求解非線性規劃
  • MATLAB符號計算(收藏版)
    5 代數方程的符號求解6 常微分方程(組)符號求解往期精彩閱讀1 符號計算基礎1.1符號運算符號運算無須事先對獨立變量賦值,運算結果以標準的符號形式表達。%求極限(4)2.2 符號函數求導及其應用求導函數為:diff(f, x, n)diff函數求函數f對變量x的n階導數。
  • MATLAB求函數的導數和偏導
    matlab求導命令diff調用格式:diff(函數),求的一階導數;diff(函數,n),求的n階導數(n是具體整數);diff(函數,變量名),求對的偏導數;diff(函數,變量名,n),求對的n階偏導數;matlab求雅可比矩陣命令jacobian,調用格式:jacobian([函數;函數;函數],[])給出矩陣
  • MATLAB處理NAN數據程序(含實例)
    中矩陣的入門知識MATLAB的輸入輸出input函數Matlab對fig文件導出數據matlab多項式(定義、四則計算、求根)MATLAB的switch選擇語句和input輸入語句視頻講解MATLAB的switch選擇語句和input輸入語句matlab中的歸一化處理的三種方法MATLAB求函數的導數和偏導
  • 時滯微分方程的matlab解法
    有位小夥伴在matlab編程愛好者(群號:531421022)群中問道有關時滯微分方程的matlab
  • Matlab基礎(五)
    目錄前言上一篇中利用幾道2021考研題,向大家介紹了高等數學下冊中一部分Matlab常用指令,主要包括:「符號表達式、解方程、求偏導」本文將介紹Matlab在高等數學下冊中有關積分、級數、微分方程二重積分首先,大家需要知道,解方程或者計算積分,都存在兩種方法:符號表達式,可以求精確的解析解,但是只適用一些較簡單的情形;首先,對於符號表達積分,之前已經介紹過一元函數積分int(f,x,a,b)指令,對於二重積分,只需要嵌套使用。
  • 用Python解決高數所有計算題--sympy求解極限、積分、微分、二元一次方程等
    Sympy是一個數學符號庫(sym代表了symbol,符號),包括了積分,微分方程等各種數學運算方法,為python提供了強大的數學運算支持。對於圖像來說,雖然都是做離散的計算,操作最多的還是numpy裡的數組,但實際上,這個庫包含了積分微分,三角等最基本的數學運算,可以說是工科最基本的,用起來媲美matlab。
  • Matlab中ode45函數的使用(常微分方程求解)
    利用matlab可以很方便的對非剛性常微分方程進行求解,其提供了大量的內置函數可以幫我們實現需要的效果,如ode45(4-5階龍格庫塔方法),ode23(2-3階龍格庫塔方法),ode113(多步法)等。ode45其求解精度相對較高,是我們經常使用函數 。
  • MATLAB常微分方程
    4.8  微分方程微分方程是數值計算中常見的問題,MATLAB提供了多種函數來計算微分方程的解。
  • 微分方程05 一階線性方程01
    ,因為方程對於未知函數 不同形式的微分方程解法不會像求導函數那樣具有有限固定的法則可依據,很多類微分方程問題都是一個相對獨立的孤島,歷經無數數學家的努力,很多微分方程或其中的某些特殊形式獲得了解析解, 而還有一些方程在現代計算機的幫助下獲得良好的數值解法。
  • MATLAB中圖片保存的五種方法(一)
    中矩陣的入門知識MATLAB的輸入輸出input函數Matlab對fig文件導出數據matlab多項式(定義、四則計算、求根)MATLAB的switch選擇語句和input輸入語句視頻講解MATLAB的switch選擇語句和input輸入語句matlab中的歸一化處理的三種方法MATLAB求函數的導數和偏導