Question: Time-consuming fsolve

I know 1st root of a function locates in a small interval (by drawing plots of function).

but fsolve command uses unreasonable time to find roots.

Also NextZero dosent work.

Please help me.

Thanks for your attention.

--------------------------------------------------------------------------------------------------

restart; s := sqrt(n)*Pi*(sqrt(n)*Pi-tan(sqrt(n)*Pi))/(sqrt(n)*Pi*tan(sqrt(n)*Pi)+2*(1-sec(sqrt(n)*Pi)));

C := (tan(sqrt(n)*Pi)-sqrt(n)*Pi*sec(sqrt(n)*Pi))/(sqrt(n)*Pi-tan(sqrt(n)*Pi));

S := s*(-C^2+1);

Gamma[b] := E[b2]/E[b1];

Gamma[c] := E[c2]/E[c1];

alpha[b] := t[b1]*t[b2]/(t[b1]+t[b2])^2;

alpha[c] := t[c1]*t[c2]/(t[c1]+t[c2])^2;

EIb := b*E[b1]*(t[b1]^4+2*Gamma[b]*alpha[b]*(2-alpha[b])*(t[b1]+t[b2])^4+Gamma[b]^2*t[b2]^4)/(12*(Gamma[b]*t[b2]+t[b1]));

EIc := b*E[c1]*(t[c1]^4+2*Gamma[c]*alpha[c]*(2-alpha[c])*(t[c1]+t[c2])^4+Gamma[c]^2*t[c2]^4)/(12*(Gamma[c]*t[c2]+t[c1]));

b := 1;Lb := 2; Lc1 := 2.5; Lc2 := 3; E[b1] := 180; E[b2] := 200; t[b1] := 0.3e-1; t[b2] := 0.4e-1; E[c2] := 220; t[c1] := 0.5e-1; t[c2] := 0.2e-1;

for k from 0 by 10 to 100 do

E[c1] := 150+k; nce := (1/2)*(Lc1/Lc2)^2*n; nb := (1/2)*(Lb/Lc2)^2*n; q[k] := 1000*fsolve((subs(n = nce, C*s)*EIc/Lc1)^2/(S*EIc/Lc2+subs(n = nce, s)*EIc/Lc1+subs(n = nb, s*(1-C))*EIb/Lb)-subs(n = nce, s)*EIc/Lc1-2*EIb/Lb, n = 1.45 .. 1.56)*evalf(Pi^2)*EIc/(2*Lc2^2); print(q[k], k)

end do;

with(CurveFitting); F := PolynomialInterpolation([seq([10*i, q[10*i]], i = 0 .. 10)], z)

Please Wait...