Raksti

2.1. Vektora vērtētās funkcijas - matemātika


Vektora vērtētas funkcijas definīcija

A vektora vērtēta funkcija ir funkcija, kurā domēns ir reālo skaitļu apakškopa un diapazons ir vektors.

Divās dimensijās

[ textbf {r} (t) = x (t) hat { textbf {i}} + y (t) hat { textbf {j}}. ]

Trīs dimensijās

[ textbf {r} (t) = x (t) hat { textbf {i}} + y (t) hat { textbf {j}} + z (t) hat { textbf {k }}. ]

Jūs pamanīsit lielu līdzību ar parametru vienādojumiem. Faktiski pastāv ekvivalence starp vektoru vērtētām funkcijām un parametru vienādojumiem.

Piemērs ( PageIndex {1} )

[ textbf {r} (t) = 3 cepure { textbf {i}} + t cepure { textbf {j}} + ( sin t) cepure { textbf {k}} ]

Lai uzzīmētu vektoru novērtētu funkciju, varam vienkārši uzzīmēt parametriski definēto funkciju.

Lai iegūtu vairāk informācijas, noklikšķiniet šeit

Piemērs ( PageIndex {2} )

Ieskicējiet diagrammu

[ textbf {r} (t) = (t-1) cepure { textbf {i}} + t ^ 2 cepure { textbf {j}} ]

Risinājums

Mēs uzzīmējam vektorus vairākām t vērtībām un savienojam punktus. Ievērojiet, ka diagramma ir tāda pati kā (y = (x + 1) ^ 2 ).

Limiti

Mēs definējam vektora vērtētās funkcijas robežu, ņemot katra komponenta robežu. Formāli

Definīcija: vektora vērtības funkcija

[ lim_ {t to {t_0}} textbf {r} (t) = ( lim_ {t to {t_0}} x (t)) cepure { textbf {i}} + ( lim_ {t to {t_0}} y (t)) hat { textbf {j}} + ( lim_ {t to {t_0}} z (t)) hat { textbf {k}}. ]

Piemērs ( PageIndex {3} )

Atrodiet robežu

[ lim_ {t uz {0}} r (t) ]

ja

[ textbf {r} = e ^ t hat { textbf {i}} + dfrac { sin t} {t} hat { textbf {j}} + (t ln t) hat { textbf {k}}. ]

Risinājums

Mēs paņemam trīs robežas pa vienam

Pirmā funkcija ir nepārtraukta pie (t = 0 ), tāpēc mēs varam vienkārši pieslēgties, lai iegūtu

[e ^ 0 = 1. ]

Otrajai funkcijai mēs iegūstam 0/0, tāpēc mēs izmantojam L'Hospital likumu

[ dfrac { cos t} {1}. ]

Tagad pievienojiet, lai saņemtu

[ dfrac {1} {1} = 1. ]

Komponentam (k ^ { text {th}} ) mēs pārrakstām kā

[ dfrac { ln t} { frac {1} {t}}. ]

Tagad izmantojiet L'Hospital likumu, lai iegūtu

[ dfrac { frac {1} {t}} {- frac {1} {t ^ 2}} = t. ]

Pievienojot 0, iegūst 0. Visbeidzot, apkopojot mūsu rezultātus, tiek iegūts ierobežojums

[ hat { textbf {i}} + hat { textbf {j}}. ]

Nepārtrauktība

Vektoru vērtēto funkciju nepārtrauktību mēs definējam līdzīgi tam, kā tika definēta reāli vērtēto funkciju nepārtrauktība.

Definīcija: nepārtrauktas funkcijas

Vektora vērtēta funkcija ir nepārtraukta pie (t_0 ), ja tā ir definēta pie (t_0 ) un

[ lim_ {t līdz {t_0}} r (t) = r (t_0). ]

Praktiskais veids, kā izpētīt nepārtrauktību, ir apskatīt katru no komponentiem.

Piemērs ( PageIndex {4} )

Nosakiet, kur šāda vektora vērtētā funkcija ir nepārtraukta.

[ textbf {r} (t) = ln (1-t) cepure { textbf {i}} + dfrac {1} {t} cepure { textbf {j}} + 3t cepure { textbf {k}}. ]

Risinājums

Pirmais komponents ir nepārtraukts visām (t ) vērtībām, kas mazākas par 1, otrais komponents ir nepārtraukts attiecībā uz (t ) nulli, bet trešais komponents ir nepārtraukts visiem reālajiem skaitļiem. Mēs varam secināt, ka ( textbf {r} (t) ) ir nepārtraukts visiem (t ), kas ir mazāki par 1, bet nav vienādi ar 0.

Lerijs Grīns (Taho ezera kopienas koledža)

  • Integrēja Džastins Māršals.


Matemātikas ieskats

Šis pārskats iepazīstina ar vektoru lauku pamatjēdzienu divās vai trīs dimensijās.

Vektoru lauki divās dimensijās

Ar vektoru novērtētu funkciju $ dlvf: R ^ 2 rightarrow R ^ 2 $ (sajaukt?) Var vizualizēt kā vektora lauku. Punktā $ (x, y) $ mēs uzzīmējam $ dlvf (x, y) $ vērtību kā vektoru ar asti, kas noenkurots pie $ (x, y) $, piemēram, šajā attēlā.

Mēs to atkārtojam virs punktu kopas $ (x, y) $, lai mēs varētu vizualizēt visu vektora lauku.

Piemēram, ņemiet vērā funkciju $ dlvf (x, y) = (y, -x) $. Mēs aprēķinām funkcijas vērtības punktu kopā, piemēram, begin dlvf (1,0) & amp = color <# 005000> <(0, -1)>, dlvf (0,1) & amp = color<(1,0)>, dlvf (1,1) & amp = color <# 800000> <(1, -1)>, dlvf (1,2) & amp = color <# 005080 > <(2, -1)>. beigas Uzzīmējot katru no šiem vektoriem, kas noenkuroti attiecīgajos punktos, mēs sākam redzēt daļu no vektora lauka struktūras.

Ja mēs turpinātu šādu vektoru zīmēšanu daudzos punktos, tie sāktu pārklāties un izskatītos diezgan nekārtīgi. Tādējādi mēs parasti mērogojam bultiņas vektora lauka diagrammās (parasti bez šī fakta komentēšanas). Zemāk sniegtajā piemērā mēs vektorus uzzīmējām tikai par 40% no to faktiskā garuma. Uzzīmējot šo bultiņu lauku, mēs redzam, ka vektora lauks $ dlvf (x, y) = (y, -x) $, šķiet, rotē pulksteņrādītāja virzienā.

Ja šādi vizualizējam vektora lauku $ dlvf (x, y) = (x, y) $, tas izskatās kā sprādziens, kas izriet no izcelsmes. Katrā punktā $ (x, y) $ vektors $ dlvf (x, y) $ punkti atrodas tieši prom no sākuma. Ja mēs zīmētu bultiņas mērogā, tās būtu tikpat garas kā attālums līdz sākumam, bet atkal zīmētās bultiņas ir īsākas par faktiskajām vektora lauka vērtībām.

Vektoru lauki trīs dimensijās

Mēs varam arī uzzīmēt vektoru laukus trīs dimensijās, t.i., funkcijām $ dlvf: R ^ 3 rightarrow R ^ 3 $. Princips ir tieši tāds pats, kā mēs uzzīmējam vektorus, kuru garums ir proporcionāls $ dlvf (x, y, z) $ ar asti, kas noenkurota punktā $ (x, y, z) $. Trīs dimensijās vektoru laukus ir grūtāk vizualizēt. Grafiku pagriešana var padarīt trīsdimensiju struktūru redzamāku.

