[Date Index] [Thread Index] [Author Index]
Re: Brillouin function for a Ferromagnet
First I have to apologize if this is too basic for this forum... I have some temperature dependent magnetization data from a FeNi-alloy. The measurement was done from RT up to the Curie temperature T_c of the alloy. I want to compare my data to a Brillouin function with different angular momenta J. Basically I have to solve M/M_0=B_J[(T_c/T)(M/M_0)], with B_J=(2J+1/J)coth[(2J+1/2J)x]-(1/2J)coth[x/2J], where M_0 is the saturation magnetization How do I basically solve this and in parallel fit it to my data? In principle I want to obtain M_0 and T_c. My data consists of M(T). Thank you for your interest and answers, Frank I think, Frank, that I will not make a mistake, if I write that at this site you should better write your functions in the Mathematica notations, so that we copy-paste them into our notebooks. This belongs to a basic politeness. However, let us try it like it is. First of all, your equation looks somewhat strange (compare http://en.wikipedia.org/wiki/Brillouin_function). Your notations are not quite clear. If I get it right in your case x=(T_c/T)(M/M_0), is it? In this case something is wrong with your notations, since your equation MUST have a bifurcation at T=Tc, i.e. Tc/T=1. I made a simple check with J=1 and have got Tc/T=3/2 (note that I used the traditional Brillouin function, different from the one you write). Here Tc/T is the parameter you used in the above equation and thus, Tc is not the Curie temperature, but your notation. The relation Tc/T=3/2 must be the one for determination the Curie temperature T=2Tc/3. If you were right however, it would give T=Tc. So, there is a mistake in your formulation and you should first fix it. Second, equation you are looking at is very well known, and it is well-known that it has no analytic solution, like M=M(J,T,M0). In contrast, the problem of finding the bifurcation point, Tc, HAS the analytic solution. It enables one to establish the Curie point, Tc=Tc(J). You may find details in a number of popular textbooks on magnetism, and it is your task to read them, not of this community. As soon as you have this solution, you get the experimental Tc value, Tc(exp) from your experimental data, and write down the equation Tc(J)=Tc(exp). This gives you J value. You cannot get more from the combination of this equation and the experimental data, since like this you already fix all available parameters, and the theory you are using offers you no degree of freedom more to play with. I do not understand, why do you need to go beyond this simple procedure and take troubles to make fitting etc. However, if you have a strong reason, this problem may be approached from several directions. First, one can try to solve equation numerically. It is only possible, if parameters (such as Tc/T and J) have some fixed numerical values. Then FindRoot is the operator that will make the job for you. In principle, you may try to think about a routine that will scan the parameter space, numerically retrieve the theoretical dependence and compare it with your experimental data. In this case it is up to you, what routine to write. It depends upon details of your problem, and after all, it is your problem. Second, one may think of what I call a "semi-analytic" solution. In this case you start with separating out a region in the space of parameters (i.e., J, Tc/T), where you can expect them to take values. Then you take a set of points (e.g. a lattice) within this region and solve your equation numerically in each point of this lattice. You further, look for an analytic function, M/M0=f[J, Tc/T,a,b,...], (where a, b,... are some fitting parameters) which would approximate your numeric solution. This function is a product of your guess, and should be as simple as compatible with the precision level you require. For example, it could be a polynomial. The function f[J,Tc/T,a,b...] should be fitted to your numeric solutions. On this step the fitting parameters are a, b,..., rather than J, and thus, a, b,... will be fixed. For the purposes of fitting you may use Fit and/or FindFit operations. There is also a couple of other fitting operators that you could use in complex cases. After the first fitting procedure is finished you have an analytical function, f[J,Tc/T], approximating your theoretical results. Now you may fit this analytical function to your experimental data using J as the fitting parameter. You may again use Fit and/or FindFit for this purpose. It is this approach that I would chose myself, if I need to attack this problem. Third, one can try some analytic approximation to the solution, say asymptotic expansion. This is again up to you, which approximation to choose. As soon as you have such an approximation, you may again use Fit and/or FindFit to make fitting of the analytic function in hand to your experimental data. In any case you should familiarize yourself with Mathematica first. This pays off. Finally, let me make a guess: since the theory you used is much too rough, the solution far from the Curie point will badly (if at all) fit to experiment, independently of the approach you choose, or the Curie point got from the fitting function will be away from the experimental one. Alexei -- Alexei Boulbitch, Dr. habil. Senior Scientist Material Development IEE S.A. ZAE Weiergewan 11, rue Edmond Reuter L-5326 CONTERN Luxembourg Tel: +352 2454 2566 Fax: +352 2454 3566 Mobile: +49 (0) 151 52 40 66 44 e-mail: alexei.boulbitch at iee.lu www.iee.lu -- This e-mail may contain trade secrets or privileged, undisclosed or otherwise confidential information. If you are not the intended recipient and have received this e-mail in error, you are hereby notified that any review, copying or distribution of it is strictly prohibited. Please inform us immediately and destroy the original transmittal from your system. Thank you for your co-operation.