Beräkning av nästa element genom de tidigare i matlab. Enkla beräkningar i MATLAB


1. Kommandofönster (Kommandofönster).

Matematiska uttryck skrivs på kommandoraden efter "\u003e\u003e" -prompten. Till exempel,

Tryck på "Enter" för att utföra åtgärden.

Som standard skriver programmet resultatet till den speciella variabeln ans.

För att spara resultatet under ett annat namn, använd till exempel variabelnamnet och tilldelningstecknet "\u003d"

\u003e\u003e z \u003d 1,25 / 3,11

Redigera i Kommandofönster endast den aktuella kommandoraden är tillåten. För att redigera ett tidigare inmatat kommando måste du placera markören i inmatningsraden och använda "" eller "" knapparna.

Om kommandot slutar med ";" visas inte resultatet av dess åtgärd på kommandoraden.

Kommandofönstret kan stängas med knappen "" och knappen "" används för att separera fönstret från systemgränssnittet. Du kan gå tillbaka till standardfönsterformuläret med menyn:

HuvudmenySkrivbordSkrivbordslayoutStandard.

Du kan rensa kommandofönstret med hjälp av menyn:

HuvudmenyRedigeraRensa kommandofönstret.

Huvudmenyn i MatLab-systemet.

Huvudmeny Matlab innehåller följande föremål:

Fil (File) - arbeta med filer;

Redigera (Redigera) - redigering;

Se (Visa) - fönsterhantering;

webb - kommunikation med företaget - utvecklare via Internet;

Fönster (Window) - anslutning till systemfönster;

Hjälp (Hjälp) - länk till hjälpsystemet MatLab.

MATLAB-systemverktygsfält.

Verktygsfältets knappar har följande funktioner:

Ny fil (Ny) - visar filredigeringsfönster;

Öppna fil (Öppna) - öppnar nedladdningsfönster för filer;

Skära (Klipp ut) - skär det valda fragmentet och placerar det på Urklipp;

Kopiera (Copy) - kopierar det valda fragmentet till Urklipp;

Klistra (Paste) - överför det valda fragmentet från Urklipp till inmatningsraden;

Ångra (Ångra) - avbryter resultatet av föregående operation;

Göra om (Upprepa) - upprepar resultatet från föregående operation;

Simulink - skapar en Simulink-modell (tillägg Matlab);

Hjälpfönster (Hjälp) - öppnar hjälpfönster.

4. Format för resultatet av beräkningsresultatet .



När du anger riktiga siffror används en punkt för att separera bråkdelen!

\u003e\u003e s \u003d 0.3467819

Beräkningsresultatet visas i formatet kort(kort notering för nummer), vilket är standard. Du kan ändra formatet till lång (lång notering av numret).

\u003e\u003e format långt

0.34678190000000

I listan Numeriskt format antal format tillgängliga

kort- kort registrering av numret;

lång- lång registrering av antalet;

kort e- kort rekord av ett nummer i flytande punktformat;

lång e- lång post av ett nummer i flytande punktformat;

kort g- den andra formen av en kort registrering av numret;

lång g- den andra formen av det långa numret;

Visningsformatet för numeriska data kan ställas in i menyn Fil(fil) objekt Inställningar(preferenser). Gå till fliken Kommandofönster (kommandofönster). Alternativ Textvisning(textvisning), i en lista Numeriskt format(nummerformat) kort g, i alternativ Numerisk display(nummervisning) inställd kompakt... Dessa utdataformat motsvarar utmatningen av siffror i en universell form av fem signifikanta siffror och undertrycker utrymmet mellan linjerna.

Grunderna för datorer i MatLab.

Att utföra de enklaste aritmetiska operationerna i Matlab operatörer tillämpar:

· Addition och subtraktion +, -;

· Multiplikation och division *, /;

· Exponentiering ^.

Några speciella variabler:

ans - resultatet av den senaste osignerade tilldelningsoperationen;

eps - relativt fel i flytande beräkningar;

pi är ett tal;

i eller j är en imaginär enhet;

Inf - oändlighet;

NaN är odefinierad.

Några inbyggda atomfunktionerMatlab:

exp (x) - exponent för nummer x;

log (x) - naturlig logaritm av talet x;

sqrt (x) - kvadratrot av nummer x;

abs (x) - modul av numret x;

sin (x), cos (x), tan (x), cot (x) - sinus, cosinus, tangent, cotangens av x;

asin (x), acos (x), atan (x), acot (x) - bågsinus, bågkosinus, bågtangens, bågkotangens av talet x;

sec (x), csc (x) - secant, cosecant av talet x;

runda (x) - avrundar talet x till närmaste heltal;

mod (x, y) - resten av heldelningen av x med y, med hänsyn till tecknet;

tecken (x) - Returnerar tecknet på x.

Låt oss beräkna uttryckets värde

\u003e\u003e exp (–2.5) * log (11.3) ^ 0.3 - sqrt ((sin (2.45 * pi) + cos (3.78 * pi)) / tan (3.3))

Om operatören inte kan placeras på en rad är det möjligt att fortsätta att ange den på nästa rad om du i slutet av den första raden anger fortsättningstecknet "...", till exempel

\u003e\u003e exp (–2.5) * log (11.3) ^ 0.3 - ...

sqrt ((sin (2.45 * pi) + cos (3.78 * pi)) / tan (3.3))

Funktioner för att arbeta med komplexa siffror:

Ingång för komplexa nummer

\u003e\u003e z \u003d 3 + 4i

3.0000 + 4.0000i

Funktioner abs (z), vinkel (z) returnerar modul och argument för ett komplext tal, där ,;

komplex (a, b) konstruerar ett komplext tal från dess verkliga och imaginära delar:

conj (z) returnerar det komplexa konjugatnumret;

imag (z), real (z) returnerar den imaginära och verkliga delen av det komplexa talet z.

6. Vektorer.

Input, addition, subtraktion, multiplicering med ett tal.

Vector in Matlab formas med hjälp av fyrkantsfästet. I detta fall separeras elementen i kolumnvektorn med ett semikolon ";", och elementen i radvektorn separeras med ett mellanslag "" eller ett komma ",".

Låt oss introducera en kolumnvektor.

\u003e\u003e x \u003d

Presentera radvektorn .

\u003e\u003e y \u003d

För att transponera vektorn, använd apostrofen "'":

\u003e\u003e z \u003d y ’

För att hitta summan och skillnaden mellan vektorer, använd tecknen "+" och "-":

\u003e\u003e c \u003d x + z

Multiplikation av en vektor med ett nummer utförs både till höger och till vänster med hjälp av "*" - tecknet.

Vektorer kan till exempel vara argument för inbyggda funktioner

\u003e\u003e d \u003d sin (c)

För att hänvisa till element i vektorer används parenteser (), till exempel,

\u003e\u003e x_2 \u003d x (2)

Det sista elementet i vektorn kan väljas genom att skriva kommandot

\u003e\u003e X_end \u003d x (slutet)

Flera vektorer kan till exempel bestå av en

\u003e\u003e r \u003d

1.3 5.4 6.9 7.1 3.5 8.2

Kolontecknet ":" används för att exempelvis separera flera element från en vektor

\u003e\u003e w \u003d r (3: 5)

Kolonet ":" karaktär låter dig till exempel ersätta vektorelement

\u003e\u003e r (3: 5) \u003d 0

1.3 5.4 0 0 0 8.2

Symbolen “:” kan också användas för att konstruera en vektor, vars element skiljer sig från det föregående med ett konstant antal, dvs. steg som

\u003e\u003e h \u003d

1 1.2 1.4 1.6 1.8 2

Steget kan vara negativt (i detta fall måste fröet vara större än det slutliga).

Steg lika med ett kan utelämnas

\u003e\u003e k \u003d

Grundläggande funktioner för att arbeta med vektorer.

  • längd (x) - bestämning av längden på vektorn x;
  • prod (x) - multiplicering av alla element i vektorn x;
  • sum (x) - summering av alla element i vektorn x;
  • max (x) - hitta det maximala elementet i vektorn x;
  • min (x) - hitta minimielementet i vektorn x.

