Wrap your code in a function that takes s
as an argument
xrn[s_] :=
Module[{c = 2, h = 10, n = 0.1, a, k, p, f, \[Rho], rn, rp, \[Delta], g, R, Rn, X},
a = n/(1 - n);
k = (1/2)*(1 - a^2)*s^2;
p = -((Sqrt[(a*(1 - c)*y - 1)^2 -
2*(1 - 2*c)*(-(a*y) - k + y^2/2)] + a*(1 - c)*y - 1)/(1 -
2*c)); f := (-(c*p + 1)^(-(1/c)))*(c*y + 1)^((1 - c)/c);
NIntegrate[f, {y, s, -s}]; \[Rho] = h/NIntegrate[f, {y, s, -s}];
rn = \[Rho]*(c*s + 1)^(1/c);
rp = \[Rho]*(1 - c*s)^(1/c); \[Delta] = rp - rn;
g = -(1 - (c*(Sqrt[((a*(1 - c)*((y/\[Rho])^c - 1))/c - 1)^2 -
2*(1 -
2*
c)*(-((a*((y/\[Rho])^c - 1))/c) + (1/
2)*(((y/\[Rho])^c - 1)/c)^2 - k)] + (a*(1 -
c)*((y/\[Rho])^c - 1))/c - 1))/(1 - 2*c))^(-c^(-1));
R = 20;
X = ({#1, NIntegrate[g, {y, rn, (#1*\[Delta])/R + rn}] - h/2} &) /@
Range[R]; Rn = ({#1, (#1*\[Delta])/R + rn} &) /@ Range[R];
Transpose[{Last /@ X, Last /@ Rn}]]
Verify that the function returns the right result for s=0.15
xrn[0.15]
Use Table
to generate results for various values of s
Table[xrn[s] // Prepend[s], {s, { 0.1, 0.7, 0.4, 0.15, 0.18}}]
Note that for s=0.7
the result is complex so it cannot be plotted with ListLinePlot
.