Member 13339037 Ответов: 1

Решите уравнение - (E(x) - 4*x*x) итерацией с фиксированной точкой.


вот я пытаюсь решить уравнение - (e(x) - 4*x*x) с помощью итерации с фиксированной точкой. я взял g (X) = x +/- (e^x)^(0.5), но при запуске выполнение никогда не останавливается и не запускается.... . что я делаю для приведения корней g (X).

Что я уже пробовал:

вот я пытаюсь решить уравнение - (e(x) - 4*x*x) с помощью итерации с фиксированной точкой. я взял g (X) = x +/- (e^x)^(0.5), но при запуске выполнение никогда не останавливается и не запускается.... . что я делаю для приведения корней 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;
 }

1 Ответов

Рейтинг:
0

Daniel Pfeffer

Смотреть в Метод Ньютона-Рафсона[^] для решения уравнений.