Om du anropar min- eller max-funktionen med två utgångsargument \u003d min (x),

sedan tilldelas den första variabeln värdet på minimi (maximalt element) och den andra variabeln tilldelas numret på detta element.

7 matriser.

Olika sätt att mata in en matris.

1. Matrisen kan matas in som en kolumnvektor bestående av två element, var och en är en radvektor och åtskild av ett semikolon. Till exempel introducerar vi matrisen

\u003e\u003e A \u003d

2. Matrisen kan matas in rad för rad genom att utföra kommandosekvensen:

\u003e\u003e A \u003d.

Algoritmen som implementeras i \\ operationen består av följande steg:

  • 1. I det triviala fallet, om A är gles och diagonal (avsnittet Glesa matriser ägnas åt glesa matriser i MATLAB), hittas lösningen med en enkel formel xk \u003d bk / a kk, där k \u003d 1,2,. .. n.
  • 2. Om A är en kvadratisk, gles och bandad matris används en lösare för bandade matriser. I det här fallet kan det finnas två alternativ:

    a. Om A är en trekantig matris och b är en kolumn med reella tal, löses systemet genom Gaussisk eliminering (dess operationer utförs endast med element på diagonalerna). Om det i eliminationsprocessen är nödvändigt att göra permutationer av rader för att bibehålla stabiliteten, eller om matrisen A inte är trekantig, fungerar nästa artikel.
    b. Om A är ett band med densitet av icke-noll element större än parametern bandden, som standard lika med 0,5, eller om villkoren i föregående stycke inte är uppfyllda, beroende på typen av A och b ( dubbel eller enda) följande procedurer i LAPACK-biblioteket kallas:

    A och b är riktiga dubbletter - procedurer DGBTRF, DGBTRS
    A och b är komplexa dubbla procedurer ZGBTRF, ZGBTRS
    A eller b flyter av typ SGBTRF, SGBTRS
    A eller b komplex typ CGBTRF, CGBTRS

    Densiteten hos icke-nollelement förstås som förhållandet mellan antalet icke-nollelement i bandet och antalet alla element i matrisen, till exempel för en 7 till 7 matris, vars mall anges nedan, antalet icke-nollelement

    nz \u003d 1 (på bild 2) + 6 (på bild 1) + 7 (på bild 0) + 6 (på bild 1) + 1 (på bild 2) + 1 (på bild nr 3 ) \u003d 22,

    och antalet alla objekt i flödet

    band \u003d 5 (på diag. nr 2) + 6 (på diag. nr-1) + 7 (på diag. nr 0) + 6 (på diag. nr 1) + 5 (på diag. nr. 2) + 4 (på diag. Nr 3) \u003d 33

    och densiteten hos icke-noll element är 2/3. Sedan 2/3\u003e 0,5 kommer bandmatrislösaren att tillämpas
    Parameter bandden, som andra parametrar som styr algoritmerna för glesa matriser i MATLAB, ställs in med spparms-funktionen.

    Betydelsen av detta steg i algoritmen är att lösningen av systemet med en remsmatris inte kräver åtgärder utanför remsan. Om bandet är tillräckligt fullt kommer det inte att bli så många åtgärder med noll element. Tvärtom, om bandet är tillräckligt sparsamt, kan tillvägagångssätten i de ytterligare stegen i algoritmen ge en större effekt.

  • 3. Om A är en övre eller nedre triangulär matris tillämpas den inversa substitutionsmetoden, eller följaktligen den direkta substitutionsmetoden, i vilken komponenten i lösningen hittas från den sista (eller den första ekvationen) och sedan hittade komponenter ersätts i följande ekvationer för att hitta nästa komponenter i ekvationslösningssystemen.
  • 4. Om A - kan reduceras genom permutationer till en triangulär form utförs motsvarande reduktion och sedan löses ekvationssystemet som i punkt 3.
  • 5. Om A är en symmetrisk matris (eller, i det komplexa fallet Hermitian), innehåller diagonalen endast positiva verkliga element, beroende på om A är gles eller inte, håller artikel a) eller punkt b).

    a. Om A inte är gles försöker man göra Cholesky-sönderdelningen A \u003d R T R följt av lösning av system med triangulära matriser R T och R: R T y \u003d b och Rx \u003d y. Detta kallar följande procedurer i LAPACK-biblioteket:

    A och b är verkliga och av typen dubbel - DLANGE, DPOTRF, DPOTRS, DPOCON
    A och b komplexa och dubbla typer - ZLANGE, ZPOTRF, ZPOTRS, ZPOCON
    A och b är verkliga och av typen singel - SLANGE, SPOTRF, SPOTRS, SDPOCON
    A och b komplex och enkel typ - CLANGE, CPOTRF, CPOTRS, CPOCON

    Den Cholesky nedbrytningen misslyckas om matrisen inte är positiv definitiv. Men en preliminär kontroll av positiv bestämning utförs inte, men den bestäms exakt under nedbrytningsprocessen, eftersom det ofta är tillräckligt att utföra flera steg i Cholesky-nedbrytningen för att klargöra det faktum att matrisen inte är positiv definitiv ( i beräkningen blir det nödvändigt att extrahera kvadratroten av ett negativt tal). Om Cholesky-sönderdelningen inte har uppfyllts, gå till nästa artikel.

    b. Om A är gles, utförs symmetriska permutationer av rader och kolumner preliminärt enligt den symmetriska algoritmen för minimigraden (av symmmd-funktionen) för att minska fyllningen av Cholesky-expansionsfaktorn, d.v.s. för att minska antalet nya element som inte är noll som uppstår under påfyllningsprocessen:

    p \u003d symmmd (A) - vektor p innehåller permutationer

    R \u003d kol (A (p, p));

    och två system med Cholesky-multiplikatorer löses, det första med en transponerad faktor och motsvarande permutationer i vektorn på höger sida

    och den andra, med expansionsfaktorn och med införandet av lösningskomponenterna till motsvarande positioner i vektorn x
    x (p, :) \u003d R \\ y

  • 6. Om A är en Hessenberg-matris reduceras den till den övre triangulära (med motsvarande modifiering av höger sida) och sedan löses systemet genom substitutioner
  • 7. Om A är en fyrkantig matris som inte uppfyller villkoren för artiklarna 1-6, så beroende på om den är gles eller inte, utförs följande åtgärder

    a. Om A inte är en gles matris, användes Gaussisk eliminering med ett val av en svängning (för att säkerställa stabiliteten i sönderdelningen) utförs LU-sönderdelningen av matrisen A \u003d LU, där

    U - övre triangulär matris
    L - matris, genom permutationer av rader reduceras till en triangulär

    och lösningen av systemet Ax \u003d b hittas genom successiv lösning av systemen med triangulära matriser Ly \u003d b, Ux \u003d y.
    Följande LAPACK-rutiner kallas för att utföra LU-sönderdelning:

    A och b är verkliga och av typen dubbel - DLANGE, DGESV, DGECON
    A och b komplexa och dubbla typer - ZLANGE, ZGESV, ZGECON
    A och b är verkliga och av typen singel - SLANGE, SGESV, SGECON
    A och b komplex och enkel typ - CLANGE, CGESV, CGECON

    b. Om A är en gles matris, permuteras kolumnerna för att minska fyllningen av faktorerna L och U i processen att hitta sönderdelningen. Vidare, genom att ordna om raderna i processen för LU-sönderdelning, säkerställs beräkningsstabilitet, varefter system med triangulära matriser åter löses. För att utföra LU-sönderdelning av en gles matris används procedurerna för UMFPACK-biblioteket

    8. Om algoritmens tidigare punkter inte fungerade och därför inte A är en kvadratmatris, bestäms allt av dess gleshet och en av följande punkter fungerar:

    a. Om A inte är en gles matris utförs QR-sönderdelningen AP \u003d QR, där P är kolumnpermutationsmatrisen, Q är den ortogonala matrisen (Q T Q \u003d I) och R är den övre triangulära matrisen. Om A är m med n är Q m med m, och R är m med n. Vidare finns systemlösningen enligt följande:

    x \u003d P * (R \\ (Q "* b))

    eftersom Ax \u003d b och AP \u003d QR innebär: QRx \u003d bP och Rx \u003d Q T bP.

    b. När det gäller en gles och rektangulär matris A är det ingen mening att beräkna matrisen Q, eftersom den troligen kommer att fyllas. Därför beräknas c \u003d QT b (dvs. den modifierade högra sidan) under QR-sönderdelningsalgoritmen och systemet Rx \u003d c med en triangulär matris löses för att erhålla en lösning på det ursprungliga systemet Ax \u003d b.

Utöver allt ovanstående utvärderar ovanstående algoritm matrisens villkorlighet och visar en varning om ett eventuellt fel i lösningen om matrisen är dålig (se avsnittet Påverkan av villkor för en matris på noggrannheten för att lösa ett system med det). Den givna algoritmen innehåller alla typer av kontroller som kan ta märkbar extra tid. I nästa avsnitt, linsolve-funktionen för lösning av system med linjära ekvationer, tillhandahålls linsolve-funktionen, som låter dig ange vilken typ av matris, vilket minskar beräkningstiden.

Linsolve-funktion för lösning av system med linjära ekvationer

I stället för att lösa ett system (eller system med flera högra sidor som ges i en matris) av linjära algebraiska ekvationer med hjälp av backslash kan du använda funktionen linsolve, som inte utför alla matriskontroller som är inneboende i \\ operator-algoritmen (se föregående avsnitt).

Linsolve-funktion, kallad i sin enklaste form med två inmatningsargument och ett utmatningsargument
x \u003d linsolve (A, b)
löser systemet Ax \u003d b på ett av sätten, beroende på om matrisen är kvadratisk eller inte.

  • Om A är en kvadratmatris beräknas dess LU-sönderdelning och sedan löses två system med triangulära matriser L och U.
  • Om A är en rektangulär matris beräknas dess QR-sönderdelning i förväg och sedan löses systemet med triangulära matriser.

(För mer information om operationer med erhållna expansionsfaktorer, se avsnittet). Dessutom, om matrisen A är dåligt konditionerad eller A är en matris av ofullständig rang, visas en motsvarande varning, till exempel:

A \u003d; b \u003d; x \u003d linsolve (A, b) Varning: Rang bristfällig, rank \u003d 1, tol \u003d 4.4686e-015. x \u003d 0 0 2.0000

För att undertrycka utdata från detta meddelande till kommandofönstret, ring linsolve-funktionen med två utgångsargument
\u003d linsolve (A, b)
då kommer den resulterande lösningen att skrivas i x och i r - antingen matrisens rangordning (om A är en rektangulär matris), eller det ömsesidiga med uppskattningen för dess tillståndsnummer (se avsnitt), till exempel

A \u003d; b \u003d; \u003d linsolve (A, b) x \u003d -1,0000e + 000 9,9999e-001 3,3307e-006 r \u003d 6,9444e-013

De huvudsakliga fördelarna med linsolve-funktionen jämfört med \\ operationen visas när matrisstypen för ett ekvationssystem anges. Innan du ringer till linsolve-funktionen måste du fylla i strukturen med information om matrisen med följande fält

  • SYM - symmetrisk;
  • LT - lägre triangulär;
  • UT - övre triangulär;
  • UHESS - Hessenberg;
  • POSDEF - symmetrisk, positiv bestämd;
  • RECT - rektangulär;
  • TRANSA - om man ska lösa systemet med matrisen transponerad till den givna.

Varje fält kan vara antingen sant eller falskt. Naturligtvis är inte alla kombinationer av fältvärden tillåtna, till exempel kan en matris inte vara triangulär och samtidigt symmetrisk och positiv. Rätt kombinationer av fältvärden samlas i följande tabell

LT UT UHESS SYM POSDEF RECT TRANSA
sannfalskfalskfalskfalsksant falsktsant falskt
falsksannfalskfalskfalsksant falsktsant falskt
falskfalsksannfalskfalskfalsksant falskt
falskfalskfalsksannsannfalsksant falskt
falskfalskfalskfalskfalsksant falsktsant falskt

Om systemets matris är positiv bestämd måste detta beaktas vid lösning, eftersom lösningen för positiva bestämda matriser baseras på Cholesky-sönderdelningen, vilket kräver färre operationer än LU-sönderdelningen som används för att lösa system med allmänna fyrkantiga matriser . Det är lätt att verifiera detta med hjälp av följande exempel, där en symmetrisk positiv bestämd matris skapas (en matris med slumpmässiga tal läggs till med den transponerade och stora siffror läggs till diagonalen) och systemet med ekvationer med denna matris löses först som ett system med en allmän matris (opts. SYM \u003d falsk och opts.POSDEF \u003d falsk) och sedan som med en symmetrisk och positiv bestämd matris (opts.SYM \u003d true och opts.POSDEF \u003d Sann).

% ställer in alla fält i ops-strukturen, utom SYM och POSDEF opts.TRANSA \u003d false; opts.UHESS \u003d falskt; opts.RECT \u200b\u200b\u003d false; opts.UT \u003d falskt; opts.LT \u003d falskt; % skapa en vektor med matrisstorlekar N \u003d 2. ^ (8:12); % skapa tomma matriser för att registrera lösningstider TimeGeneral \u003d; TimePosSym \u003d; % i en slinga, skapa matriser och jämföra lösningstiderna för n \u003d N% skapa en symmetrisk och positiv bestämd matris% och en vektor på höger sida A \u003d rand (n); A \u003d A + A "+ 2 * n * öga (n); b \u003d summa (A, 2);% vi löser systemet som ett system med en allmän matrisval.SYM \u003d falsk; val.POSDEF \u003d falsk; Tstart \u003d cputime; x \u003d linsolve (A, b, opts); Tend \u003d cputime; TimeGeneral \u003d;% lösa systemet som ett system med symmetri och positon-val.SYM \u003d true; opts.POSDEF \u003d true; Tstart \u003d cputime; x \u003d linsolve (A, b, opts); Tend \u003d cputime; TimePosSym \u003d; end% display time charts diagram loglog (N, TimeGeneral, N, TimePosSym) legend ("TimeGeneral", "TimePosSym")

De resulterande beräkningskostnaderna för dessa metoder för att lösa systemet visas i diagrammet nedan.

Naturligtvis, om matrisen är triangulär, är det mycket viktigt att indikera detta, eftersom lösningen av ett system med en triangulär matris utförs i O (n2) -operationer, och om en lösningsalgoritm utformad för en generell matris appliceras på ett system med en triangulär matris, sedan ordningen på O (n3) -operationer.

Funktionen linsolve kontrollerar inte om matrisen uppfyller de angivna egenskaperna, vilket kan leda till ett fel. Till exempel om du löser ett system med följande matris och höger sida

A \u003d; b \u003d; set true för UT-fältet (och ställ alla andra till false) opts.UT \u003d true; opts.TRANSA \u003d falskt; opts.LT \u003d falskt; opts.UHESS \u003d falskt; väljer.SYM \u003d falskt; opts.POSDEF \u003d falskt; opts.RECT \u200b\u200b\u003d false; då, när systemet löses, kommer linsolve-funktionen att betrakta matrisen som en övre triangulär och kommer att välja de element som den behöver från den övre triangeln A x \u003d linsolve (A, b, opts) Detta ger en lösning x \u003d 1 1 1 motsvarande matrisen A \u003d;

Inverkan av en matris villkorlighet på noggrannheten för att lösa ett system med den

I det här avsnittet kommer vi att överväga hur fel i elementen i vektorn på höger sida och i matrisen för systemet med linjära ekvationer Ax \u003d b kan påverka lösningen av detta system. Låt oss först vända oss till fallet med att införa störningar i vektorn på höger sida b. Så vi löser två system

dessutom antas det att vi löser vart och ett av systemen exakt, och den huvudsakliga frågan som uppstår är hur mycket lösningen x för systemet (1) kommer att skilja sig från lösningen för systemet (2) med en störning på höger sida 5b. Detta är en ganska viktig fråga, eftersom elementen på höger sida kan erhållas som ett resultat av vissa mätningar, innehållande felet δb k i varje komponent bk. Jag skulle vilja att när man mäter samma kvantitet (varje gång med sina egna, små fel), skiljer sig inte motsvarande lösningar av system med lite olika höger sida så mycket från varandra. Tyvärr är detta inte alltid fallet. Anledningen till detta är matrisen som kallas den villkorlighet... Detta kommer att diskuteras ytterligare.

För det första är det nödvändigt att införa ett mått på närheten av vektorer och x, dvs. felvektorer. Måttet på storleken på vektorn är normen (den kan definieras på olika sätt). Låt oss för närvarande ta den normala euklidiska normen för en vektor (kvadratroten av summan av kvadraterna för dess komponenter), dvs.

Följaktligen

där n är antalet okända och ekvationer i systemet. Förutom vektornormen, för att uppskatta storleken på en vektor, behöver vi också en matrisnorm för att uppskatta storleken på en matris. Ta matrisnormen, som definieras enligt följande (den kallas spektralnormen):

de där. den spektrala matrisnormen är lika med kvadratroten av matrisens maximala egenvärde A A. I MATLAB finns en funktionsnorm för att beräkna normerna för matriser och vektorer, som särskilt kan beräkna ovanstående normer. Varför vi har valt just sådana normer för vektorer och matriser förklaras i detalj i avsnittet, där några beräkningar och definitioner ges. Detta beror på uppskattningen som vi kommer att använda för felet vid lösning av systemet (härledningen av denna ojämlikhet ges också i nämnda avsnitt):

Här betecknar genomgående villkoret för matrisen, som definieras enligt följande:

Det följer av ovanstående ojämlikhet att ju större villkoret är för systemets matris, desto större kan det relativa felet i lösningen vara med ett litet fel på höger sida.

Tänk på ett klassiskt exempel på en dålig matris - Hilbert-matrisen - och ta reda på hur ett fel på höger sida av systemet påverkar felet i lösningen. Hilbert-matrisen definieras enligt följande

För att skapa en Hilbert-matris tillhandahåller MATLAB hilb-funktionen, vars inmatningsargument anger matrisens storlek. Låt oss ta en liten 6 till 6 matris:

N \u003d 6; H \u003d hilb (n) H \u003d 1.0000 0.5000 0.3333 0.2500 0.2000 0.1667 0.5000 0.3333 0.2500 0.2000 0.1667 0.1429 0.3333 0.2500 0.2000 0.1667 0.1429 0.1250 0.2500 0.2000 0.1667 0.1429 0.1250 0.1111 0.2000 0.1667 0.1429 0.1250 0.1111 0.1000 0.166 0.19 0,09

X \u003d de (n, 1); b \u003d H * x b \u003d 2,4500 1,5929 1,2179 0,9956 0,8456 0,7365

Vi ser att det inte finns något "misstänkt" i matrisen eller vektorn på höger sida, alla siffror skiljer sig inte så mycket från varandra. Nu kommer vi att bilda den störda högra sidan b + δb, lägga små nummer i storleksordningen 10 -5 till vektorn b och lösa systemet med den störda högra sidan för att erhålla vektorn.

Delta_b \u003d 1e-5 * (1: n) "; x_tilda \u003d H \\ (b + delta_b) x_tilda \u003d 0,9978 1,0735 0,4288 2,63232 -1,0160 1,8593

Det kan ses att den erhållna lösningen är långt ifrån den exakta, där alla enheter ska vara. Låt oss beräkna det relativa felet i lösningen och på höger sida (normfunktionen beräknar vektorens euklidiska norm som standard):

Delta_x \u003d x - x_tilda; VÄNSTER \u003d norm (delta_x) / norm (x) VÄNSTER \u003d 1.1475 HÖGER \u003d norm (delta_b) / norm (b) HÖGER \u003d 2.7231e-005

Så felet i lösningen är av enhetens ordning, även om ändringarna på höger sida var i storleksordningen 10 -5. Detta passar helt in i ovanstående ojämlikhet för fel. Låt oss faktiskt beräkna villkoret antal cond (H) med hjälp av en MATLAB-funktion som kallas cond och beräknar som standard för matrisens spektrala norm

C \u003d kond (H) c \u003d 1,4951e + 007

VÄNSTER ≈ 1.1475 mindre

C * RÄTT? 1.4951e + 07 * 2.7231e-05 ≈ 407

och ojämlikheten är tillfredsställd (även med en viss marginal).

Med en ökning av storleken på Hilbert-matrisen kommer felet i lösningen bara att växa (detta är lätt att kontrollera genom att ställa in n \u003d 7, 8, ...). Vidare visas för n \u003d 12 ett meddelande som säger att matrisen är dåligt konditionerad och lösningen kan visa sig vara felaktig

Varning: Matrisen är nära singular eller dåligt skalad.
Resultaten kan vara felaktiga. RCOND \u003d 2.409320e-017.

Som ett mått på villkor väljs här värdet RCOND, vilket är lika med ett dividerat med uppskattningen av tillståndsnumret (tillståndsnumret uppskattas med en ganska snabb algoritm som fungerar mycket snabbare än kond, vilket beskrivs mer detaljerat i hjälp för rcond-funktionen). Om RCOND-värdet är litet, anses matrisen vara dålig.

Ökningen av felet i lösningen med en ökning av storleken på Hilbert-matrisen beror på att tillståndsnumret för Hilbert-matrisen växer mycket snabbt med sin storlek. Detta är lätt att verifiera med en enkel slinga och semilogifunktionen (skalan på ordinaten är logaritmisk):

N \u003d 1:20; C \u003d nollor (1, 20); för n \u003d NH \u003d hilb (n); C (n) \u003d kond (H); avsluta semilogi (N, C) rutnät, titel ("cond (H)"), xlabel ("n")

Eftersom kond-funktionen hittar tillståndsnumret med hjälp av en numerisk metod (nämligen sönderdelning av singularvärdet för att hitta singulära siffror) beräknas tillståndsnumret efter n \u003d 12 felaktigt, det måste faktiskt växa vidare, som kan ses med symboliska beräkningar i MATLAB och operationer med ett givet antal signifikanta siffror

N \u003d 1:20; C \u003d nollor (1, N); siffror (60) för n \u003d N H \u003d vpa (sym (hilb (n))); % beräkning av Hilbert-matrisen upp till 60: e tecken sigma \u003d svd (H); % att hitta singularvärden för Hilbert-matrisen% beräkna tillståndsnumret för Hilbert-matrisen C (n) \u003d max (dubbel (sigma)) / min (dubbel (sigma)); avsluta semilogi (N, C) rutnät, titel ("cond (H)"), xlabel ("n")

Tänk nu på tre viktiga punkter om detta exempel.

Den första av dem - att lösa systemet Hx \u003d b (med vektorn på höger sida som motsvarar lösningen på en) med hjälp av backstegsoperatorn ger inte exakta enheter, felet kommer redan att vara på tionde decimalen (även om i MATLAB utförs alla beräkningar med dubbel precision som standard)

Format långt H \\ b ans \u003d 0,99999999999916 1,00000000002391 0,99999999983793 1,00000000042209 0,99999999953366 1,00000000018389

Detta beror på det faktum att när vi beräknar vektorn b när matrisen H multipliceras med en vektor av alla enheter, har vi redan lagt något fel i den. Dessutom spelade avrundningsfel i processen för att lösa systemet också en roll och matrisens dåliga villkor (även av liten storlek) ledde till sådana fel i lösningen. Faktum är att för små matriser med ett litet tillståndsnummer kommer denna effekt inte att observeras. Ta en 6 av 6 matris av slumpmässiga tal, beräkna dess tillståndsnummer

A \u003d rand (n); kond (A) ans \u003d 57,35245279907571

Då kommer vi att bilda den högra sidan som motsvarar den exakta lösningen för alla enheter

X \u003d de (n, 1); b \u003d A * x;

och lösa systemet, vilket resulterar i god noggrannhet

\u003e\u003e A \\ b ans \u003d 1.00000000000000 1.00000000000000 1.00000000000000 1.00000000000000 1.00000000000000 1.00000000000000

Den andra viktiga punkten är relaterad till matrisens determinant. Låt oss beräkna determinanten för Hilbert-matrisen av storlek 6 med 6, med vilken vi löste systemet

\u003e\u003e det (hilb (6)) ans \u003d 5.3673e-018

Determinanten visar sig vara tillräckligt liten, varifrån man kan dra fel slutsats att källan till problemet med ett stort fel i lösningen med en liten störning av systemets högra sida är determinantens litenhet. I verkligheten är detta inte fallet, om determinanten för systemet är liten, betyder detta inte att matrisen är dåligt konditionerad och därför ett stort fel i lösningen. Ja, ta matrisen

A \u003d;

Dess determinant är mycket liten, cirka 10-121

Det (A) ans \u003d 9,9970e-121

(Ordet "mycket" är naturligtvis villkorligt, men det är mindre än determinanten för Hilbert-matrisen av storlek 6 med 6 när vi löser det system som vi hade problem med). Determinantens litet påverkar emellertid inte på något sätt felet i lösningen när systemets högra sida störs, vilket är lätt att visa genom att bilda ett system med en känd lösning, införa störningar i höger sida och lösa systemet:

X \u003d; b \u003d A * x; delta_b \u003d 1e-5 *; x_tilda \u003d A \\ (b + delta_b); delta_x \u003d x - x_tilda; VÄNSTER \u003d norm (delta_x) / norm (x) HÖGER \u003d norm (delta_b) / norm (b) VÄNSTER \u003d 2.1272e-005 HÖGER \u003d 2.1179e-005

Så det relativa felet i lösningen är praktiskt taget lika med det relativa felet på höger sida, eftersom villkoret för ovanstående matris A är något större än 1, nämligen:

C \u003d kond (A) c \u003d 1,0303

Och slutligen, överväga den tredje frågan om uppnåendet av likhetstecknet i ojämlikheten för felet i lösningen

Med andra ord, låt oss ta reda på: kan det finnas en sådan situation när vi gör en liten relativ störning av systemets högra sida, säg 10 -5, villkoret för systemmatrisen är 10 10, och lösningen får ett relativt fel på 10 5. Du kan göra många exempel, sortera ut olika matriser, inte få jämställdhet och felaktigt dra slutsatsen att detta bara är en överskattad övre gräns för felet i lösningen. Detta är dock inte fallet, eftersom följande exempel övertygar oss.

där den relativa störningen på höger sida är 10 -5

HÖGER \u003d norm (delta_b) / norm (b) HÖGER \u003d 1.0000e-005

Det relativa felet vid lösning av systemet visar sig vara 10 5

X \u003d A \\ b; x_tilda \u003d A \\ (b + delta_b); delta_x \u003d x - x_tilda; VÄNSTER \u003d norm (delta_x) / norm (x) VÄNSTER \u003d 1.0000e + 005

Och det beror på att
1) i detta exempel är matrisens villkornummer 1010;

C \u003d kond (A) c \u003d 1.0000e + 010

2) ojämlikheten för felet i lösningen förvandlas till jämlikhet.

