Problem Analysis #calculus_30

Motif 3 · Run 1

Python ● execution succeeded
Correct
823.83s
103,938 toks

Infron · Motif 3 · 46문항 × 3회 · Python TAR. 131,072 output tokens · 기본 1,800초 · 6+1 turns. ACC는 전체 138회, Pass@1은 각 문항의 첫 유효 시도, Pass@3는 3회 내 정답으로 계산합니다.

Problem Statement

실수 전체의 집합에서 증가하는 연속함수 f(x)f(x)의 역함수 f−1(x)f^{-1}(x)가 다음 조건을 만족시킨다. (가) ∣x∣≤1\lvert x\rvert\le1일 때, 4×(f−1(x))2=x2(x2−5)24\times(f^{-1}(x))^2=x^2(x^2-5)^2이다. (나) ∣x∣>1\lvert x\rvert>1일 때, ∣f−1(x)∣=e∣x∣−1+1\lvert f^{-1}(x)\rvert=e^{\lvert x\rvert-1}+1이다. 실수 m에 대하여 기울기가 m이고 점 (1,0)을 지나는 직선이 곡선 y=f(x)y=f(x)와 만나는 점의 개수를 g(m)g(m)이라 하자. 함수 g(m)g(m)이 m=a, m=b (a<b)에서 불연속일 때, g(a)×(lim⁡m→a+g(m))+g(b)×(ln⁡bb)2g(a)\times(\lim_{m\to a+}g(m))+g(b)\times(\frac{\ln b}{b})^2의 값을 구하시오. (단, lim⁡x→∞ln⁡xx=0\lim_{x\to\infty}\frac{\ln x}x=0)

최종 정수 답을 \boxed{} 안에 쓰세요.

Ground Truth
11
Recorded model response / solution
Reasoning Process

Recorded Python call:

import numpy as np
from scipy.optimize import bisect, brentq, minimize_scalar
import sys

Tool Output
Execution succeeded
Reasoning Process

Recorded Python call:

import numpy as np
from scipy.optimize import brentq

def F(t):
    if t < -1:
        return -np.exp(-t-1) - 1
    elif t <= 1:
        return t*(5-t*t)/2
    else:
        return np.exp(t-1) + 1

def dF(t):
    if t < -1:
        return np.exp(-t-1)
    elif t < 1:
        return (5-3*t*t)/2
    else:
        return np.exp(t-1)

def h(s,t):
    return F(t)-1-s*t

def count_roots(s, tmin=-50, tmax=50, n=200001):
    # sample sign changes, refine
    ts=np.linspace(tmin,tmax,n)
    vals=np.array([h(s,t) for t in ts])
    roots=[]
    for i in range(n-1):
        if vals[i]==0:
            roots.append(ts[i])
        elif vals[i]*vals[i+1]<0:
            try:
                root=brentq(lambda t: h(s,t), ts[i], ts[i+1], xtol=1e-12, rtol=1e-12)
                roots.append(root)
            except Exception:
                pass
    # dedupe
    uniq=[]
    for r in roots:
        if not uniq or abs(r-uniq[-1])>1e-6:
            uniq.append(r)
    return uniq, vals

for s in [0.5,0.9,1.0,1.01,1.1,1.2,1.3,1.4,1.5,2.0,2.2,2.3,2.345,2.4,2.5,3.0,5.0]:
    roots,vals=count_roots(s)
    print(s, len(roots), roots[:10])

Tool Output
Execution succeeded 0.5 1 [0.5391888728108891] 0.9 1 [0.7647903697880423] 1.0 1 [np.float64(1.0)] 1.01 1 [1.1477797883933167] 1.1 1 [1.5023222721453364] 1.2 1 [1.7310493313260578] 1.3 1 [1.908881989148775] 1.4 1 [2.058402369972111] 1.5 1 [2.1888341658136867] 2.0 1 [2.6783469900166605] 2.2 1 [2.8280419377682042] 2.3 1 [2.8963659552320005] 2.345 1 [2.9258810513696654] 2.4 3 [-2.152371693214323, -1.5704229787885915, 2.9609936378076207] 2.5 3 [-2.3627161803676398, -1.3919389391809234, 3.022313245324657] 3.0 3 [-2.9038136944403834, np.float64(-1.0), 3.2892814145628715] 5.0 3 [-3.8469185788040368, -0.38829144100486007, 3.994308347002122]
Reasoning Process

Recorded Python call:

import mpmath as mp
mp.mp.dps=50
f=lambda r: r*mp.log(r)-2
r0=mp.findroot(f,2.3)
print(r0, r0*mp.log(r0))
s0=r0
b=1/s0
print("s0",s0,"b",b)
# F and H at tangent t0
t0=-1-mp.log(r0)
print("t0",t0,"F", -r0-1, "s0*t0+1?", s0*t0+1)

Tool Output
Execution succeeded 2.3457507549227654624170211472773605580001892920438 2.0 s0 2.3457507549227654624170211472773605580001892920438 b 0.4263027510068627456732362073476587334492266500757 t0 -1.8526055020137254913464724146953174668984533001514 F -3.3457507549227654624170211472773605580001892920438 s0*t0+1? -3.3457507549227654624170211472773605580001892920438
Reasoning Process

Recorded Python call:

s=s0
roots,vals=count_roots(s,tmin=-20,tmax=20,n=400001)
print(len(roots), roots)
# evaluate h at candidate positive root
for r in roots:
    print(r, h(s,r))

Tool Output
Execution failed name 's0' is not defined
Reasoning Process

Recorded Python call:

s=float(s0)
roots,vals=count_roots(s,tmin=-20,tmax=20,n=400001)
print(len(roots), roots)
for r in roots:
    print(r, h(s,r))

