Re: 2 problems!
- To: mathgroup at smc.vnet.net
- Subject: [mg120330] Re: 2 problems!
- From: W Craig Carter <ccarter at mit.edu>
- Date: Tue, 19 Jul 2011 06:56:15 -0400 (EDT)
- References: <201107181014.GAA26923@smc.vnet.net>
Hello Mary,
Before giving you a brief answer, it looks like you are exploring the
critical points of a van der Waals gas. I have a fairly complete
mathematica notebook to do this---I use it for teaching--and
demonstrates how one should rescale the van der Waals equation. If you
would like a copy, contact me directly.
I don't recommend continuing on the path that you are following, but
here are some pointers to help you learn some mathematica-ology.
There are several things you can do immediately to help your code.
1. Avoid using upper case first letters for your own variables.
2. Take a look at your intermediate output in your Do[] (btw, I think
you meant to loop over u and w).
3. Note the form of one of your intermediate expressions:
sol = Solve[Rationalize[der1 && der2 && p, 0], {a, b, V}, Reals] // N
This is a long set of six solutions that has Root[] functions in them
for subsequent numerical processing. You probably would be better off
writing a function that takes arguments for u_ and w_, and then uses
NSolve to get your solution. You don't need to use the Rationalize here.
Note the form of one of your intermediate solutions:
N[({a, b, V} /. sol) /. {u -> 10, w -> 12}]
4. You get one real solution and the others are undefined. You will
want an automatic method of picking out your real solution. Here is an
example:
Cases[N[({a, b, V} /. sol) /. {u -> 10, w -> 12}], {_Real, _Real,
_Real}]
I don't follow what you had intended for this expression: \[CapitalPsi]
-> a; in your Do[]. Also, I don't think your values of a,b, and V are
changing in your loop, so there is no need to recompute the solution
each iteration.
5. Collect your solutions into a table:
sol = Solve[Rationalize[der1 && der2 && p, 0], {a, b, V}, Reals] // N;
abV = {a, b, V} /. sol
vdwSolutions =
Table[Cases[N[abV /. {u -> ui, w -> 12}], {_Real, _Real,
_Real}],{ui,-100,100,.01,{vi,-100,100,.01}]
6. Then export your data to excel if you wish
Export["solutions.xls", vdwSolutions]
Again, This isn't the solution path I recommend....
Kind Regards,
W Craig Carter
Professor of Materials Science, MIT
On Jul 18, 2011, at Mon, Jul 18, 11 ---6:14 AM, Mary R wrote:
> Hi to everyone!
> I've got two problems that for me is quite difficult...
> 1. I want to calculate in the same cicle Do this coefficient a,b,V and
> evaluate the difference beetween this calculate coefficient and the
real
> parameter areal,breal,Vreal and evaluate a coefficient Omega.
> I was able to calculate only the coefficient a,b,V;
> e.g.
> value u , w {2,2}:=
>
{{{a->-2.57258*10^7,b->-1108.81,V->679.954},{a->1.59736*10^6,b->-210.798,V->380.617},{a->1.3548*10^7,b->53.9538,V->292.367}},
> *3.03895*10^-8 a*,-*3.34268*10^12+a,128465. +b,-200+V*}
> can you hel me?
> 2. The second problem is to change the result from InputForm in a table to
> export in Excel;
> that is trasform my result
> (e.g.)
> value u , w {2,2}: =
{{{a->-2.57258*10^7,b->-1108.81,V->679.954},{a->1.59736*10^6,b->-210.798,V->380.617},{a->1.3548*10^7,b->53.9538,V->292.367}},3.03895*10^-8
> a,-3.34268*10^12+a,128465. +b,-200+V}
> in a table!
> ---------------------listing-----------------------
> pression = (R Subscript[T, c])/(V - b) - a/(
> b^2 w + b u V + V^2) /. {Subscript[T, c] -> 425.1, R -> 83.14};
> der1 = D[pression, V] == 0;
> der2 = D[pression, {V, 2}] == 0;
> p = 37.96 - pression == 0;
> Vreal = 200;
> areal = 3.3426778202443823`*^12;
> breal = -128465.27253980785`;
> \[CapitalPsi] = \!\(TraditionalForm\`
> \*FractionBox[\(a\ P\), \(
> \*SuperscriptBox[\(R\), \(2\)]\
> \*SuperscriptBox[\(T\), \(2\)]\)]\ /. {T -> 425.1, \ \ R -> 83.14,
> P -> 37.96}\);
> Do[sol = Solve[Rationalize[der1 && der2 && p, 0], {a, b, V},
> Reals] // N; \[CapitalPsi] -> a; A = a - areal; B = b - breal;
> volume = V - Vreal;
> Print[ "value u , w, Omega,difference ", {u, w},
> ": ", {sol, \[CapitalPsi], A, B, volume}], {u,-100, 100,0.1}, {u,-100,
> 100,0.1}]
> {a, b, V} /. sol
>
> Thanks a lot in advance for your help.
> MR
>
>
- References:
- 2 problems!
- From: Mary R <mathematica023@gmail.com>
- 2 problems!