Om vi \u200b\u200bställer in formatet till långt ser vi att VÄNSTER, HÖGER och villkor inte är exakt 10 5, 10 -5 respektive 10 10, men detta orsakas av avrundningsfel. Vid lösning i exakt aritmetik skulle jämställdheten visa sig vara exakt, vilket kan visas analytiskt (se avsnitt).

I de föregående exemplen antog vi att matrisen inte innehåller fel, och fel kan bara vara på höger sida av systemet med linjära ekvationer. I praktiken kan det visa sig att elementen i systemmatrisen specificeras med fel, dvs. istället för systemet

|| Yxa || V \u003d || b || V ⇒ || A || M || x || V ≥ || b || V

där || || M är någon matrisnorm. För att göra detta, matrisenorm || || M och vektornorm || || V måste tillfredsställa följande ojämlikhet

|| A || M || x || V ≥ || Yxa || V

för alla matriser A och vektorer x. Om denna ojämlikhet gäller, då matrisenorm || || M kallas gick med på med vektornorm || || V. Det är till exempel känt att spektralnormen

(kvadratroten av matrisens maximala egenvärde) överensstämmer med den euklidiska vektornormen

Det är därför i avsnittet vi utförde alla experiment med dessa normer.

Efter att ha uppnått ojämlikheten || A || M || x || V ≥ || b || V notera vidare att Ax \u003d b och det följer att. Eftersom matrisen A är icke-degenererad följer det att δx \u003d A -1 δb och || δx || V \u003d || A -1 5b || V. Återigen använder vi normernas konsekvens och uppnår ojämlikheten || δx || V ≤ || A -1 || M || δb || V. Vidare i de två erhållna ojämlikheterna