Tool Output
Execution failed name 's0' is not defined
Reasoning Process

Recorded Python call:

import numpy as np
from scipy.optimize import brentq
import mpmath as mp
mp.mp.dps=50
r0=mp.findroot(lambda r: r*mp.log(r)-2,2.3)
s0=float(r0)
t0=-1-mp.log(r0)
print("s0",s0,"t0",float(t0))

def F(t):
    if t < -1:
        return -np.exp(-t-1) - 1
    elif t <= 1:
        return t*(5-t*t)/2
    else:
        return np.exp(t-1) + 1

def h(s,t):
    return F(t)-1-s*t

def count_roots(s, tmin=-20, tmax=20, n=400001):
    ts=np.linspace(tmin,tmax,n)
    vals=np.array([h(s,t) for t in ts])
    roots=[]
    for i in range(n-1):
        if vals[i]==0:
            roots.append(ts[i])
        elif vals[i]*vals[i+1]<0:
            try:
                root=brentq(lambda t: h(s,t), ts[i], ts[i+1], xtol=1e-14, rtol=1e-14)
                roots.append(root)
            except Exception:
                pass
    uniq=[]
    for r in roots:
        if not uniq or abs(r-uniq[-1])>1e-6:
            uniq.append(r)
    return uniq

s=s0
roots=count_roots(s)
print(len(roots), roots)
for r in roots:
    print(r, h(s,r))

Tool Output
Execution succeeded s0 2.3457507549227654 t0 -1.8526055020137255 1 [2.926367340206157] 2.926367340206157 8.881784197001252e-16
Reasoning Process
F(x)=f−1(x)={−e−x−1−1,x<−1,x(5−x2)2,−1≤x≤1,ex−1+1,x>1.F(x)=f^{-1}(x)= \begin{cases} -e^{-x-1}-1,& x<-1,\\[2mm] \dfrac{x(5-x^2)}2,& -1\le x\le 1,\\[2mm] e^{x-1}+1,& x>1. \end{cases}

직선 y=m(x−1)y=m(x-1) 위의 점을 (x,y)(x,y)라 하고 t=yt=y로 두면, x=F(t)x=F(t)이고

t=m(F(t)−1).t=m(F(t)-1).

m≠0m\ne0일 때 s=1ms=\frac1m로 두면 교점의 개수는 방정식

F(t)=1+stF(t)=1+st

의 실근 개수와 같다. m=0m=0이면 y=0y=0이고 F(0)=0F(0)=0이므로 교점은 1개이다.

s>0s>0인 경우를 가지별로 세면 다음과 같다.

  • t>1t>1: F(t)=et−1+1F(t)=e^{t-1}+1이므로 et−1−st=0e^{t-1}-st=0은 s>1s>1일 때 정확히 1개의 해를 갖는다.
  • −1≤t≤1-1\le t\le1: s≤1s\le1이면 1개, 1<s<31<s<3이면 0개, s≥3s\ge3이면 1개이다.
  • t<−1t<-1: F(t)=−e−t−1−1F(t)=-e^{-t-1}-1. 여기서 h(t)=F(t)−1−sth(t)=F(t)-1-st의 최댓값은 sln⁡s−2s\ln s-2이고, 그 위치는 t=−1−ln⁡st=-1-\ln s이다.

따라서 sln⁡s=2s\ln s=2를 만족하는 유일한 s0>1s_0>1에서 왼쪽 가지에서 접하고 교점 수가 변한다. 가지별 개수를 합치면

g(m)={1,0<s<s0,2,s=s0,3,s>s0.g(m)= \begin{cases} 1,& 0<s<s_0,\\ 2,& s=s_0,\\ 3,& s>s_0. \end{cases}

또한 m<0m<0이면 항상 1개이다.

이제 s=1ms=\frac1m이므로

  • m→0+m\to0^+이면 s→∞s\to\infty여서 g(m)→3g(m)\to3, 반면 g(0)=1g(0)=1. 따라서 a=0a=0.
  • s=s0s=s_0일 때 g=2g=2, s→s0−s\to s_0^-이면 g→3g\to3, s→s0+s\to s_0^+이면 g→1g\to1. 따라서 b=1s0b=\frac1{s_0}.

s0ln⁡s0=2s_0\ln s_0=2이므로

ln⁡bb=−ln⁡s01/s0=−s0ln⁡s0=−2.\frac{\ln b}{b}=\frac{-\ln s_0}{1/s_0}=-s_0\ln s_0=-2.

따라서

g(a)lim⁡m→a+g(m)+g(b)(ln⁡bb)2=1⋅3+2⋅4=11.g(a)\lim_{m\to a+}g(m)+g(b)\left(\frac{\ln b}{b}\right)^2 =1\cdot3+2\cdot4=11. 11\boxed{11}
Final Model Output
11

Comparative Analysis (Pcalculus_30) (Average across runs)

Averages use reported measurements only. Missing usage is not treated as zero.

Avg Time Taken

Solar Pro 4
1143.8
Union Alpha
1001.1
Motif 3
651.7
MiMo V2.6 Pro
485.2
Grok 4.7
305.2
Muse Spark 1.3
134.4
Solar Mini 4 Preview
117.7
DeepSeek V4.1 Flash
89.6

Avg Token Usage

Solar Pro 4
138,659
Motif 3
134,043
Grok 4.7
75,813
Solar Mini 4 Preview
73,098
Muse Spark 1.3
64,249
MiMo V2.6 Pro
53,041
DeepSeek V4.1 Flash
35,840
    CSAT 2026 · Problem calculus_30 · Motif 3 | EntropyMath