Hardware Upgrade Forum

Hardware Upgrade Forum (https://www.hwupgrade.it/forum/index.php)
-   Scienza e tecnica (https://www.hwupgrade.it/forum/forumdisplay.php?f=91)
-   -   [Official Thread]Richieste d'aiuto in MATEMATICA: postate qui! (https://www.hwupgrade.it/forum/showthread.php?t=1221191)


Vlad3210 16-01-2014 11:03

Forma chiusa di integrale
 
Salve a tutti!
Potete aiutarmi con questo integrale? Esiste la sua soluzione in forma chiusa?



Grazie!

Lampo89 16-01-2014 15:15

Quote:

Originariamente inviato da Vlad3210 (Messaggio 40578511)
Salve a tutti!
Potete aiutarmi con questo integrale? Esiste la sua soluzione in forma chiusa?



Grazie!

esiste, controlla su wolframalpha ma per giungere al risultato non saprei da che parte cominciare (fra l'altro è espresso in termini di funzioni speciali) e credo che non sia per nulla banale


\psi è la funzione poligamma di ordine 0 e \psi^{(1)} quella di ordine 1, tutto il resto quasi ovvio

cicquetto 02-03-2014 19:25

mi riuscite a risolvere



?

Lampo89 03-03-2014 17:24

Quote:

Originariamente inviato da cicquetto (Messaggio 40804463)
mi riuscite a risolvere



?

"Risolvere" cosa?Studio di funzione??

cicquetto 03-03-2014 23:17

Quote:

Originariamente inviato da Lampo89 (Messaggio 40808378)
"Risolvere" cosa?Studio di funzione??

si, non capisco se sia risolvibile o no: a, N (sarebbe la n?), L.

come si svolge?

Lampo89 04-03-2014 00:23

Quote:

Originariamente inviato da cicquetto (Messaggio 40809927)
si, non capisco se sia risolvibile o no: a, N (sarebbe la n?), L.

come si svolge?

non capisco molte cose..
1) cosa sarebbe la "a"?
2) l'indice inferiore della sommatoria, se non leggo male, mi pare "n+1",
cosa che mi sembra assurda, semmai sarà n diverso da 1
3) i coefficienti b_n e a_n che moltiplicano rispettivamente seno e coseno che sono? interpreto io a_n, dato che mi pare strano sia "6n"
4) L che è?
insomma quello che c'è scritto su quella lavagna secondo me è molto impreciso, certamente non si può dire se è risolvibile o meno perché c'è scritto tutto e nulla...
quello che è scritto è solo una serie di fourier di cui non puoi studiare convergenza dato che non sono specificati né i coefficienti, ne tantomeno la funzione da sviluppare.

Ziosilvio 04-03-2014 08:39

