#삼각함수
#삼각함수의 뜻을 알고, 사인함수, 코사인함수, 탄젠트함수의 그래프를 그릴 수 있다 - 15번
global answer
import random
def problem_num():
var('x, a, b, c')
a = randint(1, 3)
b = randint(1, 2)
c = randint(-3, 3)
d = pi*randint(3, 6)
e = randint(6, 12)
f = a*cos(b*x) + c
answer = f(x = d/e)
return answer, a, b, c, d, e, f, x
def problem():
prob = problem_num()
answer = prob[0]
a = prob[1]
b = prob[2]
c = prob[3]
d = prob[4]
e = prob[5]
f = prob[6]
x = prob[7]
return answer, a, b, c, d, e, f, x
def problem_answer_list():
prob = problem()
answer = prob[0]
a = prob[1]
b = prob[2]
c = prob[3]
d = prob[4]
e = prob[5]
f = prob[6]
x = prob[7]
answer_calc_list = []
random_answer_calc = f(x = (d+pi*random.randint(-3, 3))/e)
while random_answer_calc == answer:
random_answer_calc = f(x = (d+pi*random.randint(-3, 3))/e)
for i in range(4):
while random_answer_calc in answer_calc_list:
random_answer_calc = f(x = (d+pi*random.randint(-3, 3))/e)
while random_answer_calc == answer:
random_answer_calc = f(x = (d+pi*random.randint(-3, 3))/e)
answer_calc_list.append(random_answer_calc)
select_answer = [answer_calc_list[0], answer_calc_list[1], answer_calc_list[2], answer_calc_list[3], answer]
return [select_answer, answer, [x, a, b, c, d, e, f]]
def final_answer_list():
select_answer = problem_answer_list()
select_answer_list = select_answer[0]
answer = select_answer[1]
problem_number_list = select_answer[2]
return [select_answer_list, answer, problem_number_list]
final = final_answer_list()
select_answer_list = final[0]
answer = final[1]
problem_number_list = final[2]
x = problem_number_list[0]
a = problem_number_list[1]
b = problem_number_list[2]
c = problem_number_list[3]
d = problem_number_list[4]
e = problem_number_list[5]
f = problem_number_list[6]
fp = plot(f, -pi, 2*pi, color = "black")
random.shuffle(select_answer_list)
show(html("<p>세 상수 $a, b, c$ 에 대하여 $f(x) = a cosbx + c$ 의 그래프가 다음과 같을 때, $f(%s)$ 의 값을 구하여라.</p>"%(latex(d/e))))
fp.show(ticks=pi, tick_formatter=[pi, 1])
sp = LatexExpr('\\quad')
spp = LatexExpr('\\qquad')
ye = LatexExpr('f(%s) ='%(latex(d/e)))
for i in range(len(select_answer_list)):
show("%s."%(i+1), sp, ye, latex(expand(select_answer_list[i])))
@interact
def _(answers = selector([(None, ""), (select_answer_list[0], "1"), (select_answer_list[1], "2"), (select_answer_list[2], "3"), (select_answer_list[3], "4"), (select_answer_list[4], "5")], buttons=True), auto_update=False):
if answers == None:
show(html("<p><span style='color:blue'>Please input your answaer in the spaces above.</span></p><p>(위의 빈칸에 답을 입력하고 [Update(확인)] 버튼을 클릭하세요.)</p>"))
else:
if answer == answers:
show(html("<p><span style='color:blue'>Correct(정답)</span></p><p>Answer(답안): <br>함수의 최댓값과 최솟값의 차( $2\\times$ 진폭)가 $%s$ 이므로 $a = \\frac {%s} {2} = %s$ 이고, <br> 최댓값에서 다른 최댓값까지의 거리(파장)가 $%s = \\frac {2 \\pi} {%s}$ 이므로 $b = %s$이다. <br> 또한, 함수의 최대값과 최소값의 평균(축)이 $%s$ 이므로 $c = %s$ 이다. <br> 따라서 함수의 방정식은 $%s$ 이고, $f(%s) = %s$ 이다."%(latex(2*a), latex(a), latex(a), latex(2*pi/b), latex(b), latex(b), latex(c), latex(c), latex(f), latex(d/e), latex(answer))))
fl = open("record.txt",'w')
fl.write('success')
fl.close()
else:
show(html("<p><span style='color:red'>Incorrect(오답)</span></p><p>Answer(답안): <br>함수의 최댓값과 최솟값의 차( $2\\times$ 진폭)가 $%s$ 이므로 $a = \\frac {%s} {2} = %s$ 이고, <br> 최댓값에서 다른 최댓값까지의 거리(파장)가 $%s = \\frac {2 \\pi} {%s}$ 이므로 $b = %s$이다. <br> 또한, 함수의 최대값과 최소값의 평균(축)이 $%s$ 이므로 $c = %s$ 이다. <br> 따라서 함수의 방정식은 $%s$ 이고, $f(%s) = %s$ 이다."%(latex(2*a), latex(a), latex(a), latex(2*pi/b), latex(b), latex(b), latex(c), latex(c), latex(f), latex(d/e), latex(answer))))
fl = open("record.txt",'w')
fl.write('fail')
fl.close()
|
Click to the left again to hide and once more to show the dynamic interactive window
|