Piemēram, iepriekšminētā attēla trīsdimensiju analogs būtu $ dlvf (x, y, z) = (x, y, z) $. Tāpat kā divdimensiju gadījumā, šis vektora lauks atbilst sprādzienam no sākuma. Zemāk redzamajā diagrammā mēs parādām tikai vektora lauka daļu ar $ x> 0 $, $ y> 0 $ un $ z> 0 $.

Apletu ielāde

Trīsdimensiju vektora lauka paplašināšana. Jūs varat pagriezt grafiku ar peli, lai iegūtu perspektīvu.

Vektora lauks $ dlvf (x, y, z) = (y / z, -x / z, 0) $ atbilst rotācijai trīs dimensijās, kur vektors rotē ap $ z $ -aksi. Šis vektora lauks ir līdzīgs iepriekšminētajai divdimensiju rotācijai. Šajā gadījumā, tā kā mēs dalījāmies ar $ z $, vektora lauka lielums samazinās, palielinoties $ z $.

Apletu ielāde

Trīsdimensiju rotējošs vektora lauks. Jūs varat pagriezt grafiku ar peli, lai iegūtu perspektīvu.

Parasti trīsdimensiju vektora lauka uzvedību nav tik viegli redzēt no diagrammas. Piemēram, vektora lauka $ dlvf = (-y, xy, z) $ struktūru ir grūtāk saskatīt no diagrammas.

Apletu ielāde

Trīsdimensiju vektora lauka piemērs. Vektora lauka struktūru ir grūti vizualizēt, taču grafika pagriešana ar peli nedaudz palīdz.


Текстовый информационный поиск и поисковые системы

Pēdējos gados ir dramatiski pieaudzis dabiskās valodas teksta dati, tostarp tīmekļa lapas, ziņu raksti, zinātniskā literatūra, e-pasts, uzņēmuma dokumenti un sociālie mediji, piemēram, emuāru raksti, foruma ziņas, produktu atsauksmes un tvīti. Teksta dati ir unikāli ar to, ka tos parasti ģenerē tieši cilvēki, nevis datorsistēma vai sensori, un tādējādi tie ir īpaši vērtīgi, lai atklātu zināšanas par cilvēku uzskatiem un vēlmēm, papildus daudzām citām zināšanām, kuras mēs kodējam tekstā. Šis kurss aptvers meklētājprogrammu tehnoloģijas, kurām divu iemeslu dēļ ir svarīga loma visās datu ieguves lietojumprogrammās, kurās tiek izmantoti teksta dati. Pirmkārt, lai gan neapstrādāti dati var būt lieli jebkurai konkrētai problēmai, bieži vien tā ir relatīvi neliela datu apakškopa, un meklētājprogramma ir būtisks rīks, lai ātri atrastu nelielu atbilstošu teksta datu apakšu lielā tekstā kolekcija. Otrkārt, meklētājprogrammas ir nepieciešamas, lai palīdzētu analītiķiem interpretēt visus datos atklātos modeļus, ļaujot viņiem pārbaudīt attiecīgos oriģinālos teksta datus, lai saprastu jebkuru atklāto modeli. Jūs uzzināsiet pamatjēdzienus, principus un galvenos teksta izguves paņēmienus, kas ir meklētājprogrammu pamatā esošā zinātne.

Получаемые навыки

Informācijas iegūšana (IR), dokumentu izguve, mašīnmācīšanās, ieteikumu sistēmas

Рецензии

Lielisks teksta izguves metožu pārskats. Labs meklētājprogrammu pārklājums. Ilgāks kurss labāk aptvers meklētājprogrammu (atcerieties, ka tas ir 6 nedēļas)

Izcili! Labi organizēts, pasniegts ar detaļām. Noteikti ieteiks un izmantos citas vienības šajā specializācijā. N nPaldies prof

Šīs nedēļas & # x27s nodarbībās jūs uzzināsiet, kā detalizēti darbojas vektora kosmosa modelis, galvenās heiristikas, kas tiek izmantotas, veidojot izguves funkciju dokumentu sarindošanai attiecībā uz vaicājumu un kā ieviest informācijas izguves sistēmu (ti, meklēšanas dzinējs), ieskaitot to, kā izveidot apgrieztu indeksu un kā ātri iegūt dokumentus vaicājumam.

Преподаватели

ChengXiang Zhai

Текст видео

