Tentukan dan bina garisan tahap fungsi dalam talian. Kelas mudah untuk memplot garisan aras bagi fungsi grid 2D

Jika setiap titik X = (x 1, x 2, ... x n) daripada set (X) titik ruang dimensi n dikaitkan dengan satu nilai pembolehubah z yang jelas, maka mereka mengatakan bahawa yang diberikan fungsi n pembolehubah z = f(x 1, x 2, ...x n) = f (X).

Dalam kes ini, pembolehubah x 1, x 2, ... x n dipanggil pembolehubah bebas atau hujah fungsi, z - pembolehubah bersandar, dan simbol f menandakan undang-undang surat menyurat. Set (X) dipanggil domain definisi fungsi (ini ialah subset tertentu ruang n-dimensi).

Sebagai contoh, fungsi z = 1/(x 1 x 2) ialah fungsi dua pembolehubah. Hujahnya ialah pembolehubah x 1 dan x 2, dan z ialah pembolehubah bersandar. Domain definisi ialah keseluruhan satah koordinat, dengan pengecualian garis lurus x 1 = 0 dan x 2 = 0, i.e. tanpa paksi-x dan ordinat. Menggantikan sebarang titik dari domain definisi ke dalam fungsi, mengikut undang-undang surat-menyurat yang kami perolehi nombor tertentu. Sebagai contoh, mengambil titik (2; 5), i.e. x 1 = 2, x 2 = 5, kita dapat
z = 1/(2*5) = 0.1 (iaitu z(2; 5) = 0.1).

Satu fungsi dalam bentuk z = a 1 x 1 + a 2 x 2 + ... + a n x n + b, dengan a 1, a 2,..., dan n, b ialah nombor tetap, dipanggil linear. Ia boleh dianggap sebagai hasil tambah n fungsi linear pembolehubah x 1, x 2, ... x n. Semua fungsi lain dipanggil tak linear.

Sebagai contoh, fungsi z = 1/(x 1 x 2) ialah tak linear, dan fungsi z =
= x 1 + 7x 2 - 5 – linear.

Mana-mana fungsi z = f (X) = f(x 1, x 2, ... x n) boleh dikaitkan dengan n fungsi satu pembolehubah jika kita menetapkan nilai semua pembolehubah kecuali satu.

Sebagai contoh, fungsi tiga pembolehubah z = 1/(x 1 x 2 x 3) boleh dikaitkan dengan tiga fungsi satu pembolehubah. Jika kita betulkan x 2 = a dan x 3 = b, maka fungsi itu akan mengambil bentuk z = 1/(abx 1); jika kita menetapkan x 1 = a dan x 3 = b, maka ia akan mengambil bentuk z = 1/(abx 2); jika kita betulkan x 1 = a dan x 2 = b, maka ia akan mengambil bentuk z = 1/(abx 3). DALAM dalam kes ini ketiga-tiga fungsi mempunyai bentuk yang sama. Ia tidak selalu begitu. Sebagai contoh, jika untuk fungsi dua pembolehubah kita tetapkan x 2 = a, maka ia akan mengambil bentuk z = 5x 1 a, i.e. fungsi kuasa, dan jika kita menetapkan x 1 = a, maka ia akan mengambil bentuk, i.e. fungsi eksponen.

Jadual fungsi dua pembolehubah z = f(x, y) ialah set titik dalam ruang tiga dimensi (x, y, z), aplikasi z yang berkaitan dengan absis x dan ordinat y oleh hubungan fungsi
z = f (x, y). Graf ini mewakili beberapa permukaan dalam ruang tiga dimensi (contohnya, seperti dalam Rajah 5.3).

Ia boleh dibuktikan bahawa jika fungsi adalah linear (iaitu z = ax + by + c), maka grafnya ialah satah dalam ruang tiga dimensi. Contoh lain graf 3D Adalah disyorkan untuk belajar secara bebas menggunakan buku teks Kremer (ms 405-406).

Jika terdapat lebih daripada dua pembolehubah (n pembolehubah), maka jadual fungsi ialah satu set titik dalam (n+1)-ruang dimensi yang koordinat x n+1 dikira mengikut undang-undang fungsi yang diberikan. Graf sedemikian dipanggil hypersurface(Untuk fungsi linearhyperplane), dan ia juga mewakili abstraksi saintifik (tidak mungkin untuk menggambarkannya).

Rajah 5.3 – Graf fungsi dua pembolehubah dalam ruang tiga dimensi

Permukaan aras fungsi n pembolehubah ialah satu set titik dalam ruang dimensi n supaya pada semua titik ini nilai fungsi adalah sama dan sama dengan C. Nombor C itu sendiri dalam kes ini dipanggil tahap.

