Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mensajes - jlopez

Páginas: [1] 2
1
Gracias, no se me había ocurrido subdividir el icosaedro

Un saludo

2
Gracias Luis, aunque no me soluciona el problema pues la esfera que sale monta los hilos en los casquetes polares.
También he encontrado otro sistema a base de distribuir puntos con distribución par-impar según latitud y longitud pero el resultado es peor (la distancia mínima entre puntos es menor) y por eso no lo pongo

He visto que en la esfera que he generado con mi programa mejora mucho si elimino los puntos de uno de los hemisferios, pues así no duplico hilos generados por centros de uno de los hemisferios con los del otro, pero el resultado sigue sin ser bueno pues se montan hilos en varios puntos, o sea, mi idea de cubrir la esfera con hilos es un problema distinto del de los puntos equidistantes.

Por ahora probaré con el sistema propuesto con centros en uno de los hemisferios a ver que tal va el simulador

saludos

3
Mi idea es usarlo para crear N círculos lo más regularmente posible en una esfera hueca.
Los puntos sirven para crear aros cuya perpendicular apunte a dichos puntos y estén centrados en el origen
Se puede usar por ejemplo para calcular hilos para cubrir una esfera de fibra de carbono para cubrirla con epoxi y albergar hidrógeno a presión o por ejemplo en mi caso para hacer una máquina magnética.

He intentado el siguiente algoritmo:
Latex:
\(
\Delta\phi =\pi*(3-\sqrt{5}) \\
offset=2/N \\
Bucle: i=0..N:\\
y=i*offset-1+\frac{offset}{2} \\
r=\sqrt{1-y^{2}}\\
\phi=i*\Delta\phi \\
vector={r*cos(\phi),y,r*sin(\phi)}
 \)
Código: [Seleccionar]
       //C++:
double inc = PI * (3. - sqrt(5.)), off = 2. / n;
for (int i = 0; i < n; i++)
{
double y = i * off - 1. + 0.5*off,  r = sqrt(1. - y * y), phi = i * inc;
dxyz = { r*cos(phi),y,r*sin(phi) };
                imprime(dxyz);               
}

Pero el resultado es un desastre, por ejemplo para n=128:



4
Buenos días,
Tengo una nube de puntos de las cuales tengo sus coordenadas x e y y deseo saber cual es el área aproximada que ocupa.
(Lo quisiera emplear para calcular la sección eficaz de un reactor nuclear si bien creo que es un problema matemático)
Esta es una nube de puntos de ejemplo:



Una idea que se me ha ocurrido es hallar la distancia mínima entre dos puntos de cada uno de ellos y sumar el cuadrado de estas distancias, aunque si estuvieran en línea a lo mejor el resultado no sería correcto

5
Matemáticas Generales / Solver multidimensional potente
« en: 16 Mayo, 2019, 12:37 pm »
Necesito un solver para ayudarme con un simulador de física de partículas.

El problema es que la función

\( v=f(\overrightarrow{v}) \)

Siendo v un punto en el espacio multidimensional.
Debo encontrar un punto donde v sea mínimo.
La función tiene numerosos mínimos locales.
El mejor sistema es uno evolutivo pero que también use derivadas parciales.

(Podría emplear un SDK para meterselo al programa en C++)

Estos son dos ejemplos de funciones a resolver:


Para generar la gráfica me he movido por la diagonal (v0=v1=v2...vn)

Nota: en realidd no es una función, es el resultado de unas simulaciones, cada simulación tarda 1-60 segundos, por lo que conviene minimizar el número de puntos a calcular.

