Press "Enter" to skip to content

Funksiya Gradientini Qanday Topish Mumkin

Berib yuborgan argumentlar soni parametrlar soniga mos kelishi kerak. Bundan tashqari, argument tiplari va parametr tiplari bir biriga mos kelishi kerak kerak.

Dart. Funksiyalar 1-qism

Dastlab funksiya qaytarishi kerak bo’lgan tip ko’rsatiladi. Agar funksiya hech qanday qiymat qaytarmasa, u holda void tipi ishlatiladi:

void chopetish() < print("salom"); /*Bu yerda chopetish funksiyasi hech qanday natija qaytarmaydi, shunchaki ba'zi amallarni bajaradi, shuning uchun funksiya void tipiga kiradi. Buning barchasi salom satrini chop etishdir.*/ >

Undan keyin funksiya nomi( chopetish) keladi, uni nomlash ixtiyoriy va o’zgaruvchilarni nomlash qoidalari amal qiladi.

Funksiya nomidan keyin parametrlar qavs ichida yozish mumkin. Funksiyada parametr bo’lmasligi mumkin, u holda bo’sh qavslar yoziladi.

Undan keyin, < >qavs ichida bajariladigan amallarni o’z ichiga olgan boladi, funksiya tanasi deyiladi.

Ammo funksiya o’zi bajarilmaydi, u bajarilishi uchun uni asosiy( main) funksiyada chakirish kerak bo’ladi.

Funksiya quyidagi shaklda chaqiriladi:

funksiya_nomi(parametilrali);

void main()
void chopetish()

Bu yerda ekranga(consule) salom satri chiqadi.

Agar funksiya bitta ifodadan/amaldan iborat bo’lsa, unda uni quyidagicha qisqartirish mumkin:

[tipi] funksiya_nomi(parametrlar) => bajarilishi kerak bolgan amal

void main()

void chopetish() => print(“salom”);

Parametrlar

  • Funksiya har qanday kerakli pozitsion parametrlarga ega bo’lishi mumkin. Ulardan keyin nomlangan parametrlar yoki ixtiyoriy pozitsion parametrlar bo’lishi mumkin (lekin ikkalasi bir vaqti emas).
  • Parametrlar bittadan kop bo’lsa vergul(,) bilan ajratib yoziladi(param1, param2. )
  • Parametrlarni tipi bolishi kerak, agar tipi yozilmagan holatda uni tipini dartni o’zi aniqlab oladi.

Misol 2 ta sonni yig’indisini hisoblaydigan funksiya tuzamiz:

void main() < sum(5, 9); //14 >void sum(int x, int y)

sum funksiyasi 2ta parametri bor, ular x va y deb nomlanadi va int tipida e’lon qilingan.

Asosiy(main) funksiyada biz sum() funksiyasini chaqirib unga argumentlarni beramiz.

Argumentlar – bu funksiya parametrlari uchun qiymat.

Argumentlar parametrlarga pozitsiya bo’yicha uzatiladi. Ya’ni, 1-argument 1-parametrga, 2-argument 2-parametrga va boshqalar.

Biz chaqirgan funksiyamizga, x parametriga argument sifatida 5 raqamini berdik va y parametriga 9 raqamini berdik.

Berib yuborgan argumentlar soni parametrlar soniga mos kelishi kerak. Bundan tashqari, argument tiplari va parametr tiplari bir biriga mos kelishi kerak kerak.

void main() < personInfo("Ilyos", 23); personInfo("@Dart_uz", 53); >void personInfo(String name, int age)

personInfo funksiyasi 2ta parametrni oladi. Birinchi parametr String tipidagi, ikkinchisi esa int tipidagi. Shuning uchun, funksiyani chaqirganda, unga argument sifatida avval String qiymatni, so’ngra int qiymatni berish kerak.

Funksiyani e’lon qilganimizda biz parametrlarga tip bermasdan e’lon qilishimiz mumkin. Bunda Dart tilini o’zi kelgan argumentga qarab parametrni tipini aniqlab oladi:

void main() < personInfo("Ilyos", 23); personInfo(53, "@Dart_uz"); >void personInfo(name, age)

E’tibor bering, endi name va age parametrlari qaysi tipda bo’lishi ma’lum emas. personInfo-ni 2-chaqiriqda (50, “@Dart_uz”) berib yubordik va Dart name parametrini int parametri sifatida qabul qildi, chunki unga butun son beriladik, age parametriga esa satr berdik.

Ixtiyoriy parametrlar

Biz bir nechta parametrlarni ixtiyoriy qilishimiz mumkin, ya’ni ular uchun hech qanday qiymat bermasdan ketishimiz ham mumkin. Buning uchun parametr to’rtburchaklar [ ] ichida joylashtirish kerak. Ammo buni amalga oshirishda, parametrga hech qanday qiymat berilmaydigan holatda uchun qandaydur qiymat(default qiymat) berishimiz kerak:

