Articole

2.1: Funcții valoroase vectoriale - Matematică

2.1: Funcții valoroase vectoriale - Matematică



We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Definiția unei funcții cu valoare vectorială

A funcție vectorială este o funcție în care domeniul este un subset al numerelor reale și gama este un vector.

În două dimensiuni

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

În trei dimensiuni

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

Veți observa asemănarea puternică cu ecuațiile parametrice. De fapt, există o echivalență între funcțiile cu valoare vectorială și ecuațiile parametrice.

Exemplu ( PageIndex {1} )

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

Pentru a grafica o funcție vectorială, putem grafica funcția definită parametric.

Pentru mai multe informații, faceți clic aici

Exemplu ( PageIndex {2} )

Schițați graficul

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

Soluţie

Desenăm vectori pentru mai multe valori ale lui t și conectăm punctele. Observați că graficul este același cu (y = (x + 1) ^ 2 ).

Limite

Definim limita unei funcții cu valoare vectorială luând limita fiecărei componente. Oficial

Definiție: Limita unei funcții cu valoare vectorială

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

Exemplu ( PageIndex {3} )

Găsiți limita

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

dacă

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

Soluţie

Luăm cele trei limite pe rând

Prima funcție este continuă la (t = 0 ), deci ne putem conecta doar pentru a obține

[e ^ 0 = 1. ]

Pentru a doua funcție, obținem 0/0, deci folosim regula L'Hospital pentru a obține

[ dfrac { cos t} {1}. ]

Acum conectați-vă pentru a obține

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

Pentru componenta (k ^ { text {th}} ), rescriem ca

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

Acum folosește regula L'Hospital pentru a obține

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

Conectarea la 0 dă 0. În cele din urmă, adunarea rezultatelor noastre dă o limită de

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

Continuitate

Definim continuitatea funcțiilor cu valoare vectorială într-un mod similar cu modul în care a fost definită continuitatea funcțiilor cu valoare reală.

Definiție: funcții continue

O funcție vectorială este continuă la (t_0 ) dacă este definită la (t_0 ) și

[ lim_ {t to {t_0}} r (t) = r (t_0). ]

Modul practic de investigare a continuității este de a privi fiecare dintre componente.

Exemplu ( PageIndex {4} )

Determinați unde următoarea funcție vectorială este continuă.

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

Soluţie

Prima componentă este continuă pentru toate valorile de (t ) mai mici de 1, a doua componentă este continuă pentru (t ) diferită de zero, iar a treia componentă este continuă pentru toate numerele reale. Putem concluziona că ( textbf {r} (t) ) este continuu pentru toți (t ) mai puțin de 1 dar nu egal cu 0.

Larry Green (Lake Tahoe Community College)

  • Integrat de Justin Marshall.


Math Insight

Această prezentare generală introduce conceptul de bază al câmpurilor vectoriale în două sau trei dimensiuni.

Câmpuri vectoriale în două dimensiuni

O funcție vectorială $ dlvf: R ^ 2 rightarrow R ^ 2 $ (confuz?) Poate fi vizualizată ca un câmp vector. Într-un punct $ (x, y) $, trasăm valoarea $ dlvf (x, y) $ ca vector cu coada ancorată la $ (x, y) $, cum ar fi în figura următoare.

Repetăm ​​acest lucru pe un set de puncte $ (x, y) $, astfel încât să putem vizualiza întregul câmp vectorial.

De exemplu, luați în considerare funcția $ dlvf (x, y) = (y, -x) $. Calculăm valorile funcției la un set de puncte, cum ar fi 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)>. Sfârșit Plotând fiecare dintre acești vectori ancorați în punctele corespunzătoare, începem să vedem o parte din structura câmpului vectorial.

Dacă am continua să trasăm astfel de vectori în multe puncte, aceștia ar începe să se suprapună și să arate destul de dezordonat. Prin urmare, în mod obișnuit scalăm săgețile în graficele de câmp vector (de obicei, fără a comenta acest fapt). În exemplul de mai jos, am desenat vectorii cu doar 40% lungimea lor reală. Trasând acest câmp de săgeți, vedem că câmpul vector $ dlvf (x, y) = (y, -x) $ pare să se rotească în sensul acelor de ceasornic.

