Torna indietro   Hardware Upgrade Forum > Off Topic > Discussioni Off Topic > Scienza e tecnica

ASUS ROG Swift OLED PG49WCD: quando QD-OLED e ultrawide si fondono
ASUS ROG Swift OLED PG49WCD: quando QD-OLED e ultrawide si fondono
Da ASUS un monitor particolare ma molto completo: principalmente indirizzato al videogiocatore, può essere sfruttato con efficacia anche per attività creative e di produzione multimediale
Dreame L10s Pro Ultra Heat: la pulizia di casa tutta sostanza
Dreame L10s Pro Ultra Heat: la pulizia di casa tutta sostanza
Il nuovo robot aspirapolvere domestico di Dreame abbina funzionalità complete a un moccio flottante che raggiunge al meglio gli angoli delle pareti. Un prodotto tutto in uno semplice da utilizzare ma molto efficace, in grado di rispondere al meglio alle necessità di pulizia della casa
HONOR Magic6 Pro: come funziona Magic Portal, il modo ''intelligente'' di condividere
HONOR Magic6 Pro: come funziona Magic Portal, il modo ''intelligente'' di condividere
HONOR ha introdotto con Magic6 Pro la funzione Magic Portal che consente, tramite intelligenza artificiale, di suggerire scorciatoie agli utenti in modo da permettere di passare e accedere facilmente ai servizi tra app e dispositivi con un semplice tocco. Vi spieghiamo qui come funziona
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-04-2014, 21:58   #7781
Lampo89
Member
 
L'Avatar di Lampo89
 
Iscritto dal: Dec 2006
Messaggi: 33
Quote:
Originariamente inviato da dario fgx Guarda i messaggi
Ciao e grazie.


Allora usando mathematica (che non avevo mai usato), ho ficcato dentro questa espressione:

NDSolve[{y[x] + y''[x] == -y'[x]*Abs[y'[x]]}, y[0] = 1, y'[0] = 0]

ma non succede nulla. sembra suggerirmi un'altra espressione dalla sintassi più semplice ma non la risolve ugualmente.