Sembrerebbe una serie di Fourier. (Quell'"n+1" immagino sia stato scritto per sbaglio al posto di "n=1".) Bisognerebbe capire di cosa...

robertogl 02-04-2014 17:26

Problema: supponiamo di avere una misura in gradi, per esempio (30+-0.2)°. In radianti è (0.52+-0.003)(non importano le cifre significative, è un esempio). Ora, faccio il seno di entrambe, ottenendo sin(30*pi/180) e sin(0.52). Il fattore pi/180 lo metto per avere un numero puro come argomento del seno. Per l'errore devo propagare, e il problema sorge quando il fattore pi/180 viene portato fuori: ho (pi/180)*cos(30*pi/180)*0.02*(pi/180) e per l'altro solo cos(0.003)*0.003. Il risultato viene diverso, dove ho sbagliato?

Sent from my GT-I9505 using Tapatalk 4

Edit: il 180 fuori porta un problema di unità di misura però...

robertogl 02-04-2014 17:27

Edit

Lampo89 02-04-2014 23:54

Quote:

Originariamente inviato da robertogl (Messaggio 40937437)
Problema: supponiamo di avere una misura in gradi, per esempio (30+-0.2)°. In radianti è (0.52+-0.003)(non importano le cifre significative, è un esempio). Ora, faccio il seno di entrambe, ottenendo sin(30*pi/180) e sin(0.52). Il fattore pi/180 lo metto per avere un numero puro come argomento del seno. Per l'errore devo propagare, e il problema sorge quando il fattore pi/180 viene portato fuori: ho (pi/180)*cos(30*pi/180)*0.02*(pi/180) e per l'altro solo cos(0.003)*0.003. Il risultato viene diverso, dove ho sbagliato?

Sent from my GT-I9505 using Tapatalk 4

Edit: il 180 fuori porta un problema di unità di misura però...

Facendo tutto diretto in radianti ottieni:
cos(0.52)*0.003

invece, se usi i risultati in gradi e usi il fattore di conversione all'interno ocio perché la formula di propagazione dice che sigma_f = |f'(x)| sigma_x
cioé, in questo caso la tua misura è l'angolo in gradi, da cui valuti f(x) = sin(Pi/180 x) in corrispondenza del valore x misurato...

usando la propagazione: cos(Pi/180 30) Pi/180 0.2
e i due risultati coincidono...

robertogl 03-04-2014 06:10

Quote:

Originariamente inviato da Lampo89 (Messaggio 40938966)
Facendo tutto diretto in radianti ottieni:
cos(0.52)*0.003

invece, se usi i risultati in gradi e usi il fattore di conversione all'interno ocio perché la formula di propagazione dice che sigma_f = |f'(x)| sigma_x
cioé, in questo caso la tua misura è l'angolo in gradi, da cui valuti f(x) = sin(Pi/180 x) in corrispondenza del valore x misurato...

usando la propagazione: cos(Pi/180 30) Pi/180 0.2
e i due risultati coincidono...

Effettivamente si, cioè io ero arrivato stanotte allo stesso risultato. Ovvero, faccio come nel mio post di prima ma alla fine avendo appunto il problema dell'unità di misura moltiplico per 180/pi e ottengo quello che hai ottenuto tu :)

Sent from my GT-I9505 using Tapatalk 4

dario fgx1 15-04-2014 09:43

help
 
Ciao a tutti, sono dario fgx, ma non riesco più a recuperare la mia password di accesso.
Mi servirebbe aiuto con questa equazione;

y’’ + 16 y = - 120 y’ |y’|

ho provato a risolverla in matlab con dsolve ma non riesce. Qualcuno può aiutarmi?

Grazie

Ziosilvio 15-04-2014 11:11

Su http://www.hwupgrade.it/forum/regolamento.php viene spiegato non solo che non si possono avere due account diversi, ma anche come recuperare la password.
Ragion per cui: cortesemente, mandami un pvt con la vecchia utenza quando l'hai recuperata.

dario fgx 15-04-2014 13:34

Quote:

Originariamente inviato da Ziosilvio (Messaggio 40987313)
Su http://www.hwupgrade.it/forum/regolamento.php viene spiegato non solo che non si possono avere due account diversi, ma anche come recuperare la password.
Ragion per cui: cortesemente, mandami un pvt con la vecchia utenza quando l'hai recuperata.

purtroppo non riuscivo con la normale procedura a ricevere la passw

Ho chiesto all'amministratore del forum che ha associato il mio nick ad un nuovo indirizzo mail

ora sono operativo. Chiedo scusa per la violazione

Torno a chiedere aiuto...


Grazie

ciriccio 15-04-2014 16:17

Considerando questo forse dovresti usare l'NDSolve di Mathematica invece di Matlab se puoi (magari prendendo spunto dai grafici che vedi li' per le condizioni iniziali).
Se comincia a darti errori strani, ti riscrive True o False quando metti le condizioni iniziali,ti dice che in quel posto ci sarebbero dovute essere altre equazioni etc, chiudi e riapri il programma (a volte basta dimenticarsi di mettere il doppio = e mettendone uno solo, rimangono in memoria i valori incasinando tutto il resto da quel momento in poi... un'altra soluzione è un comando di kill che però non ricordo).
Di norma devi procedere con un s = NDSolve...
e subito dopo plotti (trovi gli esempi nell'aiuto già fatti)
p.s. non sono un esperto, in caso aspetta altri : )

Lampo89 15-04-2014 16:55

Quote:

Originariamente inviato da ciriccio (Messaggio 40988896)
Considerando questo forse dovresti usare l'NDSolve di Mathematica invece di Matlab se puoi (magari prendendo spunto dai grafici che vedi li' per le condizioni iniziali).
Se comincia a darti errori strani, ti riscrive True o False quando metti le condizioni iniziali,ti dice che in quel posto ci sarebbero dovute essere altre equazioni etc, chiudi e riapri il programma (a volte basta dimenticarsi di mettere il doppio = e mettendone uno solo, rimangono in memoria i valori incasinando tutto il resto da quel momento in poi... un'altra soluzione è un comando di kill che però non ricordo).
Di norma devi procedere con un s = NDSolve...
e subito dopo plotti (trovi gli esempi nell'aiuto già fatti)
p.s. non sono un esperto, in caso aspetta altri : )

Soluzione analitiche mathematica non ne dà, l'unica è trovare una soluzione numerica con NDSolve + condizioni iniziali; ma è una tipica eq diff (da analisi II per intenderci) oppure viene fuori da qualcosa di più complesso?

dario fgx 15-04-2014 19:55

Quote:

Originariamente inviato da ciriccio (Messaggio 40988896)
Considerando questo forse dovresti usare l'NDSolve di Mathematica invece di Matlab se puoi (magari prendendo spunto dai grafici che vedi li' per le condizioni iniziali).
Se comincia a darti errori strani, ti riscrive True o False quando metti le condizioni iniziali,ti dice che in quel posto ci sarebbero dovute essere altre equazioni etc, chiudi e riapri il programma (a volte basta dimenticarsi di mettere il doppio = e mettendone uno solo, rimangono in memoria i valori incasinando tutto il resto da quel momento in poi... un'altra soluzione è un comando di kill che però non ricordo).
Di norma devi procedere con un s = NDSolve...
e subito dopo plotti (trovi gli esempi nell'aiuto già fatti)
p.s. non sono un esperto, in caso aspetta altri : )


Ti ringrazio, si mi aspetto una soluzione oscillante smorzata, quindi quel tool mi pare vada bene.

dario fgx 15-04-2014 19:58

Quote:

Originariamente inviato da Lampo89 (Messaggio 40989089)
Soluzione analitiche mathematica non ne dà, l'unica è trovare una soluzione numerica con NDSolve + condizioni iniziali; ma è una tipica eq diff (da analisi II per intenderci) oppure viene fuori da qualcosa di più complesso?

a me serve solo plottarla, che significa non da soluzione analitiche?

E' la soluzione ad un problema di idraulica.

per farvi capire quel che mi serve allego un pdf. alla prima pagina di questo pdf si analizza il caso 1. A pagina tre di questo pdf lui fornisce una soluzione semplificata (in assenza di attriti viscosi).

A me serve la soluzione con attriti viscosi, quindi risolvere l'equazione completa.

le condizioni al contorno sono:

y(0) = y0

y'(0) = 0

Grazie


edit: non mi allega il file perchè è grosso

Lampo89 15-04-2014 21:41

Quote:

Originariamente inviato da dario fgx (Messaggio 40989876)
a me serve solo plottarla, che significa non da soluzione analitiche?

E' la soluzione ad un problema di idraulica.

per farvi capire quel che mi serve allego un pdf. alla prima pagina di questo pdf si analizza il caso 1. A pagina tre di questo pdf lui fornisce una soluzione semplificata (in assenza di attriti viscosi).

A me serve la soluzione con attriti viscosi, quindi risolvere l'equazione completa.

le condizioni al contorno sono:

y(0) = y0

y'(0) = 0

Grazie

mathematica riesce a risolvere in modo esatto alcune equazioni differenziali; con esatto intendo che non usa metodi di approssimazione per valutare le soluzioni, ma attinge semplicemente da database, insomma il lavoro sporco te lo ha fatto per te qualcun altro. Quindi gli butti dentro una equazione differenziale e ti spara fuori la sua soluzione in forma analitica
(es gli dai l'equazione dell'oscillatore armonico omogeneo, magari senza dare le condizioni iniziali e lui ti da la soluzione generale A Cos(t) + B Sin(t) ). Soluzione esatta -> no problemi di approssimazione numerica

se l'equ diff è infame è obbligato l'uso di un metodo numerico, che comporta sempre approssimazioni numeriche (che possono essere buone o no, ma è un altro discorso questo..) ma soprattutto ti butta fuori la soluzione valutata in una griglia di punti (da cui tramite interpolazione si può ottenere una valutazione in punti che non appartengono alla griglia...). Per quello che ti serve a te basta anche una soluzione di questo tipo. In ogni caso, per avere la soluzione numerica è obbligatorio specificare le condizioni iniziali, quindi quello che tu chiami y0 lo dovresti particolarizzare con un certo valore per ottenere qualcosa.

dario fgx 16-04-2014 20:54

Quote:

Originariamente inviato da Lampo89 (Messaggio 40990253)
mathematica riesce a risolvere in modo esatto alcune equazioni differenziali; con esatto intendo che non usa metodi di approssimazione per valutare le soluzioni, ma attinge semplicemente da database, insomma il lavoro sporco te lo ha fatto per te qualcun altro. Quindi gli butti dentro una equazione differenziale e ti spara fuori la sua soluzione in forma analitica
(es gli dai l'equazione dell'oscillatore armonico omogeneo, magari senza dare le condizioni iniziali e lui ti da la soluzione generale A Cos(t) + B Sin(t) ). Soluzione esatta -> no problemi di approssimazione numerica

se l'equ diff è infame è obbligato l'uso di un metodo numerico, che comporta sempre approssimazioni numeriche (che possono essere buone o no, ma è un altro discorso questo..) ma soprattutto ti butta fuori la soluzione valutata in una griglia di punti (da cui tramite interpolazione si può ottenere una valutazione in punti che non appartengono alla griglia...). Per quello che ti serve a te basta anche una soluzione di questo tipo. In ogni caso, per avere la soluzione numerica è obbligatorio specificare le condizioni iniziali, quindi quello che tu chiami y0 lo dovresti particolarizzare con un certo valore per ottenere qualcosa.

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?

Lampo89 16-04-2014 21:58

Quote:

Originariamente inviato da dario fgx (Messaggio 40994087)
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)