Dacă vizualizăm în acest fel câmpul vector $ dlvf (x, y) = (x, y) $, arată ca o explozie emanată de la origine. În fiecare punct $ (x, y) $, vectorul $ dlvf (x, y) $ puncte cu precizie formează originea. Dacă am trasa săgețile la scară, acestea ar fi atât de lungi cât distanța până la origine, dar din nou, săgețile desenate sunt mai scurte decât valorile reale ale câmpului vector.

Câmpuri vectoriale în trei dimensiuni

De asemenea, putem trasa câmpuri vectoriale în trei dimensiuni, adică pentru funcțiile $ dlvf: R ^ 3 rightarrow R ^ 3 $. Principiul este exact același cu care trasăm vectori de lungime proporțională cu $ dlvf (x, y, z) $ cu coada ancorată în punctul $ (x, y, z) $. În trei dimensiuni, câmpurile vectoriale sunt mai greu de vizualizat. Rotirea graficelor poate face structura tridimensională mai evidentă.

De exemplu, analogul tridimensional al imaginii de mai sus ar fi $ dlvf (x, y, z) = (x, y, z) $. La fel ca în cazul bidimensional, acest câmp vectorial corespunde unei explozii de la origine. În graficul de mai jos, afișăm doar porțiunea câmpului vector cu $ x> 0 $, $ y> 0 $ și $ z> 0 $.

Încărcarea appletului

Extinderea câmpului vectorial tridimensional. Puteți roti graficul cu mouse-ul pentru a da perspectivă.

Câmpul vector $ dlvf (x, y, z) = (y / z, -x / z, 0) $ corespunde unei rotații în trei dimensiuni, unde vectorul se rotește în jurul axei $ z $. Acest câmp vector este similar cu rotația bidimensională de mai sus. În acest caz, deoarece am împărțit la $ z $, magnitudinea câmpului vector scade odată cu creșterea $ z $.

Încărcarea appletului

Un câmp vectorial rotativ tridimensional. Puteți roti graficul cu mouse-ul pentru a da perspectivă.

În general, comportamentul unui câmp vectorial tridimensional nu este atât de ușor de văzut din grafic. De exemplu, structura câmpului vector $ dlvf = (-y, xy, z) $ este mai greu de văzut din grafic.

Încărcarea appletului

Exemplu de câmp vectorial tridimensional. Structura câmpului vector este dificil de vizualizat, dar rotirea graficului cu mouse-ul ajută puțin.


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

În ultimii ani s-a înregistrat o creștere dramatică a datelor textului în limbaj natural, inclusiv pagini web, articole de știri, literatură științifică, e-mailuri, documente de întreprindere și rețele sociale, cum ar fi articole de blog, postări pe forum, recenzii despre produse și tweet-uri. Datele textului sunt unice prin faptul că sunt de obicei generate direct de oameni, mai degrabă decât un sistem informatic sau senzori și, prin urmare, sunt deosebit de valoroase pentru a descoperi cunoștințe despre opiniile și preferințele oamenilor, pe lângă multe alte tipuri de cunoștințe pe care le codificăm în text. Acest curs va acoperi tehnologiile motoarelor de căutare, care joacă un rol important în orice aplicații de extragere a datelor care implică date text din două motive. În primul rând, deși datele brute pot fi mari pentru orice problemă anume, sunt adesea un subset relativ mic de date relevante, iar un motor de căutare este un instrument esențial pentru descoperirea rapidă a unui subset mic de date relevante de text într-un text mare Colectie. În al doilea rând, motoarele de căutare sunt necesare pentru a ajuta analiștii să interpreteze orice tipare descoperite în date, permițându-le să examineze datele relevante din textul original pentru a da sens oricărui tipar descoperit. Veți învăța conceptele de bază, principiile și tehnicile majore în recuperarea textului, care este știința de bază a motoarelor de căutare.

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

Recuperarea informațiilor (IR), recuperarea documentelor, învățarea automată, sisteme de recomandare

Рецензии

O prezentare excelentă a metodelor de recuperare a textului. Acoperire bună a motoarelor de căutare. Un curs mai lung va acoperi mai bine motorul de căutare (amintiți-vă că acesta este un săptămânal de 6 săptămâni)

Excelent! Bine organizat, prezentat cu aptitudine la detalii. Cu siguranță va recomanda și va lua alte unități în această specializare. N nMulțumesc prof

