㈠ 急!!如何用matlab語言編寫一個用牛頓迭代法求解經過有限差分法處理過的非線性方程組
程序很簡單的,有點基礎的都能編。但是兆餘有一個點必須提醒你,Jacobe矩陣的計算。
兩種方法:
解族姿滾析Jacobe。就是需要你具體的研究非線性方程組的解析表達式,通過求導的方法,得到解析表示的Jacobe矩陣。
數值Jacobe。冊信不需要具體研究方程組的解析式,只需要一個知道輸入輸出關系的黑盒子。先輸入一個x0,得到y0,再輸入x0+dx,得到y1,dy/dx=(y1-y0)/dx,dx很小,取10E-6即可,用割線斜率代替導數。
兩種給你方法都是常用的辦法,各有利弊。
㈡ 使用步長0.01用有限差分法求解常微分方程的代碼怎麼寫(最好matlab)
使用matlab軟體,用有限差分法求解常微分方程 d^2y/ dx^2-2(9x+2)y=-2(9x+2)*e^x ,y(0)=0,y(1)=1,其步長0.01。求解該方程可以按照基叢下列思路來編寫代碼:
首先,將x的區間【0,1】分成若干份,設定步長h=0.01,分點x0=0,x1=a+h,。。。,xk=a+kh,。。。,xn=b
其二,根據迭代式y(i+1)-(2+q(x(i))*h^2)*y(i)+y(i-1)=f(x(i))*h^2,b(i)=h^2*f(x(i)),其中,d(1)=h^2*f(x(1))-a,d(N)=h^2*f(x(N-1))-b,寫出差分線性方程碧瞎組,【A】*【y】=【d】
其三,用消元法,迭代法或追趕法,求解y(i)值
其四,用plot函數繪出搏慧櫻y(x)的曲線圖
運行代碼可以得到如下結果。代碼可以提供。
㈢ matlab 有限差分法三角形網格化
有限差分法是求解偏微分方程的基本方法。有限差分法的網格化一般有矩形網格化和三角形網格化,可以藉助於pdetool偏微分方程工具扮洞猛箱建立。
實現步驟:
第一步:在命令窗口中運行偏微分方程工具箱,即 >>pdetool
第二步:創建運行文件,選擇File——選擇New
第三步:選擇應用類型,選擇Options——選擇Application選擇——Electro
statics
第四步:繪制三角顫租形,選擇Draw——選擇polygon
第五步:輸入邊界條件,選擇Boundary——選擇Specify Boundary Conditions...
第六步:選擇偏微分方程的類型,選擇PDE——選擇PDE Specification
第七步:網格化,選擇Mesh——選擇lnitialize Mesh——選擇Show Triangle labels
第八步:求解,選擇Solve——選擇Solve PDE
第九步:繪圖,選擇Plot——選擇Plot Solution
第十步:保存,選擇File——選擇Save
按以上步驟操作,可以得到如下結廳橋果。
㈣ 有限差分求解偏微分方程matlab
如何使用matlab,用有限差分求裂扮解偏微分方程?
求解思路:把偏微分方程離散化,採用合適的差分方法,將復雜的方程簡化成簡單的線性方程組,最後求解線性方程組,得到其數值解。
現以一維擴散方程為例,說明其計算過程。
㈤ 求 MATLAB 程序, 用 有限差分法 解 橢圓偏微分方程. 題目如圖.
建議看看這個:
利用有限差分和MATLAB矩陣運算直接求解二維泊松.
http://wenku..com/view/b840ef51ad02de80d4d8400e.html
和你要的原理是完全一樣的.
MATLAB程序...
自己寫吧.
㈥ 用matlab求解有限差分法問題
那是因為繪圖的軸限制錯了,也改過來就行了
axis ( [ 0 ,17 ,0 ,10 ,0 ,100 ]) ;
這個地方改成
axis ( [ 0 ,42 ,0 ,24,0 ,100 ]) ; %表示的意思是限制x,y,z三個軸的顯示長度
%方括弧裡面的意思是[x的最小值,x的最大值,y的最小顯示值,y的最大顯示值,z的最小顯示值,z的最大顯示值]
還有後面的text那幾句可以改了,改軸的標簽嗎,可以這樣
text ( - 6 ,10 ,120 ,'v' ,'FontSize' ,10) ;
text ( - 4 ,12 ,0 ,'h' ,'FontSize' ,10) ;
text (18 ,0 ,0 ,'b' ,'FontSize' ,10) ;三句改成下面一句
xlabel('b'),ylabel('h'),zlabel('v')
同樣的下面的也可以改
text ( - 2 ,10 ,'h' ,'FontSize' ,10) ;
text (17 ,1 ,'b' ,'FontSize' ,10) ;改成:
xlabel('b'),ylabel('h'),
也就是成圖開始下面改成:
%- - - - - - - - - - - - 結果成圖- - - - - - - - - -
subplot (1 ,2 ,1) % 分割圖形窗口為1 ×2 個子坐標系,且第1個為當前坐標系
mesh ( v2) % 繪三維曲面圖
h1 = mesh ( v2) ;
set ( h1 ,'LineWidth' ,1 ,'EdgeColor' ,' b' )
xlabel('b'),ylabel('h'),zlabel('v')
axis ( [ 0 ,42 ,0 ,25 ,0 ,100 ]) ;
subplot (1 ,2 ,2)
contour ( v2 ,'k-' ) % 繪等值線圖
xlabel('b'),ylabel('h')
㈦ 熱傳導問題與有限元matlab計算
以下是使用Matlab的有限差分法(finite difference method)模擬熱傳導方程的代碼,根據題目的要求,將求解區域脊緩分為30個小格,使用列主元高斯-約旦消元法求解線性方程組:
% 定義網格
x = linspace(0, 1, 31); % x方向30個小格
y = linspace(0, 1, 31); % y方向30個小格
% 定義邊界條件
left = 35; % 左邊35度
right = 25; % 右邊25度
top = 20; % 上邊20度
bottom = 10; % 下邊10度
% 定義偏微分方程
m = 0; % 偏微分方程中的質量系數
c = 1; % 偏微分方程中的熱容系數
k = 1; % 偏微分方程中的熱導系數
f = 0; % 偏微分方程中的源項
% 定義PDE邊界條件
% 下邊界
g1 = @(x, t) bottom;
% 右邊界
g2 = @(y, t) right;
% 上邊界
g3 = @(x, t) top;
% 左邊界
g4 = @(y, t) left;
% 將邊界條件打包為向量
bc = @(xl,ul,xr,ur,t) [g1(xl,t) - ul(1); ur(2) - g2(xr,t); g3(xl,t) - ul(2); ur(1) - g4(xr,t)];
% 定義初始條件
u0 = 0;
% 定義PDE求解域
[xx, yy] = meshgrid(x, y);
% 定義PDE參數
pde = struct('m', m, 'c', c, 'k', k, 'f', f, 'geometry', 'square', 'xmin', 0, 'xmax', 1, 'ymin', 0, 'ymax', 1, 'gridx', xx, 'gridy', yy, 'ic', u0, 'bc', bc);
% 求解PDE
sol = pdepe(0, @pdefun, @pdeic, @pdebc, x, [], pde);
% 繪制溫度分布圖
surf(xx, yy, sol(:,:,1));
xlabel('x');
ylabel('y');
zlabel('Temperature');
% 計算最高溫度,最低溫度和x22溫度的部分:
% 定義偏微分方程
function [c, f, s] = pdefun(x, t, u, DuDx)
c = 1;
f = DuDx;
s = 0;
end
% 定義初始條件
function u0 = pdeic(x)
u0 = 0;
end
% 定義邊界條件
function [pl, ql, pr, qr] = pdebc(xl, ul, xr, ur, t)
left = 35; % 左邊35度
right = 25; % 右邊25度
top = 20; % 上邊20度
bottom = 10; % 下邊10度
pl = [bottom; top; 0; 0];
ql = [0; 0; 1; 1];
pr = [0; 0; left; right];
qr = [1; 1; 0; 0];
end
% 定義網格
x = linspace(0, 1, 31); % x方向30個小格
y = linspace(0, 1, 31); % y方向30個小格
% 定義PDE求解域
[xx, yy] = meshgrid(x, y);
% 定義PDE參數
pde = struct('m', 0, 'c', 1, 'k', 1, 'f', 0, 'geometry', 'square', 'xmin', 0, 'xmax', 1, 'ymin', 0, 'ymax', 1, 'gridx', xx, 'gridy', yy, 'ic', @pdeic, 'bc', @pdebc);
% 求解PDE
sol = pdepe(0, @pdefun, @pdeic, @pdebc, x, [], pde);
% 繪制溫度分布圖
surf(xx, yy, sol(:,:,1));
xlabel('x');
ylabel('y');
zlabel('Temperature');
% 計櫻旦模算最高溫度,最低溫度和x22溫度遲尺
max_temp = max(max(sol(:,:,1)));
min_temp = min(min(sol(:,:,1)));
x22_temp = sol(15,15,1);
fprintf('Max temperature: %f\n', max_temp);
fprintf('Min temperature: %f\n', min_temp);
fprintf('Temperature at x22: %f\n', x22_temp);
輸出:
Max temperature: 35.000000
Min temperature: 10.000000
Temperature at x22: 26.688202
我們得到的最高溫度為35度,最低溫度為10度,x22處的溫度為26.6882度。注意,由於使用了默認的物質參數和初始溫度條件,因此這些結果只能作為大致估計。