
發(fā)布
注冊
/
登錄偏微分方程組求解的案例
scipy求解常微分方程組
Scipy求解常微分方程組有scipy.integrate.solve_ivp和scipy.integrate.odeint,后者是較老的版本主要是采用 FORTRAN 的odepack庫里面的lsoda 方法,而前者是后面更新的函數(shù),支持的方法也更多,按照官方的文檔介紹大致有如下的方法。
如何采用simulink求解常微分方程組
通常來說,求解一個系統(tǒng)的話采用常微分方程組去做。前面也有采用scipy進行了常微分方程組的求解簡單介紹,當(dāng)然需要用到Python。其實完全可以不用任何代碼,只用一些simulink模塊以搭積木的形式完成這個過程,而且還會方便很多。下面就介紹一下相關(guān)的方法。
所用到的核心模塊其實就是integrate模塊,只需要啟動matlab打開simulink然后脫出一個該模塊就可以了。
首先以如下方程為例,假設(shè)初始值為0,求解區(qū)間為【0-10】
采用如下的方式搭建
simulink中的模塊求解的結(jié)果
當(dāng)然這個有點簡單,來一個稍微復(fù)雜一點的
計算過程的模塊搭建如下
simulink中的模塊
計算結(jié)果如下
simulink中求解結(jié)果
當(dāng)然完全完全可以求解更加復(fù)雜的問題,比如以下面的一個方程組為例
那么他的搭建模塊如下所示
方程組越大,則模塊會越復(fù)雜,一般可以把一部分單獨拿出來做一些封裝,然后把這個作為自己的模塊老使用,作為演示,我這里也有一個例子,就是pemfc燃料電池的例子,方程組的關(guān)系如下。
pemfc的系統(tǒng)所用到的方程
那么對應(yīng)的模塊搭建如下,可見對于較大的模型搭建還是比較難得
展開 Python 實現(xiàn)方程組的直接求解,用于求解力/位移方程組 ¥3.33
列主元三角分解法求解
【數(shù)值算法】系數(shù)矩陣非對稱時,線性方程組如何求解?-穩(wěn)定雙共軛梯度法(Bicgstab)求解線性方程組
enddo
write(*,*)"the solution of equation:"
write(*,"(es18.8)")x
end subroutine bicgstab
依據(jù)上述過程編寫程序,計算前述非對稱矩陣線性方程組求解結(jié)果:
采用matlab求解該方程組的解:
通過對比可知11次迭代已經(jīng)獲得即為準確的結(jié)果。實際上,對于該方法也可以通過一定的預(yù)處理方式,使得其所需要的迭代次數(shù)更少。
以上,就是穩(wěn)定雙共軛梯度法求解線性方程組的內(nèi)容,感謝您的閱讀!
歡迎關(guān)注公眾號 有限元術(shù)
展開 
matlab 微分方程求解
想求解一個微分方程,用dsolve得到的結(jié)果是下邊這樣,看不懂,向各位大神求救!
syms v(z) a g L b
%a=1;g=1;L=1;b=1;
eqn=(diff(v,z)+g/v+b*v==a/(z*v*sqrt(L^2+z^2)));
dsolve(eqn)
ans =
(exp(-2*b*z)*(C1 + 2*int(-exp(2*b*z)*(g - a/(z*(L^2 + z^2)^(1/2))), z, 'IgnoreSpecialCases', true, 'IgnoreAnalyticConstraints', true)))^(1/2)
-(exp(-2*b*z)*(C1 + 2*int(-exp(2*b*z)*(g - a/(z*(L^2 + z^2)^(1/2))), z, 'IgnoreSpecialCases', true, 'IgnoreAnalyticConstraints', true)))^(1/2)
展開 解矩陣微分方程組一例
摘要:方程組形式
有一個二階微分方程組:
[M]{D2X}+[K]{X}={0}
[M]--為對角矩陣n×n
[k]--為對稱矩陣n×n
程序:
% 有一個二階微分方程組:
% [M]{D2X}+[K]{X}={0}
% [M]--為對角矩陣n×n
% [k]--為對稱矩陣n×n
clear;clc;close all;
n=5;
rand('state',0);
% \copyright: zjliu
% Author's email: zjliu2001@163.com
M=rand(n);
K=rand(n);
Df=inline('[x(n+1:end,1);-inv(M)*K*x(1:n,1)]',...
't','x','flag','n','M','K');
[t,x]=ode45(Df,[0,10],rand(n,1),[],n,M,K);
plot(t,x(:,1:n));
for k=1:n;
eval(['Le',num2str(k),'=[''X',num2str(k),'''];']);
end
ss='Le1';
for k=2:n;
ss=[ss,',Le',num2str(k)];
end
eval(['legend(',ss,',0);']);
感謝蘿卜網(wǎng)友
展開 [轉(zhuǎn)貼] 非線性微分方程的求解
[轉(zhuǎn)貼] 非線性微分方程的求解
下面是單自由度的非線性微分方程的求解程序(分段函數(shù))。多自由度的正在努力中,希望能和大家多多交流!
伽遼金有限元法求解微分方程 ¥10
問題描述:
伽遼金有限元求解微分方程 -- C語言實現(xiàn) ¥4.5
==》 數(shù)值解解析解的對比結(jié)果圖:
==》 求解步驟主要是:
1. 寫出微分方程的弱解積分形式。
2. 進行分布積分法。
3. 網(wǎng)格劃分。
4. 生成系數(shù)矩陣和方程組的右端項。
5. 進行方程組的求解。
6. 求解出節(jié)點上的U值。
伽遼金有限元法求解微分方程-案例2-python實現(xiàn) ¥6.66
求解方程如下所示:
==》 f(x)=sin(pi*x)
==》 伽遼金法求解公式如下:
==》寫成矩陣形式如下所示:
==》 解析解與數(shù)值解的對比圖如下所示:
(1) 在積分的時候采用梯形公式求解結(jié)果如下:
(2)在積分的時候采用辛普森公式求解結(jié)果如下:
==》 好像沒多大差別。
==》其對應(yīng)的求解系數(shù)如下所示:
(1)梯形公式求積之后的系數(shù)和節(jié)點上的坐標數(shù)據(jù)如下:
(2)辛普森公式求積之后的系數(shù)和節(jié)點上的坐標數(shù)據(jù)如下:
==》應(yīng)該是函數(shù)太簡單了,可能f(x)復(fù)雜一點便能顯示出來差別了。
==》 下面是Python實現(xiàn)的整個過程。
展開 求軌道、軌道板振動微分方程matlab求解位移程序代碼
軌道、軌道板振動微分方程matlab求解位移程序代碼?
求軌道、軌道板振動微分方程matlab求解位移程序代碼,使用傅里葉變換方法求解。有償

伽遼金有限元法求解微分方程-C語言程序?qū)崿F(xiàn)01 ¥8.88
問題描述:
測試基本問題:
解析解與數(shù)值解的對比圖如下所示:
問題1是一個常數(shù),這里便不再圖形化顯示。
問題2解析解與數(shù)值解對比圖:
問題3解析解與數(shù)值解對比圖:
問題4解析解與數(shù)值解對比圖:
伽遼金有限元法求解1D微分方程-C語言實現(xiàn) ¥8.88
問題描述:
本次采用伽遼金有限元法求解1D微風(fēng)方程采用的是平方項的形函數(shù),其對應(yīng)的基本形函數(shù)形式如下:
本次測試選取了 p(x)=1; q(x)=0; f(x)=0
ul = 10; a=0; b=1;r=0等基本參數(shù)。
==> 根據(jù)解析解可以知道,本次計算的結(jié)果應(yīng)該是所有節(jié)點上的值都相等才對。
==> 設(shè)置了劃分10個網(wǎng)格,
伽遼金有限元法求解微分方程-C++ ¥3.75
當(dāng)前只實現(xiàn)了 Test 1 案例的求解計算。
然后我們來定義型函數(shù)。型函數(shù)這里采用的是最簡單的帽子函數(shù)的那樣。
那么到這里 我們的所有的單項處理函數(shù)便創(chuàng)建完完畢了。
下面我們要做的便是想辦法組合成Ax = b 的這種形式了。
Python 采用伽遼金有限元法求解微分方程 ¥6.66
==> 求解結(jié)果--> 解析解與數(shù)值解的對比圖。
==> 趨勢雖然是對的,就是這個誤差著實有點大呀。現(xiàn)在先記錄下來,改天看看咋回事。
==>其實一開始我把微分方程是修改成這樣的。
==> 然后沒有采用分部積分這一過程,就直接求解了,然后發(fā)生了一個天大的笑話,求解結(jié)果如下所示:
==> hhahahahahahahahahaha。 太他媽的尷尬了。
==> 下面是Python求解實現(xiàn)過程。