kikino 17-04-2014 10:48

Quote:

Originariamente inviato da dario fgx (Messaggio 40994087)
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

MetalDetector 17-04-2014 11:54

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 :D).
Chi mi aiuta a capire? :) Grazie infinite!!


ciriccio 17-04-2014 13:21

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.

dario fgx 17-04-2014 14:15

Quote:

Originariamente inviato da Lampo89 (Messaggio 40994309)
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.

dario fgx 17-04-2014 14:17

Quote:

Originariamente inviato da kikino (Messaggio 40995398)
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..

Lampo89 17-04-2014 14:29

1 Allegato(i)
Quote:

Originariamente inviato da dario fgx (Messaggio 40996437)
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}]

ciriccio 17-04-2014 14:32

Quote:

Originariamente inviato da dario fgx (Messaggio 40996437)
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 : )

dario fgx 17-04-2014 15:08

Quote:

Originariamente inviato da Lampo89 (Messaggio 40996509)
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!

dario fgx 17-04-2014 15:09

Quote:

Originariamente inviato da ciriccio (Messaggio 40996516)
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

Lampo89 17-04-2014 16:12

Quote:

Originariamente inviato da dario fgx (Messaggio 40996682)
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}]

dario fgx 17-04-2014 16:54

Quote:

Originariamente inviato da Lampo89 (Messaggio 40996943)
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

MetalDetector 17-04-2014 18:06

Quote:

Originariamente inviato da ciriccio (Messaggio 40996181)
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!!! :sofico:

Lampo89 17-04-2014 19:04

Quote:

Originariamente inviato da dario fgx (Messaggio 40997120)
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.

dario fgx 17-04-2014 19:31

Quote:

Originariamente inviato da Lampo89 (Messaggio 40997551)
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

Lampo89 17-04-2014 19:33

Quote:

Originariamente inviato da Lampo89 (Messaggio 40997551)
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...

ciriccio 17-04-2014 19:49

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?

Lampo89 17-04-2014 20:05

Quote:

Originariamente inviato da Lampo89 (Messaggio 40997675)
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}]

dario fgx 17-04-2014 21:11

Quote:

Originariamente inviato da Lampo89 (Messaggio 40997806)
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

Lampo89 17-04-2014 22:52

Quote:

Originariamente inviato da dario fgx (Messaggio 40998052)
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


Tutti gli orari sono GMT +1. Ora sono le: 21:30.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Hardware Upgrade S.r.l.