[SKAŅA] Šajā lekcijā mēs runāsim par to, kā uzlabot vektoru telpas modeļa instantiāciju. Šī ir turpināta vektoru telpas modeļa diskusija. Mēs koncentrēsimies uz to, kā uzlabot šī modeļa izskatu. Iepriekšējā lekcijā jūs redzējāt, ka ar vienkāršiem vektora telpas modeļa eksemplāriem mēs varam nākt klajā ar vienkāršu vērtēšanas funkciju, kas mums pamatā sniegtu pārskatu par to, cik daudz unikālu vaicājuma terminu ir saskaņoti dokumentā. Mēs arī redzējām, ka šai funkcijai ir problēma, kā parādīts šajā slaidā. Jo īpaši, ja paskatās uz šiem trim dokumentiem, tie visi saņems vienādu punktu skaitu, jo tie atbilst trim unikālajiem vaicājuma vārdiem. Bet intuitīvi mēs vēlētos, lai d4 tiktu ierindots virs d3, un d2 patiešām nav būtisks. Tātad problēma ir tāda, ka šī funkcija nevarēja uztvert šādas heiristikas. Pirmkārt, mēs vēlētos piešķirt vairāk nopelnu d4, jo tas vairākkārt atbilda prezidentam nekā d3. Otrkārt, intuitīvi prezidenta saskaņošanai vajadzētu būt svarīgākai nekā aptuveni, jo aptuveni ir ļoti izplatīts vārds, kas sastopams visur. Tas tiešām nesatur tik daudz satura. Tāpēc šajā lekcijā redzēsim, kā mēs varam uzlabot modeli, lai atrisinātu šīs divas problēmas. Šajā brīdī ir vērts padomāt par to, kāpēc mums ir šīs problēmas? Ja mēs atskatāmies uz pieņēmumiem, kurus esam izdarījuši, vektorizējot kosmosa modeli, mēs saprotam, ka problēma patiešām rodas no dažiem pieņēmumiem. Jo īpaši tas ir saistīts ar to, kā vektorus ievietojām vektoru telpā. Tāpēc dabiski, lai šīs problēmas novērstu, mums ir jāpārskata šie pieņēmumi. Varbūt mums būs jāizmanto dažādi veidi, kā vektorizēt kosmosa modeli. Konkrēti, mums vektori jānovieto citādi. Ļaujiet & # x27s redzēt, kā mēs to varam uzlabot. Viena no dabiskajām domām ir, lai dokumentā ņemtu vērā vairākas termina reizes, mums vajadzētu ņemt vērā termina biežumu, nevis tikai neesamību vai klātbūtni. Lai ņemtu vērā atšķirību starp dokumentu, kurā vaicājuma termins notika vairākas reizes, un tādu, kurā vaicājuma termins notika tikai vienu reizi, mums jāņem vērā termina biežums, termina skaits dokumentā. Vienkāršākajā modelī mēs modelējām tikai termina esamību un neesamību. Mēs ignorējām faktisko reižu skaitu, kad termins parādās dokumentā. Tāpēc ļaujiet & # x27s to atkal pievienot. Tātad mēs pēc tam attēlosim dokumentu ar vektoru, kura elements ir frekvences frekvence. Tas nozīmē, ka tagad gan vaicājuma vektora, gan dokumenta vektora elementi nebūs 0 vai 1, bet tā vietā tie būs vārda skaitļi vaicājumā vai dokumentā. Tātad tas sniegtu papildu informāciju par dokumentu, tāpēc to var uzskatīt par precīzāku mūsu dokumentu attēlojumu. Tāpēc tagad ļaujiet & # x27s redzēt, kāda būtu formula, ja mainīsim šo attēlojumu. Tātad, kā jūs redzēsit šajā slaidā, mēs joprojām izmantojam punktveida produktu. Tāpēc formula pēc formas izskatās ļoti līdzīga. Patiesībā tas izskatās identisks. Bet summā, protams, x i un y i tagad ir atšķirīgi. Tagad tie ir vārda i skaitļi vaicājumā un dokumentā. Tagad šajā brīdī es iesaku arī uz brīdi apturēt lekciju un tikai padomāt par to, kā mēs varētu interpretēt šīs jaunās funkcijas rādītājus. Tas dara kaut ko ļoti līdzīgu tam, ko dara vienkāršākais VSM. Bet vektora maiņas dēļ tagad jaunajam rādītājam ir atšķirīga interpretācija. Vai jūs varat redzēt atšķirību? Un tas ir saistīts ar viena un tā paša termina vairāku gadījumu izskatīšanu dokumentā. Vēl svarīgāk ir tas, ka mēs vēlētos uzzināt, vai tas novērsīs vienkāršākā vektoru telpas modeļa problēmas. Tāpēc apskatīsim šo piemēru vēlreiz. Tātad pieņemsim, ka mēs mainām vektoru attēlojumu uz terminu frekvences vektoriem. Tagad apskatīsim šos trīs dokumentus vēlreiz. Vaicājuma vektors ir vienāds, jo visi šie vārdi vaicājumā notika tieši vienu reizi. Tātad vektors joprojām ir 01 vektors. Un faktiski d2 būtībā arī pārstāv to pašu ceļu, jo neviens no šiem vārdiem nav atkārtots daudzas reizes. Rezultātā arī rezultāts ir vienāds, joprojām 3. Tas pats attiecas uz d3, un mums joprojām ir 3. Bet d4 būtu atšķirīgs, jo tagad prezidenta kārtība šeit notika divas reizes. Tātad prezidenta prezidenta beigas dokumentu vektorā būtu 2, nevis 1. Rezultātā tagad rezultāts d4 ir lielāks. Tas tagad ir # 4. Tātad, izmantojot termina frekvenci, mēs tagad varam ierindot d4 virs d2 un d3, kā cerējām. Tātad tas atrisināja problēmu ar d4. Bet mēs varam arī redzēt, ka d2 un d3 joprojām filtrē vienādi. Viņiem joprojām ir identiski rādītāji, tāpēc tas šeit nenovērsa problēmu. Tātad, kā mēs varam novērst šo problēmu? Intuitīvi mēs vēlētos piešķirt lielāku atzinību par prezidenta atbilstību nekā par. Bet kā mēs varam vispārīgi atrisināt problēmu? Vai ir kāds veids, kā noteikt, kurš vārds jāizturas svarīgāk un kuru vārdu var principā ignorēt? Par ir šāds vārds, kas patiesībā nesatur tik daudz satura. To mēs varam būtībā ignorēt. Mēs dažreiz šādu vārdu saucam par akciju vārdu. Tie parasti ir ļoti bieži, un tie notiek visur. Tās saskaņošana patiesībā neko nenozīmē. Bet kā mēs to varam aprēķināt skaitļošanas veidā? Tāpēc es vēlreiz iesaku nedaudz padomāt par šo. Vai jūs varat izdomāt statistikas pieejas, lai kaut kā atšķirtu prezidenta amatu no aptuveni? Ja kādu brīdi padomājat, jūs sapratīsit, ka viena atšķirība ir tāda, ka tāds vārds kā iepriekš sastopams visur. Tātad, ja jūs saskaitāt vārda sastopamību visā kolekcijā, tad mēs redzēsim, ka apmēram ir daudz biežāk nekā prezidenta, kas mēdz parādīties tikai dažos dokumentos. Tātad šī ideja liek domāt, ka mēs varētu kaut kā izmantot globālo statistikas statistiku vai kādu citu informāciju, lai mēģinātu samazināt aptuveni elementa vērtību d2 vektora attēlojumā. Tajā pašā laikā mēs ceram kaut kā palielināt prezidenta svaru d3 vektorā. Ja mēs to varam izdarīt, tad mēs varam sagaidīt, ka d2 iegūs kopējo punktu skaitu, kas būs mazāks par 3, bet d3 iegūs rezultātu virs 3. Tad mēs varētu klasificēt d3 virs d2. Tātad, kā mēs varam to izdarīt sistemātiski? Atkal mēs varam paļauties uz statistikas skaitīšanu. Un šajā gadījumā konkrēto ideju sauc par reverso dokumenta biežumu. Tagad mēs esam redzējuši dokumentu biežumu kā vienu signālu, ko izmanto mūsdienu izguves funkcijās. Mēs to apspriedām iepriekšējā lekcijā. Tātad šeit ir īpašs tā izmantošanas veids. Dokumenta biežums ir to dokumentu skaits, kuros ir noteikts termins. Šeit mēs sakām apgrieztu dokumentu biežumu, jo mēs patiešām vēlamies apbalvot vārdu, kas nerodas daudzos dokumentos. Tātad veids, kā to iekļaut mūsu vektoru attēlojumā, ir mainīt frekvences skaitu, reizinot to ar attiecīgā vārda IDF, kā parādīts šeit. Ja mēs to varam izdarīt, tad mēs varam sodīt parastos vārdus, kuriem parasti ir mazāks IDF, un apbalvot retus vārdus, kuru IDF būs augstāks. Tātad precīzāk, IDF var definēt kā M + 1 logaritmu dalot ar k, kur M ir kopējais dokumentu skaits kolekcijā, k ir DF vai dokumentu biežums, kopējais dokumentu skaits, kas satur vārdu W. Ja jūs uzzīmējat šo funkciju, mainot k, tad redzēsiet, ka līkne izskatās šādi. Parasti jūs varat redzēt, ka tas sniegtu lielāku vērtību zemam DF vārdam, kas ir reti sastopams vārds. Varat arī redzēt, ka šīs funkcijas maksimālā vērtība ir log + M + 1. Jums būtu interesanti padomāt par to, kāda ir šīs funkcijas minimālā vērtība. Tas varētu būt interesants vingrinājums. Tagad konkrētā funkcija var nebūt tik svarīga kā heiristika, lai vienkārši sodītu populārus terminus. Bet izrādās, ka arī šī konkrētā funkcijas forma ir darbojusies ļoti labi. Tagad atklātais jautājums ir tas, vai šeit ir labāka veida funkcija. Bet ir arī skaidrs, ka, ja mēs izmantojam lineāru sodu, piemēram, to, kas šeit parādīts ar šo rindu, tas var nebūt tik saprātīgs kā standarta IDF. Jo īpaši jūs varat redzēt atšķirību standarta IDF, un mums kaut kā šeit ir pagrieziena punkts. Pēc šī brīža mēs teiksim, ka šie termini būtībā nav pārāk noderīgi. Tos pēc būtības var ignorēt. Un tam ir jēga, ja termins notiek tik bieži un ļaujiet & # x27s teikt, ka termins sastopams vairāk nekā 50% dokumentu, tad maz ticams, ka šis termins ir ļoti svarīgs, un tas būtībā ir kopīgs termins. Nav ļoti svarīgi saskaņot šo vārdu. Tātad, izmantojot standarta IDF, jūs to varat redzēt & # x27s, pieņemot, ka viņiem visiem ir mazs svars. Nav atšķirības. Bet, ja paskatās uz lineāro sodīšanu, šajā brīdī joprojām pastāv zināma atšķirība. Tāpēc intuitīvi mēs vēlamies vairāk koncentrēties uz zemu DF vārdu diskrimināciju, nevis šiem parastajiem vārdiem. Protams, tas, kurš darbojas labāk, joprojām ir jāapstiprina, izmantojot empīriski korelēto datu kopu. Un mums jāizmanto lietotāji, lai spriestu, kuri rezultāti ir labāki. Tagad ļaujiet & # x27s uzzināt, kā tas var atrisināt 2. problēmu. Tagad ļaujiet & # x27s vēlreiz apskatīt abus dokumentus. Tagad bez IDF svēršanas iepriekš mums ir tikai terminu frekvences vektori. Bet ar IDF svēršanu mēs tagad varam pielāgot TF svaru, reizinot ar IDF vērtību. Piemēram, šeit mēs varam redzēt korekciju un it īpaši par korekciju aptuveni par & # x27s, izmantojot IDF vērtību aptuveni, kas ir mazāka par prezidenta IDF vērtību. Tātad, ja paskatās uz šiem, IDF atšķir šos divus vārdus. Rezultātā korekcija šeit būtu lielāka, padarītu šo svaru lielāku. Tātad, ja mēs vērtējam ar šiem jaunajiem vektoriem, tad notiktu tas, ka, protams, viņiem ir vienāds svars ziņām un kampaņai, bet aptuveni atbilstība viņus diskriminēs. Tātad IDF svēršanas rezultātā mums d3 būs jāklasificē virs d2, jo tas atbilda retam vārdam, bet d2 - parastam vārdam. Tātad tas parāda, ka IDF svērums var atrisināt 2. problēmu. Cik efektīvs ir šis modelis kopumā, ja mēs izmantojām TF-IDF svēršanu? Nu, apskatīsim visus šos dokumentus, kurus mēs esam redzējuši iepriekš. Šie ir jauno dokumentu jaunie rādītāji. Bet cik efektīva ir šī jaunā svēršanas metode un jaunais vērtēšanas funkcijas punkts? Tāpēc tagad ļaujiet & # x27s redzēt, cik efektīva ir šī jaunā reitinga funkcija ar TF-IDF svērumu. Šeit mēs parādīsim visus piecus dokumentus, kurus mēs esam redzējuši iepriekš, un tie ir viņu rādītāji. Tagad mēs varam redzēt, ka pirmo četru dokumentu rādītāji šeit ir diezgan pieņemami. Viņi ir tādi, kādus mēs gaidījām. Tomēr mēs redzam arī jaunu problēmu, jo tagad šeit d5, kam nebija ļoti augsts rādītājs ar mūsu vienkāršāko vektoru telpas modeli, tagad faktiski ir ļoti augsts rādītājs. Patiesībā šeit ir visaugstākais rezultāts. Tātad tas rada jaunu problēmu. Tas faktiski ir izplatīta parādība, izstrādājot izguves funkcijas. Būtībā, mēģinot novērst vienu problēmu, jūs mēdzat ieviest citas problēmas. Un tāpēc & # x27s ir ļoti grūts, kā izveidot efektīvu ranžēšanas funkciju. Un kāda ir labākā vērtēšanas funkcija, ir viņu atklātais izpētes jautājums. Pētnieki joprojām strādā pie tā. Bet dažās nākamajās lekcijās mēs runāsim arī par dažām papildu idejām, lai vēl vairāk uzlabotu šo modeli un mēģinātu novērst šo problēmu. Tātad, lai apkopotu šo lekciju, mēs runājām par to, kā uzlabot vektoru telpas modeli, un mums ir jāuzlabo vektora telpas modeļa instantiation, pamatojoties uz TD-IDF svērumu. Tātad uzlabojumi galvenokārt attiecas uz vektora izvietojumu, kur mēs piešķiram lielu nozīmi terminam, kas dokumentā bija daudzkārt, bet reti visā kolekcijā. Un mēs esam redzējuši, ka šis uzlabotais modelis patiešām izskatās labāk nekā vienkāršākais vektoru telpas modelis. Bet tam joprojām ir arī dažas problēmas. Nākamajā lekcijā mēs aplūkosim, kā risināt šīs papildu problēmas. [MŪZIKA]