void main() < personInfo("Brat", 35); personInfo("Akrabat"); >void personInfo(String name, [int age = 22])

Bunday holda, age parametri ixtiyoriydir. Agar biz unga hech qanday qiymat bermasak, age 22 ga teng bo’ladi:

Ammo, agar ixtiyoriy parametr nullable-tipini anglatsa, ya’ni null qiymatini olishi mumkin bo’lsa, u holda biz u uchun default qiymat bermasdan ketishimiz mumkin – bu holda default qiymat null bo’ladi:

Nomlangan parametrlar

  • Ba’zi API-lar, xususan Flutter vidjet konstruktorlari – talab qilingan bo’lsa ham, faqat nomlangan parametrlardan foydalanadilar.
  • Nomlangan parametrlar ixtiyoriy pozitsion boladi, yani parametr nomini chaqirib unga arugument berishiz mumkin shuning uchun uning pozitsiyasi ahamiyatsiz.

void main() < print("uch mushketyorlar"); pesonInfo(name: "Athos", age: 35); pesonInfo(age: 29, name: "Porthos"); pesonInfo(name: "Aramis"); >void pesonInfo()

Funksiyani belgilashda parametrlar ro’yxati jingalak qavslar ichida yoziladi, agar uning turi nullni(nullable) qo’llab-quvvatlamasa, default qiymat berish kerak!

Funksiyani chaqirilganda parametrning nomi ko’rsatiladi va uning qiymati ikki(:) nuqta bilan ajratiladi (name: “Athos”), biz esa parametrlarni istalgan ketma-ketlikda belgilashimiz mumkin. Masalan, ikkinchi marotaba chaqirganimizda biz avval age parametri uchun qiymatni, so’ngra name parametr uchun (personInfo(age: 29, name: “Porthos”)) qiymatni berdik.

Funksiya Gradientini Qanday Topish Mumkin

Funksiya gradyenti – bu vektor kattaligi, uning topilishi funksiyaning qisman hosilalarini aniqlash bilan bog’liq. Gradient yo’nalishi funktsiya skalar maydonining bir nuqtasidan boshqasiga tez o’sish yo’lini ko’rsatadi. Funksiya gradientini qanday topish mumkin

Ko’rsatmalar

1-qadam

Funksiya gradienti bo’yicha masalani echish uchun differentsial hisoblash usullari qo’llaniladi, ya’ni uchta o’zgaruvchida birinchi darajali qisman hosilalarni topish. Funktsiyaning o’zi va uning barcha qisman hosilalari funktsiya sohasidagi uzluksizlik xususiyatiga ega deb taxmin qilinadi.

2-qadam

Gradient – bu vektor, uning yo’nalishi F funktsiyasining eng tez o’sish yo’nalishini bildiradi, buning uchun grafada vektorning uchlari bo’lgan ikkita M0 va M1 nuqta tanlangan. Gradientning kattaligi funktsiyaning M0 nuqtadan M1 nuqtaga o’sish tezligiga teng.

3-qadam

Ushbu vektorning barcha nuqtalarida funktsiyani farqlash mumkin, shuning uchun vektorning koordinata o’qlaridagi proektsiyalari uning barcha qisman hosilalari hisoblanadi. U holda gradient formulasi quyidagicha ko’rinadi: grad = (∂F / ∂x) • i + (∂F / ∂y) • j + (∂F / ∂z) • k, bu erda i, j, k koordinatalar birlik vektori. Boshqacha qilib aytganda, funktsiyaning gradyenti bu koordinatalari grad F = (∂F / ∂x, ∂F / ∂y, ∂F / ∂z) qismli hosilalari bo’lgan vektor.

4-qadam

Misol 1. F = sin (x • z²) / y funktsiya berilsin. Uning gradyanini nuqtada topish kerak (π / 6, 1/4, 1).

5-qadam

Yechish: Har bir o’zgaruvchi uchun qisman hosilalarini aniqlang: F’_x = 1 / y • cos (x • z²) • z²; F’_y = sin (x • z²) • (-1) • 1 / (y²); F ‘_z = 1 / y • cos (x • z²) • 2 • x • z.

6-qadam

Nuqtaning ma’lum koordinatalarini ulang: F’_x = 4 • cos (π / 6) = 2 • -3; F’_y = sin (π / 6) • (-1) • 16 = -8; F’_z = 4 • cos (π / 6) • 2 • π / 6 = 2 • π / √3.

7-qadam

Funktsiya gradiyenti formulasini qo’llang: grad F = 2 • -3 • i – 8 • j + 2 • π / √3 • k.

8-qadam

2-misol. (1, 2, 1) nuqtada F = y • arctg (z / x) funktsiya gradiyenti koordinatalarini toping.

9-qadam

