pdeval
PDE の数値解の内挿
説明
[
は、新しいクエリ点 u
,dudx
] = pdeval(m
,xmesh
,usol
,xq
)xq
で pdepe
によって返された数値解を内挿し、解の内挿値 u
とそれらの偏導関数 dudx
を返します。m
、xmesh
、および usol
の各引数は、pdepe
の前回の呼び出しから再利用されます。
sol = pdepe(m,@pdefun,@pdeic,@pdebc,xmesh,tspan)
によって生成される数値解は、座標の対称性m
と空間メッシュxmesh
を使用して、解の値の 3 次元行列sol
を返します。pdeval
を呼び出すときに、解の計算に使用したm
とxmesh
の入力を再利用します。入力ベクトル
usol = sol(i,:,k)
は、時間tspan(i)
における解の要素k
の値です。解の要素が 1 つしかない場合、usol
は解の行列usol = sol(i,:)
から抽出された行になります。
例
PDE の解の内挿
pdepe
を使用して偏微分方程式を解いてから、pdeval
を使用して追加の点における解を計算します。
PDE の求解
pdepe
を使用して pdex1
の例の問題を解きます。edit pdex1
と入力すると問題の詳細を確認できます。PDE の解法プロセスの詳細については、pdepe
を参照してください。pdex1
の問題を解くために必要な関数は、この例の最後にローカル関数として含まれています。
m = 0; x = linspace(0,1,20); t = linspace(0,2,5); sol = pdepe(m,@pdex1pde,@pdex1ic,@pdex1bc,x,t);
解の内挿
pdepe
によって生成された解 sol
は、x
に対し、0 と 1 の間に等間隔に配置された 20 個の点を使用します。pdepe
で使用された各点の間の中間に配置したクエリ点のベクトルを作成します。
xq = x; xq(1:end-1) = xq(1:end-1) + diff(xq)./2;
pdeval
を使用して、クエリ点で解を内挿します。解の要素は 1 つしかないため、sol(2,:)
などの操作対象の sol
から行を抽出できます。
[u,dudx] = pdeval(m,x,sol(2,:),xq);
pdepe
によって計算された解と、pdeval
によって計算された内挿された解およびその偏微分をプロットします。
plot(x,sol(2,:),'r*') hold on plot(xq,u,'-o') plot(xq,dudx,'.') hold off legend('PDEPE Solution', 'PDEVAL Interpolation', 'PDEVAL Partial Derivative')
ローカル関数
ここでは、PDE ソルバー pdepe
が解を計算するために呼び出すローカル補助関数を紹介しています。
function [c,f,s] = pdex1pde(x,t,u,DuDx) c = pi^2; f = DuDx; s = 0; end % ------------------------------------------------------ function u0 = pdex1ic(x) u0 = sin(pi*x); end % ------------------------------------------------------ function [pl,ql,pr,qr] = pdex1bc(xl,ul,xr,ur,t) pl = ul; ql = 0; pr = pi * exp(-t); qr = 1; end
入力引数
m
— pdepe
で使用された座標の対称性
0
| 1
| 2
xmesh
— pdepe
で使用された空間メッシュ
ベクトル
pdepe
で使用された空間メッシュ。数値解が計算された点を含むベクトル [x0 x1 ... xn]
として指定します。pdepe
の最初の呼び出しで使用したものと同じ空間メッシュを指定します。
データ型: single
| double
usol
— 抽出された解の要素
ベクトル
抽出された解の要素。特定の時間の 1 つの解の要素について、pdepe
によって計算された値のベクトルとして指定します。
pdepe
は、解を 3 次元配列 sol
で返します。ここで、sol(i,j,k)
は、時間 t(i)
および空間点 xmesh(j)
で計算された解の k
番目の要素 を近似します。コマンド usol = sol(i,:,k)
を使用すると、入力 usol
を作成できます。ここで、sol(i,:,k)
は、空間メッシュ xmesh
全体で計算された、時間 tspan(i)
における解の要素 k
の値です。解の要素が 1 つしかない場合、usol
は解の行列 usol = sol(i,:)
から抽出された行になります。
例: usol = sol(10,:,2)
は、時間 tspan(10)
で計算された 2 番目の解の要素を抽出します。
例: usol = sol(5,:)
は、時間 tspan(5)
で計算された解を抽出します。
データ型: single
| double
複素数のサポート: あり
xq
— クエリ点
スカラー | ベクトル
クエリ点。スカラーまたは x 座標のベクトルとして指定します。xq
で指定した点は、区間 [min(xmesh) max(xmesh)]
内になければなりません。
通常、pdepe
によって生成された解を pdeval
がより細かいメッシュで計算できるように、xq
の点に xmesh
の範囲内の値を指定します。
例: xq = linspace(0,1,100)
は、0 と 1 の間の 100 個の等間隔のクエリ点を指定します。
データ型: single
| double
複素数のサポート: あり
出力引数
u
— 内挿された解
ベクトル
内挿された解。xq
と同じサイズのベクトルとして返されます。
dudx
— 内挿された解の偏導関数
ベクトル
内挿された解の偏導関数。xq
と同じサイズのベクトルとして返されます。
ヒント
関数
pdeval
は、流束 ではなく偏導関数 を評価します。流束は連続ですが、偏導関数は物体の境界でジャンプする可能性があります。
拡張機能
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)