2.1. Vektora vērtētās funkcijas - matemātika

Sāksim šo sadaļu ar ātru diskusiju par to, kādiem vektoriem tiek izmantoti. Vektorus izmanto, lai attēlotu lielumus, kuriem ir gan lielums, gan virziens. Labi lielumu, kurus var attēlot ar vektoriem, piemēri ir spēks un ātrums. Abiem šiem ir virziens un lielums.

Apskatīsim spēku uz brīdi. Spēks, piemēram, 5 ņūtoni, kas tiek pielietots noteiktā virzienā, var tikt pielietots jebkurā vietas telpā. Citiem vārdiem sakot, punkts, kurā mēs pieliekam spēku, nemaina pašu spēku. Spēki ir neatkarīgi no pielietošanas vietas. Lai noteiktu spēku, viss, kas mums jāzina, ir spēka lielums un virziens, kurā spēks tiek pielietots.

Šī pati ideja vispārīgāk attiecas uz vektoriem. Vektori piešķir tikai lielumu un virzienu. Viņi nesniedz nekādu informāciju par to, kur tiek lietots daudzums. Šī ir svarīga ideja, kas vienmēr jāatceras, pētot vektorus.

Grafiskā nozīmē vektorus attēlo virzīti līniju segmenti. Līnijas segmenta garums ir vektora lielums, un līnijas segmenta virziens ir vektora virziens. Tomēr, tā kā vektori nesniedz nekādu informāciju par to, kur tiek izmantots daudzums, jebkurš virzīts līnijas segments ar tādu pašu garumu un virzienu pārstāv vienu un to pašu vektoru.

Apsveriet skici zemāk.

Katrs no virzītajiem līnijas segmentiem skicē attēlo to pašu vektoru. Katrā gadījumā vektors sākas noteiktā punktā, pēc tam pārvieto 2 vienības pa kreisi un 5 vienības uz augšu. Apzīmējums, ko izmantosim šim vektoram, ir

[ vec v = left langle <- 2,5> right rangle ]

un katrs no skicē norādītajiem līnijas segmentiem tiek izsaukts pārstāvniecības vektora.

Esiet uzmanīgs, lai nošķirtu vektoru apzīmējumu ( left langle <- 2,5> right rangle ) no apzīmējuma, ko izmantojam punktu koordinātu attēlošanai, ( left (<- 2,5> right ) ). Vektors apzīmē lieluma lielumu un virzienu, bet punkts - vietu kosmosā. Tāpēc nejauciet apzīmējumus!

Vektora ( vec v = left langle ,> right rangle ) divdimensiju telpā ir jebkurš virzīts līnijas segments ( overrightarrow ), no punkta (A = pa kreisi ( pa labi) ) līdz punktam (B = pa kreisi ( , y + > pa labi) ). Tāpat vektora ( vec v = left langle ,,> right rangle ) trīsdimensiju telpā ir jebkurš virzīts līnijas segments ( overrightarrow ), no punkta (A = pa kreisi ( pa labi) ) līdz punktam (B = pa kreisi ( , y + , z + > pa labi) ).