Biasanya, untuk fungsi yang sama, adalah mungkin untuk membina bilangan permukaan aras yang tidak terhingga (sepadan dengan tahap yang berbeza).

Untuk fungsi dua pembolehubah, permukaan aras mengambil bentuk garisan aras.

Sebagai contoh, pertimbangkan z = 1/(x 1 x 2). Mari kita ambil C = 10, i.e. 1/(x 1 x 2) = 10. Kemudian x 2 = 1/(10x 1), i.e. pada satah garisan aras akan mengambil bentuk yang ditunjukkan dalam Rajah 5.4 sebagai garis pepejal. Mengambil tahap lain, sebagai contoh, C = 5, kita memperoleh garis aras dalam bentuk graf fungsi x 2 = 1/(5x 1) (ditunjukkan dengan garis putus-putus dalam Rajah 5.4).

Rajah 5.4 - Garis aras fungsi z = 1/(x 1 x 2)

Mari kita lihat contoh lain. Biarkan z = 2x 1 + x 2. Mari kita ambil C = 2, i.e. 2x 1 + x 2 = 2. Kemudian x 2 = 2 - 2x 1, i.e. pada satah garis aras akan berbentuk garis lurus, diwakili dalam Rajah 5.5 oleh garis pepejal. Mengambil tahap lain, sebagai contoh, C = 4, kita memperoleh garis aras dalam bentuk garis lurus x 2 = 4 - 2x 1 (ditunjukkan dengan garis putus-putus dalam Rajah 5.5). Garis aras untuk 2x 1 + x 2 = 3 ditunjukkan dalam Rajah 5.5 sebagai garis putus-putus.

Adalah mudah untuk mengesahkan bahawa untuk fungsi linear dua pembolehubah, mana-mana garis aras akan menjadi garis lurus pada satah, dan semua garis aras akan selari antara satu sama lain.

Rajah 5.5 - Garis aras fungsi z = 2x 1 + x 2

Mentakrifkan fungsi beberapa pembolehubah

Apabila mempertimbangkan fungsi satu pembolehubah, kami menunjukkan bahawa apabila mengkaji banyak fenomena seseorang perlu menghadapi fungsi dua atau lebih pembolehubah bebas. Mari kita berikan beberapa contoh.

Contoh 1. Segi empat S segi empat tepat dengan sisi yang panjangnya sama X Dan di, dinyatakan oleh formula S = xy. Setiap pasangan nilai X Dan di sepadan dengan nilai kawasan tertentu S; S ialah fungsi dua pembolehubah.

Contoh 2. Kelantangan V segi empat selari dengan tepi yang panjangnya sama X, di, z, dinyatakan oleh formula V= xyz. Di sini V terdapat fungsi tiga pembolehubah X, di, z.

Contoh 3. Julat R penerbangan peluru dilepaskan pada kelajuan awal v 0 dari pistol yang larasnya condong ke arah mendatar pada sudut  dinyatakan dengan formula
(jika kita mengabaikan rintangan udara). Di sini g– pecutan graviti. Bagi setiap pasangan nilai v 0 dan  formula ini memberikan nilai tertentu R, iaitu R ialah fungsi dua pembolehubah v 0 dan .

Contoh 4.
. Di sini Dan terdapat fungsi empat pembolehubah X, di, z, t.

Definisi 1. Jika setiap pasangan ( X, di) nilai dua pembolehubah bebas antara satu sama lain X Dan di dari beberapa kawasan perubahan mereka D, sepadan dengan nilai kuantiti tertentu z, maka kami berkata demikian z ada fungsi dua pembolehubah tidak bersandar x Dan di, ditakrifkan di kawasan itu D.

Secara simbolik, fungsi dua pembolehubah dilambangkan seperti berikut:

z= f(x, y), z = F(x, y) dan lain-lain.

Fungsi dua pembolehubah boleh ditentukan, contohnya, menggunakan jadual atau secara analitikal - menggunakan formula, seperti yang dilakukan dalam contoh yang dibincangkan di atas. Berdasarkan formula, anda boleh membuat jadual nilai fungsi untuk beberapa pasangan nilai pembolehubah bebas. Jadi, untuk contoh pertama, anda boleh membuat jadual berikut:

S = xy

Dalam jadual ini, di persimpangan baris dan lajur yang sepadan dengan nilai tertentu X Dan di, nilai fungsi yang sepadan dimasukkan S. Jika pergantungan fungsi z= f(x, y) diperoleh hasil daripada pengukuran kuantiti z Apabila mengkaji secara eksperimen sebarang fenomena, jadual diperoleh dengan serta-merta yang menentukan z sebagai fungsi dua pembolehubah. Dalam kes ini, fungsi hanya ditentukan oleh jadual.

