» »

Matlab

Matlab

Ciman ::

Živjo.
Zanima kej je tukej pr funkciji solve narobe. Hočem da mi reši kolko je S1 pa S2.

clc;
clear all;
a=4.4; %[m]
b=6.9; %[m]
c=5.7; %[m]
d=6.7; %[m]
F=4.1; %[kN]

alfa=atand(c/a);
beta=atand(d/b);

e1='(-S1)*cos(alfa)+S2*cos(beta)-F=0'
e2='S1*sin(alfa)+S2*sin(beta)=-1'
[S1,S2]=solve('e1','e2')

A. Smith ::

Vnesi tole, pa bo delalo.

clc;
clear all;
a=4.4; %[m]
b=6.9; %[m]
c=5.7; %[m]
d=6.7; %[m]
F=4.1; %[kN]

alfa=atand(c/a);
beta=atand(d/b);

[S1,S2]=solve('(-S1)*cos(alfa)+S2*cos(beta)-F=0','S1*sin(alfa)+S2*sin(beta)=-1') 


Funkciji e1 in e2 si narobe definiral. Ker program ni vedel, da gre za funkciji, spremenljivke v stringu pa niso bile defenirane, je program zapis razumel kot zaporedje nekih znakov brez abstraktnega pomena in funkcija Solve tega ni hotela pogoltniti.

Če hočeš vedeti, kako se v Matlabu definira funkcijo, vpiši 'help function handle'.
"Be professional, be polite,
but have a plan to kill everyone you meet".
- General James Mattis

A. Smith ::

Sem si še malo ogledal tole. In ugotovil, da sta do (delujoče) rešitve 2 poti.

clc;
clear all;
a=4.4; %[m]
b=6.9; %[m]
c=5.7; %[m]
d=6.7; %[m]
F=4.1; %[kN]

alfa=atand(c/a);
beta=atand(d/b);

e1='(-S1)*cos(alfa)+S2*cos(beta)-F=0'
e2='S1*sin(alfa)+S2*sin(beta)=-1'

A=solve(e1,e2,'S1','S2') 

subs(A.S1)
subs(A.S2)


To je prva rešitev. Če pravilno vneseš stringe, dobiš rešitev v obliki strukture (struct). V tem objektu - strukturi potem kličeš obe rešitvi. Prva rešitev ima naslov A.S1, druga A.S2.

Vendar pa sta zdaj S1 in S2 še zapisani kot formuli, v kateri je treba vstaviti vse spremenljivke. To storimo ukazom subs.

Druga rešitev:
clc;
clear all;
a=4.4; %[m]
b=6.9; %[m]
c=5.7; %[m]
d=6.7; %[m]
F=4.1; %[kN]

alfa=atand(c/a);
beta=atand(d/b);

syms S1 S2

e1=(-S1)*cos(alfa)+S2*cos(beta)-F

e2=S1*sin(alfa)+S2*sin(beta)+1


[S1,S2]=solve(e1,e2) 

single(S1)
single(S2)



Ta rešitev temelji na tem, da Matlabu najprej povemo, katere so simbolične spremenljivke (teh ne poznamo). To sta S1 in S2. Uporabim ukaz syms. Izraze vstavim v ukaz solve. Ker rešitvi nista skalarja, ampak simbolična objekta, ju še problikujem nazaj v skalarje z ukazom single.

Rezultat?
S1=-2.1736
S2=5.2183
"Be professional, be polite,
but have a plan to kill everyone you meet".
- General James Mattis

Ciman ::

U hvala ti. Zdej dela pa tudi prou je =) Super! =)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

matematika, geometrije v ravnini, telesa

Oddelek: Šola
203266 (2635) manniac
»

C in računanje kotov

Oddelek: Programiranje
376599 (5652) RatedR
»

Trigonometrične enačbe

Oddelek: Šola
132970 (2544) ta_ki_tke
»

diferencialne enačbe

Oddelek: Loža
113911 (3599) overlord_tm
»

[Fizika] Sile (strani: 1 2 )

Oddelek: Šola
7413087 (12176) seminal

Več podobnih tem