Ņemiet vērā, ka starp iepriekšminētajām divdimensiju un trīsdimensiju formulām ir ļoti maz atšķirību. Lai pārietu no trīsdimensiju formulas uz divdimensiju formulu, viss, ko mēs darījām, ir izņemt trešo komponentu / koordinātu. Tāpēc lielākā daļa formulu ir dotas tikai to trīsdimensiju versijās. Ja mums tie ir vajadzīgi divdimensiju formā, mēs varam viegli modificēt trīsdimensiju formu.

Ir viens vektora attēlojums, kas kaut kādā ziņā ir īpašs. Vektora ( vec v = left langle ,,> right rangle ), kas sākas punktā (A = left (<0,0,0> right) ) un beidzas punktā (B = left (<,,> pa labi) ) sauc par pozīcijas vektors punkta ( pa kreisi (<,,> pa labi) ). Tātad, runājot par pozīcijas vektoriem, mēs precizējam vektora sākuma un beigu punktu.

Pozīcijas vektori ir noderīgi, ja mums kādreiz ir nepieciešams attēlot punktu kā vektoru. Kā mēs redzēsim, ir gadījumi, kad mēs noteikti vēlamies attēlot punktus kā vektorus. Patiesībā mēs nonāksim pie tēmām, kuras var izdarīt tikai tad, ja mēs attēlojam punktus kā vektorus.

Tālāk mums īsi jāapspriež, kā ģenerēt vektoru, ņemot vērā sākotnējos un pēdējos attēlojuma punktus. Doti divi punkti (A = pa kreisi (<,,> pa labi) ) un (B = pa kreisi (<,,> pa labi) ) vektors ar attēlojumu ( overrightarrow ) ir,

Ņemiet vērā, ka šeit mums jābūt ļoti uzmanīgiem ar virzienu. Iepriekš minētais vektors ir vektors, kas sākas ar (A ) un beidzas ar (B ). Vektors, kas sākas ar (B ) un beidzas ar (A ), i., ar pārstāvību ( overrightarrow ) ir,

Šie divi vektori ir atšķirīgi, un tāpēc mums vienmēr jāpievērš uzmanība tam, kurš punkts ir sākuma punkts un kāds ir beigu punkts. Nosakot vektoru starp diviem punktiem, mēs vienmēr atņemam sākotnējo punktu no gala punkta.

  1. Vektors no ( pa kreisi (<2, - 7,0> pa labi) ) uz ( pa kreisi (<1, - 3, - 5> pa labi) ).
  2. Vektors no ( pa kreisi (<1, - 3, - 5> pa labi) ) līdz ( pa kreisi (<2, - 7,0> pa labi) ).
  3. Pozīcijas vektors ( pa kreisi (<- 90,4> pa labi) )

Atcerieties, ka, lai izveidotu šo vektoru, mēs no beigu punkta atņemam sākuma punkta koordinātas.

[ left langle <1 - 2, - 3 - left (<- 7> right), - 5 - 0> right rangle = left langle <- 1,4, - 5> right rangle ]

[ left langle <2 - 1, - 7 - left (<- 3> right), 0 - left (<- 5> right)> right rangle = left langle <1, - 4,5> labais rangle ]

Ievērojiet, ka vienīgā atšķirība starp pirmajiem diviem ir apzīmējumi ir pretēji. Šī atšķirība ir svarīga, jo tieši šī atšķirība mums saka, ka divi vektori norāda pretējos virzienos.

Daudz kas cits, kā tikai atzīšana, ka punkta pozīcijas vektors ir nekas cits kā vektors, kura sastāvdaļas ir punkta koordinātas.

Tagad mums jāsāk apspriest dažus pamatjēdzienus, ar kuriem mēs reizēm saskarsies.

Lielums

The lielumsvai garums, no vektora ( vec v = left langle <,,> right rangle ) dod,

  1. ( vec a = left langle <3, - 5,10> right rangle )
  2. ( displaystyle vec u = left langle < frac <1> << sqrt 5 >>, - frac <2> << sqrt 5 >>> right rangle )
  3. ( vec w = left langle <0,0> right rangle )
  4. ( vec i = left langle <1,0,0> right rangle )

Šiem nav pārāk daudz, izņemot savienojumu ar formulu.

b ( displaystyle left | < vec u> right | = sqrt < frac <1> <5> + frac <4> <5>> = sqrt 1 = 1 )

Mums ir arī šāds fakts par lielumu.

Tam vajadzētu būt jēgpilnam. Tā kā mēs kvadrātveida visus komponentus, vienīgais veids, kā mēs varam iegūt nulli no formulas, bija tas, ka komponenti vispirms bija nulle.

Vienības vektors

Jebkurš vektors ar 1 lielumu, i., ( left | < vec u> right | = 1 ), sauc par a vienības vektors.

Gan otrajam, gan ceturtajam vektoram bija 1 garums, un tāpēc tie ir vienīgie vienības vektori no pirmā piemēra.

Nulles vektors

Vektoru ( vec w = left langle <0,0> right rangle ), kuru mēs redzējām pirmajā piemērā, sauc par nulles vektoru, jo visi tā komponenti ir nulle. Nulles vektorus bieži apzīmē ar ( vec 0 ). Esiet uzmanīgs, lai atšķirtu 0 (skaitli) no ( vec 0 ) (vektora). Skaitlis 0 apzīmē izcelsmi telpā, bet vektors ( vec 0 ) apzīmē vektoru, kuram nav ne lieluma, ne virziena.

Standarta bāzes vektori

Ceturto vektoru no otrā piemēra ( vec i = left langle <1,0,0> right rangle ) sauc par standarta bāzes vektors. Trīsdimensiju telpā ir trīs bāzes vektori,

[ vec i = left langle <1,0,0> right rangle hspace <0.25in> vec j = left langle <0.1,0> right rangle hspace <0.25 in> vec k = left langle <0,0,1> right rangle ]

Divdimensiju telpā ir divi standarta vektori,

[ vec i = left langle <1,0> right rangle hspace <0,25in> vec j = left langle <0,1> right rangle ]

Ņemiet vērā, ka standarta bāzes vektori ir arī vienības vektori.

Mēs esam diezgan paveikuši ar šo sadaļu, tomēr, pirms pāriet uz nākamo sadaļu, mums vajadzētu norādīt, ka vektori nav ierobežoti ar divdimensiju vai trīsdimensiju telpu. Vektori var pastāvēt vispārējā n-dimensiju telpā. N-dimensiju vektora vispārīgais apzīmējums ir

[ vec v = left langle <,,, ldots,> right rangle ]

un katrs no () Tiek saukti komponentiem vektora.

Tā kā šajā kursā mēs strādāsim gandrīz tikai ar divu un trīsdimensiju vektoriem, lielākā daļa formulu tiks dota diviem un / vai trīsdimensiju gadījumiem. Tomēr lielākā daļa jēdzienu / formulu darbosies ar vispārējiem vektoriem, un formulas ir viegli (un dabiski) modificētas vispārējiem n-dimensiju vektoriem. Tā kā lietas ir vieglāk vizualizēt divās dimensijās, lielākā daļa ar vektoriem saistīto skaitļu būs divdimensiju figūras.

Tāpēc mums jābūt uzmanīgiem, lai mūsu diskusijas šajā nodaļā netiktu pārāk ieslēgtas divos vai trīs dimensiju gadījumos. Mēs strādāsim šajās dimensijās vai nu tāpēc, ka situāciju ir vieglāk vizualizēt, vai arī tāpēc, ka problēmu fiziski ierobežojumi mūs ietekmēs.


