Click here to Skip to main content
15,921,530 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more: (untagged)
here is i trying to solve eq. - (e(x) - 4*x*x) by fixed point iteration. i took g(X) = x +/- (e^x)^(0.5) but on running the execution never stop and run on.... .what i do for bringing the roots of g(X).

What I have tried:

here is i trying to solve eq. - (e(x) - 4*x*x) by fixed point iteration. i took g(X) = x +/- (e^x)^(0.5) but on running the execution never stop and run on.... .what i do for bringing the roots of g(X).
#include<stdio.h>
#include<math.h>
double g(double x){
  double result = 0.0;
  result = x + pow(exp(x)/0.25 ,0.5);
 //result = x - (2*log(2*x));
  return result;
}
double g1(double z){
    double result1 = 0.0;
    result1 = 1 + pow(exp(z)/0.0625 , 0.5);
    //result1 = 1 - (2*pow(x,-1));
    return result1;
}
double mode(double z){
  if(z<0)
    return -z;
   else return z;
}
int main(){
  double x0,x1;
  int i=1;
  do{
  printf("Input the approximate value:(x0)\n");
  scanf("%lf",&x0);
    if(mode(g1(x0))<1){
      break;
      }
    else {
        printf("RE-input the approx. value as g'(x0) is greater than 1.\n");
        continue;
    }
  }while(1);
  x1 = g(x0);
  double abserr,ord,abserr0;
  abserr = ord = 0;
  printf("Iteration  x(i)  |g'(xi)|   f(xi)  AbsERROR   ORDER\n");
  printf("%d\t%lf\t%lf\t%lf\t%lf\t%lf\n",i,x0,mode(g1(x0)),g(x0),abserr,ord);
  while(mode(x1-x0)>0.001){
    abserr = x1-x0;
    ord = log(mode(abserr0))/log(mode(abserr));
    x0 = x1;
    x1 = g(x0);
    abserr0 = abserr;
     printf("%d\t%lf\t%lf\t%lf\t%lf\t%lf\n",i,x0,g1(x0),g(x0),abserr,ord);
   i++;
  }
  double answer = x1;
  printf("Answer = %lf\n", x1);

 return 0;
 }
Posted
Updated 31-Jul-17 21:42pm

1 solution

Look into Newton-Raphson's method[^] for solving equations.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900