How to calculate Electric field analytically on Matlab?
11 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Sebsatien
am 29 Jun. 2012
Beantwortet: Antonio Cedillo Hernandez
am 21 Apr. 2020
Greetings!
I need to analytically calculate an Electric field.Here's the equation:
With my very basic knowledge of the software, here's the code:
if true
%function [E]= Etemp(x,y,z,x0,y0,z0,E0,t,c)
if z<z0,
E=E0;
else
E=-(1./(2*pi))*dblquad('E2(x0,yo)',inf,inf,inf,inf);
E2=(Rgv/(Rg^2))*((1/c)*z./norm(z)*diftE+((1/Rg)*z./norm(z)*E0));
clear,
syms ro Rg c t;
f=E0;
diftE=diff(f,t);
end
end
Beside the feeling of missing something with the code, I have encountered so far a problem with calculating the double indefinite integrals using "dblquad" because it doesn't seems right. Same with using "diff" with indefinte differentials.
I have no experience in this domain and I'm definitely afraid that I'm missing something here (too good to be true. This has to be more complicated then that ). So I'll be eternally grateful for any help.
Thanks very much for any kind of help!
7 Kommentare
tlawren
am 30 Jun. 2012
Bearbeitet: tlawren
am 30 Jun. 2012
Do you have an example of E0? It's format will determine how you calculate d/dt[E0]. It might be a good idea to work out the cross products in the integrand, so that you can evaluate each of the field components separately. In the snippet of code you posted, you use the standard multiplication operator (*). Matlab has a cross product function (cross), but you need to look at it's documentation before you use it. I'm not familiar with dblquad, so I can't really say much about it. I can say that using inf for your limits of integration is probably not a good idea. There are probably practical limits you can use, but they will be problem specific. In fact, you might have to run some simulations to determine what good limits will be.
Akzeptierte Antwort
Walter Roberson
am 29 Jun. 2012
Going through what you have written, it appears that your E0 is a numeric matrix. If that is the case, then you cannot do a symbolic differentiation on it. Your f=E0 would be numeric, and diff(f,t) would try to apply the numeric diff() routine (numeric difference between adjacent points) which would promptly complain because the numeric diff() routine cannot accept a symbolic argument for the number of the dimension to operate on.
If E0 is indeed numeric, then diff(sym(f),t) would try to apply the symbolic diff() routine (symbolic differentiation), but since none of the symbolic values would involve the reference variable "t", the differentiation result would be a matrix of symbolic zeros.
3 Kommentare
Weitere Antworten (2)
Antonio Cedillo Hernandez
am 21 Apr. 2020
Here you have the full MATLAB code explained (in spanish but the first comment is the code): https://www.youtube.com/watch?v=k9srU6aQfL0
0 Kommentare
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!