În lecțiile din această săptămână, veți afla cum funcționează în detaliu modelul spațiului vectorial, euristica majoră utilizată în proiectarea unei funcții de recuperare pentru clasarea documentelor în ceea ce privește o interogare și cum să implementați un sistem de recuperare a informațiilor (de exemplu, o căutare motor), inclusiv cum să construiți un index inversat și cum să înscrieți rapid documentele pentru o interogare.

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

ChengXiang Zhai

Текст видео

[SUNET] În această prelegere, vom vorbi despre cum să îmbunătățim instanțierea modelului spațiului vectorial. Aceasta este o discuție continuă a modelului spațiului vectorial. Ne vom concentra asupra modului de a îmbunătăți instanțierea acestui model. În prelegerea anterioară, ați văzut că, cu instanțierea simplă a modelului de spațiu vectorial, putem veni cu o funcție simplă de notare care ne-ar oferi în esență un număr de termeni de interogare unici care se potrivesc în document. De asemenea, am văzut că această funcție are o problemă, așa cum se arată în acest diapozitiv. În special, dacă vă uitați la aceste trei documente, toate vor obține același scor, deoarece se potrivesc celor trei cuvinte de interogare unice. Dar, intuitiv, am dori ca d4 să fie clasat peste d3, iar d2 chiar nu este relevant. Așadar, problema aici este că această funcție nu poate capta următoarele euristici. În primul rând, am dori să acordăm mai mult credit lui d4, deoarece se potrivea cu președinția de mai multe ori decât d3. În al doilea rând, intuitiv, potrivirea prezidențială ar trebui să fie mai importantă decât potrivirea cu, deoarece despre este un cuvânt foarte comun care apare peste tot. Nu are cu adevărat atât de mult conținut. Deci, în această prelegere, să vedem cum putem îmbunătăți modelul pentru a rezolva aceste două probleme. Merită să ne gândim la acest moment de ce avem aceste probleme? Dacă ne uităm înapoi la ipotezele pe care le-am făcut în timp ce instanțiem modelul spațiului vectorial, ne vom da seama că problema provine într-adevăr din unele ipoteze. În special, are de-a face cu modul în care am plasat vectorii în spațiul vectorial. Deci, în mod natural, pentru a rezolva aceste probleme, trebuie să revizuim aceste presupuneri. Poate că va trebui să folosim diferite moduri de a instanția modelul spațiului vectorial. În special, trebuie să plasăm vectorii într-un mod diferit. Deci, să vedem cum putem îmbunătăți acest lucru. Un gând natural este pentru a lua în considerare de mai multe ori un termen în document, ar trebui să luăm în considerare termenul frecvență în loc doar de absență sau prezență. Pentru a lua în considerare diferența dintre un document în care un termen de interogare a apărut de mai multe ori și unul în care termenul de interogare a apărut o singură dată, trebuie să luăm în considerare frecvența termenului, numărul unui termen din document. În cel mai simplu model, am modelat doar prezența și absența unui termen. Am ignorat de câte ori apare un termen într-un document. Deci, să adăugăm acest lucru înapoi. Deci, vom reprezenta apoi un document printr-un vector cu frecvența termenului ca element. Adică, acum elementele atât ale vectorului de interogare cât și ale vectorului de document nu vor fi 0 sau 1s, ci în schimb vor fi numărul de cuvinte din interogare sau din document. Deci, acest lucru ar aduce informații suplimentare despre document, astfel încât acesta poate fi văzut ca o reprezentare mai exactă a documentelor noastre. Deci, acum să vedem cum ar arăta formula dacă schimbăm această reprezentare. Așa cum veți vedea pe acest diapozitiv, vom folosi în continuare produs dot. Și astfel formula arată foarte asemănătoare în formă. De fapt, arată identic. Dar, în interiorul sumei, desigur, x i și y i sunt acum diferite. Acestea sunt acum numărul de cuvinte i din interogare și din document. Acum, în acest moment, vă sugerez, de asemenea, să întrerupeți prelegerea pentru un moment și să vă gândiți la modul în care putem interpreta scorul acestei noi funcții. Face ceva foarte similar cu ceea ce face cel mai simplu VSM. Dar, din cauza schimbării vectorului, acum noul scor are o interpretare diferită. Poți vedea diferența? Și are de-a face cu luarea în considerare a aparițiilor multiple ale aceluiași termen într-un document. Mai important, am dori să știm dacă acest lucru ar rezolva problemele celui mai simplu model de spațiu vectorial. Deci, să vedem din nou acest exemplu. Deci, să presupunem că schimbăm reprezentarea vectorială în termeni vectori de frecvență. Acum, să analizăm din nou aceste trei documente. Vectorul de interogare este același, deoarece toate aceste cuvinte au apărut exact o dată în interogare. Deci, vectorul este încă un vector 01. Și, de fapt, d2 reprezintă, în esență, același mod, deoarece niciunul dintre aceste cuvinte nu a fost repetat de multe ori. Ca rezultat, scorul este, de asemenea, același, totuși 3. Același lucru este valabil și pentru d3 și încă avem un 3. Dar d4 ar fi diferit, deoarece acum prezidențialul a avut loc de două ori aici. Deci, sfârșitul pentru prezidențial în vectorul de document ar fi 2 în loc de 1. Ca rezultat, acum scorul pentru d4 este mai mare. Este acum un 4. Deci, acest lucru înseamnă că, folosind termenul de frecvență, putem clasa acum d4 peste d2 și d3, așa cum am sperat. Deci, acest lucru a rezolvat problema cu d4. Dar putem vedea, de asemenea, că d2 și d3 se filtrează în continuare în același mod. Au încă scoruri identice, deci nu a rezolvat problema aici. Deci, cum putem rezolva această problemă? Intuitiv, am dori să acordăm mai mult credit pentru potrivirea prezidențială decât pentru potrivirea cu. Dar cum putem rezolva problema într-un mod general? Există vreo modalitate de a determina ce cuvânt ar trebui tratat mai important și ce cuvânt poate fi practic ignorat? Despre este un astfel de cuvânt care nu prea conține atât de mult conținut. În esență, putem ignora acest lucru. Uneori numim un astfel de cuvânt un cuvânt stoc. Acestea sunt în general foarte frecvente și apar peste tot. Potrivirea lui nu înseamnă cu adevărat nimic. Dar, din punct de vedere computerizat, cum putem capta asta? Din nou, vă încurajez să vă gândiți puțin la acest lucru. Puteți veni cu vreo abordare statistică pentru a distinge cumva prezidențialul de aproximativ? Acum, dacă vă gândiți la asta pentru o clipă, veți realiza că o diferență este că un cuvânt ca cel de mai sus apare peste tot. Deci, dacă numărați apariția cuvântului în întreaga colecție, atunci vom vedea că aproximativ are o frecvență mult mai mare decât cea prezidențială, care tinde să apară doar în unele documente. Deci, această idee sugerează că am putea folosi cumva statisticile globale ale termenilor sau alte informații pentru a încerca să reducem greutatea elementului de aproximativ într-o reprezentare vectorială a d2. În același timp, sperăm să creștem cumva ponderea prezidențială în vectorul d3. Dacă putem face acest lucru, ne putem aștepta ca d2 să obțină scorul general mai mic de 3, în timp ce d3 va obține scorul peste 3. Atunci am putea clasa d3 pe d2. Deci, cum putem face acest lucru în mod sistematic? Din nou, ne putem baza pe o serie de statistici. Și în acest caz, ideea specială se numește frecvența inversă a documentului. Acum am văzut frecvența documentelor ca un singur semnal utilizat în funcțiile moderne de recuperare. Am discutat acest lucru într-o prelegere anterioară. Iată deci modul specific de utilizare a acestuia. Frecvența documentelor este numărul de documente care conțin un anumit termen. Aici spunem frecvența inversă a documentelor, deoarece vrem de fapt să recompensăm un cuvânt care nu apare în multe documente. Deci, modalitatea de a încorpora acest lucru în reprezentarea noastră vectorială este apoi de a modifica numărul de frecvențe înmulțindu-l cu IDF-ul cuvântului corespunzător, așa cum se arată aici. Dacă putem face asta, atunci putem penaliza cuvintele obișnuite, care au în general un IDF mai mic, și putem recompensa cuvintele rare, care vor avea un IDF mai mare. Deci, mai precis, IDF poate fi definit ca logaritmul lui M + 1 împărțit la k, unde M este numărul total de documente din colecție, k este DF sau frecvența documentului, numărul total de documente care conțin cuvântul W. Acum, dacă trasați această funcție variind k, atunci veți vedea că curba ar arăta astfel. În general, puteți vedea că ar da o valoare mai mare pentru un cuvânt DF scăzut, un cuvânt rar. Puteți vedea, de asemenea, că valoarea maximă a acestei funcții este jurnalul M + 1. Ar fi interesant să vă gândiți care este valoarea minimă pentru această funcție. Acesta ar putea fi un exercițiu interesant. Acum, funcția specifică poate să nu fie la fel de importantă ca euristica pentru a penaliza pur și simplu termenii populari. Dar se pare că această formă de funcție specială a funcționat foarte bine. Acum, dacă există o formă mai bună de funcție aici, este întrebarea de cercetare deschisă. Dar, de asemenea, este clar că, dacă folosim o penalizare liniară, cum ar fi ceea ce se arată aici cu această linie, atunci este posibil să nu fie la fel de rezonabil ca IDF standard. În special, puteți vedea diferența în IDF standard și avem cumva un punct de cotitură aici. După acest punct, vom spune că acești termeni nu sunt în esență foarte utili. Ele pot fi ignorate în mod esențial. Și acest lucru are sens atunci când termenul apare atât de frecvent și să spunem că un termen apare în mai mult de 50% din documente, atunci termenul este puțin probabil foarte important și este practic un termen comun. Nu este foarte important să se potrivească acest cuvânt. Deci, cu IDF standard, îl puteți vedea și se presupune că toate au greutate mică. Nu există nicio diferență. Dar dacă te uiți la penalizarea liniară, în acest moment există încă o diferență. Deci, intuitiv, dorim să ne concentrăm mai mult pe discriminarea cuvintelor DF scăzute, mai degrabă decât pe aceste cuvinte obișnuite. Ei bine, bineînțeles, care funcționează mai bine trebuie totuși validat prin utilizarea setului de date corelat empiric. Și trebuie să folosim utilizatorii pentru a judeca care sunt rezultatele mai bune. Deci, acum să vedem cum poate rezolva problema 2. Deci, acum să analizăm din nou cele două documente. Acum, fără ponderarea IDF înainte, avem doar vectori de frecvență pe termen lung. Dar, cu ponderarea IDF, acum putem ajusta greutatea TF înmulțind cu valoarea IDF. De exemplu, aici putem vedea ajustarea și în special pentru ajustarea aproximativ acolo, folosind valoarea IDF de aproximativ, care este mai mică decât valoarea IDF a prezidențiale. Deci, dacă vă uitați la acestea, IDF va distinge aceste două cuvinte. Ca urmare, ajustarea aici ar fi mai mare, ar face această greutate mai mare. Deci, dacă obținem scoruri cu acești vectori noi, atunci ceea ce s-ar întâmpla este că, desigur, aceștia împărtășesc aceleași ponderi pentru știri și campanii, dar potrivirea dintre aproximativ îi va discrimina. Deci, acum, ca rezultat al ponderii IDF, vom avea d3 pentru a fi clasați peste d2, deoarece se potrivește cu un cuvânt rar, în timp ce d2 se potrivește cu un cuvânt comun. Deci, acest lucru arată că ponderarea IDF poate rezolva problema 2. Deci, cât de eficient este acest model, în general, atunci când am folosit ponderarea TF-IDF? Ei bine, să vedem toate aceste documente pe care le-am văzut înainte. Acestea sunt noile scoruri ale noilor documente. Dar cât de eficientă este această nouă metodă de ponderare și noul punct funcțional de notare? Deci, acum să vedem în general cât de eficientă este această nouă funcție de clasare cu ponderare TF-IDF. Aici arătăm toate cele cinci documente pe care le-am văzut înainte și acestea sunt scorurile lor. Acum putem vedea scorurile pentru primele patru documente aici par a fi destul de rezonabile. Sunt așa cum ne-am așteptat. Cu toate acestea, vedem, de asemenea, o nouă problemă, deoarece acum d5 aici, care nu a avut un scor foarte mare cu cel mai simplu model de spațiu vectorial, are de fapt un scor foarte mare. De fapt, are cel mai mare scor aici. Deci, acest lucru creează o nouă problemă. Acesta este de fapt un fenomen comun în proiectarea funcțiilor de recuperare. Practic, atunci când încercați să remediați o problemă, aveți tendința de a introduce alte probleme. Și de aceea este foarte complicat cum să proiectezi o funcție de clasare eficientă. Și care este cea mai bună funcție de clasare este întrebarea lor deschisă de cercetare. Cercetătorii încă lucrează la asta. Dar în următoarele câteva prelegeri vom vorbi și despre câteva idei suplimentare pentru a îmbunătăți în continuare acest model și a încerca să remediem această problemă. Așadar, pentru a rezuma această prelegere, am vorbit despre cum să îmbunătățim modelul spațiului vectorial și am reușit să îmbunătățim instanțierea modelului spațiului vectorial pe baza ponderării TD-IDF. Deci, îmbunătățirea se datorează în principal plasării vectorului în care acordăm o pondere mare unui termen care a apărut de multe ori într-un document, dar de puține ori în întreaga colecție. Și am văzut că acest model îmbunătățit într-adevăr arată mai bine decât cel mai simplu model de spațiu vectorial. Dar are și câteva probleme. În următoarea prelegere vom analiza cum să abordăm aceste probleme suplimentare. [MUZICĂ]


