日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

椭圆型偏微分方程数值解法

發(fā)布時間:2023/12/9 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 椭圆型偏微分方程数值解法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、 一維橢圓方程數(shù)值解



matlab代碼:`

function chap2_fdm_elliptic_1D % 一維橢圓方程求解(常微分方程邊值問題) % -u'' + q(x)u = f(x), 0<x<1, 取q(x) = x, f(x) = (x-1)exp(x) % u(0) = 1, u(1) = e; 邊界條件 % 真解為 u = exp(x)N = 20; h = 1/N; x_all = (0:h:1)'; x = x_all(2:end-1);% 方程組右端的處理 u0 = 1; uN = exp(1); b = f(x); b(1) = b(1)+u0/h^2; b(N-1) = b(N-1)+uN/h^2;% 方程組左端矩陣的建立 B = zeros(N,N); for i = 1:N-1B(i,i) = -2;B(i,i+1) = 1;B(i+1,i) = 1; end B = -1/h^2*B(1:N-1,1:N-1);D =zeros(N-1,N-1); q = q(x); for i = 1:N-1D(i,i) = q(i); end A = B+D;%求解線性方程組(Gauss消去法求解) u = gauss(A,b); u_e = u_exact(x_all);figure(1) plot(x_all,[u0;u;uN],'r*',x_all,u_e,'b'); endfunction y = u_exact(x) y = exp(x); endfunction y = q(x) y = x; endfunction y = f(x) y = (x-1).*exp(x); endfunction x = gauss(A,B) %消元過程 n = size(A,2); m = size(B,2); for i = 1:mb = B(:,i);for k=1:n-1A(k+1:n,k)=A(k+1:n,k)/A(k,k); %算子A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n);b(k+1:n)=b(k+1:n)-b(k)*A(k+1:n,k); end %回代過程U=A;b=b;for j =n:-1:2b(j)=b(j)/U(j,j);b(1:j-1)=b(1:j-1)-b(j)*U(1:j-1,j);endb(1)=b(1)/U(1,1);B(:,i)=b; %這個就是線性方程組的解了 end x = B; end

二、二維橢圓型微分方程







matlab代碼:

function chap2_fdm_possion_solution % 二維的possion方程求解 % -Delta u = -2*exp(x+y) 邊界(a,b)*(c,d) % u(x,0) = exp(x) % u(x,1) = exp(x+1) % u(0,y) = exp(y) % u(1,y) = exp(y+1) global mLap M_V I hx hya = 0; b = 1; c = 0; d = 1; M = 40; N = 30; hx = (b-a)/M; hy = (d-c)/N; x = (a:hx:b)'; y = (c:hy:d)'; [X Y] = meshgrid(x,y); x_in = (a+hx:hx:b-hx); y_in = (c+hy:hy:d-hy); [X_in Y_in] = meshgrid(x_in,y_in);%生成Dxx d_0 = -2*ones(M-1,1); d_1 = ones(M-1,1); d_m1 = d_1; d_xx = spdiags([d_m1 d_0 d_1],[-1,0,1],M-1,M-1); d_xx = d_xx/hx^2; I_N = speye(N-1,N-1); D_xx = kron(I_N,d_xx);%D_yy d_0 = -2*ones(N-1,1); d_1 = ones(N-1,1); d_m1 = d_1; d_yy = spdiags([d_m1 d_0 d_1],[-1,0,1],N-1,N-1); d_yy = d_yy/hy^2; I_M = speye(M-1,M-1); D_yy = kron(d_yy,I_M);%左端矩陣 mLap = -(D_xx+D_yy);%右端矩陣 F = f(X_in,Y_in); F = F'; g_d = g(x_in,0); g_u = g(x_in,1); g_l = g(0,y_in); g_r = g(1,y_in); F(:,1) = F(:,1)+g_d'/hy^2; F(:,N-1) = F(:,N-1)+g_u'/hy^2; F(1,:) = F(1,:)+g_l/hx^2; F(M-1,:) = F(M-1,:)+g_r/hx^2;%求解u b = F(:); u = mLap\b; U = reshape(u,M-1,N-1); U = U';%繪制結(jié)果 u_e = u_exact(X,Y); u_num = u_e; u_num(2:N,2:M) = U; figure(1) mesh(X,Y,u_e); figure(2) mesh(X,Y,u_num);end%函數(shù) function y = f(x,y) y = -2*exp(x+y); endfunction u_e = u_exact(x,y) u_e = exp(x+y); endfunction g = g(x,y) g = exp(x+y); end

總結(jié)

以上是生活随笔為你收集整理的椭圆型偏微分方程数值解法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。