|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Risolvere un Sistema Lineare con Matlab.. perchè non mi da? :(
Ciao
non penso sia proprio la sezione adatta x chiedere su Matlab.. ma visto che qui passa la gente che a che fare con matematica e roba simile.. di sicuro qualcuno sapà rispondermi! ho seguito le istruzioni del seguente link: http://freeweb.supereva.com/programm...b/index.html?p dato che non apre direttamente la pagina in cui spiega come risolvere un sistema con matlab incollo le istruzioni di seguito: Codice:
In questa lezione impareremo a risolvere un sistema di equazioni lineari con matlab. Supponiamo di integrare un sistema di N×N equazione e cioè un sistema di N equazione in N incognite, ed indichiamo con A la matrice dei coefficienti delle incognite e con B in vettore contenente i termini noti; ad esempio se il sistema è il seguente: 2x+3y=11 x +5y=16 allora sarà: A=[2 3;1 5]; B=[11 16]; Il sistema precedente in notazione matriciale viene indicato come: A * X = B dove X rappresenta il vettore soluzione. La soluzione del sistema precedente è data da: X = inv(A)*B; L'm-file che effettua tale operazione è riportato di seguito: %----------------------------------------------------------- %Soluzione di un sistema lineare a Cura di Giuseppe Ciaburro %----------------------------------------------------------- %Sia A la matrice dei coefficienti delle incognite e %B il vettore termine noti %Bisogna prima immettere nel promt di matlab A e B %Valutiamo l'inversa di A C=inv(A); %Determiniamo la trasposta C=C'; %Calcoliamo il vettore soluzione X=B*C; disp('Il vettore delle soluzioni è') X Come si vede è necessario effettuare la trasposta della matrice inversa perchè matlab esegue solo il prodotto di un vettore per una matrice e non il prodotto di una matrice per un vettore . Effettuiamo allora tali calcoli con matlab: C=inv(A) C = 0.7143 -0.4286 -0.1429 0.2857 effettuiamone la trasposta: C=C' C = 0.7143 -0.1429 -0.4286 0.2857 Calcoliamo infine il vettore soluzione: X=B*C X = 1.0000 3.0000 ![]() in effetti come gli escono quei numeri (0.7143 -0.4286 -0.1429 0.2857) dopo aver calcolato l'inversa???? l'inversa di una matrice non è la stessa matrice ruotata? La pagina è tutta sbagliata o sono io che sbaglio tutto? Come risolvo un sistema di N incognita in N equazioni con Matlab?
__________________
![]() |
![]() |
![]() |
![]() |
#2 | |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Quote:
Codice:
>> A=[1 3; 2 5] A = 1 3 2 5 >> C=inv(A) C = -5 3 2 -1 >>
__________________
![]() |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Dimenticate tutto.. ho capito!
![]() comunque il metodo per risolvere un sistema di equazioni con matlab è giusto no? -matrice dei coefficenti -la sua inversa -la sua trasporta incognite=vettore termini noti*la matrice ottenuta prima
__________________
![]() Ultima modifica di luxorl : 23-11-2005 alle 14:51. |
![]() |
![]() |
![]() |
#5 | |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
In questo ordine: ricorda che la moltiplicazione tra matrici non è commutativa. P.S.: se ho capìto bene, stai usando Matlab come supporto informatico in un corso di Algebra Lineare. Forse sarebbe il caso che tu studiassi un po' meglio l'algebra lineare, prima di cominciare a usare Matlab: non puoi pretendere che il tuo schiavo faccia il tuo lavoro, se non sei in grado di spiegargli come farlo.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Quote:
matlab non fa la motliplicazione matrice vettore.. ma solo vettore matrice.. allora per questo moltiplico il vettore per la matrice trasposta! ![]() e poi mi serve per elettrotecnica non per algebra lineare :P
__________________
![]() |
|
![]() |
![]() |
![]() |
#7 | ||
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Ho capìto. Quote:
Quindi sì, è giusto come fai.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
||
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Spulciando l'help di Matlab ho trovato la funzione "linsolve"
che risolve un sistema lineare A*X=B ![]() E comunque quello che c'è scritto nella guida incollata sopra: Codice:
Come si vede è necessario effettuare la trasposta della matrice inversa perchè matlab esegue solo il prodotto di un vettore per una matrice e non il prodotto di una matrice per un vettore . B=[1;2] il punto e virgola manda a capo l'altro numero ottenendo questo risultato: Codice:
>> B=[11;16] B = 11 16 Codice:
>> B=[11 16] B = 11 16 oppure scrivendo X=linsolve(A,B) dove A è la matrice dei coefficienti e B e il vettore dei termini noti... e otterete i risultati in un nuovo vettore X ![]() spero di essere stato chiaro.. ciaoooo
__________________
![]() |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jun 2000
Città: S.Giuliano (MI)
Messaggi: 1047
|
il modo più rapido e informaticamente corretto con matlab è:
Codice:
A=[2 3;1 5] A = 2 3 1 5 >> b=[11 16]' b = 11 16 >> A\b ans = 1 3 P * Q il numero di colonne di P è uguale al numero di righe di Q
__________________
“No te tomes tan en serio la vida, al fin y al cabo no saldrás vivo de ella” |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:00.