Funktsioonitaseme joonte määratlemine ja konstrueerimine võrgus. Lihtne klass 2D ruudustiku funktsiooni tasemejoonte joonistamiseks

Kui iga punkt X = (x 1, x 2, ... x n) n-mõõtmelise ruumi punktide hulgast (X) on seotud muutuja z ühe täpselt määratletud väärtusega, siis öeldakse, et antud n muutuja funktsioon z = f(x 1, x 2, ...x n) = f (X).

Sel juhul kutsutakse välja muutujad x 1, x 2, ... x n sõltumatud muutujad või argumendid funktsioonid, z - sõltuv muutuja, ja sümbol f tähistab kirjavahetuse seadus. Hulk (X) kutsutakse määratluspiirkond funktsioonid (see on n-mõõtmelise ruumi teatud alamhulk).

Näiteks funktsioon z = 1/(x 1 x 2) on kahe muutuja funktsioon. Selle argumendid on muutujad x 1 ja x 2 ning z on sõltuv muutuja. Definitsioonipiirkonnaks on kogu koordinaattasand, välja arvatud sirged x 1 = 0 ja x 2 = 0, s.t. ilma x- ja ordinaattelgedeta. Asendades funktsiooniga mis tahes punkti definitsioonipiirkonnast, saame vastavalt vastavusseadusele teatud arv. Näiteks punkti (2; 5) võtmine, s.o. x 1 = 2, x 2 = 5, saame
z = 1/(2*5) = 0,1 (st z(2; 5) = 0,1).

Nimetatakse funktsiooni kujul z = a 1 x 1 + a 2 x 2 + … + a n x n + b, kus a 1, a 2,… ja n, b on konstantsed arvud. lineaarne. Seda võib pidada muutujate x 1, x 2, ... x n n lineaarse funktsiooni summaks. Kõik muud funktsioonid kutsutakse välja mittelineaarne.

Näiteks funktsioon z = 1/(x 1 x 2) on mittelineaarne ja funktsioon z =
= x 1 + 7x 2 - 5 – lineaarne.

Mis tahes funktsiooni z = f (X) = f(x 1, x 2, ... x n) saab seostada ühe muutuja n funktsiooniga, kui fikseerime kõigi muutujate väärtused peale ühe.

Näiteks kolme muutuja z = 1/(x 1 x 2 x 3) funktsioone saab seostada ühe muutuja kolme funktsiooniga. Kui fikseerime x 2 = a ja x 3 = b, siis saab funktsioon kuju z = 1/(abx 1); kui fikseerime x 1 = a ja x 3 = b, siis saab see kujul z = 1/(abx 2); kui fikseerime x 1 = a ja x 2 = b, siis saab see kujul z = 1/(abx 3). IN sel juhul kõigil kolmel funktsioonil on sama vorm. See ei ole alati nii. Näiteks kui kahe muutuja funktsiooni jaoks fikseerime x 2 = a, siis saab see kujul z = 5x 1 a, st. võimsusfunktsioon ja kui fikseerime x 1 = a, siis võtab see kuju, st. eksponentsiaalne funktsioon.

Ajakava kahe muutuja funktsioon z = f(x, y) on punktide hulk kolmemõõtmelises ruumis (x, y, z), mille rakendus z on seotud abstsissil x ja ordinaadiga y funktsionaalseosega
z = f (x, y). See graafik kujutab mingit pinda kolmemõõtmelises ruumis (näiteks nagu joonisel 5.3).

Saab tõestada, et kui funktsioon on lineaarne (st z = ax + by + c), siis selle graafik on tasapind kolmemõõtmelises ruumis. Muud näited 3D graafikud Soovitatav on õppida iseseisvalt Kremeri õpiku abil (lk 405-406).