2.1. Vektora vērtētās funkcijas - matemātika

Iepriekšējā sadaļā mēs redzējām, ka, ja mēs zinātu, ka vektora lauks ( vec F ) bija konservatīvs, tad ( int limits_<< vec F centerdot d , vec r >> ) nebija atkarīgs no ceļa. Tas savukārt nozīmē, ka mēs varam viegli novērtēt šo līnijas integrālu, ja vien mēs varam atrast potenciālu funkciju ( vec F ).

Šajā sadaļā mēs vēlamies apskatīt divus jautājumus. Pirmkārt, ņemot vērā vektora lauku ( vec F ), vai ir kāds veids, kā noteikt, vai tas ir konservatīvs vektora lauks? Otrkārt, ja mēs zinām, ka ( vec F ) ir konservatīvs vektora lauks, kā mēs varam atrast potenciālu vektora lauka funkciju?

Uz pirmo jautājumu šajā brīdī ir viegli atbildēt, ja mums ir divdimensiju vektora lauks. Augstāku dimensiju vektoru laukiem, lai atbildētu uz šo jautājumu, mums jāgaida līdz šīs nodaļas pēdējai sadaļai. To sakot, redzēsim, kā mēs to darām divdimensiju vektoru laukiem.

Teorēma

Ļaujiet ( vec F = P , vec i + Q , vec j ) būt vektora laukam uz atvērta un vienkārši savienota reģiona (D ). Tad, ja (P ) un (Q ) ir nepārtraukti pirmās kārtas daļējie atvasinājumi (D ) un

vektora lauks ( vec F ) ir konservatīvs.

Apskatīsim pāris piemērus.

  1. ( vec F pa kreisi ( pa labi) = pa kreisi (<- yx> pa labi) vec i + pa kreisi (<- xy> pa labi) vec j )
  2. ( vec F pa kreisi ( pa labi) = pa kreisi (<2x << bf>^> + y << bf>^>> pa labi) vec i + pa kreisi (<<< bf>^> + 2g> pa labi) vec j )

Labi, to tiešām nav par daudz. Viss, ko mēs darām, ir identificēt (P ) un (Q ), pēc tam ņemt pāris atvasinājumus un salīdzināt rezultātus.

Šajā gadījumā šeit ir (P ) un (Q ) un atbilstošie daļējie atvasinājumi.

Tātad, tā kā divi daļējie atvasinājumi nav vienādi, šis vektora lauks NAV konservatīvs.

Šeit ir (P ) un (Q ), kā arī atbilstošie atvasinājumi.

Abi daļējie atvasinājumi ir vienādi, un tāpēc tas ir konservatīvs vektora lauks.

Tagad, kad mēs zinām, kā noteikt, vai divdimensiju vektora lauks ir konservatīvs, mums jārisina jautājums, kā atrast potenciālu vektora lauka funkciju. Tas faktiski ir diezgan vienkāršs process. Pirmkārt, pieņemsim, ka vektora lauks ir konservatīvs, un tāpēc mēs zinām, ka potenciālā funkcija (f left ( labi) ) pastāv. Tad mēs varam teikt, ka

Vai arī nosakot vienādus komponentus mums,

By integrating each of these with respect to the appropriate variable we can arrive at the following two equations.

We saw this kind of integral briefly at the end of the section on iterated integrals in the previous chapter.

It is usually best to see how we use these two facts to find a potential function in an example or two.

  1. (vec F = left( <2+ x> ight)vec i + left( <2+ y> ight)vec j)
  2. (vec Fleft( ight) = left( <2x<<f>^> + y<<f>^>> ight)vec i + left( <<<f>^> + 2y> ight)vec j)

Let’s first identify (P) and (Q) and then check that the vector field is conservative.

So, the vector field is conservative. Now let’s find the potential function. From the first fact above we know that,

From these we can see that

We can use either of these to get the process started. Recall that we are going to have to be careful with the “constant of integration” which ever integral we choose to use. For this example let’s work with the first integral and so that means that we are asking what function did we differentiate with respect to (x) to get the integrand. This means that the “constant of integration” is going to have to be a function of (y) since any function consisting only of (y) and/or constants will differentiate to zero when taking the partial derivative with respect to (x).

Here is the first integral.

where (hleft( y ight)) is the “constant of integration”.

We now need to determine (hleft( y ight)). This is easier than it might at first appear to be. To get to this point we’ve used the fact that we knew (P), but we will also need to use the fact that we know (Q) to complete the problem. Recall that (Q) is really the derivative of (f) with respect to (y). So, if we differentiate our function with respect to (y) we know what it should be.

So, let’s differentiate (f) (including the (hleft( y ight))) with respect to (y) and set it equal to (Q) since that is what the derivative is supposed to be.

From this we can see that,

