GithubHelp home page GithubHelp logo

eklavya99 / 2d-graphing-calculator Goto Github PK

View Code? Open in Web Editor NEW

This project forked from aaronhe7/graphing-calculator

0.0 0.0 0.0 541 KB

A 2D graphing calculator made using the Javascript canvas.

Home Page: https://aaronhe7.github.io/graphing-calculator/

License: MIT License

JavaScript 100.00%

2d-graphing-calculator's Introduction

2D Graphing Calculator

https://aaronhe7.github.io/graphing-calculator/

x^3 + 6x^2 + x - 15

Example graph of y = x^3 + 6x^2 + x - 15

This project is a graphing calculator made using JavaScript, inspired by the TI-84 calculator made by Texas Instruments. It has the ability to graph almost any function that can be graphed on a TI-84 (polynomial, trigonometric, exponential, etc.), and has features such as calculating the roots of an equation, or finding the intersection of two graphs. The project uses a library called expr-eval, which is used to interpret user-inputted math expressions, and webpack to bundle the JavaScript files.

Table of Contents

Features

General

Here is an example graph of functions that can be graphed with this calculator:

graph of four functions

Color Equation
Blue 20log10(x)
Red 1/2x^2-15
Orange 4sin(1/40x^2)
Green 2^x

Graphing

This graphing calculator can graph any polynomial, trigonometric, exponential, and logarithmic function. For polynomials, the syntax for the function is a0 + a1x + a2x^2 + ... + anx^n, where the ^ symbol represents exponentiation. Trigonometric functions inlude sin, cos, and tan, and functions can be composed inside of each other, for example 2^(sin(x^2)).

Table

The table displays the x-coordinate at every tick mark, and the corresponding y-coordinate, based off the equations entered in the functions tab. Here is a table where y1 is x^2 and y2 is x^3.

table

Calculate

This tab can either calculate the root of a graph, or the intersection point of two graphs based off of an inital guess. If the root cannot be found, the function either does not have a root, or a better guess needs to be made. If the function has more than one root, make a guess that is much closer to the desired root.

For the function y = x^2 - 8x + 4 an initial guess of 0, will yield the root x = 0.535898, however a guess of 8 will yield the root x = 7.4641. These roots are precise to the last decimal (The exact values are x = 4 ± 2√3).

Newton's method

Newton's method is an algorithm that estimates the root of a function f(x). It is used in this graphing calculator. The algorithm takes in an inital guess x0, and applies this recursion finitely many times:

xn+1 = xn - f(xn)/f'(xn).

Note: the function f' is the derivative of f. The estimated root xn becomes more accurate as n increases.

Explanation

The derivative function f'(x) is the slope of the line that is tangent to the function at x. Take the example function f(x) = x2 - 8x + 4, and suppose our initial guess x0 is equal to 2. Below is a diagram of the graphs of f(x) in blue, x=2 in grey, and the tangent line to f(x) at x=2 in green.

newtons method demo

Now what Newton's method does is assume that f(x) somewhat follows the trend of the tangent line of f(x), and now it takes x1 as the root of the tangent line. Note that we are still off from the actual root, but as this process repeats, the approximation gets better.

How does it calculate the root of the tangent line? Well, the nice part about this algorithm is that it is very easy to calculate the root of a linear equation. We can do this by using the slope equation for the line, m = Δy/Δx. In this case, we are considering the two points (x0, f(x0)), and (x1, 0). This tells us that m = f'(x0), Δy = f(x0) - 0 = f(x0), and Δx = x0 - x1. This gives the equation, f'(x0) = f(x0)/(x0 - x1), which rearranges to x1 = x0 - f(x0)/f'(x0).

Now we can compute x1 from our initial guess x0 = 2:

x1 = 2 - f'(2)/f(2) = 2 - (22 - 8(2) + 4)/(2(2) - 8) = 2 - (-8)/(-4) = 0. This is much closer than our initial guess x0 = 2. We can repeat this process as many times as possible for an answer more precise than ever needed.

Applications

Modeling the throw of a ball

Suppose a ball is thrown straight up at 5m/s, from 1m above the ground with a gravity of -10m/s2. Then the equation, y = -5x^2 + 5x + 1 models the height of the ball (y-axis) with respect to time (x-axis). Here is the graph:

ball graph

Now we can use the calculator to answer two questions:

  1. At what time does the ball hit the ground again?
  2. What is the maximum height of the ball, and at what time is it achieved?

To answer the first question, use the calculate root function and input a guess of 1. This gives the root x = 1.17082, so the answer is 1.17082 seconds.

For the second question, find the leftmost root with a guess of -1, which gives x = -0.17082. Now we can average the two times to get the time where the maximum height is achieved, which is at (1.17082 - 0.17082)/2 = 0.5 seconds. Now open the table tab to find that the y value at x = 0.5 is 2.25. Our answer is 2.25 meters after 0.5 seconds.

2d-graphing-calculator's People

Contributors

aaronhe7 avatar dependabot[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.