Kui muutujaid on rohkem kui kaks (n muutujat), siis ajakava funktsioon on punktide kogum (n+1)-mõõtmelises ruumis, mille x-koordinaat n+1 arvutatakse vastavalt etteantud funktsionaalsele seadusele. Sellist graafikut nimetatakse hüperpind(Sest lineaarne funktsioonhüperplaan) ja see kujutab endast ka teaduslikku abstraktsiooni (seda on võimatu kujutada).

Joonis 5.3 – Kahe muutuja funktsiooni graafik kolmemõõtmelises ruumis

Tasane pind n muutujast koosnev funktsioon on punktide kogum n-mõõtmelises ruumis nii, et kõigis nendes punktides on funktsiooni väärtus sama ja võrdne C-ga. Arv C ise on sel juhul nn. tasemel.

Tavaliselt on sama funktsiooni jaoks võimalik konstrueerida lõpmatu arv tasapindu (mis vastavad erinevatele tasanditele).

Kahe muutuja funktsiooni korral võtab tasapinna kuju taseme jooned.

Näiteks kaaluge z = 1/(x 1 x 2). Võtame C = 10, st. 1/(x 1 x 2) = 10. Siis x 2 = 1/(10x 1), s.o. tasapinnal omandab nivoojoon pideva joonena joonisel 5.4 näidatud kuju. Võttes teise taseme, näiteks C = 5, saame tasemejoone funktsiooni x 2 = 1/(5x 1) graafiku kujul (joonisel 5.4 näidatud punktiirjoonega).

Joonis 5.4 – funktsioonitaseme jooned z = 1/(x 1 x 2)

Vaatame teist näidet. Olgu z = 2x 1 + x 2. Võtame C = 2, st. 2x 1 + x 2 = 2. Siis x 2 = 2 - 2x 1, s.o. tasapinnal on nivoojoon sirge, mida kujutab joonisel 5.5 pidev joon. Võttes teise taseme, näiteks C = 4, saame tasapinna sirgjoone kujul x 2 = 4 - 2x 1 (joonisel 5.5 näidatud punktiirjoonega). Tasemejoon 2x 1 + x 2 = 3 jaoks on näidatud joonisel 5.5 punktiirjoonena.

Lihtne on kontrollida, et kahe muutuja lineaarse funktsiooni korral on mis tahes tasapinnaline joon tasapinnal sirgjoon ja kõik tasemejooned on üksteisega paralleelsed.

Joonis 5.5 – Funktsioonitaseme jooned z = 2x 1 + x 2

Mitme muutuja funktsiooni defineerimine

Ühe muutuja funktsioone käsitledes tõime välja, et paljude nähtuste uurimisel tuleb kokku puutuda kahe või enama sõltumatu muutuja funktsioonidega. Toome paar näidet.

Näide 1. Ruut S ristkülik, mille küljed on võrdsed X Ja juures, väljendatakse valemiga S = xy. Iga väärtuste paar X Ja juures vastab teatud pindala väärtusele S; S on kahe muutuja funktsioon.

Näide 2. Helitugevus V ristkülikukujuline rööptahukas, mille servad on võrdsed X, juures, z, väljendatakse valemiga V= xyz. Siin V on kolme muutuja funktsioon X, juures, z.

Näide 3. Vahemik R algkiirusel lastud mürskude lend v 0 püstol, mille toru on horisontaalsuunas nurga all , väljendatakse valemiga
(kui jätame tähelepanuta õhutakistuse). Siin g- gravitatsiooni kiirendus. Iga väärtuspaari jaoks v 0 ja  see valem annab teatud väärtuse R, st. R on kahe muutuja funktsioon v 0 ja .

Näide 4.
. Siin Ja on nelja muutuja funktsioon X, juures, z, t.

Definitsioon 1. Kui iga paar ( X, juures) kahe üksteisest sõltumatu muutuja väärtused X Ja juures mõnest nende muutumise piirkonnast D, vastab koguse teatud väärtusele z, siis me ütleme seda z on funktsioon kaks sõltumatut muutujat x Ja juures, määratletud piirkonnas D.

