문서 섹션
목표값 역산
POSThttps://rftools.io/ api/ py/ v1/ calculate/ solve
계산기 출력 하나를 목표값으로 만드는 입력값(50 Ω이 되는 배선 폭, 목표 차동 임피던스가 되는 간격 등)을 찾아, 정확히 그 값에서 계산한 순방향 결과와 함께 반환합니다. 클라이언트가 직접 탐색하느라 쓰게 될 여러 번의 순방향 호출을, 집계되는 호출 한 번으로 대신합니다.
탐색 방식
탐색은 solveFor에 정해진 범위에서 이루어지며, range가 주어지면 그 범위로 좁혀집니다. 범위가 정해지지 않은 입력에는 range가 필요합니다. grid가 주어지면 반환되는 value는 범위 안에서 가장 가까운 그리드 배수로 반올림되고, unrounded에 정확한 해가 담깁니다. grid가 없으면 value와 unrounded는 같은 수입니다. 어느 경우든 result(/calculate가 그 입력에 대해 반환하는 것과 똑같으며, 출처 정보를 포함합니다)는 반환된 value에서 정확히 계산기를 실행한 순방향 결과이므로, 클라이언트가 표시하는 값은 솔버 자체의 추정값이 아니라 실제 순방향 계산입니다.
요청 본문
| 필드 | 설명 |
|---|---|
| slug필수string | 계산기. |
| inputs필수object of numbers | solveFor를 제외한 모든 입력. solveFor에 값을 주면 그것은 탐색의 시작점일 뿐이며, 해가 여러 개일 때 하나를 고르는 데 쓰입니다. |
| solveFor필수string | 계산기에 선언된 숫자 입력. |
| target.output필수string | 계산기가 반환하는 출력 키. |
| target.value필수number | 그 출력이 도달해야 할 값. |
| gridnumber | 양수인 제조 그리드. 반환되는 값은 범위 안에서 가장 가까운 그 배수로 반올림됩니다. |
| range[number, number] | solveFor에 정해진 범위를 좁힙니다. 정해진 범위가 없으면 필수입니다. |
응답
| 필드 | 설명 |
|---|---|
| valuenumber | 구한 값. grid가 주어졌으면 그에 맞춰 반올림됩니다. |
| unroundednumber | 그리드로 반올림하기 전의 정확한 해. |
| reachedboolean | 목표값에 도달했는지 여부. false여도 추측이 아니라 찾은 값 중 가장 가까운 값이 담깁니다. |
| evaluationsinteger | 탐색에 쓴 순방향 평가 횟수. |
| warningsstring[] | 역산 자체의 판단: 범위 안의 또 다른 해, 또는 도달하지 못한 목표값. |
| resultobject | solveFor를 value로 둔 입력에 대해 /calculate가 반환하는 것과 정확히 같습니다: values, warnings, errors, provenance. |
| slug, solveFor, target, gridecho | 요청의 필드를 주어진 그대로 반환합니다. grid가 주어지지 않았으면 null입니다. |
비용과 여러 해
비용
집계되는 호출 한 번으로, 아래의 모든 검사를 거친 뒤
/calculate처럼 과금되며, 그 뒤 서비스 쪽에서 실패하면 되돌려집니다. 탐색으로 도달할 수 없는 목표값도 성공으로 처리되어, reached: false와 찾은 값 중 가장 가까운 값이 반환되고 과금됩니다. 호출자가 요청한 것을 서비스가 제공했기 때문입니다.해가 여러 개인 경우
범위 안에서 출력이 목표값과 두 번 이상 만나면, 호출은 시작값(호출자가
solveFor에 지정한 값, 없으면 계산기의 기본값)에 가장 가까운 교점을 반환하고, 다른 교점을 알려 주는 경고를 추가합니다.거부
풀 수 없는 요청은 과금 전에 거부되며, param에 문제가 된 필드가 표시됩니다:
| 상태 | 발생 조건 |
|---|---|
| 404 | 계산기 슬러그가 존재하지 않습니다. |
| 400 | solveFor가 계산기에 선언된 숫자 입력이 아닙니다(param: solveFor, allowed 포함). |
| 400 | target.output이 계산기의 출력이 아닙니다(param: target.output, allowed 포함). |
| 400 | grid가 주어졌는데 유한한 양수가 아니거나, 범위 안에 배수가 없습니다. |
| 400 | 주어진 값(입력, target.value, 범위 경계) 중 하나가 유한하지 않습니다. |
| 400 | solveFor에 정해진 범위가 없는데 본문에 range도 없거나, 주어진 범위가 정해진 범위 밖에 있거나 비어 있습니다. |
| 400 | 고정된 입력이, 계산기가 자체 실행 시간에 두는 제한을 넘습니다(/calculate와 같음). |