VBA HOMEWORK PROBLEM due in 7 hours
P ro
g ra
m m
in g
f o
r M
e c h
a n
ic a
l
E n
g in
e e
rs (
M E
2 0
9 )
C o
u rs
e G
u id
e C
h a
p te
r 7
P a
rt 2
Lo o
p C
o n
tr o
l S
tr u
ct u
re s
In -C
la ss
E xe
rc is
e #3
C re
a te
a F
u n
c ti
o n
p ro
c e
d u
re t
o c
a lc
u la
te si n𝑥
u si
n g
t h
e M
a c la
u ri
n
se ri
e s
e x p
a n
si o
n f
o r
th e
s in
f u
n ct
io n
( M
a cl
a u
ri n
s e
ri e
s a
re n
a m
e d
a ft
e r
th e
S co
tt is
h m
a th
e m
a ti
c ia
n C
o li
n M
a c la
u ri
n ):
w h
e re
𝑥 is
i n
r a
d ia
n s.
T h
e t
e rm
s o
f th
is s
e ri
e s
e x p
a n
si o
n g
e t
sm a
ll e
r a
n d
s m
a ll
e r.
C a
lc u
la te
si n𝑥
u si
n g
t h
e d
im in
is h
in g
t e
rm s
u n
ti l y o
u e
n co
u n
te r
o n
e
b e
lo w
a "
to le
ra n
c e
" v a
lu e
𝜀 = 1𝑒
− 5.
W h
e re
t h
e f
a ct
o ri
a l is
n e
e d
e d
i n
t h
e e
q u
a ti
o n
, u
se t
h e
f u
n ct
io n
w e
cr e
a te
d i
n E
xe rc
is e
# 1
( if
t h
e f
u n
c ti
o n
i s
in a
n o
p e
n w
o rk
b o
o k
, V
B A
w il
l fi
n d
i t)
. F
o r
e xa
m p
le :
t e r m = ( - 1 ) ^ n * x ^ ( 2 * n + 1 ) / f a c t o r i a l ( 2 * n + 1 )
T h
e s
o lu
ti o
n l
o o
k s
li k e
t h
is :
F u n c t i o n M y S i n ( x A s D o u b l e ) A s D o u b l e
' D e c l a r e l o c a l v a r i a b l e s
D i m t e r m A s D o u b l e , t o l A s D o u b l e , n A s I n t e g e r
' i n i t i a l c o n d i t i o n s
t o l = 0 . 0 0 0 0 1 ' t o l e r a n c e v a l u e
n = 0 ' n f o r f i r s t t e r m
t e r m = x ' f i r s t t e r m v a l u e
M y S i n = t e r m
' l o o p u n t i l t o l e r a n c e a c h i e v e d
D o W h i l e A b s ( t e r m ) > t o l
n = n + 1 ' n e x t v a l u e o f n
t e r m = ( - 1 ) ^ n * x ^ ( 2 * n + 1 ) / _
F a c t o r i a l ( 2 * n + 1 ) ' n e x t t e r m v a l u e
M y S i n = M y S i n + t e r m ' u p d a t e s i n ( x )
L o o p
E n d F u n c t i o n
9 e
xe c u
ta b
le s
ta te
m e
n ts
.
A n
o th
e r
a p
p ro
a ch
.. .
It h
e lp
s to
r e
co g
n iz
e t
h e
f o
ll o
w in
g p
a tt
e rn
i n
t h
e a
b o
v e
t e
rm
se q
u e
n c e
.. .
n te
rm (n
)
0 x ^ 1 / 1 !
1 - x ^ 3 / 3 ! = - t e r m ( 0 ) * x ^ 2 / ( 3 * 2 )
2 x ^ 5 / 5 ! = - t e r m ( 1 ) * x ^ 2 / ( 5 * 4 )
3 - x ^ 7 / 7 ! = - t e r m ( 2 ) * x ^ 2 / ( 7 * 6 )
B y
t a
k in
g a
d v a
n ta
g e
o f
th is
p a
tt e
rn ,
a m
o re
e ff
ic ie
n t
co d
e c
a n
b e
w ri
tt e
n ,
a s
sh o
w n
o n
t h
e f
o ll
o w
in g
p a
g e
.
F u n c t i o n M y S i n 2 ( x A s D o u b l e ) A s D o u b l e
' D e c l a r e l o c a l v a r i a b l e s
D i m t e r m # , t o l # , p %
' i n i t i a l c o n d i t i o n s
t o l = 0 . 0 0 0 0 1 ' t o l e r a n c e v a l u e
p = 1 ' p o w e r o f f i r s t t e r m
t e r m = x ' f i r s t t e r m v a l u e
M y S i n 2 = t e r m ' i n i t i a l v a l u e o f s i n ( x )
' l o o p u n t i l t o l e r a n c e a c h i e v e d
D o W h i l e A b s ( t e r m ) > t o l
p = p + 2
' p o w e r o f n e x t t e r m
t e r m = - t e r m * x ^ 2 / _
( p * ( p - 1 ) ) ' n e x t t e r m v a l u e
M y S i n 2 = M y S i n 2 + t e r m ' u p d a t e s i n ( x )
L o o p
E n d F u n c t i o n
9 e
xe c u
ta b
le s
ta te
m e
n ts
, a
n d
n o
n e
e d
to c
o m
p u
te t
h e
f a
c to
ri a
l fo
r e
a ch
t e
rm .