Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum sterg mails din Promotions

Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Dupa 20 ani de facultate, am uita...
 Mobile.de ofera imprumut de bani ...

problema test grila

Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...
 Jante noi shitbox

Trinitas TV 4K

Dacia 1316 cu 6 usi ...

Frecventa modificata radio
 Un nou pericol pt batrani

Ar trebui sa vindem imobiliarele ...

Dupa renuntarea la aparat dentar

pelerinaj in Balcik
 

[MATLAB][TEMA] radacinile ecuatiei

  • Please log in to reply
5 replies to this topic

#1
bogdan_boss

bogdan_boss

    Senior Member

  • Grup: Banned
  • Posts: 3,456
  • Înscris: 08.02.2010
Pentru foarte multi pare ceva banal, dar exercitiul suna cam asa:

Creati fisierul functie ecuatie.m  care are ca parametrii de intrare trei numere reale (a = 1, b = 6.5, c = 13) care calculeaza radacinile ecuatiei de ordinul a?x2+ b?x + c = 0. Functia trebuie sa traseze graficul functiei f(x) = a?x2+ b?x + c, punand în evidenta radacinile si maximul sau minimul functiei.

stiu ca xm=-b/2*a si ym=-(b^2-4*a*c)/(4*a);

Am intrat in matlab editor si am scris asta:

function f=ec2 (a,b,c)
f=x^2+6.5*x+13

am salvat, am intrat inapoi in workspace si am tastat asta:

if a==0
	disp('Parametrul a trebuie sa fie nenul');
elseif b^2-4*a*c<0
	disp('Ecuatia are radacini complexe');
else
x1=(-b+sqrt(b^2-4*a*c))/2*a;
x2=(-b-sqrt(b^2-4*a*c))/2*a;

de aici nu mai stiu nimic, am incercat o alta sursa, de la un coleg, nici lui nu ii da, si nu stiu ce sa fac, pentru ca imi arata asta in aceasta situatie:

">> disp (x1,x2)
??? Undefined function or variable 'x1'."

multumesc. :console: :confuzzled:

edit: stiu sigur ca sunt destui care sa stie cum se poate ajunge la rezolvarea acestei situatii, numai ca dupa experienta nefericita cu acel coleg, am incredere doar daca si programul imi spune ca este corect, asa ca daca se poate sa testati daca merge intr-adevar sau nu. :-s

Edited by bogdan_boss, 18 May 2010 - 15:05.


#2
bbogdanmircea

bbogdanmircea

    Senior Member

  • Grup: Senior Members
  • Posts: 3,254
  • Înscris: 14.02.2007
function ec2(a,b,c)
if (a==0)    
    disp('Parametrul a trebuie sa fie nenul');
elseif (b^2-4*a*c<0)    
    disp('Ecuatia are radacini complexe');
else
    
    x1=(-b+sqrt(b^2-4*a*c))/(2*a)
    x2=(-b-sqrt(b^2-4*a*c))/(2*a)
    xm=-b/(2*a)
    ym=-(b^2-4*a*c)/(4*a)
    
    if (x1<x2)
        t=x1-10:0.1:x2+10
    else
        t=x2-10:0.1:x1+10
    end
            
    y=t;
    
    for i=1:length(t)
    y(i)=a*t(i)^2+b*t(i)+c;
    end
    plot(t,y,'r',x1,0,'bo',x2,0,'bo',xm,ym,'go');
    grid on;

end

iar in workspace apelezi ec2(a,b,c)

#3
bogdan_boss

bogdan_boss

    Senior Member

  • Grup: Banned
  • Posts: 3,456
  • Înscris: 08.02.2010
deci care introduc primul in program si unde? in editor, workspace?
adica cu ce incep si in ce loc, ca nu stiu, parca dupa function venea un "=" :-/...

Edited by bogdan_boss, 18 May 2010 - 15:59.


#4
secretalex92

secretalex92

    Active Member

  • Grup: Members
  • Posts: 1,496
  • Înscris: 28.12.2008

View Postbogdan_boss, on 18th May 2010, 16:50, said:

adica cu ce incep si in ce loc, ca nu stiu, parca dupa function venea un "=" :-/...
Nu este obligatoriu, asta era pentru variante vechi ale lui matlab.
Creezi un fisier .m scri codul de mai sus si apoi apelezi cum ti s-a sugerat din Command Window :)

#5
bogdan_boss

bogdan_boss

    Senior Member

  • Grup: Banned
  • Posts: 3,456
  • Înscris: 08.02.2010
s-a rezolvat problema tehnica privind ce introduc si unde,dar nu inteleg exact acest citat:

"if (x1<x2)
t=x1-10:0.1:x2+10
else
t=x2-10:0.1:x1+10
end

y=t;

for i=1:length(t)
y(i)=a*t(i)^2+b*t(i)+c;
end
plot(t,y,'r',x1,0,'bo',x2,0,'bo',xm,ym,'go'); "

Edited by bogdan_boss, 18 May 2010 - 16:25.


#6
bbogdanmircea

bbogdanmircea

    Senior Member

  • Grup: Senior Members
  • Posts: 3,254
  • Înscris: 14.02.2007
if (x1<x2)
t=x1-10:0.1:x2+10
else
t=x2-10:0.1:x1+10
end

creez un vector t cu (practic e axa x pentru plotarea graficului)
daca x1<x2 atunci creez axa de la [x1-10;x2+10] iar punctele sa fie din 0.1 in 0.1
daca x2>x1...

y=t;

asta ca sa initializez pe y cu un vector de aceleasi dimensiuni ca si x

for i=1:length(t)
y(i)=a*t(i)^2+b*t(i)+c;
end

generez vectorul i cu valorile functiei pentru intervalul de mai sus

plot(t,y,'r',x1,0,'bo',x2,0,'bo',xm,ym,'go'); "

fac grafic pentru
-y functie de t
-punctul x1,0
-punctul x2,0
-punctul xm,ym

Ptr restul de neclaritati

help plot
help function etc

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate