MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: FindRoot and NDSolve

  • To: mathgroup at smc.vnet.net
  • Subject: [mg48073] Re: FindRoot and NDSolve
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Tue, 11 May 2004 05:19:56 -0400 (EDT)
  • References: <20040510110322.14062.qmail@sina.com>
  • Sender: owner-wri-mathgroup at wolfram.com

On 10 May 2004, at 20:03, longbw2005 wrote:

> Dear SiR:
>   i have a problem about the numberic calulation of mathematica and i  
> hope you can give me some advice. thank you!
> i want to use FindRoot to solve an eqution whose cofficent depend on  
> the result of NDSolve.
>
> the procedure is as follow  :
>
> fdc[c1_?NumericQ] = c1 -0.455802;                                       
>  (1)
> mt1[c1_?NumericQ] = 0.75 - c1;                                          
>  (2)
> fg[c1_?NumericQ]  =21.8552*fdc[c1];                                     
>  (3)
> fb[c1_?NumericQ]  =3.1088*10^8*fdc[c1]^1.7*mt1[c1];                     
>  (4)
> n20[c1_?NumericQ] = fb[c1]/fg[c1];                                      
>  (5)
>
> ans=NDSolve[{n'[L]==-(18138.6*Exp[-0.0063*L]-n[L])/1700/ 
> fg[c1],n[0]==n20[c1]},n,{L,0,2000}];
> n2=ans[[1,1,2]];                                                        
> (6)
> n2[0]=n20[c1];
>
> mt2=2*10^-15*NIntegrate[n2[l]*l^3,{0,2000}];                            
>  (7)
>
> f1=mt1[c1]/mt2-1;
> ans=FindRoot[f1,{c1,0.46,0.65}];
>
> f1 is the equation,c1 is the unkown variable,mt1 calculated by (2),  
> mt2 calculated by (7),
>
> The mathematica gives error message:
> NDSolve::ndinnt: Initial condition n20[c1] is not a number or a  
> rectangular \
> array of numbers.
>
>
> it seems that fg ,fb and n20 did not get evaluated as numbers.
>
> if there is no mistake in the defination,i can not figure out where  
> the mistake is. i use mathematica 5.0 windows version.
>
> any suggestion will be appreciated! Thank you
>
>
>
Actually,there are many mistakes here: in fact so many it is very  
difficult to understand what your are trying to do. Your first  
definition of ans can't possibly return any answer since your initial  
condition for n n[0]==n20[c1] is not given in terms of a numerical  
value . I have also no idea what you expect to get from  
n2=ans[[1,1,2]]. Actually, should also remove all those _?NumericQ from  
the first group of definitions as they only prevent evaluation of  
expressions like  n2[0]=n20[c1], but because there are so many ohter  
things wrong it won't help much. But but in any case, what is n2[0]  
doing there at all? And what is this:
> mt2=2*10^-15*NIntegrate[n2[l]*l^3,{0,2000}];
?

First, there is no variable you are integrating with respect to. But  
even if we assume you meant it to be l, still

> mt2=2*10^-15*NIntegrate[n2[l]*l^3,{l, 0,2000}];

can't be computed because you have not defined n2[l] (you have only  
defined n2[0] and even that only in terms of c1, which is not a  
number). I am afraid at this stage you have not even got to the stage  
when one could seriously try to help you.
Sorry about being so unhelpful.

Andrzej


  • Prev by Date: redefining a variable value
  • Next by Date: Re: FindRoot cannot find obvious solution
  • Previous by thread: redefining a variable value
  • Next by thread: complex cube roots?