Suggerimenti?
Inserisci queste due righe:
sol = NDSolve[{y[x] + y''[x] == -y'[x] Abs[y'[x]], y[0] == 1, y'[0] == 0},y[x],{x,xmin,xmax}];
Plot[y[x] /. sol,{x,xmin,xmax}]

metti al posto di xmin e xmax il valore di x rispettivamente minimo e massimo che vuoi plottare (ocio alla singolarità a x = -1.7)

Ultima modifica di Lampo89 : 17-04-2014 alle 16:25.
Lampo89 è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 10:48   #7782
kikino
Member
 
L'Avatar di kikino
 
Iscritto dal: Nov 2003
Città: Moro num pais tropical Abençoado por Deus Bonito por natureza
Messaggi: 89
Quote:
Originariamente inviato da dario fgx Guarda i messaggi
Ciao e grazie.


Allora usando mathematica (che non avevo mai usato), ho ficcato dentro questa espressione:

NDsolve[{y[x] + y''[x] == -y'[x]*Abs[y'[x]]}, y[0] = 1, y'[0] = 0]

ma non succede nulla. sembra suggerirmi un'altra espressione dalla sintassi più semplice ma non la risolve ugualmente.

Suggerimenti?
da dove ti esce fuori un equazione non lineare di questo tipo?
la sola forma sembra suggerire un termine di smorzamento viscoso che dipende dal segno della velocitá...
che tipo di problema stai affrontando? giusto per sapere
__________________
TIRANNIDE indistintamente appellare si debbe ogni qualunque governo, in cui chi è preposto alla esecuzion delle leggi, può farle, distruggerle, infrangerle, interpretarle, impedirle, sospenderle; od anche soltanto deluderle, con sicurezza d'impunità. Vittorio Alfieri 1777
kikino è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 11:54   #7783
MetalDetector
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 469
Ciao ragazzi,
nell'analisi di dispositivi microelettronici (MOSFET per la precisione) mi ritrovo a dover affrontare questo passaggio matematico che non riesco bene a comprendere.
In particolare, si tratta di conversione di un integrale rispetto ad un'altra variabile, visto che " l'integrale rispetto alla variabile spazio (x) dipende dallo spazio solo attraverso il potenziale ( φ(x) ) pare si possa fare. Chiaramente il tutto è stato spiegato da un ingegnere che ne ha svilito gli aspetti formalmente analitici (niente flame, sono ing anch'io xD ).
Chi mi aiuta a capire? Grazie infinite!!

MetalDetector è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 13:21   #7784
ciriccio
Senior Member
 
L'Avatar di ciriccio
 
Iscritto dal: Apr 2002
Città: milano
Messaggi: 4252
Considera per esempio l'integrale da 1 ad e di ln(x)/x in dx
Se poni t = ln(x), differenziando ottieni dt = (1/x) in dx

Per gli estremi t(1) = ln(1) = 0
t(e) = ln(e) = 1

Diventa integrale da 0 a 1 di t in dt.

Li' è la stessa cosa.

Come estremi ottieni 0 per l'estremo di sotto (condizione di contorno) e l'altro risultato facendo la sostituzione che dice lui.

In pratica ti basta differenziare la y (derivata per incremento, ottenendo derivata seconda di fi rispetto ad x per dx) e ti rendi subito conto che il tutto torna.
__________________
Non bisogna mai contraddire una donna. Basta aspettare, lo farà da sola
La statistica è quella scienza che dice che se hai i piedi nel congelatore e la testa nel forno, mediamente stai bene

Ultima modifica di ciriccio : 17-04-2014 alle 13:36.
ciriccio è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 14:15   #7785
dario fgx
Senior Member
 
L'Avatar di dario fgx
 
Iscritto dal: Feb 2003
Città: Terlizzi(BA)
Messaggi: 9593
Quote:
Originariamente inviato da Lampo89 Guarda i messaggi
Inserisci queste due righe:
sol = NDsolve[{y[x] + y''[x] == -y'[x] Abs[y'[x]], y[0] == 1, y'[0] == 0},y[x],{x,xmin,xmax}];
Plot[y[x] /. sol,{x,xmin,xmax}]

metti al posto di xmin e xmax il valore di x rispettivamente minimo e massimo che vuoi plottare (ocio alla singolarità a x = -1.7)

Ti ringrazio, purtroppo però provando tra 0 e 10 mi da una serie di errori tipo questo:

ReplaceAll::reps:

poi sembra che provi a calcolare numericamente (cioè compaiono prorio dei numeri al posto di x nelle espressioni ) ed infine si blocca dopo alcuni tentativi.


Ogni ulteriore scontato dettaglio è gradito perchè non ho mai usato prima questo sw. Ho solo aperto il notebook di mathematica e ficcato dentro la tua espressione tra 0 e 10.
__________________
"E' dall'alto che ci dividono, è là in alto che inventano il pericolo ! "
dario fgx è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 14:17   #7786
dario fgx
Senior Member
 
L'Avatar di dario fgx
 
Iscritto dal: Feb 2003
Città: Terlizzi(BA)
Messaggi: 9593
Quote:
Originariamente inviato da kikino Guarda i messaggi
da dove ti esce fuori un equazione non lineare di questo tipo?
la sola forma sembra suggerire un termine di smorzamento viscoso che dipende dal segno della velocitá...
che tipo di problema stai affrontando? giusto per sapere
esattamente: sono 2 vasi comunicanti in uno dei 2 c'è un eccesso di altezza del liquido e voglio analizzare il tempo che ci mette a smorzare l'oscillazione dell'altezza del liquido. Anzi se tu volessi aiutarmi, ti spiego nel dettaglio quel che si vorrebbe fare..
__________________
"E' dall'alto che ci dividono, è là in alto che inventano il pericolo ! "
dario fgx è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 14:29   #7787
Lampo89
Member
 
L'Avatar di Lampo89
 
Iscritto dal: Dec 2006
Messaggi: 33
Quote:
Originariamente inviato da dario fgx Guarda i messaggi
Ti ringrazio, purtroppo però provando tra 0 e 10 mi da una serie di errori tipo questo:

ReplaceAll::reps:

poi sembra che provi a calcolare numericamente (cioè compaiono prorio dei numeri al posto di x nelle espressioni ) ed infine si blocca dopo alcuni tentativi.


Ogni ulteriore scontato dettaglio è gradito perchè non ho mai usato prima questo sw. Ho solo aperto il notebook di mathematica e ficcato dentro la tua espressione tra 0 e 10.
sono un pirla io che mi sono dimenticato una maiuscola nel comando, ti linko una immagine del plot nel caso non riuscissi a risolvere; riscrivo anche il comando corretto:

sol = NDSolve[{y[x] + y''[x] == -y'[x] Abs[y'[x]], y[0] == 1, y'[0] == 0}, y[x], {x, 0, 10}];
Plot[y[x] /. sol, {x, 0, 10}]
Immagini allegate
File Type: jpg plot.jpg (9.5 KB, 6 visite)
Lampo89 è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 14:32   #7788
ciriccio
Senior Member
 
L'Avatar di ciriccio
 
Iscritto dal: Apr 2002
Città: milano
Messaggi: 4252
Quote:
Originariamente inviato da dario fgx Guarda i messaggi
Ti ringrazio, purtroppo però provando tra 0 e 10 mi da una serie di errori tipo questo:

ReplaceAll::reps:

poi sembra che provi a calcolare numericamente (cioè compaiono prorio dei numeri al posto di x nelle espressioni ) ed infine si blocca dopo alcuni tentativi.


Ogni ulteriore scontato dettaglio è gradito perchè non ho mai usato prima questo sw. Ho solo aperto il notebook di mathematica e ficcato dentro la tua espressione tra 0 e 10.
Prima di risponderti avevo provato ed a me andava.

Riprova chiudendo e riaprendo... e guarda gli esempi sia in internet che nell'aiuto : )
__________________
Non bisogna mai contraddire una donna. Basta aspettare, lo farà da sola
La statistica è quella scienza che dice che se hai i piedi nel congelatore e la testa nel forno, mediamente stai bene
ciriccio è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 15:08   #7789
dario fgx
Senior Member
 
L'Avatar di dario fgx
 
Iscritto dal: Feb 2003
Città: Terlizzi(BA)
Messaggi: 9593
Quote:
Originariamente inviato da Lampo89 Guarda i messaggi
sono un pirla io che mi sono dimenticato una maiuscola nel comando, ti linko una immagine del plot nel caso non riuscissi a risolvere; riscrivo anche il comando corretto:

sol = NDSolve[{y[x] + y''[x] == -y'[x] Abs[y'[x]], y[0] == 1, y'[0] == 0}, y[x], {x, 0, 10}];
Plot[y[x] /. sol, {x, 0, 10}]
Grazie, adesso funziona.

Ora considerando che la mia espressione in realtà è:

-LS/(gΩ)y'' - 2y = (1/(2g))y'|y'|(Lλ/D)

come scrivo un codice veloce che mi permetta di fare una analisi al variare di λ, D, L, S, Ω ?

In matlab si poteva fare in modo che in input venissero chiesti questi parametri.

Ad esempio sarebbe utile un codice che mi permettesse di plottare la soluzione al variare di λ tra 0 e 100 (ad esempio).


Grazie mille!
__________________
"E' dall'alto che ci dividono, è là in alto che inventano il pericolo ! "

Ultima modifica di dario fgx : 17-04-2014 alle 15:15.
dario fgx è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 15:09   #7790
dario fgx
Senior Member
 
L'Avatar di dario fgx
 
Iscritto dal: Feb 2003
Città: Terlizzi(BA)
Messaggi: 9593
Quote:
Originariamente inviato da ciriccio Guarda i messaggi
Prima di risponderti avevo provato ed a me andava.

Riprova chiudendo e riaprendo... e guarda gli esempi sia in internet che nell'aiuto : )

credo mancasse la S maiuscola in NDSolve
__________________
"E' dall'alto che ci dividono, è là in alto che inventano il pericolo ! "
dario fgx è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 16:12   #7791
Lampo89
Member
 
L'Avatar di Lampo89
 
Iscritto dal: Dec 2006
Messaggi: 33
Quote:
Originariamente inviato da dario fgx Guarda i messaggi
Grazie, adesso funziona.

Ora considerando che la mia espressione in realtà è:

-LS/(gΩ)y'' - 2y = (1/(2g))y'|y'|(Lλ/D)

come scrivo un codice veloce che mi permetta di fare una analisi al variare di λ, D, L, S, Ω ?

In matlab si poteva fare in modo che in input venissero chiesti questi parametri.

Ad esempio sarebbe utile un codice che mi permettesse di plottare la soluzione al variare di λ tra 0 e 100 (ad esempio).

Grazie mille!
Ho scritto al volo questo codice, ho fatto anche una prova con parametri inventati e da robe sensate

f[omega_, L_, d_, S_, lambda_, g_] :=
NDSolve[{-L S/(g omega) y''[x] - 2 y[x] == 1/(2 g) y'[x] Abs[y'[x]] L lambda/d , y[0] == 1, y'[0] == 0}, y[x], {x, 0, 10}];
(* fissi i valori di omega,L,d,S,g qui sotto*)
omega = 20. ;
L = 1. ;
d = 2.;
g = 0.2;
S = 4.;
a = 5; (* è il passo con cui vari lambda da 1 a 100*)

fun = Table[y[x] /. f[omega, L, d, S, lambda, g], {lambda, 1, 100, a}];
Plot[fun, {x, 0, 10}]

Ultima modifica di Lampo89 : 17-04-2014 alle 16:27.
Lampo89 è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 16:54   #7792
dario fgx
Senior Member
 
L'Avatar di dario fgx
 
Iscritto dal: Feb 2003
Città: Terlizzi(BA)
Messaggi: 9593
Quote:
Originariamente inviato da Lampo89 Guarda i messaggi
Ho scritto al volo questo codice, ho fatto anche una prova con parametri inventati e da robe sensate

f[omega_, L_, d_, S_, lambda_, g_] :=
NDSolve[{-L S/(g omega) y''[x] - 2 y[x] == 1/(2 g) y'[x] Abs[y'[x]] L lambda/d , y[0] == 1, y'[0] == 0}, y[x], {x, 0, 10}];
(* fissi i valori di omega,L,d,S,g qui sotto*)
omega = 20. ;
L = 1. ;
d = 2.;
g = 0.2;
S = 4.;
a = 5; (* è il passo con cui vari lambda da 1 a 100*)

fun = Table[y[x] /. f[omega, L, d, S, lambda, g], {lambda, 1, 100, a}];
Plot[fun, {x, 0, 10}]

grande! Ancora grazie!

Mi piace questo mathematica!

Immagino di poter fare lo stesso giochetto che hai fatto con il parametro lambda per tutti quanti gli altri vero?

Ti chiedo ancora una cosa: se voglio calcolare dopo quanto tempo l'ampiezza si è r idotta ad 1/e come faccio?



altra cosa: perchè non riesco a plotare y' ? Non dovrebbe bastare cambiare y[x] con y'[x] in

fun = Table[y[x] /. f[omega, L, d, S, lambda, g], {lambda, 1, 100, a}];
Plot[fun, {x, 0, 10}][/quote]

?


Tnx
__________________
"E' dall'alto che ci dividono, è là in alto che inventano il pericolo ! "

Ultima modifica di dario fgx : 17-04-2014 alle 17:00.
dario fgx è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 18:06   #7793
MetalDetector
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 469
Quote:
Originariamente inviato da ciriccio Guarda i messaggi
Considera per esempio l'integrale da 1 ad e di ln(x)/x in dx
Se poni t = ln(x), differenziando ottieni dt = (1/x) in dx

Per gli estremi t(1) = ln(1) = 0
t(e) = ln(e) = 1

Diventa integrale da 0 a 1 di t in dt.

Li' è la stessa cosa.

Come estremi ottieni 0 per l'estremo di sotto (condizione di contorno) e l'altro risultato facendo la sostituzione che dice lui.

In pratica ti basta differenziare la y (derivata per incremento, ottenendo derivata seconda di fi rispetto ad x per dx) e ti rendi subito conto che il tutto torna.

aaaahhh capito! in pratica la usuale "t" la chiama "y" in quel caso, e come condizioni a contorno (estremi di integrazione) mette quelle scritte all'inizio. Grazie mille!!!
MetalDetector è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 19:04   #7794
Lampo89
Member
 
L'Avatar di Lampo89
 
Iscritto dal: Dec 2006
Messaggi: 33
Quote:
Originariamente inviato da dario fgx Guarda i messaggi
grande! Ancora grazie!

Mi piace questo mathematica!

Immagino di poter fare lo stesso giochetto che hai fatto con il parametro lambda per tutti quanti gli altri vero?

Ti chiedo ancora una cosa: se voglio calcolare dopo quanto tempo l'ampiezza si è r idotta ad 1/e come faccio?



altra cosa: perchè non riesco a plotare y' ? Non dovrebbe bastare cambiare y[x] con y'[x] in

fun = Table[y[x] /. f[omega, L, d, S, lambda, g], {lambda, 1, 100, a}];
Plot[fun, {x, 0, 10}]

?


Tnx
mathematica è davvero un bellissimo programma, è ottimo per la manipolazione di espressioni algebriche, risolve numericamente ed esattamente equazioni e sistemi di equazioni, fa plot, istogrammi, generazione di numeri pseudocasuali secondo un gran numero di pdf, ci sono molti add on che estendono le funzionalità..
ti rispondo velocemente alle tue domande, ma ad occhio credo di non poter fare a meno di dover usare tecnicismi che però, appena si apprendono i concetti base della programmazione mathematica, sono davvero banali; se ti interessa, trovi guide dettagliate nell'help del programma e ovviamente online sul sito wolfram, oltre che libri (ma chi ne ha bisogno con così tanta roba gratis?)

1) si, puoi scegliere di variare un parametro alla volta e plottare le soluzioni al variare di esso, una volta fissati tutti gli altri. cambi semplicemente nel table il nome della variabile su cui cicli (quella tra parentesi graffe prima della fine dell'istruzione, per intenderci) e ti assicuri di aver fissato tutte le altre variabili al valore voluto prima del comando Table.

Ultima modifica di Lampo89 : 17-04-2014 alle 19:14.
Lampo89 è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 19:31   #7795
dario fgx
Senior Member
 
L'Avatar di dario fgx
 
Iscritto dal: Feb 2003
Città: Terlizzi(BA)
Messaggi: 9593
Quote:
Originariamente inviato da Lampo89 Guarda i messaggi
mathematica è davvero un bellissimo programma, è ottimo per la manipolazione di espressioni algebriche, risolve numericamente ed esattamente equazioni e sistemi di equazioni, fa plot, istogrammi, generazione di numeri pseudocasuali secondo un gran numero di pdf, ci sono molti add on che estendono le funzionalità..
ti rispondo velocemente alle tue domande, ma ad occhio credo di non poter fare a meno di dover usare tecnicismi che però, appena si apprendono i concetti base della programmazione mathematica, sono davvero banali; se ti interessa, trovi guide dettagliate nell'help del programma e ovviamente online sul sito wolfram, oltre che libri (ma chi ne ha bisogno con così tanta roba gratis?)

1) si, puoi scegliere di variare un parametro alla volta e plottare le soluzioni al variare di esso, una volta fissati tutti gli altri. cambi semplicemente nel table il nome della variabile su cui cicli (quella tra parentesi graffe prima della fine dell'istruzione, per intenderci) e ti assicuri di aver fissato tutte le altre variabili al valore voluto prima del comando Table.
si certo, l'avevo intuito. Poi quando puoi mi spieghi anche perchè non riesco a plottare la derivata prima (come dicevo nel post precedente)

tnx
__________________
"E' dall'alto che ci dividono, è là in alto che inventano il pericolo ! "
dario fgx è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 19:33   #7796
Lampo89
Member
 
L'Avatar di Lampo89
 
Iscritto dal: Dec 2006
Messaggi: 33
Quote:
Originariamente inviato da Lampo89 Guarda i messaggi
mathematica è davvero un bellissimo programma, è ottimo per la manipolazione di espressioni algebriche, risolve numericamente ed esattamente equazioni e sistemi di equazioni, fa plot, istogrammi, generazione di numeri pseudocasuali secondo un gran numero di pdf, ci sono molti add on che estendono le funzionalità..
ti rispondo velocemente alle tue domande, ma ad occhio credo di non poter fare a meno di dover usare tecnicismi che però, appena si apprendono i concetti base della programmazione mathematica, sono davvero banali; se ti interessa, trovi guide dettagliate nell'help del programma e ovviamente online sul sito wolfram, oltre che libri (ma chi ne ha bisogno con così tanta roba gratis?)

1) si, puoi scegliere di variare un parametro alla volta e plottare le soluzioni al variare di esso, una volta fissati tutti gli altri. cambi semplicemente nel table il nome della variabile su cui cicli (quella tra parentesi graffe prima della fine dell'istruzione, per intenderci) e ti assicuri di aver fissato tutte le altre variabili al valore voluto prima del comando Table.
Per i tempi di smorzamento aggiungi queste linee:
imax = Length[fun];
tau = Table[ x /. FindRoot[fun[[i, 1]] == 1/Exp[1], {x, 1}], {i, 1, imax}]

implicitamente ho assunto che la funzione al massimo valga 1.; quindi attento, se cambi la condizione iniziale questo comando è da cambiare!
controlla sempre che tornino, alla fine sono calcolati numericamente, magari il programma sfasa..
per quanto riguarda la derivata prima cado dalle nubi anche io, perché si fa in quel modo e con altri esempi più semplici la cosa funziona...

Ultima modifica di Lampo89 : 17-04-2014 alle 19:36.
Lampo89 è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 19:49   #7797
ciriccio
Senior Member
 
L'Avatar di ciriccio
 
Iscritto dal: Apr 2002
Città: milano
Messaggi: 4252
Quote:
Originariamente inviato da dario fgx
altra cosa: perchè non riesco a plotare y' ? Non dovrebbe bastare cambiare y[x] con y'[x] in

fun = Table[y[x] /. f[omega, L, d, S, lambda, g], {lambda, 1, 100, a}];
Plot[fun, {x, 0, 10}]

Forse va cambiato pure prima?
__________________
Non bisogna mai contraddire una donna. Basta aspettare, lo farà da sola
La statistica è quella scienza che dice che se hai i piedi nel congelatore e la testa nel forno, mediamente stai bene
ciriccio è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 20:05   #7798
Lampo89
Member
 
L'Avatar di Lampo89
 
Iscritto dal: Dec 2006
Messaggi: 33
Quote:
Originariamente inviato da Lampo89 Guarda i messaggi
Per i tempi di smorzamento aggiungi queste linee:
imax = Length[fun];
tau = Table[ x /. FindRoot[fun[[i, 1]] == 1/Exp[1], {x, 1}], {i, 1, imax}]

implicitamente ho assunto che la funzione al massimo valga 1.; quindi attento, se cambi la condizione iniziale questo comando è da cambiare!
controlla sempre che tornino, alla fine sono calcolati numericamente, magari il programma sfasa..
per quanto riguarda la derivata prima cado dalle nubi anche io, perché si fa in quel modo e con altri esempi più semplici la cosa funziona...
per quanto riguarda la derivata errore mio, una istruzione che ho scritto non consentiva quel giochino ... riscrivo tutto il codice


f[omega_, L_, d_, S_, lambda_, g_] :=
NDSolve[{-L S/(g omega) y''[x] - 2 y[x] ==
1/(2 g) y'[x] Abs[y'[x]] L lambda/d , y[0] == 1, y'[0] == 0},
y, {x, 0, 10}];
(* fissi i valori di omega,L,d,S,g qui sotto*)
omega = 20. ;
L = 1. ;
d = 2.;
g = 0.2;
S = 4.;
a = 5; (* è il passo con cui vari lambda da 1 a 100*)

fun = Table[y[x] /. f[omega, L, d, S, lambda, g], {lambda, 1, 100, a}];
funder = Table[
y'[x] /. f[omega, L, d, S, lambda, g], {lambda, 1, 100, a}];

Plot[fun, {x, 0, 10}]
Plot[funder, {x, 0, 10},PlotRange->Full]

imax = Length[fun];
tau = Table[
x /. FindRoot[fun[[i, 1]] == 1/Exp[1], {x, 1}], {i, 1, imax}]
Lampo89 è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 21:11   #7799
dario fgx
Senior Member
 
L'Avatar di dario fgx
 
Iscritto dal: Feb 2003
Città: Terlizzi(BA)
Messaggi: 9593
Quote:
Originariamente inviato da Lampo89 Guarda i messaggi
per quanto riguarda la derivata errore mio, una istruzione che ho scritto non consentiva quel giochino ... riscrivo tutto il codice


f[omega_, L_, d_, S_, lambda_, g_] :=
NDSolve[{-L S/(g omega) y''[x] - 2 y[x] ==
1/(2 g) y'[x] Abs[y'[x]] L lambda/d , y[0] == 1, y'[0] == 0},
y, {x, 0, 10}];
(* fissi i valori di omega,L,d,S,g qui sotto*)
omega = 20. ;
L = 1. ;
d = 2.;
g = 0.2;
S = 4.;
a = 5; (* è il passo con cui vari lambda da 1 a 100*)

fun = Table[y[x] /. f[omega, L, d, S, lambda, g], {lambda, 1, 100, a}];
funder = Table[
y'[x] /. f[omega, L, d, S, lambda, g], {lambda, 1, 100, a}];

Plot[fun, {x, 0, 10}]
Plot[funder, {x, 0, 10},PlotRange->Full]

imax = Length[fun];
tau = Table[
x /. FindRoot[fun[[i, 1]] == 1/Exp[1], {x, 1}], {i, 1, imax}]

grazie mille ancora!!!

Devo però segnalarti un problema. Usando il nuovo codice sembra che i risultati siano diversi, in particolare dal plot di y sembra che l'oscillazione sia smorzata in tempi molto più lunghi rispetto a prima. Posso chiederti di provare da te il codice con i seguenti parametri?

y(0)=0.01 (quindi si deve correggere l'espressione per i tempi di smorzamento)
omega = 0.000785;
L = 0.1;
d = 0.01;
g = 9.81;
S = 0.001;
a = 0.04;
lambda da 0 a 0.1

e plottare tutto tra 0 e 30 secondi


edit

errore mio, non cambia nulla.


ora l'unico problema è che non mi calcola i tempi di smorzamento se cambio l'ampiezza iniziale da 1 al valore più realistico di 0.01
__________________
"E' dall'alto che ci dividono, è là in alto che inventano il pericolo ! "

Ultima modifica di dario fgx : 17-04-2014 alle 21:26.
dario fgx è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2014, 22:52   #7800
Lampo89
Member
 
L'Avatar di Lampo89
 
Iscritto dal: Dec 2006
Messaggi: 33
Quote:
Originariamente inviato da dario fgx Guarda i messaggi
grazie mille ancora!!!

Devo però segnalarti un problema. Usando il nuovo codice sembra che i risultati siano diversi, in particolare dal plot di y sembra che l'oscillazione sia smorzata in tempi molto più lunghi rispetto a prima. Posso chiederti di provare da te il codice con i seguenti parametri?

y(0)=0.01 (quindi si deve correggere l'espressione per i tempi di smorzamento)
omega = 0.000785;
L = 0.1;
d = 0.01;
g = 9.81;
S = 0.001;
a = 0.04;
lambda da 0 a 0.1

e plottare tutto tra 0 e 30 secondi


edit

errore mio, non cambia nulla.


ora l'unico problema è che non mi calcola i tempi di smorzamento se cambio l'ampiezza iniziale da 1 al valore più realistico di 0.01
modificarlo è un attimo;
in cima al file aggiungi una variabile (diciamo in, o come ti pare a te), la setti al valore che vuoi come condizione iniziale, e in DNSolve, al posto di y[0] == 1 scrivi y[0] == in;
poi modifica il comando FindRoot così: FindRoot[fun[[i, 1]] == in/Exp[1], {x, 1}]
nel caso in cui fallisca ancora la ricerca dei tempi di smorzamento, devi cambiare l'ultimo parametro nell'ultima graffa del comando FindRoot, che praticamente è il punto x in cui inizia a trovare numericamente le soluzioni dell'equazione

p.s. comunque noto ora che le cose funzionano male quando il moto è oscillante ....tutte le volte che facevo le prove usavo moti smorzati esponenzialmente e lì non ci sono problemi a trovare il tempo di smorzamento... ma se oscilla, beh è tutto un altro discorso!!l'unica cosa che posso consigliarti è questa: trova le posizioni dei massimi e dei minimi e vedi quale si avvicina di più al valore voluto...è una cosa approssimata ma credo che di meglio non si possa fare

Ultima modifica di Lampo89 : 18-04-2014 alle 00:11.
Lampo89 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS ROG Swift OLED PG49WCD: quando QD-OLED e ultrawide si fondono ASUS ROG Swift OLED PG49WCD: quando QD-OLED e ul...
Dreame L10s Pro Ultra Heat: la pulizia di casa tutta sostanza Dreame L10s Pro Ultra Heat: la pulizia di casa t...
HONOR Magic6 Pro: come funziona Magic Portal, il modo ''intelligente'' di condividere HONOR Magic6 Pro: come funziona Magic Portal, il...
L'innovazione richiede fiducia: Workday si propone come guida nell'era dell'IA L'innovazione richiede fiducia: Workday si propo...
Recensione HONOR Pad 9: ampio display e audio top per il tablet per l'intrattenimento Recensione HONOR Pad 9: ampio display e audio to...
Hisense vende un TV FHD 32 pollici con Q...
Cisco Webex anche in auto: ora è ...
Phil Schiller, il boss dell'App Store di...
Lola in Formula E insieme a Yamaha, due ...
Motorola MA1 è l'accessorio ideale per u...
Tineco e aspirapolveri senza fili, la nu...
Blocco note, c'è un modo per ripr...
Relic Entertainment dice addio a SEGA: l...
SPATIUM M580 FROZR, il nuovo SSD PCIe Ge...
Le schede video NVIDIA GeForce RTX con i...
Claude batte ChatGPT: la battaglia tra i...
Tutti i dispositivi Ring in offerta: cit...
AI PC, le caratteristiche dietro a una d...
AirPods e iPhone 15 in offerta: modello ...
Offerta Ring Intercom ed Echo Pop: se co...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:15.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Served by www1v