Sümboolselt tähistatakse kahe muutuja funktsiooni järgmiselt:

z= f(x, y), z = F(x, y) jne.

Kahe muutuja funktsiooni saab määrata näiteks tabeli abil või analüütiliselt – valemi abil, nagu tehti ülalpool käsitletud näidetes. Valemi põhjal saate mõne sõltumatu muutuja väärtuste paari jaoks luua funktsiooni väärtuste tabeli. Seega saate esimese näite jaoks luua järgmise tabeli:

S = xy

Selles tabelis teatud väärtustele vastava rea ​​ja veeru ristumiskohas X Ja juures, sisestatakse vastav funktsiooni väärtus S. Kui funktsionaalne sõltuvus z= f(x, y) saadakse koguse mõõtmise tulemusena z Mis tahes nähtust eksperimentaalselt uurides saadakse kohe tabel, mis määrab z kahe muutuja funktsioonina. Sel juhul määrab funktsiooni ainult tabel.

Nagu ühe sõltumatu muutuja puhul, ei eksisteeri kahe muutuja funktsiooni üldiselt ühegi väärtuse puhul X Ja juures.

2. definitsioon. Paaride komplekt ( X, juures) väärtused X Ja juures, mille juures funktsioon määratakse z= f(x, y), kutsus määratluspiirkond või eksistentsi piirkonda seda funktsiooni.

Funktsiooni määratluspiirkond on selgelt geomeetriliselt illustreeritud. Kui iga väärtuspaar X Ja juures tähistame seda punktiga M(X, juures) lennukis Ohoo, siis kujutatakse funktsiooni määratluspiirkonda teatud punktide kogumina tasapinnal. Nimetame seda punktide kogumit ka funktsiooni määratluspiirkonnaks. Eelkõige võib määratluspiirkond olla kogu tasapind. Järgnevalt käsitleme peamiselt valdkondi, mis esindavad lennuki osad, joontega piiratud. Piirav joon see piirkond, me helistame piir alad. Nimetatakse piirkonna punktid, mis ei asu piiril sisemine piirkonna punktid. Nimetatakse ala, mis koosneb ainult sisepunktidest avatud või avatud. Kui piirkonda kuuluvad ka piiripunktid, siis nimetatakse piirkonda suletud. Piirkonda nimetatakse piiritletuks, kui selline konstant on olemas KOOS, et mis tahes punkti kaugus M ala päritolust KOHTA vähem KOOS, st. | OM| < KOOS.

Näide 5. Määrake funktsiooni loomulik domeen

z = 2Xjuures.

Analüütiline avaldis 2 Xjuures on iga väärtuse jaoks mõistlik X Ja juures. Järelikult on funktsiooni loomulik määratluspiirkond kogu tasapind Ohoo.

Näide 6.
.

Selleks, et z oli reaalväärtusega, on vajalik, et juure all oleks mittenegatiivne arv, s.t. X Ja juures peab rahuldama ebavõrdsust 1 – X 2 – juures 2  0 või X 2 + juures 2  1.

Kõik punktid M(X, juures), mille koordinaadid vastavad näidatud ebavõrdsusele, asuvad raadiusega 1 ringis, mille keskpunkt on selle ringi alguspunktis ja piiril.

Näide 7.
.

Kuna logaritmid on määratletud ainult positiivsed numbrid, siis tuleb ebavõrdsus rahuldada X + juures> 0 või juures >  X.

See tähendab, et funktsiooni määratluspiirkond z on pool tasapinnast, mis asub joone kohal juures =  X, välja arvatud sirgjoon ise.

Näide 8. Kolmnurga pindala S esindab põhifunktsiooni X ja kõrgused juures: S= xy/2.

