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 pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!