Equazioni differenziali a coefficienti non costanti

di il
473 risposte

473 Risposte - Pagina 25

  • Re: Equazioni differenziali a coefficienti non costanti

    giug ha scritto:


    Continuo a non capire perché devi schiacciare i punti...
    comunque, a occhio, dovrebbe bastare così:
    versore=condizione./modulo;
    perchè io così tutti questi puntini li uso per calcolare le componenti della velocità delle particelle anzicchè usare gli angoli random che non va bene.

    poi non è nemmeno detto che questa cosa vada bene però ci provo
  • Re: Equazioni differenziali a coefficienti non costanti

    Non capisco perché devi usare anche quelli interni... comunque prova, e fammi sapere.
  • Re: Equazioni differenziali a coefficienti non costanti

    giug ha scritto:


    Non capisco perché devi usare anche quelli interni... comunque prova, e fammi sapere.
    per non perdere eventi... o no...

    non mi fare domande indiscrete

    Una cosa, io la mezza sfera negativa la volgio levare, come faccio?
    dovrei usare una cosa tipo find...
  • Re: Equazioni differenziali a coefficienti non costanti

    E' facile facile. Devi aggiungere una condizione al find...
    find(d<=1 & ......);
  • Re: Equazioni differenziali a coefficienti non costanti

    giug ha scritto:


    E' facile facile. Devi aggiungere una condizione al find...
    find(d<=1 & ......);
    non l'ho capito...

    al pezzo che ho scritto prima ho aggiunto
    
    posizioni2=find(versore(:,3)>=0);
    
    semisfera=versore(posizioni2,:);
    plot3(semisfera(:,1),semisfera(:,2),semisfera(:,3), '.', 'MarkerSize',1)
    
    quindi giusto, posso fare tutto in una sola istruzione, ora ho capito.
  • Re: Equazioni differenziali a coefficienti non costanti

    Diventa così:
    
    A=-1; B=1;
    v=A+(B-A)*rand(100000,3); %cubo uniforme
    %plot3(v(:,1),v(:,2),v(:,3),'.b','MarkerSize',1)
    
    d = v(:,1).^2 + v(:,2).^2 + v(:,3).^2; 
    posizioni=find(d<=1 & v(:,3)>=0); %cerco quei punti che stanno nella sfera di raggio 1
     
    condizione=v(posizioni,:); %salvo i punti che stanno nella sfera
     
     figure()
    %   plot3(v(:,1),v(:,2),v(:,3),'.y','MarkerSize',1)
    %   hold on
     plot3(condizione(:,1),condizione(:,2),condizione(:,3),'.k','MarkerSize', 1)
    
    modulo_quadro=condizione(:,1).^2+condizione(:,2).^2+condizione(:,3).^2;
    modulo=sqrt(modulo_quadro);
    
    versore=[condizione(:,1)./modulo(:) condizione(:,2)./modulo(:) condizione(:,3)./modulo(:)] ;
    
    figure()
    
    plot3(versore(:,1),versore(:,2),versore(:,3), '.', 'MarkerSize',1)
    
    anzi, per quello che serve dopo deve essere
    plot3(versore(:,3),versore(:,2),versore(:,1), '.', 'MarkerSize',1)
  • Re: Equazioni differenziali a coefficienti non costanti

    Esatto.
    scrivi dopo i plot
    axis equal
    così diventa una sfera, invece di un uovo.
  • Re: Equazioni differenziali a coefficienti non costanti

    giug ha scritto:


    esatto.
    scrivi dopo i plot
    axis equal
    così diventa una sfera, invece di un uovo.
    Mi spieghi perchè se la condizione la scrivo:
    posizioni=find(d<=1 && v(:,3)>=0);

    lui dice:
    ??? Operands to the || and && operators must be convertible to logical scalar
    values.

    e la vuole con un solo &, mentre nei cicli condizionali ne vuole due?
  • Re: Equazioni differenziali a coefficienti non costanti

    Ti fai troppe domande... leggi qui: http://www.mathworks.it/help/techdoc/ref/logicaloperatorselementwise.html
    mi sono accorta che quello che ho scritto prima non funziona. Puoi scrivere così (non è necessario, è solo per essere un po' fastidiosa)
    versore=condizione./repmat(modulo,1,3);
  • Re: Equazioni differenziali a coefficienti non costanti

    giug ha scritto:


    mi sono accorta che quello che ho scritto prima non funziona. Puoi scrivere così (non è necessario, è solo per essere un po' fastidiosa)
    versore=condizione./repmat(modulo,1,3);
    Cosa non funziona??
    che è repmat? (crea una matrice 1X3 di elementi tutti uguali a modulo)

    credo di aver capito capito perchè così è meglio: fa un'operazione tra gli elementi di condizione e la matrice di elementi uguali a modulo.

    Ma non capisco perchè non andava bene come era prima... il risultato mi sembra uguale
  • Re: Equazioni differenziali a coefficienti non costanti

    Infatti, se leggi anche quello che ho scritto tra parentesi in qualche modo ti dico che è identico.
    E' solo più carino. Praticamente devi dividere le tre colonne per il vettore modulo, quindi fai una matrice che contenga tre volte il vettore modulo per poter fare la divisione elemento per elemento.
    repmat(modulo,1,3) è uguale a scrivere [modulo modulo modulo].
    Comunque sia, puoi lasciare quello che hai scritto tu, è esattamente equivalente.
  • Re: Equazioni differenziali a coefficienti non costanti

    giug ha scritto:


    Infatti, se leggi anche quello che ho scritto tra parentesi in qualche modo ti dico che è identico.
    E' solo più carino. Praticamente devi dividere le tre colonne per il vettore modulo, quindi fai una matrice che contenga tre volte il vettore modulo per poter fare la divisione elemento per elemento.
    repmat(modulo,1,3) è uguale a scrivere [modulo modulo modulo].
    Comunque sia, puoi lasciare quello che hai scritto tu, è esattamente equivalente.
    No, così piace di più anche a me.
    Mi ero fatto prendere dal panico quando hai detto che non andava bene... poi ho provato, ho visto repmat che fa e mi erano venuti dei dubbi.

    Sto pensando che devo levare il bordo della semisfera perchè le particelle che partono perpendicolari a z mi imbordella la risoluzione dell'equazione differenziale perchè non verificno mai la condizione di passaggio dallo zero della Event_Stop_Sorgente (oltre, ovviamente, al fatto che non arriveranno mail al collimatore)
    quindi dovrei scrivere lacondizione come:
    posizioni=find(d<=1 & v(:,3)>=0 & v(:,1)==0, v(:,2)==0);

    mi sebra corretto, no?
  • Re: Equazioni differenziali a coefficienti non costanti

    Mi sembrano un po' restrittive le condizioni ==0... ad occhio non saranno mai verificate...
  • Re: Equazioni differenziali a coefficienti non costanti

    giug ha scritto:


    Mi sembrano un po' restrittive le condizioni ==0... ad occhio non saranno mai verificate...
    infatti mi ha mandato a quel paese,
    che gli devo dire?
  • Re: Equazioni differenziali a coefficienti non costanti

    Se non sbaglio quelle due condizioni le devi escludere, quindi devono essere diversi da 0, non uguali.
Devi accedere o registrarti per scrivere nel forum
473 risposte