|| A || M || x || V ≥ || b || V och || δx || V ≤ || A -1 || M || δb || V

det mindre värdet av en av ojämlikheterna divideras med det större värdet av den andra ojämlikheten och det större värdet av det mindre

och genom enkel omvandling får vi äntligen den nödvändiga ojämlikheten

där kond (A) \u003d || A || M * || A -1 || M.

Observera att när vi härledde ojämlikheten för felet använde vi bara det faktum att matrisnormen överensstämmer med vektorn. Detta gäller inte bara för matrisens spektrala norm och vektornes euklidiska norm utan också för andra normer. Så till exempel den maximala kolumnmatrisenormen beräknad med formeln

överensstämmer med den första vektornormen

och den maximala radmatrisnormen beräknad med formeln

överensstämmer med den oändliga vektornormen

Normfunktionen beräknar inte bara den euklidiska vektornormen och den spektrala matrisnormen utan också de vektor- och matrisnormer som anges ovan. För att göra detta måste du ringa det med ytterligare ett argument:

  • q \u003d norm (A, 1) - maximal kolumnorm för matris A.
  • q \u003d norm (A, inf) - maximal radnorm för matris A
  • q \u003d norm (a, 1) - den första vektornormen för a
  • q \u003d norm (a, inf) - oändlig vektornorm för a

