Rational function x-intercepts calculator
The graph of (x - 1)/(x^2 - 4) crosses the x-axis only at (1, 0). The calculator finds every real zero of the numerator and drops those that also zero the denominator, so a hole is never listed as an intercept. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Numerator
- 1, -1
- Denominator
- 1, 0, -4
- Function
- (x - 1)/(x^2 - 4)
- Numerator poly
- x - 1
- Denominator poly
- x^2 - 4
- Numerator zeros
- 1
X-intercepts of a rational function f of x equals N of x over D of x are the real points where the graph meets the horizontal axis. Algebraically that means f of x equals zero, which happens exactly when the numerator is zero and the denominator is not zero, so the candidate root is inside the domain. Shared zeros of N and D create holes or undefined points, not intercepts, and students frequently lose marks by listing a cancelled factor as an intercept. This rational function x-intercepts calculator accepts numerator and denominator coefficient arrays, finds the real zeros of both polynomials, filters out excluded domain values, and returns the valid intercept x-values together with point strings of the form (x, 0).
What x-intercepts of a rational function mean
A rational function is a ratio of two polynomials, written f of x equals N of x divided by D of x, with D not the zero polynomial. The graph meets the x-axis wherever the output is zero. Substituting y equals zero into y equals N over D forces N of x equals zero provided D of x is nonzero; if D of x is also zero the original expression is undefined and that x is excluded from the domain.
In textbooks this distinction is critical: a factor that cancels between numerator and denominator leaves a hole at that x-value, not an x-intercept. For example, f of x equals (x squared minus one) over (x minus one) simplifies to x plus one for x not equal to one, so the simplified line would cross the axis at negative one, and x equals one is a hole rather than an intercept.
Another classic case is f of x equals (x minus two) over (x squared minus four): the numerator zero x equals two collides with a denominator zero, so it is excluded, while there is no other numerator zero and therefore no x-intercept at all. Linear numerators yield at most one intercept; quadratic numerators can yield zero, one, or two real intercepts after domain filtering. Constant nonzero numerators never zero, so the intercept list is empty even when the graph has vertical asymptotes from the denominator.
This calculator encodes exactly that classroom rule: compute real zeros of N, drop any that also zero D, and return the survivors as ordered intercepts with y equal to zero.
When finding x-intercepts of rational functions helps
Classrooms and tutoring platforms use a rational function x-intercepts calculator so learners can check which numerator zeros survive domain restrictions without confusing holes with intercepts. Exam-prep generators need a deterministic oracle that rejects invalid polynomials and never lists a cancelled factor as an intercept point. Engineering and science notebooks that reduce transfer functions or rational models can read off axis crossings without importing a full computer-algebra system for a two-array root-and-filter job.
Failed validation does not consume balance. Keep requests within the degree and magnitude limits, pin the rounded intercept arrays in tests, and you get reproducible intercept lists for homework, LMS plugins, and edge workers.
What you can do with it
Classroom and homework checks
Students submit numerator and denominator coefficient arrays and verify ordered x-intercepts plus holes against textbook graphing and factoring methods.
Exam and LMS auto-grading
Mark find-the-x-intercepts items with a deterministic oracle that excludes shared zeros as domain holes and never invents extra intercepts.
Notebooks and rational models
Read axis crossings of a rational transfer model from coefficient arrays without standing up a full computer-algebra library.
FAQ
How do I find the x-intercepts of a rational function?
Send numerator and denominator coefficient arrays (highest degree first).
What if a zero of the numerator also zeros the denominator?
That x is a hole (undefined), not an x-intercept.
Why is a zero numerator rejected?
If N is the zero polynomial, f is identically zero wherever it is defined, so there are infinitely many intercepts.
Can a rational function have no x-intercepts at all?
Yes. A nonzero constant numerator never equals zero, so the list stays empty even when the denominator creates vertical asymptotes. It is also empty for (x - 2)/(x^2 - 4), whose only numerator zero is excluded.
How many x-intercepts can a quadratic numerator give?
Zero, one or two real intercepts, after removing any value that also makes the denominator zero. A linear numerator gives at most one intercept.
Related tools
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/algebra/rational-function-x-intercepts \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"numerator":[1,-1],"denominator":[1,0,-4]}'const res = await fetch("https://api.kit.forhosting.com/algebra/rational-function-x-intercepts", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"numerator": [
1,
-1
],
"denominator": [
1,
0,
-4
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/algebra/rational-function-x-intercepts",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"numerator": [
1,
-1
],
"denominator": [
1,
0,
-4
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/algebra/rational-function-x-intercepts", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"numerator":[1,-1],"denominator":[1,0,-4]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"numerator":[1,-1],"denominator":[1,0,-4]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/algebra/rational-function-x-intercepts", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"numerator": [
1,
-1
],
"denominator": [
1,
0,
-4
]
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "algebra.rational_function_x_intercepts",
"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. |
Technical notes
The same pure module powers the free browser path and the API so homework checks and automation never disagree on a hole versus a true intercept.
Input contract, response shape, and error behaviour
Example: numerator equals [1, -1] and denominator equals [1, 0, -4] encode (x minus one) over (x squared minus four). The zero polynomial is rejected for both arrays: a zero denominator does not define a rational function, and a zero numerator is identically zero on the entire domain so there would be infinitely many intercepts rather than a finite list. Example: numerator [1, -3, 2] and denominator [1, -1] for (x squared minus three x plus two) over (x minus one) yields numerator zeros one and two, a hole at one, and a single x-intercept at two because D of one is zero while D of two is one. POST a JSON body with two required coefficient arrays in highest-degree-first order: numerator and denominator. Aliases num or n for the numerator and den or d for the denominator are accepted. Each coefficient may be a JSON number or a numeric string; missing fields, empty arrays, non-arrays, non-finite values, magnitudes above one trillion, and degrees above sixteen fail with invalid_input naming the field. On success the body echoes the cleaned coefficient arrays; function, numerator_poly, and denominator_poly as display strings; numerator_zeros and denominator_zeros as sorted real roots; excluded_from_domain matching the denominator zeros; holes and hole_count for shared zeros that are not intercepts; x_intercepts as sorted real x-values; x_intercept_points as strings like (1, 0); intercept_points as objects with x and y; intercept_count; method set to numerator_zeros_in_domain; and a short formula restating N equals zero and D not equal to zero. Pair the response with your own graphing code if you need asymptotes or a sketch; this endpoint returns intercepts and domain exclusions only.
Where a rational-function x-intercepts API earns its keep
When your curriculum later asks for y-intercepts, evaluate f of zero when zero is in the domain; when it asks for asymptotes or full simplification with cancelled factors, use dedicated endpoints for those SEO intents rather than overloading this intercept-focused tool.
Technical questions
Can a rational function have no x-intercepts?
Yes. A constant nonzero numerator never zeros, and every numerator zero may be excluded by the denominator. intercept_count is then zero.
What does the rational function x-intercepts calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.