Seperti dalam kes satu pembolehubah bebas, fungsi dua pembolehubah tidak wujud, secara amnya, untuk sebarang nilai X Dan di.

Definisi 2. Satu set pasangan ( X, di) nilai X Dan di, di mana fungsi ditentukan z= f(x, y), dipanggil domain definisi atau kawasan kewujudan fungsi ini.

Domain definisi fungsi digambarkan dengan jelas secara geometri. Jika setiap pasangan nilai X Dan di kami akan mewakilinya dengan titik M(X, di) dalam kapal terbang Ohoo, maka domain definisi fungsi akan digambarkan sebagai koleksi mata tertentu pada satah. Kami juga akan memanggil koleksi mata ini sebagai domain definisi fungsi. Khususnya, domain definisi boleh menjadi keseluruhan satah. Dalam perkara berikut, kita akan berurusan terutamanya dengan kawasan yang mewakili bahagian pesawat, dibatasi oleh garisan. Garis pengehad kawasan ini, kami akan hubungi sempadan kawasan-kawasan. Titik wilayah yang tidak terletak di sempadan akan dipanggil dalaman titik kawasan. Kawasan yang hanya terdiri daripada titik dalaman dipanggil buka atau buka. Jika titik sempadan juga tergolong dalam wilayah, maka wilayah itu dipanggil tertutup. Sesuatu kawasan dipanggil bersempadan jika terdapat pemalar sedemikian DENGAN, bahawa jarak mana-mana titik M kawasan dari asal TENTANG kurang DENGAN, iaitu | OM| < DENGAN.

Contoh 5. Menentukan domain semula jadi bagi suatu fungsi

z = 2Xdi.

Ungkapan analitikal 2 Xdi masuk akal untuk sebarang nilai X Dan di. Akibatnya, domain semula jadi bagi definisi fungsi ialah keseluruhan satah Ohoo.

Contoh 6.
.

Untuk z mempunyai nilai sebenar, perlu ada nombor bukan negatif di bawah punca, i.e. X Dan di mesti memenuhi ketaksamaan 1 – X 2 – di 2  0, atau X 2 + di 2  1.

Semua mata M(X, di), yang koordinatnya memenuhi ketaksamaan yang ditunjukkan, terletak dalam bulatan jejari 1 dengan pusat di tempat asal dan pada sempadan bulatan ini.

Contoh 7.
.

Oleh kerana logaritma ditakrifkan hanya untuk nombor positif, maka ketidaksamaan mesti dipenuhi X + di> 0, atau di >  X.

Ini bermakna bahawa domain definisi fungsi z ialah separuh daripada satah yang terletak di atas garisan di =  X, tidak termasuk garis lurus itu sendiri.

Contoh 8. Luas segi tiga S mewakili fungsi asas X dan ketinggian di: S= xy/2.

Domain takrifan fungsi ini ialah domain X  0, di 0 (kerana tapak segi tiga dan ketinggiannya tidak boleh negatif atau sifar). Ambil perhatian bahawa domain takrifan fungsi yang sedang dipertimbangkan tidak bertepatan dengan domain semula jadi takrifan ungkapan analitikal yang mana fungsi ditentukan, memandangkan domain semula jadi takrif ungkapan itu. xy/ 2 adalah jelas keseluruhan pesawat Ohoo.

Takrifan fungsi dua pembolehubah dengan mudah boleh digeneralisasikan kepada kes tiga atau lebih pembolehubah.

Definisi 3. Jika setiap mempertimbangkan set nilai pembolehubah X, di, z, …, u, t sepadan dengan nilai pembolehubah tertentu w, kemudian kami akan menghubungi w fungsi pembolehubah bebas X, di, z, …, u, t dan menulis w= F(X, di, z, …, u, t) atau w= f(X, di, z, …, u, t) dan sebagainya.

Sama seperti untuk fungsi dua pembolehubah, kita boleh bercakap tentang domain definisi fungsi tiga, empat atau lebih pembolehubah.

Jadi, sebagai contoh, untuk fungsi tiga kawasan berubah-ubah Definisi ialah himpunan tiga kali ganda nombor tertentu ( X, di, z). Mari kita segera ambil perhatian bahawa setiap tiga nombor mentakrifkan titik tertentu M(X, di, z) di angkasa Ohooz. Akibatnya, domain definisi fungsi tiga pembolehubah ialah set titik tertentu dalam ruang.

Begitu juga, kita boleh bercakap tentang domain definisi fungsi empat pembolehubah u= f(x, y, z, t) tentang beberapa koleksi nombor empat kali ganda ( x, y, z, t). Walau bagaimanapun, domain definisi fungsi empat atau lebih pembolehubah tidak lagi membenarkan tafsiran geometri yang mudah.

Contoh 2 menunjukkan fungsi tiga pembolehubah yang ditakrifkan untuk semua nilai X, di, z.

Contoh 4 menunjukkan fungsi empat pembolehubah.

Contoh 9. .

Di sini w– fungsi empat pembolehubah X, di, z, Dan, ditakrifkan dengan nilai pembolehubah yang memenuhi hubungan:

Konsep fungsi beberapa pembolehubah

Mari kita perkenalkan konsep fungsi beberapa pembolehubah.

Definisi 1. Biarkan setiap titik M daripada satu set titik ( M) Ruang Euclidean Em mengikut beberapa undang-undang, nombor tertentu dimasukkan ke dalam surat-menyurat Dan daripada set berangka U. Kemudian kita akan mengatakan bahawa pada set ( M) fungsi diberikan dan =f(M). Selain itu, set ( M) Dan U dipanggil, masing-masing, domain definisi (tugasan) dan domain perubahan fungsi f(M).

Seperti yang anda ketahui, fungsi satu pembolehubah di = f(x) digambarkan pada satah sebagai garisan. Dalam kes dua pembolehubah, domain definisi ( M P) fungsi z = f(x, y) mewakili satu set titik pada satah koordinat Ohoo(Gamb. 8.1). koordinat z dipanggil memohon, dan kemudian fungsi itu sendiri digambarkan sebagai permukaan dalam ruang E3 . Begitu juga, fungsi dari T pembolehubah

ditakrifkan pada set ( M) Ruang Euclidean Em, mewakili hypersurface dalam ruang Euclidean Em+1.

Beberapa jenis fungsi beberapa pembolehubah

Mari kita lihat contoh fungsi beberapa pembolehubah dan cari domain definisinya.

E3 . Domain takrifan fungsi ini ialah keseluruhan set titik satah Ooh. Julat fungsi ini ialah selang X; double peribadi [,] Y; double peribadi [,] Z; // Senarai pengasingan Senarai awam Baris ( dapatkan; set; ) ///

/// Persediaan /// /// Susunan peringkat /// Koordinat kawasan X /// Koordinat Y kawasan /// Fungsi grid awam LinesOfLevels(double _levels, double[,] _x, double[,] _y, double[,] _z) ( Lines = new Senarai (_levels.Count()); foreach (ganda l dalam _levels) ( Lines.Add(New LineLevel(l)); ) X = _x; Y = _y; Z = _z; J = X.GetLength(0); K = X.GetLength(1); ) /// /// Pengiraan isolin. /// public void Calculate() ( 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]); } } } /// /// Satu isoline /// kelas awam LineLevel ( // Senarai titik isolin dalam bentuk pasangan mata // kepunyaan senarai awam sel empat segi yang sama Pairs ( get; set; ) // Isoline level public double Level ( get; set; ) public LineLevel(double _level) ( Level = _level; Pasangan = Senarai baharu (); } } /// /// Sepasang titik isolin kepunyaan sel yang sama /// PairOfPoints kelas awam ( Senarai awam Mata ( dapat; set; ) public PairOfPoints() ( Mata = Senarai baharu (); } } /// /// Sudut sel. /// Indeks untuk menentukan satu sudut sel empat sisi /// struct dalaman Dot ( dalaman int j ( get; set; ) dalaman int k ( get; set; ) dalaman Dot(int _j, int _k) ( j = _j; k = _k; ) ) /// /// Sel grid segi empat tepat. Menentukan sel semasa. /// Mengira segmen isolin dalam sel /// kelas dalaman Siling ( // Sudut sel persendirian Dot d = baharu Dot; // Koordinat titik sudut persendirian Titik r = Titik baharu; // Tatasusunan koordinat seluruh kawasan persendirian double[,] X; persendirian double[,] Y ; // Tatasusunan fungsi grid double peribadi [,] Z; /// /// Definisi sel /// Ditakrifkan oleh sudut kiri bawah. Gelung untuk mencari indeks hendaklah 1 kurang daripada dimensi Tatasusunan J,K /// /// j - indeks sudut kiri bawah /// k - indeks sudut kiri bawah /// Susunan X /// Susunan Y /// Tatasusunan fungsi grid Z Siling dalaman(int _j, int _k, double[,] _x, double[,] _y, double[,] _z) ( d = new Dot(_j, _k); d = new Dot(_j + 1, _k); d = Titik baharu(_j + 1, _k + 1); d = Titik baharu(_j, _k + 1); X = _x; Y = _y; Z = _z; r = dotPoint(d); r = dotPoint(d ); r = dotPoint(d); r = dotPoint(d); ) /// /// Penentuan titik koordinat Titik sudut /// /// Sudut ditakrifkan oleh struktur Dot /// private Point dotPoint(Dot _d) ( kembalikan Point baru(X[_d.j, _d.k], Y[_d.j, _d.k]); ) /// /// Definisi fungsi pada sudut tertentu /// /// Sudut ditakrifkan oleh struktur Dot /// titik berganda persendirian(Dot _d) ( kembalikan Z[_d.j, _d.k]; ) /// /// Mentakrifkan sepasang titik yang dilalui garis aras /// Titik pada sempadan sel ditentukan oleh interpolasi linear. /// /// Nilai tahap ciri /// private PairOfPoints ByLevel(double _l) ( PairOfPoints p = new PairOfPoints(); // Tepi 0 jika ((dotZ(d) >= _l && dotZ(d)< _l) || (dotZ(d) >_l && dotZ(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 && dotZ(d)< _l) || (dotZ(d) >_l && dotZ(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 && dotZ(d)< _l) || (dotZ(d) >_l && dotZ(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 && dotZ(d)< _l) || (dotZ(d) >_l && dotZ(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; } /// /// Menambah sepasang titik pada garis persamaan /// /// Garisan aras lompang dalaman AddIntoLineLevel(LineLevel _lL) ( PairOfPoints lp = ByLevel(_lL.Level); if (lp.Points.Count > 0) _lL.Pairs.Add(lp); ) ) )
Untuk menunjukkan kerja kelas, kecil permohonan ujian WPF, yang membina garisan aras untuk fungsi bentuk: z = x^2 + y^2 pada grid 10 kali 10.