Matrisförhållandets nummer (A) \u003d || A || M * || A -1 || M med avseende på olika matrisnormer kan beräknas med hjälp av kond-funktionen. Om kond anropas med ett inmatningsargument (matris) beräknas villkoret i förhållande till den spektrala matrisnormen. Att anropa cond med ett ytterligare argument returnerar villkorsnummer relativt den angivna matrisnormen:

  • с \u003d kond (A, 1) - tillståndsnummer relativt matrisens maximala kolumnorm
  • с \u003d kond (A, inf) - villkorstal relativt matrisens maximala radnorm

Som ett exempel som visar vikten av konsistensen av matrishålet med vektornormen i ojämlikheten för felet, ger vi ett exempel med matrisen A, vektorn på höger sida b och vektorn för fel på höger sida delta_b .

A \u003d; b \u003d [-5.7373057243726833e-001 -1.5400413072907607e-001 -5.3347697688693385e-001 -6.0209490373259589e-001]; delta_b \u003d [-0,71685839091451e-5 0,54786619630709e-5 0,37746931527138e-5 0,20850322383081e-5];

Låt oss beräkna höger och vänster sida av uppskattningen med hjälp av den första vektornormen, och matrisens tillståndsnummer med avseende på spektralmatrisnormen

HÖGER \u003d norm (delta_b, 1) / norm (b, 1); c \u003d kond (A); x \u003d A \\ b; x_tilda \u003d A \\ (b + delta_b); delta_x \u003d x - x_tilda; VÄNSTER \u003d norm (delta_x, 1) / norm (x, 1); format kort e disp ()

Vi får följande värden för ojämlikhetens vänstra och högra sida
9.9484e + 004 9.9323e + 004

Vänster sida bör inte överstiga den högra (som bevisats ovan), men det visade sig vara större på grund av valet av inkonsekventa normer.

