Equazioni differenziali a coefficienti non costanti

di il
473 risposte

473 Risposte - Pagina 7

  • Re: Equazioni differenziali a coefficienti non costanti

    No, infatti. questo è il metodo per passarle alla funzione. Da come avevi scritto la funzione mi sembrava che avessi scelto questa strada.
    Se vuoi usare le variabili globali, prima di definire Deriva1=0.05, scrivi
    global Deriva1

    e dentro la funzione riscrivi
    global Deriva1

    Non devi cambiare altro, non devi passarlo come ingresso alla funzione.
  • Re: Equazioni differenziali a coefficienti non costanti

    giug ha scritto:


    No, infatti. questo è il metodo per passarle alla funzione. Da come avevi scritto la funzione mi sembrava che avessi scelto questa strada.
    No, volevo fare così, ma siccome sono una capra avevo fatto con le variabili globali come hai scritto dopo.

    giug ha scritto:


    Se vuoi usare le variabili globali, prima di definire Deriva1=0.05, scrivi
    global Deriva1

    e dentro la funzione riscrivi
    global Deriva1

    Non devi cambiare altro, non devi passarlo come ingresso alla funzione.
    Questo è quello che avevo fatto ieri... ma come sopra è più bello
  • Re: Equazioni differenziali a coefficienti non costanti

    Riguardando il codice, se ciascuna variabile la devi passare ad una sola funzione mi sembra anche più corretto. Credo che global sia più utile quando più funzioni condividono la stessa variabile, nel tuo caso è solo una per ciascuna variabile.
  • Re: Equazioni differenziali a coefficienti non costanti

    Concordo con LEI perfettamente.

    ora devo fare un'altra cosa della luna (fargli generare le particelle e farle passare attraverso due diaframmi con un MonteCarlo), appena ho le idee più chiare ti chiederò aiuto
    Questa parte dovrebbe andare prima delle equazioni differenziali...
  • Re: Equazioni differenziali a coefficienti non costanti

    Bene... cerca di avere le idee più chiare possibili
  • Re: Equazioni differenziali a coefficienti non costanti

    Su quello che devo fare sono abbastanza convinto, su come farglielo fare sono nel caos più totale.
    Questa volta però non voglio andare avanti a tentativi inutili, intanto mi studio il Montecarlo e poi comincio a metterci mano.
  • Re: Equazioni differenziali a coefficienti non costanti

    Tranquillo, Montecarlo dovrebbe essere abbastanza semplice.
  • Re: Equazioni differenziali a coefficienti non costanti

    Si, non è complicato, il vettore che descrive le condizioni iniziali per n particelle lo faccio
    Ora la domanda è:
    se voglio risolvere un'equazione differenziale per ogni particella, quindi metto:

    for i=1:n
    risolvi l'equazione con le condizioni iniziali
    end

    come faccio ad avere in uscita le n matrici che mi danno le soluzioni per ogni particella?
  • Re: Equazioni differenziali a coefficienti non costanti

    Se le matrici sono tutte della stessa dimensione ti basta fare una matrice tridimensionale, che è più semplice da gestire:
    M(:,:,i)
    Altrimenti devi fare una struttura in cui metti una matrice in ogni cella.
    M{i}
  • Re: Equazioni differenziali a coefficienti non costanti

    O, al limite una matrice con le coordinate finali di tutte le particelle?
  • Re: Equazioni differenziali a coefficienti non costanti

    Se ti servono solo le coordinate finali puoi fare una matrice con due colonne e basta.
    Se ti servono anche altri dati puoi usare gli altri due metodi, non sono niente di troppo complicato...
  • Re: Equazioni differenziali a coefficienti non costanti

    Se scrivo:
    
    clear all
    close all
    
    uma=1.66e-27; %[Kg], unità di massa atomica
    q=1.602e-19; %[C], carica elementare
    
    m_e=5.485799e-4*uma; %[kg], massa dell'elettrone
    eV=1.6021765e-19; %[J], fattore di conversione eV-->J
    c= 2.99792458e8;  %[m/s], velocità della luce
    %KB=(8.617332*10^(-5))*eV; %[eV/K], costante di Boltzmann
    uma1=931.494028; %[MeV/c^2], fattore di conversione uma-->MeV/c^2 (massa)
    KB=8.617e-5; %[eV*K^-1], costante di Boltzmann
    KBT=1076*KB;
    
    n=100;
    
    Ein=0.03;
    m_ion=1.00794*uma;
    
    q_over_m=q/m_ion;
    
    Etot_ion=zeros(n,1);
    betasquare_ion=zeros(n,1);
    v_ion=zeros(n,1);
    
    
    %calcolo la componente z della velocità
    for i=1:n             
             K_ion=normrnd(Ein,Ein/10);
             Etot_ion(i)=K_ion+((m_ion*uma1)/uma);  % ho tutto in MeV
             betasquare_ion(i)=1-(((m_ion*uma1)/(uma*Etot_ion(i)))^2);
             v_ion(i)=sqrt(betasquare_ion(i)*c^2);
             v_z=v_ion;
             
    %calcolo la componente x              
             v_x= unifrnd(-0.7875,0.7875, n,1); %angolo compreso da -45 e +45
               
              v_y= unifrnd(-0.7875,0.7875, n,1);
             
              v0=[v_x, v_y, v_z]; %initial velocity
              r0=zeros(n,3);      %initial speed
              
              y_sorgente=[r0,v0];  %vector of initial condition
              
              tspan=[0,100];
              
              Pinhole1=1;
              DiametroPinhole1=0.002;
              r_pin1=DiametroPinhole1/2;
              
              O=[0 0 0]';
              %%%Risolvo il moto
              f = @(t,ys) [ys(4:6); O];
              % the expression [y(4:6); (q/m)*cross(y(4:6),B)]
            
              
              options=odeset('RelTol',1e-7,'Events',@(t,ys)Event_Stop_Sorgente(t,ys,Pinhole1));   
            
              [t,ys] = ode23t(f,tspan,y_sorgente(i,:),options);
              
              T(:,:,i)=ys;
         
    end
    
    va bene?

    T(:,:,i)=ys è la matrice che mi serve?
  • Re: Equazioni differenziali a coefficienti non costanti

    giug ha scritto:


    Se ti servono solo le coordinate finali puoi fare una matrice con due colonne e basta.
    No, mi serve una matrice con 6 colonne (3 coordinate spaziali e 3 per la velocità) e n colonne quante sono le particelle.
    una riga per ogni particella
  • Re: Equazioni differenziali a coefficienti non costanti

    Sì.
    Magari inizializza T prima di iniziare il ciclo.
  • Re: Equazioni differenziali a coefficienti non costanti

    giug ha scritto:


    sì.
    Magari inizializza T prima di iniziare il ciclo.
    per forza?
    non lo so quante righe fa per ogni particella (cioè, lo potrei sapere, ma in linea di principio no...)
Devi accedere o registrarti per scrivere nel forum
473 risposte