|
|||||||
|
|
|
![]() |
|
|
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: 16212
|
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 15:51. |
|
|
|
|
|
#5 | |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16212
|
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: 16212
|
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: 19:42.



