Selle funktsiooni määratluspiirkond on domeen X  0, juures 0 (kuna kolmnurga alus ja selle kõrgus ei saa olla ei negatiivne ega null). Pange tähele, et vaadeldava funktsiooni määratluspiirkond ei ühti selle analüütilise avaldise loomuliku definitsioonipiirkonnaga, millega funktsioon on täpsustatud, kuna avaldise loomulik määratluspiirkond xy/ 2 on ilmselgelt kogu lennuk Ohoo.

Kahe muutuja funktsiooni määratlust saab hõlpsasti üldistada kolme või enama muutuja puhul.

3. määratlus. Kui iga vaadeldav muutujate väärtuste kogum X, juures, z, …, u, t vastab teatud muutuja väärtusele w, siis helistame w sõltumatute muutujate funktsioon X, juures, z, …, u, t ja kirjutada w= F(X, juures, z, …, u, t) või w= f(X, juures, z, …, u, t) ja nii edasi.

Nii nagu kahe muutuja funktsiooni puhul, saame rääkida kolme, nelja või enama muutuja funktsiooni definitsioonipiirkonnast.

Nii näiteks kolme funktsiooni jaoks muutuv ala Definitsioon on teatud arvude kolmikute kogum ( X, juures, z). Märgime kohe, et iga arvukolmik määrab teatud punkti M(X, juures, z) kosmoses Ohooz. Järelikult on kolme muutuja funktsiooni määratluspiirkond teatud punktide kogum ruumis.

Samamoodi võime rääkida nelja muutuja funktsiooni definitsioonipiirkonnast u= f(x, y, z, t) umbes neljakordsete arvude kogumi kohta ( x, y, z, t). Funktsiooni määratluspiirkond aga neli või rohkem muutujad ei võimalda enam lihtsat geomeetrilist tõlgendust.

Näide 2 näitab kõigi väärtuste jaoks määratletud kolme muutuja funktsiooni X, juures, z.

Näide 4 näitab nelja muutuja funktsiooni.

Näide 9. .

Siin w– nelja muutuja funktsioon X, juures, z, Ja, mis on määratletud muutujate väärtuste jaoks, mis vastavad seosele:

Mitme muutuja funktsiooni mõiste

Tutvustame mitme muutuja funktsiooni mõistet.

Definitsioon 1. Las iga punkt M punktide komplektist ( M) Eukleidiline ruum Em mingi seaduse järgi pannakse kirjavahetusse teatud arv Ja numbrilisest komplektist U. Siis me ütleme, et võtteplatsil ( M) funktsioon on antud ja =f(M). Veelgi enam, komplektid ( M) Ja U nimetatakse vastavalt funktsiooni määratluse (määramise) ja muutmispiirkonnaks f(M).

Nagu teate, ühe muutuja funktsioon juures = f(x) on tasapinnal kujutatud joonena. Kahe muutuja puhul on määratluspiirkond ( M P) funktsioonid z = f(x, y) tähistab teatud punktide kogumit koordinaattasandil Ohoo(joonis 8.1). Koordineerida z helistas taotleda, ja seejärel kujutatakse funktsiooni ennast ruumipinnana E3 . Samamoodi funktsioon from T muutujad

komplektis määratletud ( M) Eukleidiline ruum Em, esindab hüperpinda Eukleidilises ruumis Em+1.

Teatud tüüpi mitme muutuja funktsioonid

Vaatame mitme muutuja funktsioonide näiteid ja leiame nende definitsioonipiirkonnad.

E3 . Selle funktsiooni määratluspiirkond on kogu tasandi punktide komplekt Oeh. Selle funktsiooni vahemik on intervall X; privaatne topelt[,] Y; privaatne topelt[,] Z; // Isoliinide loend avalik nimekiri read ( saada; seada; ) ///

