Prévia do material em texto
Campos vetoriais e integrais de linha com Matlab
Informações:
• O objetivo desse trabalho é saber o conceito de Integral de Linha, saber diferenciar o caso
escalar do caso vetorial. Também saber o conceito de Campo vetorial ( saber fazer o desenho)
, saber o conceito de campo escalar, saber o conceito do campo divergente e rotacional (
matematicamente por enquanto) e saber o conceito de campo conservativo. E saber utilizar
software para resolver problemas.
• Em ambos os exercícios devem conter as definições.
1. Escolha 4 campos vetoriais : 2 do IR2 e 2 do IR3 e desenhe seus campos de direções. O
desenho deve conter todas as informações necessárias. Dica: Você pode usar as funções quiver e
quiver3.
2. Edite a função IntLin no fim do script para que ela retorne o valor da integral de linha. Sua
função precisa saber reconhecer se a função é escalar ou vetorial. Escolha 8 exemplos de testes ( 4
de integral escalar e 4 de integral vetorial ) para testar seu código. Em ambas as situações deve
conter exemplo de IR2 e IR3.
3 . Edite a função div no fim do script para que a função retorne o campo divergente do campo
vetorial dado. Ilustre seu exemplo com os campos do Exercício 1.
4 . Edite a função rot no fim do script para que a função retorne o campo rotacional de um
campo vetorial dado. Sua função deve saber calcular o rotacional de um campo do IR2.
5 . Edite a função camp para que ela devolva a função potencial do campo dado caso o campo
for conservativo e retorne uma mensagem ’Esse campo não é conservativo’ caso contrário. Utilize
sua função em 2 exemplos conservativos e 2 não conservativos. Deve conter exemplos de IR2 e IR3.
SOLUÇÃO: Para resolver o problema, foi utilizado o pacote de variáveis simbólicas, como é
sugerido no enunciado a partir dos exemplos fornecidos. Para dado campo vetorial ~F (x, y, z) e
Γ(t) = x(t),y(t),z(t), o programa interpreta o divergente do campo, o seu rotacional, caso seja
conservativo integra sua função potencial tal que:
∇f = ~F
além de realizar a integral de linha:
∫
Γ
~F (x, y, z) · d~Γ =
∫ I2
I1
~F (x(t), y(t), z(t)) · d
~Γ
t
dt
para um campo vetorial, e ∫
Γ
F (x, y, z) ·
∣∣∣Γ(t)∣∣∣dt
para um campo escalar
e plotar gráfico do campo vetorial com a trajetória Γ.
1
CÓDIGO: Implementação de código no MATLAB para obter solução do problema.
1 syms x y z t % definindo as váriáveis simbólicas
2
3 %% Definição do problema - Dados de entrada
4 % O campo vetorial - para um campo bidimensional, mantenha a última
5 % componente nula e as variáveis independentes de z.
6 F(x,y,z) = [x;y;z]*(-1/(x^2+y^2+z^2)^(1/2)); % Exemplo para campo vetorial
7 %F(x,y,z) = cos(x*y^2); % Exemplo para campo escalar
8 % A curva como função de t
9 gamma(t) = [cos(t) sin(t) 0]; % definindo a curva
10 % Intervalo de integração
11 I = [0 2*pi]; % definindo o intervalo
12
13 %% Chamando funções
14 % Cálculo da integral de linha
15 v = IntLin(F,gamma,I)
16 if length(F(rand(),rand(),rand())) == 3 % Funções para campos vetoriais
17 % Visualização
18 p = visualizacao(F,gamma,I)
19 % Divergente do campo
20 d(x,y,z) = div(F)
21 % Rotacional do campo
22 r(x,y,z) = rot(F)
23 % Função potencial do campo
24 c = camp(F)
25 end
26 %% Definição de funções
27 % Função para cálculo da integral de linha
28 function v = IntLin(fun,curva,intervalo)
29 syms x y z t
30 X = sum(curva.*[1 0 0]);
31 Y = sum(curva.*[0 1 0]);
32 Z = sum(curva.*[0 0 1]);
33 DcurvaDt = diff(curva,t);
34
35 if length(fun(rand(),rand(),rand())) == 3
36 integrando = DcurvaDt*fun(X,Y,Z);
37 elseif length(fun(rand(),rand(),rand())) == 1
38 drdt = sqrt(sum(DcurvaDt.^2));
39 integrando = fun(X,Y,Z)*drdt;
40 end
41 v=double(int(integrando,intervalo));
42 end
43
44 % Função para cálculo do divergente
45 function d = div(F)
46 syms x y z t
47 d = divergence(F,[x y z]);
48 end
49
50 % Função para cálculo do rotacional
51 function r = rot(F)
52 syms x y z t
53 r = curl(F,[x y z]);
54 end
55
56 % Função para cálculo da função potencial (se houver)
57 function c = camp(F)
58 syms x y z t
59 r(x,y,z) = rot(F);
2
60 aux = sqrt(sum(r.^2));
61 if (aux ~=0)
62 display("Não é possível encontrar uma função potencial para um campo não conservativo");
63 c = Inf;
64 else
65 c = potential(F, [x y z]);
66 end
67 end
68
69 function p = visualizacao(F,gamma,I)
70 syms x y z t
71 % Visualização dos Campos
72 if (sum(F.*[0;0;1])==0) && (sum(gamma.*[0 0 1])==0) && (sum(F(x,y,rand()))==sum(F(x,y,rand())))
73 % Se F(3)=gamma(3)=0 e F(x,y,z1)=F(x,y,z2) para z1 != z2
74 % então o campo é bidimensional
75 X = -1:.2:1;
76 Y = -1:.2:1;
77 U = zeros(length(X),length(X));
78 V = zeros(length(X),length(X));
79 for i = 1:length(X)
80 for j = 1:length(Y)
81 aux = double(F(X(i),Y(j),0));
82 U(i,j) = aux(1);
83 V(i,j) = aux(2);
84 end
85 end
86 [X,Y]=meshgrid(X,Y);
87 figure
88 quiver(X,Y,U,V,'blue')
89 % Linha
90 hold on;
91 xlim([X(1,1) X(end,end)])
92 ylim([Y(1,1) Y(end,end)])
93 X=0;
94 Y=0;
95 n=100;
96 dt=(I(2)-I(1))/(n-1);
97 for i = 1:n
98 t_aux = I(1)+dt*(i-1);
99 aux = gamma(t_aux);
100 X(i) = aux(1);
101 Y(i) = aux(2);
102 end
103 plot(X,Y,'red')
104 scatter(X(1),Y(1),'red','filled')
105 scatter(X(end),Y(end),'red','^','filled')
106 xlabel("x")
107 ylabel("y")
108 title("Campo Vetorial Bidimensional")
109 daspect([1 1 1])
110 pbaspect([1 1 1])
111 hold off
112 else % Gráfico do campo tridimensional
113 X = -1:.4:1;
114 Y = -1:.4:1;
115 Z = -1:.4:1;
116 U = zeros(length(X),length(Y),length(Z));
117 V = zeros(length(X),length(Y),length(Z));
118 W = zeros(length(X),length(Y),length(Z));
119 for i = 1:length(X)
120 for j = 1:length(Y)
121 for k = 1:length(Z)
3
122 aux = double(F(X(i),Y(j),Z(k)));
123 U(i,j,k) = aux(1);
124 V(i,j,k) = aux(2);
125 W(i,j,k) = aux(3);
126 end
127 end
128 end
129 [X,Y,Z]=meshgrid(X,Y,Z);
130 figure
131 quiver3(X,Y,Z,U,V,W,'blue')
132 hold on;
133 X=0;
134 Y=0;
135 Z=0;
136 n=30;
137 dt=(I(2)-I(1))/n;
138 for i = 1:n
139 t_aux = I(1)+dt*(i-1);
140 aux = gamma(t_aux);
141 X(i) = aux(1);
142 Y(i) = aux(2);
143 Z(i) = aux(2);
144 end
145 plot3(X,Y,Z)
146 xlabel("x")
147 ylabel("y")
148 ylabel("z")
149 title("Campo Vetorial Tridimensional")
150
151 daspect([1 1 1])
152 pbaspect([1 1 1])
153 hold off
154 end
155 p=true;
156 end
4
RESOLUÇÃO DAS QUESTÕES UTILIZANDO O CÓDIGO
(1) Plotar dois campos vetoriais bidimensionais e dois campos vetoriais tridimensionais.
~F (x, y) = sin(x2 + y)̂i + cos(x− y2)̂j
Figure 1: Campo vetorial para o primeiro exemplo
~F (x, y) = xyî + (x+ y)̂j
Figure 2: Campo vetorial para o segundo exemplo
~F (x, y, z) = yî + zĵ + xk̂
5
Figure 3: Campo vetorial para o terceiro exemplo
~F (x, y, z) = − x(x2 + y2 + z2)1/2 î−
y
(x2 + y2 + z2)1/2 ĵ−
z
(x2 + y2 + z2)1/2 k̂
Figure 4: Campo vetorial para o quarto exemplo
6
(2) Utilizando a função IntLin para calcular as integrais de linha definidas.
Em campos escalares: ∫
Γ
y3 · dΓ tal que Γ = [t3, t] e 0 ≤ t ≤ 2
Resultado para a integral de linha:
v = 32.3154 ∫
Γ
xyz · dΓ tal que Γ = [2 sin(t), t,−2 cos(t)] e 0 ≤ t ≤ π
Resultado para a integral de linha:
v = 7.0248 ∫
Γ
xyeyz · dΓ tal que Γ = [t, t2, t3] e 0 ≤ t ≤ 1
Resultado para a integral de linha:
v = 1.2095 ∫
Γ
(x2 + y2 + z2) · dΓ tal que Γ = [t, cos(2t), sin(2t)] e 0 ≤ t ≤ 2π
Resultado para a integral de linha:
v = 198.9353
Em campos vetoriais:
~F (x, y, z) = xyî + 3y2ĵ
~Γ(t) = 11t4î + t3ĵ
0 ≤ t ≤ 1
Resultado para a integral de linha:
v = 45
~F (x, y, z) = (x+ y)̂i + (y − z)̂j + z2k̂
~Γ(t) = t2î + t3ĵ + t2k̂
0 ≤ t ≤ 1
Resultado para a integral de linha:
v = 1.1333
~F (x, y, z) = sin(x)̂i + cos(y)̂j + xzk̂
~Γ(t) = t3î− t2ĵ + tk̂
0 ≤ t ≤ 1
7
Resultado para a integral de linha:
v = -0.1818
~F (x, y, z) = x̂i + yĵ− xyk̂
~Γ(t) = cos(t)̂i + sin(t)̂j + tk̂
0 ≤ t ≤ π
Resultado para a integral de linha:
v = 0
(3) Divergente dos campos vetoriais representados no exercício (1).
~F (x, y) = sin(x2 + y)̂i + cos(x− y2)̂j
Resultado para o divergente:
d(x, y, z) = 2*y*sin(- y^2 + x) + 2*x*cos(x^2 + y)
~F (x, y) = xyî + (x+ y)̂j
Resultado para o divergente:d(x, y, z) = y + 1
~F (x, y, z) = yî + zĵ + xk̂
Resultado para o divergente:
d(x, y, z) = 0
~F (x, y, z) = − x(x2 + y2 + z2)1/2 î−
y
(x2 + y2 + z2)1/2 ĵ−
z
(x2 + y2 + z2)1/2 k̂
Resultado para o divergente:
d(x, y, z) = x^2/(x^2 + y^2 + z^2)^(3/2) - 3/(x^2 + y^2 + z^2)^(1/2)
+ y^2/(x^2 + y^2 + z^2)^(3/2) + z^2/(x^2 + y^2 + z^2)^(3/2)
(4) Exercício apenas pede edição da função rot que está explicitada no código. Essa função é
utilizada no próximo exercício.
(5) Determinar a função potencial de dois campos conservativos e aferir que outros dois são
não-conservativos.
Campos conservativos:
~F (x, y, z) = x̂i + yĵ + zk̂
Resultado para a função potencial do campo:
c(x, y, z) = x^2/2 + y^2/2 + z^2/2
~F (x, y) = 2xy3î + (1 + 3x2y2)̂j
Resultado para a função potencial do campo:
c(x, y, z) =x^2*y^3 + y
8
Campos não-conservativos:
~F (x, y) = sin(xy)̂i + cos(x+ y)̂j
Resultado para o rotacional:
r(x, y, z) =[0;0; - sin(x + y) - x*cos(x*y)]
~F (x, y, z) = xyî + xzĵ + yzk̂
Resultado para o rotacional:
r(x, y, z) =[z-x;0;z-x]
9