MATLAB (prescurtare de la limba engleză „Matrix Laboratory” , în rusă pronunțat ca Matlab ) este un pachet de programe aplicate pentru rezolvarea problemelor de calcule tehnice. Pachetul este folosit de peste un milion de ingineri și oameni de știință, rulează pe majoritatea sistemelor de operare moderne , inclusiv Linux , macOS , Solaris (începând cu versiunea R2010b, suportul pentru Solaris a fost întrerupt [8] [9] ) și Windows [10] .
MATLAB ca limbaj de programare a fost dezvoltat de Cleve Moler la sfârșitul anilor 1970 , când era decan al departamentului de informatică de la Universitatea din New Mexico . Scopul dezvoltării a fost de a oferi studenților facultății posibilitatea de a utiliza bibliotecile de programe Linpack și EISPACK fără a fi nevoie să învețe Fortran . Noua limbă s-a răspândit curând în alte universități și a fost primită cu mare interes de oamenii de știință care lucrau în domeniul matematicii aplicate. O versiune din 1982 scrisă în Fortran distribuită ca sursă deschisă poate fi găsită și astăzi pe Internet . Inginerul John Little ( ing. John N. (Jack) Little ) a fost introdus în limbă în timpul vizitei lui Clive Moler la Universitatea Stanford în 1983. Dându-și seama că noua limbă are un mare potențial comercial, a făcut echipă cu Clive Moler și Steve Bangert [ 11 ] . Împreună au rescris MATLAB în C [12] și au fondat The MathWorks în 1984 pentru dezvoltare ulterioară . Aceste biblioteci C rescrise au fost cunoscute de multă vreme sub numele JACKPAC. MATLAB a fost inițial destinat proiectării sistemelor de control (specialitatea principală a lui John Little), dar a câștigat rapid popularitate în multe alte domenii științifice și inginerie. De asemenea, a fost utilizat pe scară largă în educație, în special pentru predarea algebrei liniare și a metodelor numerice .
Limbajul MATLAB este un limbaj de programare interpretat la nivel înalt care include structuri de date bazate pe matrice , o gamă largă de funcții, un mediu de dezvoltare integrat, caracteristici orientate pe obiecte și interfețe pentru programe scrise în alte limbaje de programare.
Programele scrise în MATLAB sunt de două tipuri - funcții și scripturi. Funcțiile au argumente de intrare și de ieșire, precum și propriul spațiu de lucru pentru stocarea rezultatelor intermediare ale calculelor și variabilelor. Scripturile au un spațiu de lucru comun. Atât scripturile, cât și funcțiile sunt salvate ca fișiere text și compilate dinamic în codul mașinii . Există, de asemenea, capacitatea de a salva așa-numitele programe pre-analizate - funcții și scripturi procesate într-o formă convenabilă pentru execuția mașinii. În general, astfel de programe rulează mai repede decât cele obișnuite, mai ales dacă funcția conține instrucțiuni de trasare.
Principala caracteristică a limbajului MATLAB este posibilitățile sale largi de lucru cu matrice, pe care creatorii limbajului le-au exprimat în sloganul „think vectorized” ( ing. Think vectorized ).
Un exemplu de cod care face parte din funcția magic.m care generează un pătrat magic M pentru valori impare de dimensiunea laturii n :
[ J , I ] = grilă de plasă ( 1 : n ); A = mod ( I + J - ( n + 3 ) / 2 , n ); B = mod ( I + 2 * J - 2 , n ); M = n * A + B + 1 ;Un exemplu de cod care încarcă o matrice unidimensională A cu valorile matricei B în ordine inversă (doar dacă vectorul A este definit și numărul elementelor sale este același cu numărul de elemente ale vectorului B ) :
A ( 1 : capăt ) = B ( capăt : - 1 : 1 );Programul MATLAB poate crea grafice 3D folosind funcțiile surf, plot3 sau mesh.
[ X , Y ] = grilă de plasă ( -8 : .5 : 8 ) ;
R = sqrt ( X .^ 2 + Y .^ 2 );
Z = sin ( R ) ./ R ;
Z ( R == 0 ) = 1 ;
plasă ( X , Y , Z );
Acest cod va crea o diagramă wireframe 3D a funcției sinc . |
Împărțirea ferestrei grafice se realizează prin comanda subplot (număr de rânduri, număr de coloane, element curent) (să ne imaginăm că creăm o matrice, așa cum ar fi). Construirea unei regresii polinomiale pentru datele tabulare este posibilă prin comanda Instrumente > Potrivire de bază a ferestrei de ieșire grafică. [13]
Calcularea ariei delimitate de două linii este posibilă folosind comanda quad (aria unei integrale definite, vezi codul de mai jos ). Argumentele la quad sunt punctele de intersecție ale liniilor (găsite cu comanda fzero (primul argument este diferența dintre funcții, al doilea argument este un segment sau un punct în care diferența dintre funcții este egală cu zero).
șterge totul clc inchide totul f =@( x ) 0,5 * x .^ 2 + sin ( 5 * x ) - 5 * x + 1 g =@( x ) sqrt ( x .^ 2 + 5,5 ) X = -2 : 0,01 : 14 ; _ subplot ( 2 , 1 , 1 ) grafic ( X , f ( X ), 'm' , 'LineWidth' , 2 ) stai bine grafic ( X , g ( X ), 'g' , 'LineWidth' , 2 ) grilă xlabel ( 'x' ) ylabel ( 'f,g' ) legenda ( 'f' , 'g' , 'Locaţie' , 'cel mai bun' ) F =@( x ) g ( x ) - f ( x ) subplot ( 2 , 1 , 2 ) grafic ( X , F ( X ), 'b' , 'LineWidth' , 2 ) stai bine grafic ([ - 2 14 ],[ 0 0 ], 'k' , 'LineWidth' , 2 ) grilă xlabel ( 'x' ) ylabel ( 'f,g' ) x1 = fzero ( F , 0 ) x2 = fzero ( F ,[ 10 , 14 ]) S = quad ( F , x1 , x2 )În cazul formulelor lungi, când expresia nu se încadrează într-o linie din program, funcția de transfer din fereastra de comandă este asigurată de trei puncte „...”. Punctele devin albastre, cursorul de pe linia următoare clipește, dar nu există un semn de inegalitate dublu >> (semnul de început al liniei de comandă). De exemplu,
t = sqrt ( abs ( sin ( 1,3 * pi ) / cos ( 4,6 ) * tan ( 0,7 * pi ) / acot ( 0,3 * pi )) - ... ( exp ( - 0,2 ) * log ( 3,8 ) ^ 1,2 ) ^ ( 1 / 3 )este echivalent cu
t = sqrt ( abs ( sin ( 1.3 * pi ) / cos ( 4.6 ) * tan ( 0.7 * pi ) / acot ( 0.3 ))) - ( exp ( - 0.2 ) * log ( 3.8 ) ^ 1.2 ) ^ ( 1 / 3 )Funcția plot() vă permite să schimbați culoarea și tipul liniei afișate, inclusiv scala logaritmică [14] . Pentru aceasta se folosesc parametri suplimentari, care se scriu astfel: plot(<x>, <y>, <'line color, line type, point marker'>); [15] De exemplu,
plot ( X , Y , ' r--' , 'LineWidth' , 2 , 'Marker' , 'o' , 'MarkerFaceColor' , 'k' )va reprezenta roșu (r), liniuță punctată (--), cu o lățime de linie de 2 („LineWidth”, 2), cu un marcator cerc („Marker”, „o”) umplut cu negru („MarkerFaceColor”, 'k').
grilă xlabel ( 'x' ) ylabel ( 'y' ) titlu ( "Lomanaya lninya" )grid creează grila, xlabel('x') și ylabel('y') etichetează axele, title('Lomanaya lninya') dă titlul plotului.
În paranteze pătrate, enumerăm elementele vectorului separate printr-un spațiu (puteți separa prin virgulă) și elementele vor fi așezate într-o linie . De exemplu,
X = [ 2 3 4 3 5 1 ]Dacă trebuie să așezați elementele într-o coloană, atunci elementele trebuie separate prin punct și virgulă „;” (în principiu, puteți aplica oricând procedura de transpunere).
Foarte des trebuie să specificați un vector ale cărui elemente diferă cu aceeași cantitate - pas . Acest lucru este valabil mai ales atunci când construim grafice de funcții (împarțim zona de reprezentare a acestei funcții cu puncte cu un anumit pas ). Pentru această sarcină, este folosit caracterul index două puncte „:”. De exemplu, de la 0 la 10 pentru pasul 2:
Y = [ 0 : 2 : 10 ](dacă pasul este 1, atunci nu îl scriem, MATLAB va seta unitatea în mod implicit). Un vector poate fi un argument de funcție, de exemplu
F = sin ( Y )Există lucruri care nu sunt descrise printr-o operație specifică în matematică. De exemplu , lucrați element cu element cu elemente de matrice . În matematică, putem lucra element cu element cu elementele unui tablou, dar nu există o notație specifică pentru aceasta. Matlbe o are. Dacă trebuie să aplicați o acțiune fiecărui element al matricei, atunci trebuie să puneți un punct „.”. De exemplu, există un vector F
F = [ 0 3 4 3 5 1 ]îl putem împărți cu ușurință în două:
f / 2În continuare, obținem (fiecare element al vectorului va fi împărțit la 2):
0 1,5000 2,0000 1,5000 2,5000 0,5000Totuși, dacă scrii
2 / FMatlab va arunca o eroare:
Eroare de utilizare / Dimensiunile matricei trebuie să fie de acord.De îndată ce apare în cap gândul că acțiunea trebuie aplicată fiecărui element al vectorului din Matlabe, acest lucru trebuie indicat prin punerea unui punct înaintea acțiunii:
2./F _ _. În continuare obținem:
Inf 0,6667 0,5000 0,6667 0,4000 2,0000.
Inf înseamnă că a fost efectuată o împărțire la zero.
Dacă există două grafice de funcție și trebuie să determinați intersecția lor, atunci calculați aria care este limitată ca urmare a intersecției. În Matlabe, o funcție definită de utilizator poate fi creată prin adăugarea semnului „@” (scriem între paranteze de ce depinde această funcție):
f =@( x ) 0,5 * x ^ 2 + sin ( 5 * x ) - 5 * x + 1care corespunde funcţiei . Perioada este doar în fața gradului ( .^ ), aceasta indică faptul că funcția va fi un vector. Punctele nu sunt puse înaintea sumei, diferenței, deoarece vectorii pot fi adunați și scăzuți conform regulilor obișnuite.
MATLAB va scoate:
f = function_handle cu valoare : @( x ) 0,5 * x .^ 2 + sin ( 5 * x ) - 5 * x + 1function_handle spune că funcția este realizată manual, user .
Un exemplu de cod pentru afișarea intervalului de reprezentare de la -2 la 12 cu un pas de 0,01 ( puteți introduce atât 0,01, cât și .01 ):
X = - 2 : 0,01 : 12 ;Un punct și virgulă „;” la sfârșitul comenzii înseamnă că rezultatul nu va fi afișat. Pentru a afișa funcțiile împreună într-o singură fereastră, puteți utiliza comanda hold on :
grafic ( X , f ( X )) stai bine grafic ( X , g ( X )) grilă legenda ( 'f' , 'g' , 'Locaţie' , 'cel mai bun' )legend('f','g','Location','best') înseamnă că etichetele funcţiilor de pe diagrama comună vor fi amplasate în cel mai liber loc.
MATLAB oferă utilizatorului un număr mare (câteva sute) de funcții pentru analiza datelor, acoperind aproape toate domeniile matematicii , în special:
MATLAB oferă un mijloc convenabil pentru dezvoltarea algoritmilor, inclusiv a celor de nivel înalt, folosind concepte de programare orientată pe obiecte . Are toate instrumentele necesare unui mediu de dezvoltare integrat , inclusiv un depanator și un profiler . Funcțiile pentru lucrul cu tipuri de date întregi facilitează crearea de algoritmi pentru microcontrolere și alte aplicații acolo unde este necesar.
Pachetul MATLAB are un număr mare de funcții pentru plotare, inclusiv analiza tridimensională a datelor vizuale și crearea de videoclipuri animate .
Mediul de dezvoltare încorporat vă permite să creați interfețe grafice de utilizator cu diferite comenzi, cum ar fi butoane, câmpuri de introducere și altele.
Programele MATLAB, atât pe consolă, cât și cu o interfață grafică de utilizator, pot fi compilate folosind modulul MATLAB Compiler în aplicații executabile independente de MATLAB sau biblioteci dinamice, care, totuși, necesită instalarea mediului MATLAB Runtime care poate fi redistribuit liber pentru a rula pe alte calculatoare [17] (denumite anterior MATLAB Compiler Runtime MCR) [18] .
Pachetul MATLAB include diverse interfețe pentru accesarea rutinelor externe scrise în alte limbaje de programare, date, clienți și servere care comunică prin tehnologiile Component Object Model sau Dynamic Data Exchange și periferice care comunică direct cu MATLAB. Multe dintre aceste caracteristici sunt cunoscute ca MATLAB API.
COMPachetul MATLAB oferă acces la funcții care vă permit să creați, să manipulați și să ștergeți obiecte COM (atât clienți, cât și servere). Tehnologia ActiveX este de asemenea acceptată . Toate obiectele COM aparțin unei clase speciale MATLAB COM. Toate programele care au funcțiile unui controler de automatizare pot accesa MATLAB ca server de automatizare .
.NETPachetul MATLAB de pe Microsoft Windows oferă acces la platforma de programare .NET Framework. Este posibil să încărcați ansambluri .NET (Assemblies) și să lucrați cu obiecte din clasele .NET din mediul MATLAB. MATLAB 7.11 (R2010b) acceptă versiunile .NET Framework 2.0, 3.0, 3.5 și 4.0.
DDEPachetul MATLAB conține funcții care îi permit să acceseze alte aplicații din mediul Windows , precum și aceste aplicații pentru a accesa datele MATLAB, folosind tehnologia Dynamic Data Exchange (DDE). Fiecare aplicație care poate fi un server DDE are propriul nume de identificare unic. Pentru MATLAB, acest nume este Matlab .
Servicii webÎn MATLAB, este posibil să utilizați servicii web. Funcția specială creează o clasă care conține metodele API a serviciului web , care vă permite să accesați serviciul web prin apeluri la metoda clasei.
MATLAB interacționează cu clientul serviciului web primind date de la acesta, procesându-le și trimițând rezultatul. Sunt acceptate următoarele tehnologii: Protocolul de acces simplu la obiect (SOAP) și Limbajul de descriere a serviciilor web (WSDL).
Port serialInterfața cu portul serial MATLAB oferă acces direct la periferice precum modemuri , imprimante și echipamente științifice care se conectează la computer printr-un port serial (COM). Interfața funcționează prin crearea unui obiect dintr -o clasă specială pentru portul serial. Metodele disponibile din această clasă vă permit să citiți și să scrieți date pe portul serial, să utilizați evenimente și handlere de evenimente și să scrieți informații pe discul computerului în timp real . Acest lucru poate fi necesar atunci când se efectuează experimente, simulează sisteme în timp real și pentru alte aplicații.
Fișiere MEXPachetul MATLAB include o interfață pentru interacțiunea cu aplicații externe scrise în C și Fortran . Această interacțiune se realizează prin fișiere MEX. Este posibil să apelați subrutine scrise în C sau Fortran din MATLAB ca și cum ar fi funcții încorporate ale pachetului. Fișierele MEX sunt biblioteci de legături dinamice care pot fi încărcate și executate de interpretul încorporat în MATLAB. Procedurile MEX au, de asemenea, capacitatea de a apela comenzi MATLAB încorporate.
DLLInterfața DLL partajată MATLAB vă permite să apelați funcții găsite în bibliotecile obișnuite de link-uri dinamice direct din MATLAB. Aceste funcții trebuie să aibă o interfață C.
În plus, MATLAB are capacitatea de a-și accesa funcțiile încorporate prin interfața C, care vă permite să utilizați funcțiile pachetului în aplicații externe scrise în C. Această tehnologie se numește C Engine în MATLAB .
Pentru MATLAB, este posibil să se creeze cutii de instrumente speciale ( caseta de instrumente în engleză ) care să-și extindă funcționalitatea. Cutiile de instrumente sunt colecții de funcții și obiecte scrise în limbajul MATLAB pentru a rezolva o anumită clasă de probleme. Mathworks oferă seturi de instrumente care sunt utilizate în multe domenii, inclusiv următoarele:
Pe lângă cele de mai sus, există mii de alte seturi de instrumente MATLAB scrise de alte companii și entuziaști.
Există un număr mare de pachete software pentru rezolvarea problemelor de analiză numerică. Multe dintre aceste pachete sunt software liber .
![]() | ||||
---|---|---|---|---|
|
Software de matematică | |
---|---|
Calcule simbolice | |
Calcule numerice |