"""第 17 课补全练习：实现预热与逐渐减小。修改 solve，保持下方检查不变。"""
import math, io, argparse
import torch
from torch import nn
from torch.nn import functional as F
torch.set_num_threads(2)
torch.manual_seed(26)

def solve(step, total, warmup):
    if step < warmup: return step/warmup
    progress=(step-warmup)/max(1,total-warmup)
    return .15+.85*.5*(1+math.cos(math.pi*progress))

assert abs(solve(1,1000,100)-.01)<1e-9
assert abs(solve(100,1000,100)-1)<1e-9
assert abs(solve(1000,1000,100)-.15)<1e-9
print("本课补全练习通过。")