Qaror. F’_x = 0 • arctg (z / x) + y • (arctg (z / x)) ‘_ x = y • 1 / (1 + (z / x) ²) • (-z / x²) = -y • z / (x² • (1 + (z / x) ²)) = -1; F’_y = 1 • arctg (z / x) = arctg 1 = π / 4; F’_z = 0 • arctg (z / x) + y • (arctg (z / x)) ‘_ z = y • 1 / (1 + (z / x) ²) • 1 / x = y / (x • (1 + (z) / x) ²)) = 1. grad = (-1, π / 4, 1).

Java Funksiya

Funksiya – bu biror vazifani bajarish usuli. Java dasturlash tilida, funksiya biror maxsus vazifa yoki operatsiyani bajarishga mo’ljallangan kod va ifodalar jamlanmasi. Funksiya koddan qayta foydalanish imkoniyatini beradi. Funksiya bir marta yoziladi va ko’p marotaba ishlatiladi. Shuningdek, bu kodni oson o’zgartirish va oson o’qishga yordam beradi.

Java dasturlash tilida funksiyalar 2 turga bo’linadi:

  • Oldindan yaratilgan funksiyalar (Sistema funksiyalari).
  • Foydalanuvchi tomonidan yaratilgan funksiyalar.

Sistema funksiyalari Java kutubxonalarida allaqachon yozilgan va foydalanishga tayyor funksiyalar hisoblanadi. Masalan, String sinfida tayyor funksiyalarga length(), equals(), compareTo() larni yoki Math sinfidagi sqrt(), abs(), pow() funksiyalarini misol qilishimiz mumkin. Quyidagi kodga e’tibor bering va unda nechta funksiya qatnashganini topishga harakat qiling:

public static void main(String[] args) < // using the max() method of Math class System.out.print("The maximum number is: " + Math.max(9,7)); >

Demak yuqoridagi kodda 3 ta oldindan yaratilgan funksiyalar qatnashgan:

  • main() funksiyasi barcha Java dasturlarining kirish funksiyasi hisoblanadi. JVM kodni ushbu funksiyani o’qishdan boshlaydi.
  • print() funksiyasi PrintStream sinfining xabarlarni konsulga chop etish uchun foydalaniladigan funksiyasi.
  • max() funksiyasi Math sinfining ikkita sondan kattasini aniqlab beruvchi funksiyasi.

Java dasturlash tilida ko’plab sistema funksiyalari mavjud bo’lsa ham, foydalanuvchi o’zga xos biror vazifani bajaruvchi funksiyaga ehtiyoj sezadi. Demak, biz o’zimiz uchun maxsus funksiyalar yaratishimiz ham mumkin. Metod yaratish uchun quyidagiga o’xshash sintaksis yoziladi:

public class MeningSinfim < static void meningFunksiyam() < // funksiya tanasi > >

Bu yerda meningFunksiyam bu metod nomi, static kalit so’zi funksiyaning MeningSinfim nomli sinfga tegishli ekanini, void esa funksiya hech qanday qiymat qaytarmasligini anglatadi. Demak ushbu funksiyaga murojaat qilish uchun funksiya nomini () bilan yozish kerak bo’ladi. Masalan quyidagicha:

public class MeningSinfim < static void meningFunksiyam() < System.out.println("Funksiya chaqirildi!"); > public static void main(String[] args) < myMethod(); > >

Konsulga “Funksiya chaqirildi!” xabari chop etiladi.

Shuningdek funksiyalarni yana 2 turga bo’lishimiz mumkin: static va namuna funksiyalar.

Statik funksiyalar

Statik funksiyalar static kalit so’zi bilan yaratiladi va u shuni anglatadiki, ushbu funksiya sinfning obyektlariga emas, aynan sinfning o’ziga tegishli. Statik funksiyaning afzalligi shundaki, biz ushbu funksiyadan sinfdan obyekt olmasdan foydalanishimiz mumkin. Shuningdek, static funksiyalar static o’zgaruvchilarga murojaat qila oladi va hattoki ularning qiymati o’zgartirishi mumkin. Static funksiyaga eng zo’r misol bu main() funksiyasi:

public class Sinf < public static void main(String[] args) < show(); > static void show() < System.out.println("Statik funksiyalar uchun namuna."); > >

Namuna funksiyalar

Statik sifatida yaratilmagan har qanday funksiya namuna funksiya hisoblanadi va bunday funksiyalarga murojaat qilish uchun sinfdan obyekt olish shart. Quyidagi misolga e’tibor bering.

public class NamunaSinf < public static void main(String[] args) < NamunaSinf namunaSinf = new NamunaSinf(); System.out.println("3 sinf yig'indisi: " + namunaSinf.yigindi(4, 5, 6)); > private int yigindi(int a, int b, int c)< int sum = a + b + c; return sum; > >

Funksiyalar haqida o’rganishni keyingi darsimizda davom ettiramiz

Java

Java bo’yicha darsliklar va ko’nikmalar.

Comments are closed, but trackbacks and pingbacks are open.