Re: loglogplot
- To: mathgroup at smc.vnet.net
- Subject: [mg73097] Re: loglogplot
- From: dh <dh at metrohm.ch>
- Date: Fri, 2 Feb 2007 05:15:23 -0500 (EST)
- References: <eps7ek$908$1@smc.vnet.net>
Hi Lynn,
there are several things wrong.
First, if you solve our diff equation for y'':
Out[128]//OutputForm=
2
x y[x] - 2 y[x] y'[x] + x y'[x]
{{y''[x] -> --------------------------------}}
x y[x]
you see that you will have troubles near x=0. Therefore, integrate the
DG not from 0 but from 0.00001.
Second, Evaluate will only work if its on the top level of an argument.
E.g.
a = 1;
f[x_] := Print[Hold[x]];
SetAttributes[f, HoldAll];
f[2 Evaluate[a]]
will print: Hold[2 Evaluate[a]] not 2 *1 as you may have expected.
Therefore it is much better to do the substitution of the interpolating
function as early as possible, e.g:
sol=y /. NDSolve[{2 y'[x] y[x] + x y''[x] y[x] - x (y'[x])^2 == x y[x],
y[0.00001] == 1, y'[0.00001] == 0}, y, {x, 0.00001, 1}, MaxSteps ->
1000][[1]]
Further use NItegrate instead of Integrate
f[w_?NumberQ] := 2 NIntegrate[(sol[x])^-1 x/Sqrt[x^2 - w^2], {x, w, 1}]
finally:
LogLogPlot[{f[w], w}, {w, 0.01, 0.99}]
Daniel
lynn wrote:
> Hello,
>
> I have some problems during the processes.
>
> \!\(sol =
> NDSolve[{2\[Times]\(y'\)[x]\[Times]y[x] +
> x\[Times]\(y''\)[x]\[Times]y[x] -
> x\[Times]\((\(y'\)[x])\)\^2 \[Equal] x\[Times]y[x],
> y[0.00001] \[Equal] 1, \(y'\)[0.00001] \[Equal] 0}, y, {x, 0,
> 1},
> MaxSteps \[Rule] 1000]\[IndentingNewLine]
> f[w_?NumberQ] :=
> 2\[Times]Integrate[\((Evaluate[y[x] /. sol])\)\^\(-1\)\[Times]
> x\/\@\(x\^2 - w\^2\), {x, w, 1}]\[IndentingNewLine]
> << Graphics`Graphics`\[IndentingNewLine]
> curve = LogLogPlot[{f[w], w}, {w, 0.01, 0.99}]\)
>
> However, the prcesses work well when I just "Plot" the curve, not
> "LogLogPlot" it.
> I don't know what's wrong....
>
> Thanks a lot!!!
>