Fail MainWindow.xaml:


Dan fail kod MainWindow.xaml.cs:

Menggunakan System.Linq; menggunakan System.Windows; menggunakan System.Windows.Controls; menggunakan System.Windows.Media; menggunakan System.Windows.Shapes; ruang nama WpfLinesLevels ( ///

/// Logik interaksi untuk MainWindow.xaml /// kelas separa awam MainWindow: Tetingkap ( Xmax double peribadi; Xmin double peribadi; Ymax double peribadi; Ymin double peribadi; xSt double peribadi; ySt double peribadi; MainWindow() awam ( InitializeComponent(); // Menentukan tahap yang akan dipaparkan dua kali ganda tahap = ( 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 ); ganda[,] X = ganda baru; ganda[,] Y = ganda baru; ganda[,] Z = berganda baharu; // Pembolehubah untuk menukar koordinat fizikal kepada koordinat skrin Xmax = 10; Xmin = 0; Ymaks = 10; Ymin = 0; xSt = 525 / (Xmaks - Xmin); ySt = 525 / (Ymaks - Ymin); / / Tatasusunan definisi koordinat dan fungsi untuk (int k = 0; k< 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); } /// /// Kaedah untuk membina isolin /// /// Objek dikira dengan isolin /// tatasusunan koordinat X /// tatasusunan koordinat Y private void DrowLevelLine(LinesOfLevels lL, double[,] x, double[,] y) ( Canvas can = new Canvas(); foreach (LineLevel l dalam lL.Line) ( foreach (PairOfPoints pp dalam l.Pairs) ( jika ( pp.Points.Count() == 2) ( Line pl = new Line(); pl.Stroke = new SolidColorBrush(Colors.BlueViolet); pl.X1 = xCalc(pp.Points.X); pl.X2 = xCalc (pp.Points.X); pl.Y1 = yCalc(pp.Points.Y); pl.Y2 = yCalc(pp.Points.Y); can.Children.Add(pl); ) ) ) can.Margin = new Thickness(10, 10, 10, 10); can.VerticalAlignment = VerticalAlignment.Stretch; can.HorizontalAlignment = HorizontalAlignment.Stretch; grid1.Children.Add(can); ) /// /// Menukar koordinat fizikal X kepada koordinat skrin /// /// Koordinat fizikal X /// Skrin X koordinat peribadi double xCalc(double _x) ( kembalikan xSt * (_x - Xmin); ) /// /// Menukar koordinat Y fizikal kepada koordinat skrin /// /// Koordinat fizikal Y /// Skrin Y koordinat private double yCalc(double _y) ( return ySt * (Ymax - _y); ) ) )
Keputusan contoh ujian ditunjukkan dalam rajah.