FindRoot within a FindRoot Problem
- To: mathgroup at smc.vnet.net
- Subject: [mg84212] FindRoot within a FindRoot Problem
- From: stephen.a.mccormack at baesystems.com
- Date: Fri, 14 Dec 2007 03:56:54 -0500 (EST)
I need to find mu1 and sigma1 such that the two errors are zero (or at least minimized). The following code works but is manual and iterative in that I need to manually guess the values for mu1 and sigma1, check the errors and guess again, and so on. \[Mu]1 = 80.(* a guessed value *); \[Sigma]1 = 107.0 (* a guessed value *); \!\(TraditionalForm\`\(\(solution1 = FindRoot[{\[Mu]1 == \*SuperscriptBox[\(E\), \(M1 + \*FractionBox[ SuperscriptBox[\(S1\), \(2\)], \(2\)]\)], \[Sigma]1 == \*SqrtBox[\( \*SuperscriptBox[\(E\), \( \*SuperscriptBox[\(S1\), \(2\)] + 2*M1\)]*\(( \*SuperscriptBox[\(E\), SuperscriptBox[\(S1\), \(2\)]] - 1)\)\)]}, {M1, .1}, {S1, .1}];\)\[IndentingNewLine] \(m1 = ReplaceAll[M1, solution1[\([\)\(1\)\(]\)]];\)\[IndentingNewLine] s1 = ReplaceAll[S1, solution1[\([\)\(2\)\(]\)]]\)\); dist1 = LogNormalDistribution[m1, s1]; dist1pdf = PDF[dist1, x]; ivalue2a = Integrate[dist1pdf, {x, 0, 10}]*100 ivalue13a = 100 - Integrate[dist1pdf, {x, 0, 1000}]*100 error1 = (ivalue2a - 2.78*10^-16)/(2.78*10^-16)*100 error2 = (ivalue13a - .2)/.2*100 {m1, s1} I tried wrapping the code within FindRoot but get error messages (see below). Does anyone know how to force Mathematica to solve for mu1 and sigma1 while setting both errors to zero ? Thanks \!\(TraditionalForm\`\(\(solution1 = FindRoot[{\[Mu]1 == \*SuperscriptBox[\(E\), \(M1 + \*FractionBox[ SuperscriptBox[\(S1\), \(2\)], \(2\)]\)], \[Sigma]1 == \*SqrtBox[\( \*SuperscriptBox[\(E\), \( \*SuperscriptBox[\(S1\), \(2\)] + 2*M1\)]*\(( \*SuperscriptBox[\(E\), SuperscriptBox[\(S1\), \(2\)]] - 1)\)\)]}, {M1, .1}, {S1, .1}];\)\[IndentingNewLine] \(m1 = ReplaceAll[M1, solution1[\([\)\(1\)\(]\)]];\)\[IndentingNewLine] s1 = ReplaceAll[S1, solution1[\([\)\(2\)\(]\)]]\)\); dist1 = LogNormalDistribution[m1, s1]; dist1pdf = PDF[dist1, x]; ivalue2a = Integrate[dist1pdf, {x, 0, 10}]*100 ivalue13a = 100 - Integrate[dist1pdf, {x, 0, 1000}]*100 solution2 = FindRoot[{0. == (ivalue2a - 2.78*10^-16)/(2.78*10^-16)*100., 0. == (ivalue13a - .2)/.2*100. == 0.}, {\[Mu]1, 95.}, {\[Sigma]1, 107.}]
- Follow-Ups:
- Re: FindRoot within a FindRoot Problem
- From: Daniel Lichtblau <danl@wolfram.com>
- Re: FindRoot within a FindRoot Problem