2021-05-12 14:32:11
MATLAB利用streamslice()函數繪製流線
本文利用streamslice()函數繪製流線,主要繪製了流場程繞過半圓物體時的流線,同時給出了繞流公式和MATLAB全部程式碼。
1
第一,想要繪製的圖形如下圖:流場繞過半圓形物體時的流線圖。
2
第二,針對上述流場繞過半圓形物體的問題,給出了如下MATLAB程式碼,但是該段程式碼執行不行,這裡先給出繞流公式(如下圖)。
我想畫出下面那樣繞過去的樣子
[x,y] = meshgrid(-20:0.1:20,-10:0.1:10);
r = sqrt(x.*x+y.*y);
costheta=x./r;
sintheta=y./r;
d=10./2./r; %10是下圖?的直徑
ur=-0.5*costheta.*(d.^3-d*3+2);
utheta=-0.5*sintheta.*(d.^3-d*3+4);
u=-ur.*costheta-utheta.*sintheta;
v=-ur.*sintheta+utheta.*costheta;
figure
starty = 0:2:20;
startx = zeros(size(starty));
streamline(x,y,u,v,startx,starty)
3
第三,在上述程式碼的基礎上進行了改進,給出如下MATLAB程式碼,該段程式碼可以執行出流場繞過半圓形物體時的流線。
close all; clear all; clc
[x,y] = meshgrid(-20:0.1:20,0:0.1:10);
r = sqrt(x.*x+y.*y);
costheta=x./r; sintheta=y./r; d=10./2./r;
ur=-0.5*costheta.*(d.^3-d*3+2);
utheta=-0.5*sintheta.*(d.^3-d*3+4);
u=-ur.*costheta-utheta.*sintheta;
v=-ur.*sintheta+utheta.*costheta;
figure('Position',[100 100 800 300]);hold on
streamslice(x,y,u,v);
fai = 0:0.1:1.1*pi; R=5; x=R*cos(fai);y=R*sin(fai);% 圓的引數方程
fill(x,y,[1,1,1]); % 填充式畫半圓
plot(R*cos(fai),R*sin(fai),'k-','LineWidth',3); % 線條式畫半圓
axis([-20,20,0,10]);axis fill;box on
set(gca,'TickDir','in','XTick',[-20:10:20],'YTick',[0:2:10])
4
第四,儲存和執行上述程式碼,得到如下流場繞過半圓形物體時的流線圖。
5
第五,如果把程式碼中的fill(x,y,[1,1,1])注釋掉或者刪除掉,得到影象如下,就會發現流場穿過半圓形物體,這顯然不合適,所以fill()這個用來填充顏色(這裡填充的是白色)的函數很有用。
6
第六,streamslice(x,y,u,v)函數用於繪製流線,關於它的用法參見MATLAB幫助文件。
相關文章