Låt oss nu analysera varför matrisens tillståndsnummer inte kan vara mindre än ett. Villkoret för matrisen A definieras som kond (A) \u003d || A || M * || A -1 || M, där || A || M är någon form av matrisnorm A. Matrisnormen (dvs. regeln enligt vilken ett tal är associerat med varje matris) kan inte vara godtycklig, den måste uppfylla följande fyra axiomer:

A1. || A || ≥ 0 för valfri matris A och || A || \u003d 0 om och endast om A är en nollmatris.

A2. || αA || \u003d | α | * || A || för valfri matris A och antal α.

A3. || A + B || ≤ || A || + || B || för alla matriser A och B

A4. || AB || ≤ || A || * || B || för eventuella matriser A och B.

Från det sista axiomet kan man se att normen endast definieras för fyrkantiga matriser (även om det i princip inte finns någon sådan begränsning i ovanstående formler för beräkning av olika normer). Dessutom följer det av det sista axiomet att alla normer för identitetsmatrisen I inte är mindre än en

|| Jag || \u003d || I * I || ≤ || Jag || 2 ⇒ || Jag || ≥ 1.

Sedan, igen med hjälp av det fjärde axiomet, finner vi att villkoren för matrisen alltid är större än en (detta är sant för villkoren för matrisen med avseende på en godtycklig matrisnorm)

1 ≤ || Jag || \u003d || AA -1 || ≤ || A || * || A -1 || \u003d kond (A).

Vi avslutar detta avsnitt med att undersöka orsaken till att en exakt likhet uppträder i uppskattningen av felet i lösningen under störning på höger sida

och bygga relevanta exempel i MATLAB. (Resonemanget nedan finns till exempel i boken av J. Forsyth, K. Mohler. Numerisk lösning av system med linjära algebraiska ekvationer. M: Mir, 1969.)

En viktig roll i resonemanget spelas av sönderdelningssatsen för singularvärdet, enligt vilken det finns två ortogonala matriser U och V av storlek n av n för varje verklig matris av storlek, så som att produkten D \u003d UT AV är diagonal matris, och man kan välja U och V så att

där μ 1 ≥ μ 2 ≥… ≥μ r ≥ μ r + 1 \u003d… \u003d μ n \u003d 0,

och r är rangordningen för matrisen A. Siffrorna μk kallas matrisens spektrala tal A. För en icke-degenererad matris A är det sant:

μ 1 ≥ μ 2 ≥ ... ≥μ n ≥ 0.

Nästa viktiga faktum är att multiplikation med en ortogonal matris inte förändrar vektornes euklidiska norm, dvs. för vilken vektor som helst x med n element och vilken ortogonal matris U av storlek n med n, som är lika

|| Ux || \u003d || x ||.

Eftersom multiplicering med en ortogonal matris inte ändrar den spektrala normen, då

därför, för matrisens villkor, lika

Vi har två system: Ax \u003d b (med exakt lösning x) och (med exakt lösning). Uppenbarligen är felet δx en lösning på systemet, vars högra sida är störningen δb, d.v.s. av systemet Aδx \u003d δb. Låt D \u003d U T AV vara en enda sönderdelning av matrisen A, sedan UDV T \u003d A på grund av det faktum att U och V är ortogonala matriser. Ytterligare

Ax \u003d b ⇒ UDV T x \u003d b.

Låt oss presentera notationen

x "\u003d V T x, b" \u003d U T b,

då är följande system ekvivalenta

Ax \u003d b ⇔ Dx "\u003d b"

Tänk på systemet på ett helt liknande sätt med avseende på

Aδx \u003d 5b ⇒ UDV T δx \u003d δb

Vi introducerar notationen

δx "\u003d VT δx, δb" \u003d UT δb,

för vilka följande system är ekvivalenta

Aδx \u003d δb ⇔ Dδx "\u003d δb"

De där. vi har erhållit enkla ekvivalenta system med en diagonal matris på diagonalen av vilken det finns spektrala tal för matrisen A.

Vi väljer nu på ett speciellt sätt de högra sidorna av dessa system, nämligen låt

där β\u003e 0 kommer motsvarande lösning av systemet Dx "\u003d b" att vara

där μ 1 är det maximala singularantalet för matrisen A. Vi fortsätter på samma sätt med systemet Dδx "\u003d δ b", nämligen, låt

där γ\u003e 0, kommer motsvarande lösning av systemet Dδx "\u003d δb" att vara

Från bevarande av normen för en vektor när man multiplicerar den med en ortogonal matris följer det

β / μ 1 \u003d || x "|| \u003d || V T x || \u003d || x || och γ / μ n \u003d || δx" || \u003d || V T δx || \u003d || δx ||.

På exakt samma sätt får vi likheterna:

β \u003d || b "|| \u003d || U T b || \u003d || b || och γ \u003d || δb" || \u003d || U T 5b || \u003d || δb ||.

och sedan

så får vi äntligen

Så för varje matris A är det möjligt att konstruera en vektor på systemets högra sida och störning så att felet i lösningen kommer att vara produkten av matrisens tillståndsnummer genom felet på höger sida. I MATLAB kan motsvarande konstruktion utföras utan sönderdelning av singulärt värde (även om det kan hittas med svd-funktionen).

Först specificerar vi n och erhåller två ortogonala matriser U och V och utför QR-sönderdelningen av matriserna n till n från slumpmässiga tal:

N \u003d 4; \u003d qr (rand (n)); \u003d qr (rand (n));

D \u003d diag ();

Därefter konstruerar vi matrisen A med hjälp av den diagonala matrisen D och de ortogonala matriserna U och V

A \u003d U * D * V ";

Villkoret för matris A kommer att sammanfalla med villkoret för matris D, vilket i vårt exempel är 10 10

Beta \u003d 1; gamma \u003d 1e-5;

och konstruera vektorer b "och δb"

B1 \u003d "; db1 \u003d";

med vilka vi hittar vektorerna b och δb

X \u003d A \\ b; x_tilda \u003d A \\ (b + db);

beräkna ojämlikhetens vänstra och högra sida

dx \u003d x - x_tilda; HÖGER \u003d norm (db) / norm (b); VÄNSTER \u003d norm (dx) / norm (x);

och visa dem

Formatera kort e disp ()

Vi får jämlikhet

Republiken Vitrysslands utbildningsministerium

Läroanstalt

· kontur3(X, Y, Z) - ritar konturlinjer för ytan, erhållna genom att stratifiera en tredimensionell figur med ett antal skärplan parallellt med figurens referensplan.

Exemplet nedan visar hur de beskrivna kommandona kan användas för att plotta ytan Z \u003d sin (X) cos (X).

\u003e\u003e \u003d nätnät (-3: 0,1: 3, -3: 0,1: 3); Z \u003d sin (X). * Cos (X);

\u003e\u003e delplan (3,2,1), plot3 (X, Y, Z)% Figur 4.3 (a)

\u003e\u003e delplan (3,2,2), mesh (X, Y, Z)% Figur 4.3 (b)

\u003e\u003e delplan (3,2,3), surf (X, Y, Z)% Figur 4.3 (c)

\u003e\u003e delplan (3,2,4), surfc (X, Y, Z)% Figur 4.3 (d)

\u003e\u003e delplan (3,2,5), meshz (X, Y, Z)% Figur 4.3 (e)

\u003e\u003e delplan (3,2,6), kontur3 (X, Y, Z)% Figur 4.3 (f)


4.3. Formatera diagram

Matlab-systemet ger möjlighet att anpassa och justera egenskaperna för grafer både med hjälp av det grafiska fönstergränssnittet och genom att specificera lämpliga grafiska kommandon och parametrar. Tabell 4.3.1. några enkla grafformateringstekniker ges.

Tabell 4.2 - Formatera diagram

spela teater

Grafiska gränssnittsverktyg

Byt till redigeringsläge.

Klicka på knappen RedigeraKomplotti verktygsfältet för grafikfönster.

Formatera rader och ankarpunktmarkörer för grafer.

I redigeringsläget dubbelklickar du på graflinjen med vänster musknapp. I fönstret som visas Fast egendomRedaktör-Linje ställa in alla nödvändiga radparametrar (tjocklek, stil, färg, etc.).

