Beginners – Newton Raphson and polynomials in C.

I have the following code that defines:

  1. A polynomial structure with some useful functions.
  2. The Newton-Raphson algorithm for polynomials.

and calculated sqrt(2).
What can i improve?

There are a few things I'm not sure about:

  1. Is size_t A good data type for my purposes? I had to be very careful when I put the loop condition in the eval Function. Is this a good place to switch to signed arithmetic?

  2. Is my definition of my_nan a good way to ensure portability when switching to another floating point type?

Things I am aware of:
I know that the Newtonian Raphson for polynomials does not require the explicit construction of a derived polynomial, and I am a little wasteful of memory.


typedef double real;
const real my_nan = ((real) 0.0) / ((real) 0.0);

typedef struct Polynomial {
    real* coeffs;
    size_t capacity;
} Polynomial;

Polynomial* create_poly(size_t capacity)
    real* coeffs;

    coeffs = malloc(capacity * sizeof(real));
    if (coeffs == NULL) return NULL;

    Polynomial* poly = malloc(sizeof(Polynomial));

    if (poly == NULL) {
        return NULL;
    poly->coeffs = coeffs;
    poly->capacity = capacity;

    return poly;

void delete_poly(Polynomial* p)
    p = NULL;

size_t deg(const Polynomial*const p)
    for (size_t i = p->capacity - 1; i > 0; i--) {
/* Here we actually want to compare reals exactly instead of |a - b| < eps */
        if (p->coeffs(i) != 0.0) return i;
    return 0;

void print(const Polynomial*const p)
    size_t i;
    for (i = 0; i < deg(p); ++i) {
        printf("%f * x^%zu + ", p->coeffs(i), i);
    printf("%f * x^%zun", p->coeffs(i), i);

real eval(const Polynomial*const p, real x)
/* Use Horner Scheme for evaluation */
    size_t i = deg(p);
    real res = p->coeffs(i);

    for (; i-- > 0;) {
        res = res * x + p->coeffs(i);
    return res;

Polynomial* derive(const Polynomial*const p)
    Polynomial* Dp = create_poly(p->capacity);
    if (Dp == NULL) return NULL;

    for (size_t i = 1; i < p->capacity; ++i) {
        Dp->coeffs(i - 1) = ((real) i) * p->coeffs(i);
    return Dp;

real newton_raphson_poly(const Polynomial*const p, real x0, real eps)
    Polynomial* Dp = derive(p);
    real x, prev = x0;
    const int max_iter = 100;

    for (int i = 0; i < max_iter; ++i) {
        x = prev - eval(p, prev) / eval(Dp, prev);
        if (fabs(x - prev) < eps) {
            return x;
        } else {
            prev = x;

    return my_nan;

int main()
    Polynomial* p;
    const real EPS = pow(10, -7);
    p = create_poly(3);

    p->coeffs(0) = -2;
    p->coeffs(1) = 0;
    p->coeffs(2) = 1;

    printf("The result of sqrt(2) is given by the root ofn");
    printf("Its value is: %f n", newton_raphson_poly(p, 1.0, EPS));


Newton method and machine learning

There is some debate about why the Newtonian method is not widely used in machine learning. Instead, people tend to use a gradient descent.

  • Some people claim that the Newton method is not used because it contains the second derivative. As? Indirectly? Why? Doesn't the Newton method neglect the second derivative?

  • Is there a name for Newton's cubic convergence method?

  • Can we say that Newton's method is a form of gradient descent?

Kopar @ Newton

Kopar in Newton is a prestigious housing development from CELH Development Pte Ltd. This property comprises 435 residential units with spacious floor plans that correspond to the modern lifestyle. The property is located in a desirable area in District 11, known as 150 Kampong Java Road, Singapore. The residence o! a 99-year lease to potential buyers. The TOP set for development is in 2020. The units in this development are undoubtedly state of the art. With its noble touch inside and the renowned brands of appliances, every house has a relaxing ambience and unique layouts. This residence also has an artistic architectural design that is a real eye-catcher for passers-by. Inside the premises are luxurious facilities that residents can enjoy. These include facilities such as an indoor gym, barbecue area, lap pool, tennis court and lap pool. These facilities offer residents great satisfaction every day.

Kopar @ Newton will add a new dimension of luxury condominiums to the already high-class section of Newton Road in Singapore. The developer will transform the current condominium into an elegant, world-class home that offers breathtaking views of Singapore and offers residents all the amenities they need within a short walk. With Orchard Road just a short drive away, the Newton Road Food Center across the street and the Newton MRT transportation hub Kopar at Newton, just 5 minutes' walk away, is one of the most anticipated new condos in Singapore. An important selling point for the Kopar at Newton condominium is that residents are only a five-minute walk from the Newton MRT transportation hub. With lines to several parts of Singapore less than a five-minute walk away, this opens up incredible opportunities to get around the city on MRT lines, as the transportation hub connects the north-south and downtown lines.

Statistics – translation of the Newton Raphson code into the evaluation method

  require(pracma)     # to access Norm

  x0 <- c(0.7, 0.3) # starting value for the iteration
    data <- c(-0.1,0.3,48.7,-1.5,-0.1,-8.3,-0.3,7.3)
    g <- c(1, 1)    # starting value for the 'while'
    h <- matrix(0, 2, 2)    # command to create 2x2 matrix of 0s

    while(Norm(g) > 1e-05) {
        a <- x0(1)
        b <- x0(2)
        b2 <- b^2
        x1 <- data - a
        den <- b2 + x1^2
        den2 <- den^2
        g(1) <- 2 * sum(x1/den) # the gradient vector components
        g(2) <- sum((x1^2 - b2)/(b * den))
        h(1, 1) <- 2 * sum((x1^2 - b2)/den2)
        h(1, 2) <- -4 * b * sum(x1/den2)
        h(2, 1) <- h(1, 2)
        h(2, 2) <- -5/b^2 - h(1, 1) # completes specification of the
        xn <- x0 - solve(h) %*% cbind(g)    # Hessian matrix
        x0 <- xn

  cat("maximum likelihood estimate:", x0, "n") # the maximum-likelihood estimate
  cat("gradient at the maximum:", g, "n")  # the gradient at the maximum
  cat("eigenvalues/vectors of the hessian:n"); print(eigen(h))

Hello, I have this code, which was taken from the MATLAB code from Applied Stochastic Modeling and Data Analysis by Byron JT Morgan (2008), and I want to be able to easily modify it so that instead of Newton-Raphson, an evaluation method is used instead. I understand that instead you have to take the expectation of the Hessian matrix and the result:

$ E (A ( theta)) = - frac {n} {2 beta ^ 2} begin {bmatrix} 1 & 0 \ 0 & 1 end {bmatrix} $

Any help on how this would be translated into this R code would be appreciated.

Kopar at Cel's Newton New Launch

Kopar in Newton is a 99 year rented housing development near Newton, opposite the Newton Food Center and on the famous Newton Round. Kopar at Newton's location is exciting to watch.

Kopar @ Newton has received multiple awards from CEL development for its various residential project offers. This is a good development with around 436 units; 1 bedroom to 5 bedrooms to choose from.

The Kopar at Newton Showflat is located on site. Potential buyers will appreciate the convenience of the Newton MRI switch. Potential buyers will be delighted with the artisanal use of the space and the concept in this country.

Kopar at Newton prices is not officially open to the public, but analysts expect a price range of 2,000 – 2,300 psf.

Contact Singapore Property Showflat at 6100 3447 or visit us at for more information on Kopar at Newton by CEL.

[ Politics ] Open question: Why do liberals dispute the fact that Trump's intelligence is on a par with that of Isaac Newton, Nikola Tesla and Albert Einstein?

[Politics] Open question: Why do liberals dispute the fact that Trump's intelligence is on a par with that of Isaac Newton, Nikola Tesla and Albert Einstein?

Kopar at Newton Singapore

Kopar at Newton is a residential development on Kampong Java Road in the 9th district of Singapore. It is located in an established residential neighborhood and has easy access to Newton MRT and major roads such as Dunearn Road and CTE. A prestigious school such as the Anglo Chinese Junior School is also nearby. It is just minutes from Velocity @ Novena and United Square. Not to mention that the shopping belt Orchard Road is only a few stops away.
Register your interest now to view the exhibition space, receive up-to-date information such as start date, e-brochure, price, floor plan and invitation to VVIP priority preview.
For more information on new properties, see Singapore Property
Zoom out

acegen – Newton iteration method without multiplier in AceFem

Is there a way in AceFem to use a Newton iteration scheme without using the multiplier λ or the time step t? For example, when trying to calculate a solution for a nonlinear equation, no multiplier is needed.
For the problem I'm facing, I try to use AceFem to compute the geometry of a surface composed of surface patches. Each surface field has a finite element that has three degrees of freedom in each node. These degrees of freedom are twist vectors, and with their variation, the shapes of patches can be changed. To determine the values ​​of twist vectors, I defined the energy potential in the finite element, which must be minimized. This potential is composed of the mean curvature in combination with the Gaussian curvature (2H ^ 2-2K). Node positions and normal vectors in nodes are always fixed, so no constraints are defined in the analysis (even twist vectors can not be defined as constraints because they are all unknown in each node).

Any help is welcome. Thanks. Tomo