/// Ettevalmistus /// /// Tasemete hulk /// X ala koordinaadid /// Piirkonna Y-koordinaadid /// Võrgu funktsioon public LinesOfLevels(double _levels, double[,] _x, double[,] _y, double[,] _z) ( read = uus loend (_levels.Count()); foreach (double l _levels) ( Lines.Add(new LineLevel(l)); ) X = _x; Y = _y; Z = _z; J = X.GetLength(0); K = X.GetLength(1); ) /// /// Isoliinide arvutamine. /// public void Arvuta() ( for (int j = 0; j< J - 1; j++) for (int k = 0; k < K - 1; k++) { Ceil ir = new Ceil(j, k, X, Y, Z); for (int l = 0; l < Lines.Count(); l++) ir.AddIntoLineLevel(Lines[l]); } } } /// /// Üks isoliin /// avalik klass LineLevel ( // Isoliinipunktide loend punktipaaridena // mis kuuluvad samasse nelinurksesse lahtrisse public List Paars ( get; set; ) // Isoliini tase public double Level ( get; set; ) public LineLevel(double _level) ( Level = _level; Pairs = new List (); } } /// /// Samasse lahtrisse kuuluv isoliinipunktide paar /// avalik klass PairOfPoints ( avalik nimekiri Punktid ( saada; seada; ) avalikud PairOfPoints() ( punktid = uus loend (); } } /// /// Lahtri nurk. /// Indeksid nelinurkse lahtri ühe nurga määramiseks /// sisemine struktuur Dot ( sisemine int j ( get; set; ) interior int k ( get; set; ) interior Dot(int _j, int _k) ( j = _j; k = _k; ) ) /// /// Nelinurkse ruudustiku lahter. Määrab praeguse lahtri. /// Arvutab lahtri isoliini lõigud /// siseklass Ceil ( // Lahtri nurgad privaatne Dot d = new Dot; // Nurkade koordinaatpunktid privaatne Punkt r = uus Punkt; // Kogu ala koordinaatide massiivid private double[,] X; private double[,] Y ; // Massiiv võrgu funktsioon privaatne topelt[,] Z; /// /// Lahtri määratlus /// Määratleb vasak alumine nurk. Indekside otsimise tsüklid peaksid olema mõõtmetest 1 võrra väiksemad J,K massiivid /// /// j - vasaku alumise nurga indeks /// k - vasaku alumise nurga indeks /// Massiiv X /// Massiiv Y /// Ruudustiku funktsioonide massiiv Z sisemine ülempiir(int _j, int _k, double[,] _x, double[,] _y, double[,] _z) ( d = uus punkt(_j, _k); d = uus punkt(_j + 1, _k); d = uus Punkt(_j + 1, _k + 1 ) r = punkt(d); /// Koordinaadipunkti määramine Nurga punkt /// /// Punktistruktuuriga määratud nurk /// privaatne punkt dotPoint(Punkt _d) ( tagasta uus punkt(X[_d.j, _d.k], Y[_d.j, _d.k]); ) /// /// Funktsiooni definitsioon etteantud nurga all /// /// Punktistruktuuriga määratud nurk /// privaatne topeltpunktZ(punkt _d) ( tagastab Z[_d.j, _d.k]; ) /// /// Punktide paari määratlemine, mida nivoojoon läbib /// Lahtri piiridel olevad punktid määratakse lineaarse interpolatsiooniga. /// /// Funktsiooni taseme väärtus /// privaatne PairOfPoints ByLevel(double _l) ( PairOfPoints p = new PairOfPoints(); // Edge 0 if ((dotZ(d) >= _l && dotZ(d)< _l) || (dotZ(d) >_l && punktZ(d)<= _l)) { double t = (_l - dotZ(d)) / (dotZ(d) - dotZ(d)); double x = r.X * t + r.X * (1 - t); double y = r.Y * t + r.Y * (1 - t); p.Points.Add(new Point(x, y)); } // Ребро 1 if ((dotZ(d) >= _l && punktZ(d)< _l) || (dotZ(d) >_l && punktZ(d)<= _l)) { double t = (_l - dotZ(d)) / (dotZ(d) - dotZ(d)); double x = r.X * t + r.X * (1 - t); double y = r.Y * t + r.Y * (1 - t); p.Points.Add(new Point(x, y)); if (p.Points.Count == 2) return p; } // Ребро 2 if ((dotZ(d) >= _l && punktZ(d)< _l) || (dotZ(d) >_l && punktZ(d)<= _l)) { double t = (_l - dotZ(d)) / (dotZ(d) - dotZ(d)); double x = r.X * t + r.X * (1 - t); double y = r.Y * t + r.Y * (1 - t); p.Points.Add(new Point(x, y)); if (p.Points.Count == 2) return p; } // Ребро 3 if ((dotZ(d) >= _l && punktZ(d)< _l) || (dotZ(d) >_l && punktZ(d)<= _l)) { double t = (_l - dotZ(d)) / (dotZ(d) - dotZ(d)); double x = r.X * t + r.X * (1 - t); double y = r.Y * t + r.Y * (1 - t); p.Points.Add(new Point(x, y)); } return p; } /// /// Punktide paari lisamine võrrandi reale /// /// Tasejoon sisemine tühimik AddIntoLineLevel(LineLevel _lL) ( PairOfPoints lp = ByLevel(_lL.Level); if (lp.Points.Count > 0) _lL.Pairs.Add(lp); ) ) )
Klassi töö demonstreerimiseks väike testrakendus WPF, mis loob tasemejooned funktsiooni jaoks kujul: z = x^2 + y^2 10 x 10 ruudustikus.

