MATLAB (forkortelse for engelsk "Matrix Laboratory" , på russisk udtales som Matlab ) er en pakke af anvendte programmer til løsning af problemer med tekniske beregninger. Pakken bruges af mere end en million ingeniører og forskere, den kører på de fleste moderne operativsystemer , inklusive Linux , macOS , Solaris (startende med version R2010b understøttelse af Solaris er blevet afbrudt [8] [9] ) og Windows [10] .
MATLAB som programmeringssprog blev udviklet af Cleve Moler i slutningen af 1970'erne , da han var dekan for datalogiafdelingen ved University of New Mexico . Formålet med udviklingen var at give fakultetets studerende mulighed for at bruge programbibliotekerne Linpack og EISPACK uden at skulle lære Fortran . Det nye sprog spredte sig hurtigt til andre universiteter og blev modtaget med stor interesse af videnskabsmænd, der arbejder inden for anvendt matematik. En version fra 1982 skrevet i Fortran distribueret som open source kan stadig findes på internettet i dag . Ingeniøren John Little ( Eng. John N. (Jack) Little ) blev introduceret til sproget under Clive Molers besøg på Stanford University i 1983. Da han indså, at det nye sprog havde et stort kommercielt potentiale, slog han sig sammen med Clive Moler og Steve Bangert [ 11 ] . Sammen omskrev de MATLAB i C [12] og grundlagde The MathWorks i 1984 til videreudvikling . Disse omskrevne C-biblioteker var længe kendt under navnet JACKPAC. MATLAB var oprindeligt beregnet til design af styresystemer (John Littles hovedspeciale), men vandt hurtigt popularitet inden for mange andre videnskabelige og tekniske områder. Det har også været meget brugt i undervisningen, især til undervisning i lineær algebra og numeriske metoder .
MATLAB-sproget er et fortolket programmeringssprog på højt niveau , der inkluderer matrix- baserede datastrukturer, en lang række funktioner, et integreret udviklingsmiljø, objektorienterede funktioner og grænseflader til programmer skrevet på andre programmeringssprog.
Programmer skrevet i MATLAB er af to typer - funktioner og scripts. Funktioner har input- og output-argumenter samt deres eget arbejdsområde til lagring af mellemresultater af beregninger og variabler. Scripts deler et fælles arbejdsområde. Både scripts og funktioner gemmes som tekstfiler og kompileres dynamisk til maskinkode . Der er også mulighed for at gemme såkaldte pre-parsed programmer - funktioner og scripts behandlet til en form, der er praktisk til maskinudførelse. Generelt kører sådanne programmer hurtigere end sædvanlige, især hvis funktionen indeholder plotte instruktioner.
MATLAB-sprogets hovedtræk er dets brede muligheder for at arbejde med matricer, som sprogets skabere udtrykte i sloganet "tænk vektoriseret" ( eng. Tænk vektoriseret ).
En eksempelkode, der er en del af funktionen magic.m , der genererer et magisk kvadrat M for ulige værdier af sidestørrelsen n :
[ J , I ] = meshgrid ( 1 : n ); A = mod ( I + J- ( n + 3 ) / 2 , n ) ; B = mod ( I + 2 * J - 2 , n ); M = n * A + B + 1 ;Et eksempel på kode, der indlæser et endimensionelt array A med værdierne af array B i omvendt rækkefølge (kun hvis vektoren A er defineret, og antallet af dens elementer er det samme som antallet af elementer i vektoren B ) :
A ( 1 : ende ) = B ( ende : -1 : 1 ) ;MATLAB-programmet kan skabe 3D-grafik ved hjælp af surf-, plot3- eller mesh-funktionerne.
[ X , Y ] = meshgrid ( -8 : 0,5 : 8 ) ;
R = sqrt ( X. ^ 2 + Y. ^ 2 );
Z = sin ( R ) ./R ; _
Z ( R == 0 ) = 1 ;
mesh ( X , Y , Z );
Denne kode vil skabe et 3D wireframe plot af sinc funktionen . |
Opdelingen af grafikvinduet udføres af subplot-kommandoen (antal rækker, antal kolonner, aktuelt element) (lad os forestille os, at vi så at sige opretter en matrix). Opbygning af en polynomiel regression for tabeldata er mulig gennem kommandoen Værktøjer > Grundlæggende tilpasning af det grafiske outputvindue. [13]
Beregning af arealet afgrænset af to linjer er muligt ved hjælp af quad -kommandoen (areal af et bestemt integral, se kode nedenfor ). Argumenterne til quad er linjernes skæringspunkter (findes med kommandoen fzero (det første argument er forskellen mellem funktioner, det andet argument er et segment eller et punkt, hvor forskellen mellem funktioner er lig nul).
ryd alt clc lukke alle f =@( x ) 0,5 * x .^ 2 + sin ( 5 * x ) - 5 * x + 1 g =@( x ) sqrt ( x .^ 2 + 5,5 ) X = -2 : 0,01 : 14 ; _ underplot ( 2 , 1 , 1 ) plot ( X , f ( X ), 'm' , 'LineWidth' , 2 ) hold fast plot ( X , g ( X ), 'g' , 'LineWidth' , 2 ) gitter xlabel ( 'x' ) ylabel ( 'f,g' ) forklaring ( 'f' , 'g' , 'Placering' , 'bedst' ) F =@( x ) g ( x ) - f ( x ) underplot ( 2 , 1 , 2 ) plot ( X , F ( X ), 'b' , 'LineWidth' , 2 ) hold fast plot ([ - 2 14 ], [ 0 0 ], 'k' , 'LineWidth' , 2 ) gitter xlabel ( 'x' ) ylabel ( 'f,g' ) x1 = fnul ( F , 0 ) x2 = fnul ( F ,[ 10 , 14 ]) S = quad ( F , x1 , x2 )I tilfælde af lange formler, når udtrykket ikke passer ind i en linje i programmet, leveres overførselsfunktionen i kommandovinduet af tre prikker "...". Prikkerne bliver blå, markøren på næste linje blinker, men der er ikke noget dobbelt ulighedstegn >> (kommandolinjestarttegn). For eksempel,
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 )er ensbetydende med
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 )Funktionen plot() giver dig mulighed for at ændre farven og typen af den viste linje, inklusive den logaritmiske skala [14] . Til dette bruges yderligere parametre, som skrives som følger: plot(<x>, <y>, <'linjefarve, linjetype, punktmarkør'>); [15] F.eks.
plot ( X , Y , 'r--' , 'LineWidth' , 2 , 'Marker' , 'o' , 'MarkerFaceColor' , 'k' )vil plotte rød (r), stiplet stiplet (--), med en linjebredde på 2 ('LineWidth',2), med en cirkelmarkør ('Marker','o') fyldt med sort ('MarkerFaceColor', 'k').
gitter xlabel ( 'x' ) ylabel ( 'y' ) titel ( 'Lomanaya lninya' )gitter skaber gitteret, xlabel('x') og ylabel('y') mærker akserne, title('Lomanaya lninya') giver titlen til plottet.
I firkantede parenteser angiver vi vektorens elementer adskilt af et mellemrum (du kan adskille det med et komma), og elementerne vil blive lagt ud i en linje . For eksempel,
X = [ 2 3 4 3 5 1 ]Hvis du skal placere elementerne i en kolonne, skal elementerne adskilles med et semikolon ";" (i princippet kan du altid anvende gennemførelsesproceduren).
Meget ofte skal du angive en vektor, hvis elementer afviger med samme mængde- trin . Dette gælder især, når vi bygger grafer af funktioner (vi deler plotteområdet for denne funktion med prikker med et eller andet trin ). Til denne opgave bruges indekstegn kolon ":". For eksempel 0 til 10 for trin 2:
Y = [ 0 : 2 : 10 ](hvis trinnet er 1, så skriver vi det ikke, MATLAB indstiller enheden som standard). En vektor kan for eksempel være et funktionsargument
F = synd ( Y )Der er ting, der ikke er beskrevet af en bestemt operation i matematik. Arbejd f.eks . element for element med array-elementer . I matematik kan vi arbejde element for element med elementerne i en matrix, men der er ingen specifik notation for dette. Matlbe har det. Hvis du skal anvende en handling på hvert element i arrayet, skal du sætte et punktum ".". For eksempel er der en vektor F
F = [ 0 3 4 3 5 1 ]vi kan nemt dele det op i to:
f / 2Dernæst får vi (hvert element i vektoren vil blive divideret med 2):
0 1,5000 2,0000 1,5000 2,5000 0,5000Men hvis du skriver
2 / FMatlab vil kaste en fejl:
Fejl ved brug / Matrix dimensioner skal stemme overens.Så snart tanken opstår i hovedet om, at handlingen skal anvendes på hvert element i vektoren i Matlabe, skal dette angives ved at sætte en prik før handlingen:
2./F _ _. Dernæst får vi:
Inf 0,6667 0,5000 0,6667 0,4000 2,0000.
Inf betyder, at der er foretaget en division med nul.
Hvis der er to funktionsgrafer, og du skal bestemme deres skæringspunkt, så beregn det areal, der er begrænset som følge af skæringspunktet. I Matlabe kan en brugerdefineret funktion oprettes ved at tilføje "@" tegnet (vi skriver i parentes, hvad denne funktion afhænger af):
f =@( x ) 0,5 * x ^ 2 + sin ( 5 * x ) - 5 * x + 1som svarer til funktionen . Perioden er kun foran graden ( .^ ), dette indikerer at funktionen vil være en vektor. Prikker sættes ikke før summen, forskellen, da vektorer kan adderes og trækkes fra efter de sædvanlige regler.
MATLAB udsender:
f = function_handle med værdi : @( x ) 0,5 * x .^ 2 + sin ( 5 * x ) - 5 * x + 1function_handle siger, at funktionen er håndlavet, bruger .
Et eksempel på kode til visning af plotteområdet fra -2 til 12 med et trin på 0,01 ( du kan indtaste både 0,01 og 0,01 ):
X = -2 : 0,01 : 12 ; _Et semikolon ";" i slutningen af kommandoen betyder, at resultatet ikke vil blive vist. For at vise funktioner sammen i et vindue, kan du bruge hold på kommandoen :
plot ( X , f ( X )) hold fast plot ( X , g ( X )) gitter forklaring ( 'f' , 'g' , 'Placering' , 'bedst' )legend('f','g','Location','best') betyder, at etiketterne for funktionerne på det fælles diagram vil være placeret på det frieste sted.
MATLAB giver brugeren et stort antal (flere hundrede) funktioner til dataanalyse, der dækker næsten alle matematikområder , især:
MATLAB giver et praktisk middel til at udvikle algoritmer, herunder algoritmer på højt niveau, der bruger objektorienterede programmeringskoncepter . Den har alle de nødvendige værktøjer til et integreret udviklingsmiljø , inklusive en debugger og en profiler . Funktioner til at arbejde med heltalsdatatyper gør det nemt at skabe algoritmer til mikrocontrollere og andre applikationer, hvor det er nødvendigt.
MATLAB-pakken har en lang række funktioner til plotning, herunder tredimensionel, visuel dataanalyse og oprettelse af animerede videoer.
Det indbyggede udviklingsmiljø giver dig mulighed for at oprette grafiske brugergrænseflader med forskellige kontroller, såsom knapper, inputfelter og andre.
MATLAB-programmer, både konsolbaserede og med en grafisk brugergrænseflade, kan kompileres ved hjælp af MATLAB Compiler -modulet til MATLAB-uafhængige eksekverbare applikationer eller dynamiske biblioteker, som dog kræver installation af det frit omdistribuerbare MATLAB Runtime-miljø for at køre på andre computere [17] (tidligere kaldet MATLAB Compiler Runtime MCR) [18] .
MATLAB-pakken inkluderer forskellige grænseflader til at få adgang til eksterne rutiner skrevet på andre programmeringssprog, data, klienter og servere, der kommunikerer gennem Component Object Model eller Dynamic Data Exchange- teknologier , og periferiudstyr, der kommunikerer direkte med MATLAB. Mange af disse funktioner er kendt som MATLAB API.
COMMATLAB-pakken giver adgang til funktioner, der giver dig mulighed for at oprette, manipulere og slette COM-objekter (både klienter og servere). ActiveX - teknologi er også understøttet . Alle COM-objekter tilhører en speciel MATLAB COM-klasse. Alle programmer, der har funktionerne som en automationscontroller , kan få adgang til MATLAB som en automationsserver .
.NETMATLAB-pakken på Microsoft Windows giver adgang til .NET Framework-programmeringsplatformen. Det er muligt at indlæse .NET assemblies (Assembly) og arbejde med objekter af .NET klasser fra MATLAB miljøet. MATLAB 7.11 (R2010b) understøtter .NET Framework version 2.0, 3.0, 3.5 og 4.0.
DDEMATLAB-pakken indeholder funktioner, der giver den adgang til andre Windows -miljøapplikationer , såvel som disse applikationer til at få adgang til MATLAB-data ved hjælp af Dynamic Data Exchange (DDE) teknologi. Hver applikation, der kan være en DDE-server, har sit eget unikke identifikationsnavn. For MATLAB er dette navn Matlab .
WebtjenesterI MATLAB er det muligt at bruge webtjenester. Den specielle funktion opretter en klasse , der indeholder webtjenestens API -metoder , som giver dig adgang til webtjenesten gennem klassemetodekald.
MATLAB interagerer med webserviceklienten ved at modtage data fra den, behandle dem og sende resultatet. Følgende teknologier understøttes: Simple Object Access Protocol (SOAP) og Web Services Description Language (WSDL).
Seriel portMATLAB seriel port interface giver direkte adgang til perifere enheder såsom modemer , printere og videnskabeligt udstyr, der forbindes til computeren via en seriel (COM) port. Interfacet fungerer ved at skabe et objekt af en speciel klasse til den serielle port. De tilgængelige metoder i denne klasse giver dig mulighed for at læse og skrive data til den serielle port, bruge hændelser og hændelseshandlere og skrive information til computerens disk i realtid . Dette kan være nødvendigt ved udførelse af eksperimenter, simulering af realtidssystemer og til andre applikationer.
MEX-filerMATLAB-pakken inkluderer en grænseflade til at interagere med eksterne applikationer skrevet i C og Fortran . Denne interaktion udføres gennem MEX-filer. Det er muligt at kalde subrutiner skrevet i C eller Fortran fra MATLAB, som om de var indbyggede funktioner i pakken. MEX-filer er dynamiske linkbiblioteker , der kan indlæses og udføres af tolken indbygget i MATLAB. MEX-procedurer har også mulighed for at kalde indbyggede MATLAB-kommandoer.
DLLMATLABs delte DLL-grænseflade giver dig mulighed for at kalde funktioner, der findes i almindelige dynamiske linkbiblioteker, direkte fra MATLAB. Disse funktioner skal have et C-interface.
Derudover har MATLAB mulighed for at få adgang til sine indbyggede funktioner gennem C-grænsefladen, som giver dig mulighed for at bruge pakkens funktioner i eksterne applikationer skrevet i C. Denne teknologi kaldes C Engine i MATLAB .
Til MATLAB er det muligt at lave specielle værktøjskasser ( engelsk toolbox ), der udvider dens funktionalitet. Værktøjskasser er samlinger af funktioner og objekter skrevet i MATLAB-sproget for at løse en bestemt klasse af problemer. Mathworks leverer værktøjssæt, der bruges på mange områder, herunder følgende:
Ud over ovenstående er der tusindvis af andre MATLAB-værktøjssæt skrevet af andre virksomheder og entusiaster.
Der er et stort antal softwarepakker til at løse problemer med numerisk analyse. Mange af disse pakker er gratis software .
![]() | ||||
---|---|---|---|---|
|
Matematik software | |
---|---|
Symbolske beregninger | |
Numeriske beregninger |