2.1: Funcții valoroase vectoriale - Matematică

Să începem această secțiune cu o discuție rapidă pentru ce sunt folosiți vectorii. Vectorii sunt folosiți pentru a reprezenta cantități care au atât o magnitudine, cât și o direcție. Exemple bune de mărimi care pot fi reprezentate de vectori sunt forța și viteza. Ambele au o direcție și o magnitudine.

Să luăm în considerare forța pentru o secundă. O forță de 5 Newtoni, care este aplicată într-o anumită direcție, poate fi aplicată în orice punct al spațiului. Cu alte cuvinte, punctul în care aplicăm forța nu schimbă forța însăși. Forțele sunt independente de punctul de aplicare. Pentru a defini o forță, tot ce trebuie să știm este magnitudinea forței și direcția în care este aplicată forța.

Aceeași idee se aplică mai general cu vectorii. Vectorii transmit doar amploare și direcție. Nu transmit nici o informație despre locul în care se aplică cantitatea. Aceasta este o idee importantă de reținut întotdeauna în studiul vectorilor.

Într-un sens grafic, vectorii sunt reprezentați de segmente de linie direcționate. Lungimea segmentului de linie este magnitudinea vectorului, iar direcția segmentului de linie este direcția vectorului. Cu toate acestea, deoarece vectorii nu transmit nicio informație despre locul în care se aplică cantitatea, orice segment de linie direcționată cu aceeași lungime și direcție va reprezenta același vector.

