2016-02-21 4 views
-1

Я пытаюсь построить линию тока с функцией потока.Функция построения графика

enter image description here

I Используется ниже код, но он не работает

syms R r Y y a a_bar pi Gamma;  
k=sqrt((4*r*R)/((y-Y)^2+(r+R)^2)); 
k_bar=sqrt((4*r*R)/((y+Y)^2+(r+R)^2)); 
[K1,E1]=ellipke(k); 
[K2,E2]=ellipke(k_bar); 
U=Gamma*(((R*r)^(1/2)/(2*pi*k))*(((2-k^2)*(K1))-(2*E1))-((R*r)^(1 /2)/(2*pi*k_bar))*(((2-k_bar^2)*(K2))-(2*E2))); 

Ur=(1/r)*(diff(U,y)); 
Uy=(1/r)*(diff(U,r)); 
Gamma = -0.0045;      
a_t= 0.0053;       
R= .02;                 
Y= 0.018; 
[r,y] = meshgrid(0:0.1:1,0:0.1:1); 
u= subs(Ur); 
v= subs(Uy); 
figure 
quiver(r,y,u,v) 
startx = 0.1:0.1:1; 
starty = ones(size(startx)); 
streamline(x,y,u,v,startx,starty) 

Благодарности

enter image description here

+0

Вы прочитали сообщение об ошибке? Вы делите на ноль, я думаю, что '1/r' – Steve

+0

Привет, спасибо. Я изменил его [r, y] = meshgrid (0,01: 0,1: 1,0: 0,1: 1); Но результат все еще не правильный – Ali

+0

Снова, прочитав сообщение об ошибке, 'x' не определен. Возможно, вам захочется попробовать более простой пример того, что вы можете определенно получить работу, а затем создать его. – Steve

ответ

0

Ваша сетка включает 0, так что вы получите деление на ноль. У вас есть два варианта.

Избавьтесь от нулей в вашей сетке. Например:

... 
[r,y] = meshgrid(eps:0.1:1,eps:0.1:1); 
u = subs(Ur); 
v = subs(Uy); 
... 

Или оценить символические выражения численно таким образом, что деление на ноль приводит к плавающей точкой NaN:

... 
[r,y] = meshgrid(0:0.1:1,0:0.1:1); 
u = eval(Ur); 
v = eval(Uy); 
... 

Поскольку вы черчения численно, это, вероятно, имеет смысл сделать последний , Большинство функций графика Matlab игнорируют значения NaN (не обязательно о quiver и streamline в частности). У вас также есть неопределенная переменная в вашей последней строке - вы имели в виду r вместо x?

+0

Спасибо, я сделал второй, но все же результат не правильный – Ali

+0

@Ali: Вам действительно нужно дать правильную обратную связь. «все равно результат не правильный» не дает мне никакой информации. Потратьте некоторое время на понимание сообщений об ошибках, обучение отладке и чтение документации. У меня не было никаких ошибок, когда я запустил код для второго случая в своем ответе. – horchler

+0

Прошу прощения, я не знаю, как добавить фотографию в комментарий. Итак, я добавляю результат как фотографию к вопросу. На этом снимке показан результат. Кроме того, я имел в виду r вместо x. Спасибо – Ali