Notice that since (h'left( y ight)) is a function only of (y) so if there are any (x)’s in the equation at this point we will know that we’ve made a mistake. At this point finding (hleft( y ight)) is simple.

So, putting this all together we can see that a potential function for the vector field is,

Note that we can always check our work by verifying that ( abla f = vec F). Also note that because the (c) can be anything there are an infinite number of possible potential functions, although they will only vary by an additive constant.

Okay, this one will go a lot faster since we don’t need to go through as much explanation. We’ve already verified that this vector field is conservative in the first set of examples so we won’t bother redoing that.

Let’s start with the following,

This means that we can do either of the following integrals,

While we can do either of these the first integral would be somewhat unpleasant as we would need to do integration by parts on each portion. On the other hand, the second integral is fairly simple since the second term only involves (y)’s and the first term can be done with the substitution (u = xy). So, from the second integral we get,

Notice that this time the “constant of integration” will be a function of (x). If we differentiate this with respect to (x) and set equal to (P) we get,

So, in this case it looks like,

[h'left( x ight) = 0hspace <0.25in>Rightarrow hspace<0.25in>hleft( x ight) = c]

So, in this case the “constant of integration” really was a constant. Sometimes this will happen and sometimes it won’t.

Here is the potential function for this vector field.

Now, as noted above we don’t have a way (yet) of determining if a three-dimensional vector field is conservative or not. However, if we are given that a three-dimensional vector field is conservative finding a potential function is similar to the above process, although the work will be a little more involved.

In this case we will use the fact that,

Apskatīsim piemēru ātri.

Okay, we’ll start off with the following equalities.

To get started we can integrate the first one with respect to (x), the second one with respect to (y), or the third one with respect to (z). Let’s integrate the first one with respect to (x).

Note that this time the “constant of integration” will be a function of both (y) and (z) since differentiating anything of that form with respect to (x) will differentiate to zero.

Now, we can differentiate this with respect to (y) and set it equal to (Q). Doing this gives,

Of course we’ll need to take the partial derivative of the constant of integration since it is a function of two variables. It looks like we’ve now got the following,

[left( ight) = 0hspace <0.5in>Rightarrow hspace<0.5in>gleft( ight) = hleft( z ight)]

Since differentiating (gleft( ight)) with respect to (y) gives zero then (gleft( ight)) could at most be a function of (z). This means that we now know the potential function must be in the following form.

To finish this out all we need to do is differentiate with respect to (z) and set the result equal to (R).

[h'left( z ight) = 0hspace <0.25in>Rightarrow hspace<0.25in>,,,hleft( z ight) = c]

The potential function for this vector field is then,

Note that to keep the work to a minimum we used a fairly simple potential function for this example. It might have been possible to guess what the potential function was based simply on the vector field. However, we should be careful to remember that this usually won’t be the case and often this process is required.

Also, there were several other paths that we could have taken to find the potential function. Each would have gotten us the same result.

Let’s work one more slightly (and only slightly) more complicated example.

Here are the equalities for this vector field.

For this example let’s integrate the third one with respect to (z).

The “constant of integration” for this integration will be a function of both (x) and (y).

Now, we can differentiate this with respect to (x) and set it equal to (P). Doing this gives,

So, it looks like we’ve now got the following,

[left( ight) = 2xcos left( y ight)hspace <0.5in>Rightarrow hspace<0.5in>gleft( ight) = cos left( y ight) + hleft( y ight)]

The potential function for this problem is then,

To finish this out all we need to do is differentiate with respect to (y) and set the result equal to (Q).

[h'left( y ight) = 3hspace <0.25in>Rightarrow hspace<0.25in>,,,hleft( y ight) = 3y + c]

The potential function for this vector field is then,

So, a little more complicated than the others and there are again many different paths that we could have taken to get the answer.

We need to work one final example in this section.

Now, we could use the techniques we discussed when we first looked at line integrals of vector fields however that would be particularly unpleasant solution.

Instead, let’s take advantage of the fact that we know from Example 2a above this vector field is conservative and that a potential function for the vector field is,

Using this we know that integral must be independent of path and so all we need to do is use the theorem from the previous section to do the evaluation.

[vec rleft( 1 ight) = leftlangle < - 2,1> ight angle hspace<0.5in>vec rleft( 0 ight) = leftlangle < - 1,0> ight angle ]


2.1: Vector Valued Functions - Mathematics

cl-tuples - A set of macros for auto-generating optimised vector math routines

A tuple type declaration auto-generates a number of useful functions, macros, and types.

It is best to give an example.

Will declare a tuple of short-floats, arrays of which are initialised with the element 0.0f0 and which has two elements, named x and y.

There will be a struct to represent this type, declared as follows:

i.e. a struct, stored as a vector with elements representing the elements of the tuple, initialised to the initial-element value of the tuple.

Literals can be written via the modified read syntax

It is reccomended literals are written with the above syntax as their expansion will also incorportate type definitions that will be compatible with the following routines that will be generated to be able to manipulate them.

In addition a small convienince reader syntax is implemented - # < x y z >is equivalent to (values x y z) as client code of this library is likely to manipulate many multiple values.

Note that the code cl-tuples generates is implementation agnostic: it is heavily predicated on the assumption that your implementation does a good job of optimising multiple value calls. If this is not the case, then the convienence of the array - related functions are probably the only good reason to use this library.

A two-dimensional vector value is created by MAKE-VECTOR2D :

The type FAST-FLOAT , which is used for all float values, is actually a subtype of SINGLE-FLOAT , so make sure to only use values that fit into that type.

To calculate the length of this vector VECTOR2D-LENGTH* can now be used like this:

By converting the object into a bunch of variables, the macro pipeline keeps transient objects and function calls away. The above form thus expands to something like the following (type declarations and some other code omitted for clarity):

The coordinates of the vector are bound and made available to the length calculation code. If we skip the object creation and go straight the VALUES route, the following is approximately the same as above, without ever creating a vector object.

The reader syntax may be used to the same effect:

(Since the reader syntax and VECTOR2D-VALUES expand directly into a VALUES call, nothing prevents you from using that as well.)

Based on this design more operations are implemented. See the API and the tests for details on vectors, vertexes, matrixes and quaternions.

Defining new operators is done via DEF-TUPLE-OP , e.g.:

This operator accepts three arguments and creates the obvious matrix from them. So lets say, a function has as a conventional argument a vector of three elements. Binding each element to a name and applying the above operator to them gives us the following:

The calculated matrix is converted to an actual object to be returned.

(Adapted from the documentation of cl-quaternion to this API.)

Creating a quaternion from real and imaginary components. The first argument is the real part, and the rest are the imaginary components.

Quaternions can be normalized and magnitudes may be computed.

Quaternion addition and multiplication are supported.

Unit quaternions may be used to represent rotations. Functions are provided for working with quaternions for this purpose.

Vectors can then be transformed using these quaternions.

At the moment you have still to convert an angle-axis representation to either a matrix or a quaternion by yourself to rotate a vector by it.


2nd year honours
Calculus2 … Ещё
Lecture no.-01
Mst.Lailatul kadri
Assistant Professor,Mathematics
Rajshahi College

Department of Mathematics, Rajshahi College.

Honours 4th Year
Partial Differential Equation-243709 … Ещё
Separation of Variables
Professor Md. Shahidul Alam
Head of the department
Matemātikas katedra
Rajshahi College, Rajshahi

Department of Mathematics, Rajshahi College.


2.1: Vector Valued Functions - Mathematics

POV-Ray often requires you to specify a vektors. A vector is a set of related float values. Vectors may be specified using literals, identifiers or functions which return vector values. You may also create very complex vector expressions from combinations of any of these using various familiar operators.

POV-Ray vectors may have from two to five components but the vast majority of vectors have three components. Unless specified otherwise, you should assume that the word "vector" means a three component vector. POV-Ray operates in a 3D x, y, z coordinate system and you will use three component vectors to specify x, y and z values. In some places POV-Ray needs only two coordinates. These are often specified by a 2D vector called an UV vector. Fractal objects use 4D vectors. Color expressions use 5D vectors but allow you to specify 3, 4 or 5 components and use default values for the unspecified components. Unless otherwise noted, all 2, 4 or 5 component vectors work just like 3D vectors but they have a different number of components.

The syntax for combining vector literals into vector expressions is almost identical to the rules for float expressions. In the syntax for vector expressions below, some of the syntax items are defined in the section for float expressions. See "Float Expressions" for those definitions. Detailed explanations of vector-specific issues are given in the following sub-sections.

Piezīme: VECTOR_IDENTIFIERS are identifiers previously declared to have vector values.

2.2.1.4.1 Literals

Vector literals consist of two to five float expressions that are bracketed by angle brackets < and > . The terms are separated by commas. For example here is a typical three component vector:

The commas between components are necessary to keep the program from thinking that the 2nd term is the single float expression 3.2-5.4578 and that there is no 3rd term. If you see an error message such as "Float expected but '>' found instead" then you probably have missed a comma.

Sometimes POV-Ray requires you to specify floats and vectors side-by-side. The rules for vector expressions allow for mixing of vectors with vectors or vectors with floats so commas are required separators whenever an ambiguity might arise. For example <1,2,3>-4 evaluates as a mixed float and vector expression where 4 is subtracted from each component resulting in <-3,-2,-1> . However the comma in <1,2,3>,-4 means this is a vector followed by a float.

Each component may be a full float expression. Piemēram

2.2.1.4.2 Identifiers

Vector identifiers may be declared to make scene files more readable and to parameterize scenes so that changing a single declaration changes many values. An identifier is declared as follows.

Kur IDENTIFIER is the name of the identifier up to 40 characters long and IZTEIKŠANA is any valid expression which evaluates to a vector value.

Piezīme: there should be a semi-colon after the expression in a vector declaration. If omitted, it generates a warning and some macros may not work properly. See " #declare vs. #local" for information on identifier scope.

Piezīme: you invoke a vector identifier by using its name without any angle brackets. As the last example shows, you can re-declare a vector identifier and may use previously declared values in that re-declaration. There are several built-in identifiers which POV-Ray declares for you. See section "Built-in Vector Identifiers" for details.

2.2.1.4.3 Operators

Vector literals, identifiers and functions may also be combined in expressions the same as float values. Operations are performed on a component-by-component basis. For example <1,2,3> + <4,5,6> evaluates the same as <1+4,2+5,3+6> or <5,7,9> . Other operations are done on a similar component-by-component basis. For example (<1,2,3> = <3,2,1>) evaluates to <0,1,0> because the middle components are equal but the others are not. Admittedly this is not very useful but it is consistent with other vector operations.

Conditional expressions such as (C ? A : B) require that C is a float expression but A and B may be vector expressions. The result is that the entire conditional evaluates as a valid vector. For example if Foo and Bar are floats then (Foo < Bar ? <1,2,3> : <5,6,7>) evaluates as the vector <1,2,3> if Foo is less than Bar and evaluates as <5,6,7> otherwise.

You may use the dot operator to extract a single float component from a vector. Suppose the identifier Spot was previously defined as a vector. Then Spot.x is a float value that is the first component of this x, y, z vector. Similarly Spot.y and Spot.z reference the 2nd and 3rd components. If Spot was a two component UV vector you could use Spot.u and Spot.v to extract the first and second component. For a 4D vector use .x , .y , .z , and .t to extract each float component. The dot operator is also used in color expressions which are covered later.

2.2.1.4.4 Operator Promotion

You may use a lone float expression to define a vector whose components are all the same. POV-Ray knows when it needs a vector of a particular type and will promote a float into a vector if need be. For example the POV-Ray scale statement requires a three component vector. If you specify scale 5 then POV-Ray interprets this as scale <5,5,5> which means you want to scale by 5 in every direction.

Versions of POV-Ray prior to 3.0 only allowed such use of a float as a vector in various limited places such as scale and turbulence . However you may now use this trick anywhere. Piemēram.

When promoting a float into a vector of 2, 3, 4 or 5 components, all components are set to the float value, however when promoting a vector of a lower number of components into a higher order vector, all remaining components are set to zero. For example if POV-Ray expects a 4D vector and you specify 9 the result is <9,9,9,9> but if you specify <7,6> the result is <7,6,0,0> .

2.2.1.4.5 Functions

POV-Ray defines a variety of built-in functions for manipulating floats, vectors and strings. Function calls consist of a keyword which specifies the name of the function followed by a parameter list enclosed in parentheses. Parameters are separated by commas. Piemēram:

min_extent(OBJECT_IDENTIFIER), max_extent(OBJECT_IDENTIFIER) . The min_extent and max_extent return the minimum and maximum coordinates of a #declared object's bounding box (Corner1 and Corner2), in effect allowing you to find the dimensions and location of the object.

Piezīme: this is not perfect, in some cases (such as CSG intersections and differences or isosurfaces) the bounding box does not represent the actual dimensions of the object.

trace(OBJECT_IDENTIFIER, A, B, [VECTOR_IDENTIFIER]) . trace helps you finding the exact location of a ray intersecting with an object's surface. It traces a ray beginning at the point A in the direction specified by the vector B . If the ray hits the specified object, this function returns the coordinate where the ray intersected the object. If not, it returns <0,0,0> . If a fourth parameter in the form of a vector identifier is provided, the normal of the object at the intersection point (not including any normal perturbations due to textures) is stored into that vector. If no intersection was found, the normal vector is reset to <0,0,0> .

Piezīme: Checking the normal vector for <0,0,0> is the only reliable way to determine whether an intersection has actually occurred, intersections can and do occur anywhere, including at <0,0,0> .

vnormalize(A) Normalize vector A . Returns a unit length vector that is the same direction as A . Formula is vnormalize(A)=A/vlength(A).

vturbulence(Lambda, Omega, Octaves, A) Turbulence vector at A. Given the x,y,z coordinates of a point in space designated by the vector A, return the turbulence vector for that point based on the numbers given for Lambda, Omega and Octaves. For the meaning of the parameters, check out the Lambda, Omega and Octaves sections.
The amount of turbulence can be controlled by multiplying the turbulence vector by a multiple. The frequency at which the turbulence vector changes can be controlled by multiplying A with a multiple. The turbulence vector returned by the function can be added to the original point A to obtain a turbulated version of the point A. Example :
#declare MyVector = MyVector + Amount * vturbulence(2, 0.5, 6, MyVector * Frequency)

See section "Float Functions" for other functions which are somewhat vector-related but which return floats. In addition to the above built-in functions, you may also define your own functions using the #macro directive. See the section "User Defined Macros" for more details.

2.2.1.4.6 Built-in Constants

There are several built-in vector identifiers. You can use them to specify values or to create expressions but you cannot re-declare them to change their values. Viņi ir:

All built-in vector identifiers never change value. They are defined as though the following lines were at the start of every scene.

The built-in vector identifiers x , y , and z provide much greater readability for your scene files when used in vector expressions. Piemēram.


[Calc III Math] Do vector value functions have an implied value of 1?

TNB frame of a polynomial because my teacher wants to make us suffer (his words, not mine). My vector valued function is r(t)= i + 4tj + 3t 2 k. I don't typically write my vectors in this notation, so that's probably the source of my confusion. Should this read <0, 4t, 3t 2 > or <1, 4t, 3t 2 >?

All top-level comments have to be an answer or follow-up question to the post. All sidetracks should be directed to this comment thread as per Rule 9.

OP un Valued/Notable Contributors can close this post by using /lock command

I am a bot, and this action was performed automatically. Lūdzu contact the moderators of this subreddit if you have any questions or concerns.


2.1: Vector Valued Functions - Mathematics

The toolbox supports vector-valued splines . For example, if you want a spline līkne through given planar points , then the following code defines some data and then creates and plots such a spline curve, using chord-length parameterization and cubic spline interpolation with the not-a-knot end condition.

If you then wanted to know the area enclosed by this curve, you would want to evaluate the integral , with the point on the curve corresponding to the parameter value . For the spline curve in cv just constructed, this can be done exactly in one (somewhat complicated) command:

To explain, y=fncmb(cv,[0 1]) picks out the second component of the curve in cv , Dx=fnder(fncmb(cv,[1 0])) provides the derivative of the first component, and yDx=fncmb(y,'*',Dx) constructs their pointwise product. Then IyDx=fnint(yDx) constructs the indefinite integral of yDx and, finally, diff(fnval(IyDx,fnbrk(cv,'interval'))) evaluates that indefinite integral at the endpoints of the basic interval and then takes the difference of the second from the first value, thus getting the definite integral of yDx over its basic interval. Depending on whether the enclosed area is to the right or to the left as the curve point travels with increasing parameter, the resulting number is either positive or negative.

Further, all the values Y (if any) for which the point (X,Y) lies on the spline curve in cv just constructed can be obtained by the following (somewhat complicated) command :

To explain: x = fncmb(cv,[1 0]) picks out the first component of the curve in cv xmX = fncmb(x,'-',X) translates that component by X t = mean(fnzeros(xmX)) provides all the parameter values for which xmX is zero, i.e., for which the first component of the curve equals X y = fncmb(cv,[0,1]) picks out the second component of the curve in cv and, finally, Y = fnval(y,t) evaluates that second component at those parameter sites at which the first component of the curve in cv equals X .

As another example of the use of vector-valued functions, suppose that you have solved the equations of motion of a particle in some specified force field in the plane, obtaining, at discrete times , the position as well as the velocity stored in the 4-vector , as you would if, in the standard way, you had solved the equivalent first-order system numerically. Then the following statement, which uses cubic Hermite interpolation, will produce a plot of the particle path: fnplt(spapi(augknt(t,4,2),t,reshape(z,2,2*n))) .


Skatīties video: T4 - Trigonometrisko funkciju periodiskums (Novembris 2021).