Luați în considerare schița de mai jos.

Fiecare dintre segmentele de linie direcționate din schiță reprezintă același vector. În fiecare caz, vectorul începe într-un anumit punct, apoi se deplasează cu 2 unități spre stânga și cu 5 unități în sus. Notarea pe care o vom folosi pentru acest vector este,

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

și fiecare dintre segmentele de linie direcționate din schiță sunt numite reprezentări a vectorului.

Aveți grijă să deosebiți notația vectorială, ( left langle <- 2,5> right rangle ), de notația pe care o folosim pentru a reprezenta coordonatele punctelor, ( left (<- 2,5> right ) ). Vectorul denotă o mărime și o direcție a unei cantități, în timp ce punctul denotă o locație în spațiu. Deci, nu amestecați notațiile!

O reprezentare a vectorului ( vec v = left langle <,> right rangle ) în spațiul bidimensional este orice segment de linie direcționat, ( overrightarrow ), din punctul (A = left ( dreapta) ) până la punctul (B = left ( , y + > dreapta) ). De asemenea, o reprezentare a vectorului ( vec v = left langle <,,> right rangle ) în spațiul tridimensional este orice segment de linie direcționat, ( overrightarrow ), din punctul (A = left ( dreapta) ) până la punctul (B = left ( , y + , z + > dreapta) ).

Rețineți că există foarte puține diferențe între formulele bidimensionale și cele tridimensionale de mai sus. Pentru a ajunge de la formula tridimensională la formula bidimensională, tot ce am făcut este să scoatem a treia componentă / coordonată. Din această cauză, majoritatea formulelor de aici sunt date doar în versiunea lor tridimensională. Dacă avem nevoie de ele în forma lor bidimensională, putem modifica cu ușurință forma tridimensională.

Există o reprezentare a unui vector care este specială într-un fel. Reprezentarea vectorului ( vec v = left langle <,,> right rangle ) care începe din punctul (A = left (<0,0,0> right) ) și se termină în punctul (B = left (<,,> dreapta) ) se numește vectorul de poziție a punctului ( left (<,,> dreapta) ). Deci, când vorbim despre vectori de poziție, specificăm punctul inițial și final al vectorului.

Vectorii de poziție sunt utili dacă trebuie vreodată să reprezentăm un punct ca vector. După cum vom vedea, există momente în care cu siguranță vom dori să reprezentăm punctele ca vectori. De fapt, vom întâlni subiecte care pot fi realizate numai dacă reprezentăm puncte ca vectori.

În continuare, trebuie să discutăm pe scurt cum să generăm un vector, având în vedere punctele inițiale și finale ale reprezentării. Având în vedere cele două puncte (A = left (<,,> dreapta) ) și (B = stânga (<,,> dreapta) ) vectorul cu reprezentarea ( overrightarrow ) este,

