» »

Kako poračunati enačbo?

Kako poračunati enačbo?

kitajc ::

V Excelu sem napisal serijo enačb, kjer vstavljam vrednosti in se vse samodejno računa. Sedaj pa sem pri tem postopku prišel do naslednje enačbe, ki je ne znam izračunati:

Če kdo lahko popravi tole spodnjo kodo, da bo izgledalo lepo?
https://latex.codecogs.com/gif.latex?\f...

Poznam vse podatke, izračunati pa bi rabil Vr.

Kako bi se tega lotil v Excelu? Imam sicer tudi Matlab, a ga ne znam prav veliko.

P.S.: Kakor vidim, ni možno pripeti Excelove datoteke?

\[\frac{P_{r}V_{r}}{T_{r}}=1+\frac{B}{V_{r}}+\frac{C}{V_{r}^{2}}+\frac{D}{V_{r}^{5}}+\frac{c_{4}}{T_{r}^{3}V_{r}^{2}}\left ( \beta +\frac{\gamma }{V_{r}^{2}} \right )exp\left ( -\frac{\gamma }{V_{r}^{2}} \right )\]
  • spremenilo: kitajc ()

kitajc ::

Če to enačbo posplošim in vstavim podatke (niso to pravi podatki, a vrednosti so > 0), ki jih že imam, enačba izgleda takole:

https://latex.codecogs.com/gif.latex?10...

Excel, Mathematica, Matlab? V tem vrstnem redu....

To bi sicer lahko reševal z Eulerjevim nastavkom, vendar ne morem zaradi zadnjega člena "exp".

Zgodovina sprememb…

  • spremenilo: kitajc ()

kitajc ::

V Matlabu sem vstavil vrednosti, sedaj pa želim iz enačbe izračunati V. Vse ostalo imam oz. poznam. Ne najdem funkcije, ki bi mi to izračunala.

kitajc ::

Zadevo sem v Matlabu rešil s takole funkcijo:

syms Vr
eqn = Pr*Vr/Tr == 1 + B/Vr + C/Vr^2 + D/Vr^5 + c4/(Tr^3*Vr^2)*(BETA + (GAMA/Vr^2)*exp(-GAMA/Vr^2)) ;
Vr = solve(eqn,Vr)



Ali lahko podobno napišem tudi v Excelu? Kako se reče funkciji za reševanje enačb v Excelu?

rasta ::

Imaš opravka z implicitno enačbo. Iz vseh enačb se ne da izraziti x-a.
Kot mi je na hitro povedal stric Google, v Excelu ni vgrajene nobene numerične metode za reševanje implicitnih enačb, je pa na voljo nekaj dodatkov, ki naj bi to znala.

Kaj ti pa vrne funkcija solve() v Matlabu?

kitajc ::

Sedaj sem zadevo že dodobra spisal v Matlabu. Imam pa spet problem, ker bi rad uporabil rezultate funkcije iz druge .m datoteke. To naredim s kodo:

izracun_konstant_za_osnovni_fluid; %this will run izracun_konstant_za_osnovni_fluid.m


Vendar mi vedno pokliče celotno funkcijo. Računanje je malo smotano, a me zanima, če bi lahko iz druge .m datoteke poklical le nekaj že tam izračunanih rezultatov?

Misliš tole?

solve(Pr*Vr/Tr == 1 + B/Vr + C/Vr^2 + D/Vr^5 + c4/(Tr^3*Vr^2)*(BETA + (GAMA/Vr^2)*exp(-GAMA/Vr^2))

kitajc ::

Imam naslednjo kodo, kjer bi rad, da pokličem posamezno spojino z imenom in program vzame njene vrednosti. Zaenkrat so te spojine le 3, a jih bo cel kup, zato drugačno poimenovanje vrednosti vsake spojine ne pride v poštev. Rad bi imel vse v tej .m datoteki dokler so spojine le 3. Kasneje še dodaten .m za vse podatke.

'IZBERI ŽELJENI OSNOVNI FLUID'
'Kritične vrednosti za osnovni fluid - METAN'
Tc_0=190.564; Pc_0=4599000; Vc_0=0.0986; OMEGAc_0=0.286;
'Kritične vrednosti za osnovni fluid - VODA'
'Tc_0=647.096; Pc_0=22064000; Vc_0=0.0559472; OMEGAc_0=0.229;'
'Kritične vrednosti za osnovni fluid - ETAN'
'Tc_0=305.32; Pc_0=4872000; Vc_0=0.1455; OMEGAc_0=0.09493;'


Rad bi, da mi napiše:
....=input('VSTAVI OSNOVNI FLUID')


Napišem: "METAN"

Program vzame konstante metana - Tc_0=190.564; Pc_0=4599000; Vc_0=0.0986; OMEGAc_0=0.286;

Vrednosti ne rabim vpisovati, ker so to konstante in so vsekozi enake!

kitajc ::

Z drugimi besedami - rad bi združil tole:
'Kritične vrednosti za osnovni fluid - METAN'
Tc_0=190.564; Pc_0=4599000; Vc_0=0.0986; OMEGAc_0=0.286;

Da se druga vrstica navezuje na besedo "METAN". Kako lahko to naredim?

rasta ::

kitajc je izjavil:

Misliš tole?

solve(Pr*Vr/Tr == 1 + B/Vr + C/Vr^2 + D/Vr^5 + c4/(Tr^3*Vr^2)*(BETA + (GAMA/Vr^2)*exp(-GAMA/Vr^2))

Pričakovano, simbolično obračanje enačb ni pripeljalo nikamor.
Kot kaže, bo le treba vzeti nek nelinarni solver (npr. fsolve() v Matlabu)

Sicer pa si za Matlab probleme odpri novo temo (pa poglej si switch-stavek za izvedbo različne kode glede na besedo).

kitajc ::

Napiše mi "Warning: Cannot solve symbolically. Returning a numeric approximation instead." Vendar je ta vrednost prava in pravi je tudi končni rezultat.

fsolve sem nekaj poskušal, a ni šlo,,,

kitajc ::

%REDUCIRANA FUGATIVNOST ln(f/p) = F
syms E
eqn = E == c4_0/(2*Tr_0^3) * (BETA_0 + 1 - (BETA_0 + 1 + GAMA_0/Vr_0^2)* exp(-GAMA_0/Vr_0^2));
E=double(solve(eqn))

syms F
eqn = F == Z - 1 - log(Z) + B_0/Vr_0 + C_0/(2*Vr_0^2) + D_0/(5*Vr_0^5) + E ;
F=double(solve(eqn))


Rad bi, da mi prikaže vrednost ln(f/p) = .... Sedaj sem to označil kar s "F", ampak bi rad, da piše "ln(f/p)". Kako lahko to popravim?


Vredno ogleda ...

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

Baza v vektorskem prostoru

Oddelek: Šola
182636 (1134) BivšiUser2
»

Matlab problem

Oddelek: Pomoč in nasveti
281459 (883) bluefish
»

Matematika - FMF (strani: 1 2 )

Oddelek: Šola
8710431 (8164) sherman
»

Pomoč pri izpeljavi enačbe

Oddelek: Šola
192300 (1901) darkolord
»

Reševanje enačb

Oddelek: Programiranje
231421 (1134) StratOS

Več podobnih tem