Răspuns :
Răspuns:
Explicație:
Codul prezentat mai jos nu este chiar complet. De exemplu, daca doriti , puteti schimba intervalul de definire al plot-ului (unde este comentat 'plot pt k curent' ) .. eu l-am luat pe ramuri, dar pentru k < 12 , nu proneste din 0, ci de la -inf (oricum are comportament asimptotic stabil functia, apoi explodeaza la un punct, se aseamana cu functia dirac)) dar nu este corect sa-l iau de la 0.. Depinde de functie aici...Daca spre exemplu as fi avut o functie doar din arctg , dupa ce as fi definit functia anonymous si as fi vrut sa fac plot, avea sens sa-l plotez pe 0,pi ( ceva de genul fplot(f,[0,pi]) )
Acum voi explica codul , deoarece ati spus ca vreti doar model, nu si rezolvarea efectiva a problemei prezentate:
Incepem prin a defini variabilele de stare pentru input / initializari...putem hardcoda k / x direct, fara a fi nevoie sa cerem functia "input()" din biblioteca matlab.
Apoi studiem domeniul de definitie al functiei: Observam ca se imparte in 2 ramuri, pt k < 12 si k>= 12.
Acum..exista o varietate de moduri prin care putem declara functii in matlab. Cele mai utilizate sunt functiile 'anonymous' , care se folosesc de semnul "@" si inregistreaza in memorie la adresa lui 'f' cu variabila 'k'(variabila e mereu ce urmeaza dupa @) functia denumita.
De exemplu: f = @(x) (x+1), este echivalentul functiei pe hartie f(x) = x+1.
//////
Atentie, daca doriti calcul avansat si aveti nevoie de o functie cu 2 variabile, modul corect de definire este:
1) cream un vector coloana X in care bagam variabilele functiei x1,x2,...,xn : X = [x1;x2;...;xn]
2) definim cine sunt x1,...,xn (exemplu: x1 = 5 ; x2 = 6)
3) definim functia f = @(x) x(1) + x(2) => aceasta va lua primul element din vectorul coloana X si il va insuma cu cel de-al 2-lea din acelasi vector, elementele acestui vector fiind variabilele respective
///////
Dupa ce am definit corect functiile si am impartit pe ramuri, vom plota f(k), f(2k) , ... f(10 * k), intr-un for unde indicele i reprezinta argumentul functiei inmultit cu k => f(i*k)
a) K < 12 => count = 1 ; CopieK = k ; for i = 1 : 10 {inmultesc k cu ct, afisez cu fplot(f , domeniul(unde la noi domeniul este [0,k_actualizat]) ) ; resetez k sa il am pe cel original, cresc counterul ca la pasul urmator sa am 2*k }
b) analog ca la a, doar ca aici se schimba functia, si domeniul de definitie
In cazul in care nu se vede codul complet in screenshot, il voi scrie si aici:
prompt='Baga k : '
k = input(prompt)
if k < 12
f = @(k) atan((k + 1)) + ((k - 9)^7) + sqrt((k - 7)) + 3^((k + 2));
end
if k >= 12
f = @(k) acot(k+1) + k^9 + 5^(k+8);
end
if k < 12
ct=1;
korig = k;
for i = 1 : 10
k=k*ct; % multiplica cu pas
test = k ;
fplot(f,[0,k]) % plot pentru k curent
k = korig; %reset k
ct=ct+1; % creste pas
end
end
if k >= 12
ct=1;
korig = k;
for i = 1 : 10
k=k*ct; % multiplica cu pas
test = k ;
fplot(f,[12,k]) % plot pentru k curent
k = korig; %reset k
ct=ct+1; % creste pas
end
end
Sper sa fi fost de ajutor cat de cat... Noroc
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.