Iterative solution to a transcendental equation.
- To: mathgroup at smc.vnet.net
- Subject: [mg125039] Iterative solution to a transcendental equation.
- From: "peter livingston" <peter.livingston at cox.net>
- Date: Sun, 19 Feb 2012 06:30:05 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
Thank you for having the informative website, that as a new user, I am enjoying. I am in the process or porting over into MATHEMATICA a long program that describes non-linear processes in optical fiber amplifiers=97an area of my specialty. There is a transcendental equation in this long program that, written in dimensionless form, shows the amplified signal in the cladding-pumped fiber. The particular snippet of code is in a nb file (I prefer to use the nb as a front end), but I transcribe it below. As you shall see, this equation is unlike the examples in the manual, and I have not found any =91handle=92 on how to approach it. 1. Divide the fiber length L into Mmax =150 steps X = Table[1-i/Mmax,{i,Mmax}]; X = L N[x]; 2. For every interval x[[i]], find the root w of this expression. (I chose a single value for x just to see if the method would work. It didn't. But when it does, I want to operate on the whole row vector produced by Table, element by element. fn[w]:=-a ln[w] =96 w + 1 + b [1 - e^(-alpha x[[i]])] The constant a is 0.4, the constant b is 90 and the constant alpha is 0.53 The root w is number that is always greater than or equal to 1. (It is the ratio of the signal power in the fiber amplifier to the input signal power.) 3. The construct I used is Soln=NSolve[fn[w]==0,w] Reduce[Soln] --Note I have also tried FindRoot with similar bafflement. 4. For my efforts I got several semi-intelligible error messages SetDelayed::write: Tag _Plus_ in _(1-w+0.09 1000[0.783204]-(2 log[w])/5)[w]_ is Protected. <http://reference.wolfram.com/mathematica/ref/message/General/write.html> =87 NSolve::ifun: Inverse functions are being used by _NSolve_, so some solutions may not be found; use Reduce for complete solution information. <http://reference.wolfram.com/mathematica/ref/NSolve.html> =87 Reduce::naqs: _{w=AEInverseFunction[1-w+0.09 1000[0.783204]-(2 log[w])/5,1,1][0.]}_ is not a quantified system of equations and inequalities. <http://reference.wolfram.com/mathematica/ref/message/Reduce/naqs.html> =87 Needless to say, I am baffled. It appears that coming from a progressive computing background, I know how to iteratively solve the equation. I can do it in about 10 steps on a pocket calculator. And I kow how to write do loops. However, I believed that the power of MATHEMATICA was such that I should expect the kernel to figure out how to iteratively solve the transcendental equation. By the way, how do you get the kernel to spit out numbers with all of the arithmetic done, not just sums of products and such. Incidentally, while the =91bible=92=97Mathematics and Algorithms=97is absolutely essential, it could use an index and a few more illustrations. Thanks for your time. Am looking forward to your reply. Peter Livingston
- Follow-Ups:
- Re: Iterative solution to a transcendental equation.
- From: Tomas Garza <tgarza10@msn.com>
- Re: Iterative solution to a transcendental equation.