December 2005
Beginner to intermediate
618 pages
20h 19m
English
sinh
Calculates the hyperbolic sine of a number
#include <math.h> doublesinh( doublex); floatsinhf( floatx); (C99) long doublesinhl( long doublex); (C99)
The sinh() function returns
the hyperbolic sine of its argument x. If
the result of sinh() is too great
for the double type, a range
error occurs.
// A chain hanging from two points forms a curve called a catenary.
// A catenary is an segment of the graph of the function
// cosh(k*x)/k, for some constant k.
// The length along the catenary over a certain span, bounded by the
// two vertical lines at x=a and x=b, is equal to sinh(k*b)/k − sinh(k*a)/k.
double x, k;
puts("Catenary f(x) = cosh(k*x)/k\n"
"Length along the catenary from a to b: sinh(k*b)/k − sinh(k*a)/k)\n");
puts(" f(-1.0) f(0.0) f(1.0) f(2.0) Length(-1.0 to 2.0)\n"
"-------------------------------------------------------------------");
for ( k = 0.5; k < 5; k *= 2)
{
printf("k = %.1f: ", k);
for ( x = -1.0; x < 2.1; x += 1.0)
printf("%8.2f ", cosh(k*x)/k );
printf(" %12.2f\n", (sinh(2*k) − sinh(−1*k))/ k);
}This code produces the following output:
Catenary f(x) = cosh(k*x)/k
Length along the catenary from a to b: sinh(k*b)/k − sinh(k*a)/k)
f(-1.0) f(0.0) f(1.0) f(2.0) Length(-1.0 to 2.0)
---------------------------------------------------------------------
k = 0.5: 2.26 2.00 2.26 3.09 3.39
k = 1.0: 1.54 1.00 1.54 3.76 4.80
k = 2.0: 1.88 0.50 1.88 13.65 15.46
k = 4.0: 6.83 0.25 6.83 372.62 379.44Read now
Unlock full access