首頁 > 軟體

MATLAB利用streamslice()函數繪製流線

2019-12-25 02:04:08

本文利用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幫助文件。



IT145.com E-mail:sddin#qq.com