MainWindow.xaml fail:


Ja koodifail MainWindow.xaml.cs:

Kasutades System.Linq; kasutades System.Windows; kasutades System.Windows.Controls; kasutades System.Windows.Media; kasutades System.Windows.Shapes; nimeruum WpfLinesLevels ( ///

/// MainWindow.xamli interaktsiooniloogika /// public osaline klass MainWindow: Window ( privaatne topelt Xmax; privaatne topelt Xmin; privaatne topelt Ymax; privaatne topelt Ymin; privaatne double xSt; privaatne double ySt; public MainWindow() ( InitializeComponent(); // topeltkuvatavate tasemete määratlemine tasemed = ( 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 ) X = uus topelt[,] Y = uus topelt; // Muutujad füüsiliste koordinaatide teisendamiseks ekraani koordinaatideks Xmin = 0 xSt = 525 / (Xmax - Xmin)< 10; k++) for (int j = 0; j < 10; j++) { X = j; Y = k; Z = j * j + k * k; } // Создание изолиний LinesOfLevels lol = new LinesOfLevels(levels, X, Y, Z); // Их расчет lol.Calculate(); // Построение DrowLevelLine(lol, X, Y); } /// /// Isoliinide moodustamise meetod /// /// Arvutatud objekt isoliinidega /// X-koordinaatide massiiv /// Y-koordinaatide massiiv privaatne void DrowLevelLine(LinesOfLevels lL, double[,] x, double[,] y) ( Canvas can = new Canvas(); foreach (LineLevel l in lL.Lines) ( foreach (PairOfPoints pp in l. Pairs) ( if () pp.Points.Count() == 2) ( Rida pl = uus rida(); pl.Stroke = uus SolidColorBrush(Colors.BlueViolet); pl.X1 = xCalc(pp.Points.X); pl.X2 = xCalc (pp.Punktid.X); pl.Y1 = yCalc(pp.Points.Y); 10, 10, 10, 10); can.VerticalAlignment = VerticalAlignment.Stretch. /// Füüsilise koordinaadi X teisendamine ekraani koordinaadiks /// /// Füüsiline koordinaat X /// Ekraani X koordinaat privaatne double xCalc(double _x) ( return xSt * (_x - Xmin); ) /// /// Füüsilise Y-koordinaadi teisendamine ekraani koordinaadiks /// /// Füüsiline koordinaat Y /// Ekraani Y koordinaat privaatne double yCalc(double _y) ( tagasta ySt * (Ymax - _y); ) ) )
Katsenäite tulemus on näidatud joonisel.