Solve A sin(Bx) + C equation calculator
This calculator solves equations in the form A sin(Bx) + C = target and returns every real value of x inside the interval you specify.
Run — free
Enter the amplitude, frequency coefficient, vertical offset, target, and inclusive interval endpoints, then choose degrees or radians. The solver validates the coefficients, checks whether the normalized target lies in the sine range, generates both sine families, and removes duplicate endpoint or tangent solutions. It is designed for coursework, verification, engineering calculations, and repeatable API workflows where a single principal inverse-sine result is not enough.
Enter the equation and interval consistently
Write the equation as A sin(Bx) + C = target, then map each number to its matching field. A controls amplitude, B controls how rapidly the sine cycle repeats as x changes, and C shifts the complete waveform vertically. Both A and B must be nonzero because a zero amplitude or frequency changes the problem into a different class of equation. Choose degrees when x is measured in degrees, or radians when x uses radians. The interval endpoints are inclusive, so a root exactly at either boundary is retained. The target and C are ordinary output values rather than angles; subtracting C isolates the sine term. A precision setting controls how returned roots are rounded, but it does not loosen the mathematical domain checks. Explicit fields and a declared interval make the calculation reproducible and prevent the common mistake of reporting only one inverse-sine angle when many periodic solutions belong in the requested range.
Understand how every solution is generated
The solver first subtracts C from the target and divides the result by A to obtain a normalized sine value. A real solution exists only when that value lies between -1 and 1, inclusive. It then computes the principal inverse sine and uses the two standard angle families: the principal angle plus whole periods, and the supplementary angle plus whole periods. For each family, it divides by B to recover x. Instead of scanning the interval with small steps, the algorithm calculates the exact integer period indices that can land inside the bounds. This avoids missed roots, arbitrary step sizes, and false answers caused by sampling. When the normalized value is 1 or -1, the two families describe the same tangent points, so duplicates are removed. Results are sorted from the lower endpoint to the upper endpoint. The response also reports the normalized target, principal angle, period in x, solution count, and interval, which makes it easier to inspect why a particular set of roots was returned and independently verify the pattern.
Interpret empty results and validation messages
An empty solution array is a valid mathematical result when (target - C) divided by A is outside the sine range, or when valid periodic roots exist but none fall inside the selected interval. By contrast, malformed inputs produce an invalid-input error. The calculator rejects missing or nonfinite coefficients, zero A, zero B, reversed interval endpoints, unsupported angle units, invalid precision, and intervals that would require an excessive number of roots. Negative A or B values are accepted: they reflect or reverse the waveform, and the generated families still produce sorted x values. Because both interval boundaries are included, use open-boundary reasoning yourself if a problem explicitly excludes an endpoint. Returned decimals are numerical approximations rounded to the requested precision, so substitute them into the original equation with a tolerance appropriate to that precision. For automated use, the API price is $0.002 per request. The deterministic implementation uses no network, random values, or clock, so identical valid inputs produce the same ordered result and can be stored as reliable calculation evidence.
What you can do with it
Check trigonometry homework
List both sine families within the assigned domain and compare them with a hand-derived answer.
Find periodic event times
Solve a sinusoidal threshold equation over a practical time window without numerical scanning.
Validate application calculations
Generate deterministic reference roots for tests involving amplitude, frequency, vertical offset, and bounded domains.
FAQ
Does the calculator return all solutions?
Yes. It returns both sine solution families that fall within the inclusive interval and removes duplicates.
Can I use degrees or radians?
Yes. Select one angle unit and use it consistently for x and both interval endpoints; C is a vertical value.
Why did I receive no solutions?
The normalized target may be outside [-1, 1], or the periodic roots may all lie outside your interval.
Are negative A and B allowed?
Yes. Only zero is forbidden for A and B; negative coefficients are handled by the same exact solution families.
What does it cost through the API?
Each API request costs $0.002. The calculation is also suitable for the free browser runner.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/trig/solve-asinbxc-equation \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":2,"b":1,"c":0,"target":1,"interval_min":0,"interval_max":360}'const res = await fetch("https://api.kit.forhosting.com/trig/solve-asinbxc-equation", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 2,
"b": 1,
"c": 0,
"target": 1,
"interval_min": 0,
"interval_max": 360
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/trig/solve-asinbxc-equation",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 2,
"b": 1,
"c": 0,
"target": 1,
"interval_min": 0,
"interval_max": 360
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/trig/solve-asinbxc-equation", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":2,"b":1,"c":0,"target":1,"interval_min":0,"interval_max":360}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":2,"b":1,"c":0,"target":1,"interval_min":0,"interval_max":360}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/trig/solve-asinbxc-equation", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"a": 2,
"b": 1,
"c": 0,
"target": 1,
"interval_min": 0,
"interval_max": 360
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "trig.solve_asinbxc_equation",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |