Saya memposting pertanyaan yang sama di pusat MATLAB , dan Bill Greene dengan ramah memberikan jawaban .
Saya secara singkat melaporkan dan memperluasnya sehingga dapat bermanfaat bagi orang lain.
Solusi oleh Bill:
Berikut adalah salah satu cara untuk membuat plot seperti itu. Asumsikan Anda memiliki matriks titik yang dibuat oleh meser Toolbox PDE, p, dan vektor solusi, u. Fungsi di bawah ini akan membuat plot solusi tersebut di sepanjang garis yang ditentukan oleh lokasi x dan y dari dua titik akhir. Contoh saya adalah untuk solusi pada satuan persegi dan saya ingin plot sepanjang garis (0, .5) ke (1, .5). Saya ingin memasukkan 25 poin dalam plot. Seperti yang Anda lihat, pekerjaan nyata sedang dilakukan oleh TriScatteredInterp
fungsi dari MATLAB inti.
plotAlongLine(p, u, [0,.5], [1,.5], 25);
function plotAlongLine(p, u, xy1, xy2, numpts)
x = linspace(xy1(1),xy2(1),numpts);
y = linspace(xy1(2),xy2(2),numpts);
F = TriScatteredInterp(p(1,:)', p(2,:)', u);
uxy = F(x,y);
figure; plot(x, uxy); //REM: x is chosen here as a curvilinear coordinate
end
Saya ingin lebih jauh berkomentar bahwa fungsi sebelumnya memungkinkan seseorang untuk memplot solusi u
atau fungsinya f(u)
, asalkan u
didefinisikan pada node mesh (seperti yang biasanya terjadi untuk solusi yang diperkirakan FEM).
Jika seseorang perlu memplot bagian-bagian fungsi yang didefinisikan pada pusat-pusat mesh (misalnya fungsi grad u
), dia dapat menggunakan terlebih dahulu fungsi pdeprtni
yang menghasilkan fungsi-fungsi bernilai-simpul di luar fungsi-fungsi -bernilai-tengah .