Rețineți că trebuie să fim foarte atenți cu direcția de aici. Vectorul de mai sus este vectorul care începe la (A ) și se termină la (B ). Vectorul care începe la (B ) și se termină la (A ), adică cu reprezentare ( overrightarrow ) este,

Acești doi vectori sunt diferiți și, prin urmare, trebuie să fim atenți întotdeauna la ce punct este punctul de plecare și la ce punct este punctul final. Când determinăm vectorul dintre două puncte, scădem întotdeauna punctul inițial din punctul terminal.

  1. Vectorul de la ( left (<2, - 7,0> right) ) la ( left (<1, - 3, - 5> right) ).
  2. Vectorul de la ( left (<1, - 3, - 5> right) ) la ( left (<2, - 7,0> right) ).
  3. Vectorul de poziție pentru ( left (<- 90,4> right) )

Amintiți-vă că, pentru a construi acest vector, scădem coordonatele punctului de pornire din punctul final.

[ 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> dreapta rangle ]

Observați că singura diferență dintre primele două este că semnele sunt opuse. Această diferență este importantă deoarece această diferență ne spune că cei doi vectori indică în direcții opuse.

Nu prea mult pentru aceasta decât să recunoaștem că vectorul de poziție al unui punct nu este altceva decât un vector cu coordonatele punctului ca componente.

Acum trebuie să începem să discutăm câteva dintre conceptele de bază pe care le vom întâlni ocazional.

Magnitudine

magnitudine, sau lungime, a vectorului ( vec v = left langle <,,> right rangle ) este dat de,

  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 )

Acestea nu sunt prea multe decât să conectați formula.

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

Avem, de asemenea, următorul fapt despre magnitudine.

Acest lucru ar trebui să aibă sens. Deoarece pătrăm toate componentele, singurul mod în care putem obține zero din formulă a fost ca componentele să fie zero în primul rând.

Vector de unitate

Orice vector cu magnitudinea 1, adică ( left | < vec u> right | = 1 ), se numește a vectorul unitar.

Atât al doilea, cât și al patrulea vector au avut o lungime de 1 și deci sunt singurii vectori unitari din primul exemplu.

Vector zero

Vectorul ( vec w = left langle <0,0> right rangle ) pe care l-am văzut în primul exemplu se numește vector zero, deoarece componentele sale sunt toate zero. Vectorii zero sunt adesea notați cu ( vec 0 ). Aveți grijă să deosebiți 0 (numărul) de ( vec 0 ) (vectorul). Numărul 0 indică originea în spațiu, în timp ce vectorul ( vec 0 ) denotă un vector care nu are magnitudine sau direcție.

Vectori standard de bază

Al patrulea vector din al doilea exemplu, ( vec i = left langle <1,0,0> right rangle ), se numește vector de bază standard. În spațiul tridimensional există trei vectori de bază standard,

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

În spațiul bidimensional există doi vectori de bază standard,

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

Rețineți că vectorii de bază standard sunt și vectori unitari.

Cu toate acestea, am terminat destul de mult cu această secțiune, înainte de a trece la următoarea secțiune ar trebui să subliniem că vectorii nu sunt limitați la spațiul bidimensional sau tridimensional. Vectorii pot exista în spațiul n-dimensional general. Notația generală pentru un vector n-dimensional este,

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

și fiecare dintre () Sunt numite componente a vectorului.

Deoarece vom lucra aproape exclusiv cu vectori bidimensionali și tridimensionali în acest curs, majoritatea formulelor vor fi date pentru cazurile două și / sau tridimensionale. Cu toate acestea, majoritatea conceptelor / formulelor vor funcționa cu vectori generali, iar formulele sunt ușor (și în mod natural) modificate pentru vectori n-dimensionali generali. De asemenea, deoarece este mai ușor să vizualizați lucrurile în două dimensiuni, majoritatea figurilor legate de vectori vor fi figuri bidimensionale.