6
¿Pero y por qué no lo planteas con la fuerza de Lorentz? Tienes que  \( E + \dfrac{1}{c}v \times B = \dfrac{m}{e} v' \)...

Creía que solo sirve para campos magnéticos estacionarios, supongo te refieres a m*a=q*E-qv^B

Miraré lo de Stokes,
Otra opción que se me ocurre es \( FEM=-d\emptyset/dt \) aunque tendría que integrar el campo B en todo el área alrededor del recorrido de la partícula y del campo generado, podía integrar en todo el círculo que recorre la partícula (creo)

7
necesitaría saber la aceleración de la partícula en función de dB/dt o sus integrales.

El problema es que me sale que el voltaje es la integral de la derivada del campo magnético con respecto del tiempo, todo ello integrando en la longitud recorrida por la partícula, o sea dB/dt*L, sin embargo según Lorentz el voltaje es la derivada del FLUJO con respecto del tiempo, por lo que multiplica por metros al cuadraado no por metros

En mi caso sabría resolver el problema pues sé en todo tiempo y lugar cual es el campo pues tengo un simulador que lo calcula, pero no me calcula la aceleración, eso sí con la ecuación de Maxwell integrada de forma correcta pero tiene que ser dimensionalmente correcta y con los signos bien. No se bien como meter la integral de las derivadas cruzadas en el simulador, lo que necesitaría es despejar:
\( \int E_z*dz \)
Pues haría la integral a lo largo de la línea por la que se mueve la partícula por lo que las integrales perpendiculares al movimiento son 0
(La velocidad de la partícula se sacaría de la energía que es q*V que es esa integral multiplicada por la carga)



8
Aparte del problema del signo, ¡me sale dimensionalmente incorrecta! pues según la ley de Lorentz:

\( V=-\displaystyle\frac{d\emptyset}{dt}=-\frac{d(\bar{B}\cdot{}\bar{A})}{dt} \)

O sea, se multiplica por metros cuadrados, no metros, en el caso de una partícula que vá pasando por un campo magnético ¿cual diablos es el área?

9
De la ecuación de Maxwell que he puesto, se me ocurre que sumando las dos primeras obtengo:
\( \frac{dEz}{dy}-\frac{dEy}{dz}+\frac{dEz}{dx}-\frac{dEx}{dz}=-\frac{d(Bx+By)}{dt} \)

Si el acelerador repite la estructura cada tramo L, o sea es una estructura periódica, entonces integrando en el eje z hasta z=L los terminos derivativos en eje x y y se van y queda:

\( \frac{dEz}{dy}-\frac{dEy}{dz}+\frac{dEz}{dx}-\frac{dEx}{dz}=-\frac{d(Bx+By)}{dt}\\\\
V=\int \left [\frac{dEz}{dy}+\frac{dEz}{dx}   \right ]*dz= -\int  \frac{d(Bx+By)}{dt}*dz \)

Sigo teniendo la duda del signo del rotacional, no sé si la segunda fila es correcta:
\( \nabla \wedge \overrightarrow{E}=
\begin{bmatrix}dE_z/dy- dE_y/dz
\\-dE_x/dz+ dE_z/dx
\\dE_y/dx- dE_x/dy
\end{bmatrix} \)

10
Quiero saber cual es la aceleración de una partícula sometida a un campo magnético que varía con el tiempo.
Esta aceleración es debida al incremento de energía potencial. Si la partícula se desplaza a lo largo del eje z, supongo:

\( V=\int E*dz \)

Quisiera sacarlo de las ecuaciones de Maxwell:
\( \displaystyle\nabla \wedge \overrightarrow{E}=-\frac{d\overrightarrow{B}}{dt}\\\\
\begin{bmatrix}dE_z/dy- dE_y/dz
\\-dE_x/dz+ dE_z/dx
\\dE_y/dx- dE_x/dy
\end{bmatrix}
= -
\begin{bmatrix}dBx/dt
\\dB_y/dt
\\dB_z/dt
\end{bmatrix} \)

Es posible obtener B y dB/dt, pero el problema es obtener E, pues me salen 3 ecuaciones y 6 incógnitas: dEx/dy, ...
(Nota: no se meter fracción en latex dentro de la matriz pues no sale bien)
Nota-2: No sé si he puesto bien en la fórmula del gradiente la segunda fila pues no sé si se multiplica por -1 en la multiplicación matricial, pues según wikipedia debiera ser sin multiplicar por -1 pero según las reglas de producto vectorial debe multiplicarse por -1

También se podría sacar de la versión integral, aunque esa no sé bien como manejarla.
Supongo que E*dz se puede poner:

\( \displaystyle\int \overrightarrow{E}*\overrightarrow{dz}=\int Ez*dz \)

Lo malo que no consigo despejar Ez o dEz/dz de las ecuaciones de Maxwell


11
Lo he metido el simulador y he probado a hacer un desviador de plasma empleando dos lentes magnéticas rectangulares, aunque obviamente hay problemas en el diseño:



Como curiosidad me salía error en el logaritmo pues salen numeros negativos con d=0, por lo que metí el módulo en vez de diferencias y resolviendo de manera distintra cuando esta distancia es 0 para impedir raices cuadradas de 0 que por alguna razón el C++ dá error

12
Perdona, la distancia esa que aparece como sumando se anula, al ser constante al hacer el cálculo para -L1max y luego restar para +L1max, resultando igual que en el famoso libro.

13
Necesito calcular el acoplamiento magnético entre dos hilos de longitudes distintas y solo encuentro el caso en que los hilos son de la misma longitud.
Para hacer el cálculo se usa la fórmula de Newman:



\( \displaystyle M=10^{-7}*\int \int \frac{dx*dy*\cos(\varphi )}{r}=\\\\
M=10^{-7}*\displaystyle \int\int\frac{dx*dy}{\sqrt{(x-y)^2+d^2}}=\\\\
M=10^{-7}*\displaystyle \int(ln(\sqrt{(x-y)^2+d^2}+x-y)dy=\\\\
M=10^{-7}*\left [\sqrt{(x-y)^2+d^2} + (y-x)*\ln( \sqrt{(x-y)^2+d^2} +x-y)    \right ]
 \)

Hay que hacer la integral entre x=-L1min y L1max y entre y=-L2min a L2max.
Hay que hacer para ambos hilos. Lo que no entiendo bien es comparando con el famoso libro de Rose (con longitudes iguales) es por que se suma la distancia:
https://pdfs.semanticscholar.org/3424/e967969397d40a208dc0c5a16b27bc556d3d.pdf en la página 303:

\( N=2\left[l\cdot log \dfrac{l+\sqrt{l^2+\rho^2}}{\rho}-\sqrt{l^2+\rho^2}+\rho\right] \)

14
Temas de Física / Re: Movimiento de partícula en campo magnético
« en: 18 Noviembre, 2018, 08:10 pm »
Gracias Abdulai.
Imagino que V0 es el módulo de la velocidad (que es constante al ser la fuerza que ejerce el campo magnético perpendicular a la velocidad y por tanto no incrementa su módulo)
El campo no es constante, como bien dices, lo que hago es calcular cada vez cual es el delta de tiempo necesario para cubrir una distancia muy pequeña e integrar en esa pequeña distancia, por lo que hay poca diferencia del campo entre un punto y otro y es donde lo considero constante. (Para el cálculo del campo empleo integrales elípticas)
La integral que hago (con una sumatoria) la quiero sustituir por una ecuación para que vaya más rápido.
No me valen los programas estandar porque estoy haciendo uno a medida.

Otro problema que tengo es que al llegar a la lente electromagnética las variaciones de campo son mucho más grandes y esa pequeña distancia debiera ser reducida en esos puntos.

Así es como me está quedando el resultado, en la gráfica deabajo he puesto la aceleración, como puedes ver es casi 0 lejos de las lentes y varía muchísimo al llegar a las dos lentes que he puesto



15
Temas de Física / Re: Movimiento de partícula en campo magnético
« en: 18 Noviembre, 2018, 01:25 pm »
Otra forma de resolverlo es por ecuaciones diferenciales, a ver si así me puede ayudar alguien a resolverlo:

\( m*\overline{a}=q*\overline{v}\times{}\overline{B} \)

Si lo pongo como ecuaciones diferenciales me sale:
\( m*\frac{d\overline{v}}{dt}=q*\overline{v}\times\overline{B}  \\
\frac{d\overline{v}}{dt}-\frac{q}{m}\overline{v}\times\overline{B}=0 \\
 \)
Sacando las tres coordenadas:
\(
\frac{d\overline{v_x}}{dt}-\frac{q}{m}*(v_y*Bz-v_z*By)=0\\
\frac{d\overline{v_y}}{dt}+\frac{q}{m}*(v_x*Bz-v_z*Bx)=0\\
\frac{d\overline{v_z}}{dt}-\frac{q}{m}*(v_x*By-v_y*Bx)=0\\
 \)

Se conoce la velocidad inicial (vx0,vy0,vz0) y el campo que es constante (Bx,By,Bz), la carga q y la masa m

16
Temas de Física / Re: Movimiento de partícula en campo magnético
« en: 15 Noviembre, 2018, 03:49 pm »
Se puede sutituir vy*Bz por el modulo de la velocidad por el modulo del campo por un coseno de wt, de modo que al derivar sale el seno (o sea la perpendicular), pero no se como sacar el w:

\( v_x=\displaystyle\frac{q}{m}*\left |{v}\right |*\left |{B}\right |*cos(wt) \)


Este es el sw que integra en cada punto, lo malo que si saco 1000 puntos y en cada integral hago 1000 sumas para la integral me salen 1 millón de operaciones por trayectoria y es algo lento y encima tiene menos precisión:

Este es el código para el caso de campo B fijo (para el que es variable hay que calcular el campo en cada punto):
Código: [Seleccionar]
double modulo(vector <double> xyz) { return sqrt(xyz[0] * xyz[0] + xyz[1] * xyz[1] + xyz[2] * xyz[2]); }

const int integrate_N = 1000;
//q_m=q/m, t=time to integrate
void integrate(vector <double> &xyz, vector <double> &vxyz, vector <double> Bxyz, double q_m, double t)
{
double vm = modulo(vxyz);//para ajustar luego
double dt = t / integrate_N,dt2=dt*dt; vector <double> axyz(3);
for (int i = 0; i < integrate_N; i++)
{
vectorial(vxyz, Bxyz, axyz);//falta multiplicar por q_m
for (int kk = 0; kk < 3; kk++)
{
xyz[kk] += vxyz[kk] * dt; vxyz[kk] = vxyz[kk] + q_m*axyz[kk] * dt; xyz[kk] += 0.5*axyz[kk] * dt2;
}
}
for (int kk = 0; kk < 3; kk++)
{
xyz[kk] += 0.5*vxyz[kk] * dt; vxyz[kk] = vxyz[kk] + 0.5*q_m*axyz[kk] * dt; xyz[kk] += 0.25*axyz[kk] * dt2;
}
}

void calculate_trajectorie_mag(vector <double> Bxyz, s_kin particle, double gsize, double lon_max, vector <vector<double>> &outxyz, vector <vector<double>> &outvxyz)
{
outxyz.clear(); outvxyz.clear();
double L = 1e-10, R = 0;
vector <double> xyz, vxyz;
double Q = particle.Q, AMU = particle.AMU;
double q_m =  Q * 1.602176634E-19 / (AMU*AMU_KG);  //  = q/m
for (int i = 0; i<3; i++) { xyz.push_back(particle.xyz[i]); vxyz.push_back(particle.vxyz[i]); }
double lon=0.,lon_next=lon+.1*lon_max;
while (lon<lon_max)
{
outxyz.push_back( xyz );
outvxyz.push_back(vxyz);
lon += gsize; if (lon > lon_next) { cout << lon / lon_max*100.0 << "% ";lon_next += .1*lon_max; }//advise of progress
//double Bm = modulo(Bxyz);
double vm = modulo(vxyz);
double dt = gsize / vm;
integrate(xyz, vxyz, Bxyz,q_m,dt);
}
cout << "\n";
}

Así me sale una lente que he calculado en multihilo metiendo integrales elípticas a tope para cálculo de campo magnético:


17
Temas de Física / Re: Movimiento de partícula en campo magnético
« en: 15 Noviembre, 2018, 03:34 pm »
En una bobina el campo no es uniforme desgraciadamente, si bien no varía mucho de un milímetro a otro, o sea que puedo calcular el campo en un punto debido a las decenas de bobinas e integrar ahí.

Lo he intentado "a mi manera", o sea, metiendo una integral por software aunque desgraciadamente no me dá demasiada precisión.
(aviso que el reactor que estoy haciendo comprime a tamaño atómico)

Lo que he hecho es lo siguiente:

\( m*\overline{a}=q*\overline{v}\otimes{}\overline{B} \)

Siendo
\( \overline{v}\otimes{}\overline{B}=\begin{bmatrix}{i}&{j}&{k}\\{v_x}&{v_y}&{v_z}\\{Bx}&{By}&{Bz}\end{bmatrix} \)

Como la velocidad es la integral de la aceleración con respecto del tiempo:
\( \overline{v}=\displaystyle\frac{q}{m}*\displaystyle\int_{t1}^{t2} \begin{bmatrix}{i}&{j}&{k}\\{v_x}&{v_y}&{v_z}\\{Bx}&{By}&{Bz}\end{bmatrix}*dt   \)

18
Temas de Física / Movimiento de partícula en campo magnético
« en: 15 Noviembre, 2018, 09:35 am »
El problema que tengo es que quiero integrarlo en un simulador. Me ha costado bastante hacer el cálculo de las bobinas para hallar el campo magnético.

Para el movimiento de la partícula tenemos:

\( m*\overrightarrow{a}=q*\overrightarrow{v}\otimes{\overrightarrow{B}} \)

Lo he resuelto en dos dimensiones teniendo en cuenta que:
\( \overrightarrow{a}=\displaystyle\frac{v^2}{r_g} \)
Siendo rg el giroradio, que siendo v y B perpendiculares sale sustituyendo arriba:
\( r_g=\displaystyle\frac{m\left |{v}\right |}{q*\left |{B}\right |} \)
Y que el incremento del ángulo después de una distancia delta es:
\( d\emptyset=\displaystyle\frac{delta}{r_g} \)
Donde rg es el giroradio, pero no sé bien como "meterle mano" en tres dimensiones para hacerlo matricialmente.
Necesitaría el vector posición y velocidad después de recorrer una distancia fija.

-saludos-

19
En las simulaciones me he encontrado que curiosamente la carga calculada entre dos hilos depende muchísimo de la distancia arbitraria puesta para 1/distancia de una carga con respecto de sí misma (llamo a la distancia gsize en las figuras, la distancia entre puntos es 0.2):



Como resultado de la simulación veo muy difícil meter en una ecuación la carga de esas líneas.

20
Citar
La verdad, no creo que el problema que has planteado en 2-D sirva para solucionar el problema en 3-D.
Tienes un toroide cuyo eje de simetría es también el de un cilindro de revolución, ¿no es así?. Lo que no me queda claro es si estos dos cuerpos tienen una distribución de carga concreta, sin son conductores o no

Solo sirve para ver la distribución total, luego hay que distribuir en 3D para cubrir todo el cuerpo, aunque se puede evitar el problema empleando integrales elípticas. esa última opción la estudié en su día en los dos posts que colgué en Algoritmos

Adicionalmente hay más problemas, pues en el acelerador no hay un anillo fino sino discos taladrados y cilindros, o sea que habría que integrar otra vez.

Me gustaría que hubiera un programa que pasara los "chorizos" que salen a C++ para incluirlos en el programa


Citar
Cita
dV=Kλ(x)dxr′

Uf, esta noche me lo miro con mas detalle.

Me lo he mirado y el Q2(x) que puse en mi tercer post de este hilo en realidad es una integral, lo que pasa es que Q está en culombios y si integrara pasaría a culombios*metro con lo cual no sería dimensionalmente correcto pero dividiendo todo por 1/(x1-x0) vuelve a ser dimensionalmente correcto y estar en culombios, quedando:

\(
Q_2(x) \Rightarrow{}   \displaystyle  \displaystyle\frac{1}{x1-x0} \int_{x0}^{x1}Q_2(x) dx
 \)

Aunque tenga una "pinta estupenda" a lo mejor no es necesario llegar a esos extremos pues al final solo hay que meterlo en un programa en el cual la integral es solo una suma :)

Dá ganas de reuniros a todos delante de un pizarrón y cervezas y llenarlo todo de ecuaciones   :laugh:

Páginas: [1] 2