plot (X, Y, S), plot3 (X, Y, Z, S)

(Beskrivningen av kommandona ges i avsnitt 4.1 och 4.2)

Formatera axlarna i diagrammen.

Dubbelklicka på grafaxeln i redigeringsläget. I fönstret som visas Fast egendomRedaktör-Axlar ställa in alla nödvändiga parametrar för axlarna.

Plottitel- och axeltiketter kan också användas med kommandona Föra inTitel, Föra inXlabel,Föra inYlabel huvudmenyn i grafikfönstret.

axlar - styr axlarnas egenskaper.

rutnät - slår på och av koordinatnätet.

xlabel (S),ylabel (S),zlabel (S)- sätter etiketter nära axlarna. Här är S en strängkonstant eller variabel.

titel (S) - visar diagrammets titel

Märkning direkt på diagrammet.

Klicka på knappen Föra inText , fixa platsen för inskriften genom att klicka med musen och ange önskad text.

text (X,Y,S) - lägger till text specificerad av rad S i ett tvådimensionellt diagram, så att början av texten ligger vid en punkt med koordinater (X, Y).

text (X,Y,Z,S) - lägger till text i 3D-graf.

Rita linjer och pillinjer direkt på diagrammet

Klicka på en av knapparna Föra inArraweller Föra inLinje... Flytta muspekaren till önskad plats i diagrammet och rita en linje med vänster musknapp intryckt.

Bygga en legend

Föra in, och sedan kommandot legend.

legend (S1,S2,S3, ...) - lägger till en legend i det aktuella diagrammet med förklaringar i form av strängar som anges i parameterlistan.

Utskrift i färgskala

Välj kommandot i grafikfönstrets huvudmeny Föra in, och sedan kommandot Färgfält.

färgfält (‘vert '),färgfält (‘horis ') - visar en vertikal eller horisontell färgskala.

Rotera diagrammet

Klicka på knappen Rotera 3D och rotera diagrammet med musen (kan också användas för 2D-grafer).

rotera3d - ställer in rotationen för 3D-formen.

med gränsvillkor y(t 0 , slut, sid) = yvar slut, t 0 start- och slutpunkter för intervaller. Parameter t (förklarande variabel) betyder inte nödvändigtvis tid, även om man oftast söker lösningen på differentialekvationen i tidsdomänen. DE-systemet i Cauchy-formen är skrivet på samma sätt som (1.1) men under y i detta fall menas en kolumnvektor med beroende variabler. Vektor sid ställer in de ursprungliga villkoren.

För att lösa andra och högre ordning DE, måste de reduceras till första ordning DE-systemet.

Det finns möjliga DE som inte är tillåtna med avseende på derivatet:

F(t, y, dy/dt) = 0. (1.2)

Ekvationer (1.2) kan vanligtvis inte reduceras analytiskt till form (1.1). Den numeriska lösningen orsakar emellertid inte tillräckliga speciella svårigheter att avgöra f(y, t) lösa (1.2) numeriskt med avseende på derivatet för givet y och t.

ODE-lösare

Olika numeriska metoder implementeras i MATLAB för att lösa ODE-system. Deras implementeringar heter lösare ODE.

I detta avsnitt betyder det generiska namnet solver (solver) en av de möjliga numeriska metoderna för att lösa ODE: ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb, bvp4c eller pdepe.

Lösare implementerar följande metoder för att lösa fjärrkontrollsystem:

Ode45 enstegs explicita Runge-Kutta-metoder för 4: e och 5: e orderna, modifierade av Dormand och Prince. Detta är den klassiska metoden som rekommenderas för en första test av en lösning. I många fall ger det bra resultat om ekvationssystemet som löses inte är styvt.

Ode23 enstegs explicita Runge-Kutta-metoder för andra och fjärde ordningen i modifieringen av Bogatzki och Champin. Med en måttlig styvhet i ODE-systemet och krav på låg noggrannhet kan denna metod ge en lösningens hastighet.

Ode113 flerstegs Adams-Bashworth-Multon-metod för variabel ordning prediktor-korrigerarklass. Det är en anpassningsbar metod som kan ge en mycket exakt lösning.

Ode15s är en metod med variabel ordning i flera steg (1 till 5, standard 5) med numeriska bakåtdifferentieringsformler. Detta är en anpassningsbar metod och bör användas om ode45-lösaren inte ger en lösning och kontrollsystemet är styvt.

Ode23s är en metod i ett steg med en modifierad Rosenbrock-formel av andra ordningen. Det kan ge höga beräkningshastigheter med låg noggrannhet för lösningen i ett styvt styrsystem.

Ode23t är en implicit interpolation trapezoid metod. Denna metod ger bra resultat när man löser problem som beskriver oscillerande system med en nästan harmonisk utsignal. Med måttligt styva system kan fjärrkontrollen ge hög lösningsnoggrannhet.

Ode23tb den implicita Runge Kutta-metoden i början av lösningen och en metod som använder andra ordningens "bakåtdifferentiering" -formler i följande. Trots den relativt låga noggrannheten kan denna metod vara mer effektiv än ode15s.

Bvp4c tjänar till problemet med gränsvärden för DE-system av formen y′ = f(t, y), F(y(a), y(b), sid) \u003d 0 (fullständig form av Cauchy-ekvationssystemet). Problemen han löser kallas tvåpunktsgränsvärdeproblem, eftersom lösningen eftersträvas när gränsvillkoren anges både i början och i slutet av lösningsintervallet.

Alla lösare kan lösa explicita ekvationssystem y′ = F(t, y), och det rekommenderas att endast använda speciallösare ode15s, ode23s, ode23t, ode23tb för att lösa styva ekvationssystem.

Använda ODE-systemlösare

tspan vektor som definierar integrationsintervallet [ t 0 t final]. Att få lösningar vid specifika tidpunkter t 0 , t 1 , …, t final (ordnade i minskande eller ökande ordning) bör användas tspan = [ t 0 t 1 … t final];

y 0 vektor av initiala villkor;

Alternativ är ett argument som skapats av odeset-funktionen (en annan odeget- eller bvpget-funktion (endast för bvp4c) låter dig visa de alternativ som är inställda som standard eller använda odeset / bvpset-funktionen);

sid1, sid2, ... godtyckliga parametrar skickas till funktionen F;

T, Y beslutsmatris Ydär varje rad motsvarar den tid som returneras i kolumnvektorn T.

Låt oss gå vidare till att beskriva syntaxen för funktioner för att lösa fjärrkontrollsystem (namnlösaren betyder någon av de funktioner som presenteras ovan).

[T,Y] \u003d lösare (@ F,tspan,y 0) integrerar ett styrsystem av formuläret y′ = F(t, y) på intervallet tspan med initiala villkor y 0 . @F beskrivning av en ODE-funktion (du kan också ange en funktion i formuläret " F"). Varje rad i lösningen Y matchar tidsvärdet som returneras i kolumnvektorn T.

[T,Y] \u003d lösare (@ F,tspan,y 0, alternativ) ger en lösning som liknar den som beskrivs ovan, men med parametrar som anges av värdena för alternativargumentet som genereras av odeset-funktionen. Vanligt använda parametrar inkluderar RelTol-tolerans (standard 1e3) och AbsTol-toleransvektor (alla komponenter är 1e6 som standard).

[T,Y] \u003d lösare (@ F,tspan,y 0, alternativ, sid 1 ,sid 2 ...) ger en lösning som liknar ovan och skickar ytterligare parametrar sid 1 , sid 2, ... in m-fil F närhelst det kallas. Använd alternativ \u003d om inga parametrar anges.

Första ordningens ODE-lösning

BESTÄLLNING AV ARBETSPRESTANDA

· titelsida;

· Ursprungliga data för varianten;

· Lösning av problemet;

· Resultat för att lösa problemet.

Exempel

Hitta en lösning på differentialekvationen för ett intervall för vilket (1,7) = 5,3.

Skapa en användarfunktion i kommandofönstret

[e-postskyddad](x, y);

