(2018) 11 2018 12 13
2 g v dv x dt = bv x, dv y dt = g bv y (1) b v 0 θ x(t) = v 0 cos θ ( 1 e bt) (2) b y(t) = 1 ( v 0 sin θ + g ) ( 1 e bt) g b b b t (3) 11 ( ) p14
2 1 y 4 t m y > 0 y < 0 t m1 h = 0001 2 t m (3) 0 [ t m1 h, t m1 ] t m2 3 t m2 (3) y(t m2 ) 0 4 x(t m )
2 4 rk4fixo rk4fixv6 main x(t), y(t) g = 98 m s 2, b = 10 m 1, v 0 = 98 m s 1 θ mod 60 +2020 79
2 θ = 26 h 0001 2 10 10 13 $ /hw2018a-2 Th = 26 tm = 07780000000000 t = 07770948429848, y = 7238654e-13 t = 07770948429849, y = 3916867e-13 t = 07770948429850, y = 5950795e-14 t = 07770948429851, y = -2726708e-13 t = 07770948429852, y = -6039613e-13 xm = 47587109588997
#include "rk4fixh" #define B 10 #define G 98 #define V0 98 #define EPS 1E-13 double f(double t, double g, double b, double v) return (v + g / b) / b * (1 - exp(-b * t)) - g / b * t; vec6 mov(double t, double r[6]) vec6 ret = 0 ; retf[1] = r[4]; retf[4] = -G - B * r[4]; return ret; int main(int argc, char **argv) int deg = 66, i; double t = 0, r[6] = 0, h = 0001; double tl, tu, dt, tm, vx, vy, Th; if (argc > 1) deg = atof(argv[1]); deg = (deg % 60) + 20; printf("th = %d\n", deg); Th = M_PI / 180 * deg; vy = V0 * sin(th); vx = V0 * cos(th); r[4] = vy; do rk4fixv6(mov, t, r, h); t += h; while (r[1] >= 00); printf("tm = %13f\n", t); tl = tm - h; tu = tm; do dt = tu - tl; t = (tu + tl) / 2; if (f(t, G, B, vy) * f(tu, G, B, vy) > 0) tu = t; else tl = t; while (dt > EPS); for (i = -2; i < 3; i++) t = tm + i * EPS; printf("t = %13f, y = %6e\n", t, f(t, G, B, vy)); printf("xm = %13f\n", f(tm, 0, B, vx)); return 0;
#include "rk4fixh" #define B 10 #define G 98 #define V0 98 #define EPS 1E-13 double f(double t, double g, double b, double v) return (v + g / b) / b * (1 - exp(-b * t)) - g / b * t; vec6 mov(double t, double r[6]) vec6 ret = 0 ; retf[1] = r[4]; retf[4] = -G - B * r[4]; return ret; int main(int argc, char **argv) int deg = 66, i; double t = 0, r[6] = 0, h = 0001; double tl, tu, dt, tm, vx, vy, Th; if (argc > 1) deg = atof(argv[1]); deg = (deg % 60) + 20; printf("th = %d\n", deg); Th = M_PI / 180 * deg; vy = V0 * sin(th); vx = V0 * cos(th); r[4] = vy; do rk4fixv6(mov, t, r, h); t += h; while (r[1] >= 00); printf("tm = %13f\n", t); tl = tm - h; tu = tm; do dt = tu - tl; t = (tu + tl) / 2; if (f(t, G, B, vy) * f(tu, G, B, vy) > 0) tu = t; else tl = t; while (dt > EPS); for (i = -2; i < 3; i++) t = tm + i * EPS; printf("t = %13f, y = %6e\n", t, f(t, G, B, vy)); printf("xm = %13f\n", f(tm, 0, B, vx)); return 0;
#include "rk4fixh" #define B 10 #define G 98 #define V0 98 #define EPS 1E-13 double f(double t, double g, double b, double v) return (v + g / b) / b * (1 - exp(-b * t)) - g / b * t; vec6 mov(double t, double r[6]) vec6 ret = 0 ; retf[1] = r[4]; retf[4] = -G - B * r[4]; return ret; int main(int argc, char **argv) int deg = 66, i; double t = 0, r[6] = 0, h = 0001; double tl, tu, dt, tm, vx, vy, Th; if (argc > 1) deg = atof(argv[1]); deg = (deg % 60) + 20; printf("th = %d\n", deg); Th = M_PI / 180 * deg; vy = V0 * sin(th); vx = V0 * cos(th); r[4] = vy; do rk4fixv6(mov, t, r, h); t += h; while (r[1] >= 00); printf("tm = %13f\n", t); tl = tm - h; tu = tm; do dt = tu - tl; t = (tu + tl) / 2; if (f(t, G, B, vy) * f(tu, G, B, vy) > 0) tu = t; else tl = t; while (dt > EPS); for (i = -2; i < 3; i++) t = tm + i * EPS; printf("t = %13f, y = %6e\n", t, f(t, G, B, vy)); printf("xm = %13f\n", f(tm, 0, B, vx)); return 0;
#include "rk4fixh" #define B 10 #define G 98 #define V0 98 #define EPS 1E-13 double f(double t, double g, double b, double v) return (v + g / b) / b * (1 - exp(-b * t)) - g / b * t; vec6 mov(double t, double r[6]) vec6 ret = 0 ; retf[1] = r[4]; retf[4] = -G - B * r[4]; return ret; int main(int argc, char **argv) int deg = 66, i; double t = 0, r[6] = 0, h = 0001; double tl, tu, dt, tm, vx, vy, Th; if (argc > 1) deg = atof(argv[1]); deg = (deg % 60) + 20; printf("th = %d\n", deg); Th = M_PI / 180 * deg; vy = V0 * sin(th); vx = V0 * cos(th); r[4] = vy; do 0 > y rk4fixv6(mov, t, r, h); t += h; while (r[1] >= 00); printf("tm = %13f\n", t); tl = tm - h; tu = tm; do dt = tu - tl; t = (tu + tl) / 2; if (f(t, G, B, vy) * f(tu, G, B, vy) > 0) tu = t; else tl = t; while (dt > EPS); for (i = -2; i < 3; i++) t = tm + i * EPS; printf("t = %13f, y = %6e\n", t, f(t, G, B, vy)); printf("xm = %13f\n", f(tm, 0, B, vx)); return 0;
#include "rk4fixh" #define B 10 #define G 98 #define V0 98 #define EPS 1E-13 double f(double t, double g, double b, double v) return (v + g / b) / b * (1 - exp(-b * t)) - g / b * t; vec6 mov(double t, double r[6]) vec6 ret = 0 ; retf[1] = r[4]; retf[4] = -G - B * r[4]; return ret; int main(int argc, char **argv) int deg = 66, i; double t = 0, r[6] = 0, h = 0001; double tl, tu, dt, tm, vx, vy, Th; if (argc > 1) deg = atof(argv[1]); deg = (deg % 60) + 20; printf("th = %d\n", deg); Th = M_PI / 180 * deg; vy = V0 * sin(th); vx = V0 * cos(th); r[4] = vy; do 0 > y rk4fixv6(mov, t, r, h); t += h; while (r[1] >= 00); printf("tm = %13f\n", t); tl = tm - h; tu = tm; do 0 dt = tu - tl; t = (tu + tl) / 2; if (f(t, G, B, vy) * f(tu, G, B, vy) > 0) tu = t; else tl = t; while (dt > EPS); for (i = -2; i < 3; i++) t = tm + i * EPS; printf("t = %13f, y = %6e\n", t, f(t, G, B, vy)); printf("xm = %13f\n", f(tm, 0, B, vx)); return 0;
#include "rk4fixh" #define B 10 #define G 98 #define V0 98 #define EPS 1E-13 double f(double t, double g, double b, double v) return (v + g / b) / b * (1 - exp(-b * t)) - g / b * t; vec6 mov(double t, double r[6]) vec6 ret = 0 ; retf[1] = r[4]; retf[4] = -G - B * r[4]; return ret; int main(int argc, char **argv) int deg = 66, i; double t = 0, r[6] = 0, h = 0001; double tl, tu, dt, tm, vx, vy, Th; if (argc > 1) deg = atof(argv[1]); deg = (deg % 60) + 20; printf("th = %d\n", deg); Th = M_PI / 180 * deg; vy = V0 * sin(th); vx = V0 * cos(th); r[4] = vy; do 0 > y rk4fixv6(mov, t, r, h); t += h; while (r[1] >= 00); printf("tm = %13f\n", t); tl = tm - h; tu = tm; do 0 dt = tu - tl; t = (tu + tl) / 2; if (f(t, G, B, vy) * f(tu, G, B, vy) > 0) tu = t; else tl = t; while (dt > EPS); for (i = -2; i < 3; i++) t = tm + i * EPS; printf("t = %13f, y = %6e\n", t, f(t, G, B, vy)); printf("xm = %13f\n", f(tm, 0, B, vx)); x(t m) return 0;
2 sin sin(x) double mysin( double x) x 1 π < x < π k = 16 sin x = k=1 ( 1) k 1 x 2k 1 (2k 1)! = x k=1 ( x 2 ) k 1 (2k 1)! 2 sin(x ± 2π) = sin(x ) π < x < π x
2 1 Horner k = 16 2 X X 10 2, X 10 1, X X = 62 $ /ex2018a-2 mysin( 6200) = -7391806966492211e-01 sin( 6200) = -7391806966492228e-01 mysin( 620) = -8308940281749616e-02 sin( 620) = -8308940281749640e-02 mysin( 062) = +5810351605373051e-01 sin( 062) = +5810351605373051e-01
2 wasedajp matuda-namio@aoniwasedajp 2 1Y17B999 2 12 13 10:30 ex2018a-2c