Deci, trebuie să fim atenți să nu ne lăsăm prea închiși în cazurile bidimensionale sau tridimensionale din discuțiile noastre din acest capitol. Vom lucra în aceste dimensiuni fie pentru că este mai ușor de vizualizat situația, fie pentru că restricțiile fizice ale problemelor ne vor impune o dimensiune.


2.1: Funcții valoroase vectoriale - Matematică

În secțiunea anterioară am văzut că dacă știm că câmpul vectorial ( vec F ) este conservator, atunci ( int limits_<< vec F centerdot d , vec r >> ) a fost independent de cale. La rândul său, aceasta înseamnă că putem evalua cu ușurință această integrală de linie, cu condiția să găsim o funcție potențială pentru ( vec F ).

În această secțiune dorim să analizăm două întrebări. În primul rând, având în vedere un câmp vector ( vec F ) există vreo modalitate de a determina dacă este un câmp vector conservator? În al doilea rând, dacă știm că ( vec F ) este un câmp vector conservator, cum putem găsi o funcție potențială pentru câmpul vectorial?

Prima întrebare este ușor de răspuns în acest moment dacă avem un câmp vectorial bidimensional. Pentru câmpurile vectoriale cu dimensiuni superioare, va trebui să așteptăm până la ultima secțiune din acest capitol pentru a răspunde la această întrebare. Acestea fiind spuse, să vedem cum o facem pentru câmpuri vectoriale bidimensionale.

Teorema

Fie ( vec F = P , vec i + Q , vec j ) un câmp vector pe o regiune deschisă și conectată simplu (D ). Atunci dacă (P ) și (Q ) au derivate parțiale de ordinul întâi continue în (D ) și

câmpul vectorial ( vec F ) este conservator.

Să aruncăm o privire la câteva exemple.

  1. ( vec F left ( right) = left (<- yx> right) vec i + left (<- xy> right) vec j )
  2. ( vec F left ( right) = left (<2x << bf>^> + y << bf>^>> dreapta) vec i + left (<<< bf>^> + 2y> right) vec j )

Bine, nu există prea multe la acestea. Tot ce facem este să identificăm (P ) și (Q ) apoi să luăm câteva derivate și să comparăm rezultatele.

În acest caz, aici sunt (P ) și (Q ) și derivatele parțiale corespunzătoare.

Deci, deoarece cele două derivate parțiale nu sunt aceleași, acest câmp vector NU este conservator.

Iată (P ) și (Q ), precum și derivatele corespunzătoare.

Cele două derivate parțiale sunt egale și deci acesta este un câmp vector conservator.

Acum, că știm cum să identificăm dacă un câmp vectorial bidimensional este conservator, trebuie să abordăm cum să găsim o funcție potențială pentru câmpul vectorial. Acesta este de fapt un proces destul de simplu. În primul rând, să presupunem că câmpul vector este conservator și deci știm că o funcție potențială, (f left ( right) ) există. Putem spune atunci că,

Sau stabilind componente egale pe care le avem,

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.

Din aceasta putem vedea că,

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,

Let’s take a quick look at an example.

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). Făcând acest lucru,

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,

[stânga( 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). Făcând acest lucru,

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

[stânga( 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
Departamentul de Matematică
Rajshahi College, Rajshahi

Department of Mathematics, Rajshahi College.


2.1: Vector Valued Functions - Mathematics

POV-Ray often requires you to specify a vector. 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.

Notă: 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. De exemplu

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.

Unde IDENTIFIER is the name of the identifier up to 40 characters long and EXPRESIE is any valid expression which evaluates to a vector value.

Notă: 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.

Notă: 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. For example.

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. De exemplu:

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.

Notă: 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> .

Notă: 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. Sunt:

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. For example.


[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 și Valued/Notable Contributors can close this post by using /lock command

Sunt un robot și această acțiune a fost efectuată automat. Vă rog contactați moderatorii acestui subredit dacă aveți întrebări sau nelămuriri.


2.1: Vector Valued Functions - Mathematics

The toolbox supports vector-valued splines . For example, if you want a spline curba 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))) .


Priveste filmarea: Dopo aver provato questo la matematica NON sarà più la stessa (August 2022).