I funktionssyntax @ (x, y) x oberoende variabel, y beroende variabel, x-cos ( y/pi) på fjärrkontrollens högra sida.

Lösningsprocessen utförs genom att ringa lösaren i kommandofönstret med följande operatör:

Ode23 (g ,,);

Rutnätsplanering utförs av följande operatörer:

Resultatet visas i fig. 1.1

Figur: 1.2.1. Numerisk lösningsvisualisering

UPPGIFTEN

1. Hitta lösningarna för den första ordern DE uppfyller de ursprungliga villkoren y (x 0 ) \u003d y 0 i intervallet [ a, b].

2. Skapa funktionsdiagram.

Jobbalternativ.

Alternativ nr y (x 0 ) \u003d y 0 [a, b]
y 0 (1,8)=2,6
y 0 (0,6)=0,8
y 0 (2,1)=2,5
y 0 (0,5)=0,6
y 0 (1,4)=2,2
y 0 (1,7)=5,3
y 0 (1,4)=2,5
y 0 (1,6)=4,6
y 0 (1,8)=2,6
y 0 (1,7)=5,3
y 0 (0,4)=0,8
y 0 (1,2)=1,4

Laborationer nr 2

ODE-systemlösning

ARBETETS MÅL

Att skapa elevers idéer om användningen av fjärrkontrollsystem inom olika områden; att införa förmågan att lösa Cauchy-problemet för styrsystem.

BESTÄLLNING AV ARBETSPRESTANDA

1. Studera den teoretiska delen. Slutför uppgifterna som motsvarar numret på ditt alternativ och visa dem för läraren.

2. Utarbeta en rapport om laboratoriearbete som ska innehålla:

· titelsida;

· Ursprungliga data för varianten;

· Lösning av problemet;

· Resultat för att lösa problemet.

Exempel

Lös systemet

med hjälp av ode23 () -lösaren.

Beslut:

1. Skapa i redigeraren en m-fil över funktionen för att beräkna rätt delar av styrsystemet.

Låt namnet vara sisdu.m i redigeraren, då kan funktionen se ut så här:

funktion z \u003d sisdu (t, y)

z1 \u003d -3 * y (2) + cos (t) -exp (t);

z2 \u003d 4 * y (2) -cos (t) + 2 * exp (t);

\u003e\u003e t0 \u003d 0; tf \u003d 5; y0 \u003d [- 3 / 17.4 / 17];

\u003e\u003e \u003d ode23 ("sisdu" ,, y0);

\u003e\u003e tomt (t, y)

Figur: 1.3.1. Visualisering av den numeriska lösningen erhållen med ode23-funktionen.

1. Vad betyder det att lösa Cauchy-problemet för DE-systemet?

2. Vilka är metoderna för att lösa fjärrkontrollsystem?

UPPGIFTEN

1. Hitta lösningen på fjärrkontrollsystemet

uppfylla de initiala villkoren för intervallet;

2. Skapa diagram över funktioner.

Till exempel ges funktionen för att lösa det åttonde alternativet:

funktion z \u003d ssisdu (t, y)

% -alternativ 8

z1 \u003d -a * y (1) + a * y (2);

z2 \u003d a * y (1) - (a-m) * y (2) + 2 * m * y (3);

z3 \u003d a * y (2) - (a-m) * y (3) + 3 * m * y (4);

z4 \u003d a * y (3) -3 * m * y (4);

\u003e\u003e \u003d ode23 ("ssisdu" ,,);

\u003e\u003e tomt (t, 100 * y)

Figur: 1.3.2. Visualisering av den numeriska lösningen erhållen med ode23-funktionen.

Jobbalternativ.

Alternativ nr Uppgifter
a m
0,1 1,2
0,2 1,5
0,3 1,7
0,4 1,9
0,5
0,6 1,9
0,7 2,3
0,8 2,7
0,9
0,1 1,5
0,2 1,1
0,3

Laborationer nr 3

1.4 ODE-lösning nordning

ARBETETS MÅL

Att bilda elevernas idéer om användning av högre order inom olika områden; att införa förmågan att lösa Cauchy-problemet för högre ordning med hjälp av tillämpade program; utveckla färdigheter för att kontrollera de resultat som erhållits.

BESTÄLLNING AV ARBETSPRESTANDA

1. Studera den teoretiska delen. Slutför uppgifterna som motsvarar numret på ditt alternativ och visa dem för läraren.

2. Utarbeta en rapport om laboratoriearbete som ska innehålla:

· titelsida;

· Ursprungliga data för varianten;

· Lösning av problemet;

· Resultat för att lösa problemet.

Exempel 1.

Lös andra ordning DE givna initiala villkor .

Beslut:

Först tar vi fjärrkontrollen till systemet:

1. Skapa en m-fil av funktionen för att beräkna rätt delar av styrsystemet.

Låt filnamnet vara sisdu_3.m, då kan funktionen se ut så här:

funktion z \u003d sisdu_3 (x, y)

z2 \u003d 6 * x * exp (x) + 2 * y (2) + y (1);

2. Gör så här:

\u003e\u003e x0 \u003d 0; xf \u003d 10; y0 \u003d;

\u003e\u003e \u003d ode23 ("sisdu_3" ,, y0);

\u003e\u003e plot (x, y (:, 1))

Figur: 1.4.1. Visualisering av den numeriska lösningen erhållen med funktionen ode23.

FRÅGOR FÖR PROBLEMSKYDD

1. Vad betyder det att lösa Cauchy-problemet för högre ordning DE?

2. Hur man tar med fjärrkontrollen m- order till fjärrkontrollsystemet?

UPPGIFTEN

1. Hitta en lösning på DE som uppfyller de initiala villkoren för intervallet.

2. Skapa diagram över funktioner.

Jobbalternativ.

Alternativ nr Uppgifter
Ekvationer Initiala förhållanden







Laborationer nr 4 - 5

Dynamiska system (DS)

ARBETETS MÅL

Kännedom om studenter med de grundläggande begreppen DS, deras klassificering, DS-fasrum, kinematisk tolkning av DP-systemet, DS-utveckling. Pendelrörelsesekvation. Van der Pol-oscillatorns dynamik.

2. Dynamiskt system (DS) ett matematiskt objekt som motsvarar verkliga system (fysiska, kemiska, biologiska, etc.), vars utveckling bestäms unikt av det ursprungliga tillståndet. DS bestäms av ett ekvationssystem (differentiell, skillnad, integral, etc.) som medger existensen på ett oändligt tidsintervall av unikheten hos en lösning för varje initiala tillstånd.

DS-tillståndet beskrivs av en uppsättning variabler som väljs av naturligheten i deras tolkning, enkelhet i beskrivning, symmetri etc. Uppsättningen av tillstånd i DS bildar ett fasutrymme, varje tillstånd motsvarar en punkt i det och evolutionen avbildas av (fas) banor. För att bestämma närheten av tillstånd introduceras avståndskonceptet i fasutrymmet för en DS. Uppsättningen av tillstånd vid en fast tidpunkt kännetecknas av fasvolymen.

Beskrivningen av DS i betydelsen att specificera evolutionens lag medger också en stor variation: den utförs med hjälp av differentiella ekvationer, diskreta mappningar, med grafteori, teori om Markov-kedjor, etc. Valet av en av beskrivningsmetoderna specificerar en specifik typ av matematisk modell för motsvarande DS.

Matematisk modell av DS anses ges om systemets dynamiska variabler (koordinater) införs, som unikt bestämmer dess tillstånd, och tillståndet för utveckling av tillståndet i tiden anges.

Beroende på graden av approximation kan ett och samma system associeras med olika matematiska modeller. Studien av verkliga system följer vägen för att studera motsvarande matematiska modeller, vars förbättring och utveckling bestäms av analysen av experimentella och teoretiska resultat när man jämför dem. I detta avseende kommer vi att förstå det dynamiska systemet som dess matematiska modell. Att utforska en och samma DS (till exempel rörelse av en pendel), beroende på graden av hänsyn till olika faktorer, kommer vi att få olika matematiska modeller.







2021 gtavrl.ru.