Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include <stdlib.h>
- #include "methods.h"
- double delta = 0.0000001;
- extern double F(double x){
- double result = 2*x*x - pow(x,4) - 1 - log(x) ;
- result = x+20.0/23.0*result;
- return result;
- }
- double ITER(double X0,double Eps,int &N)
- {
- if (Eps<=0.0) {puts("Неверное задание точности \n");exit (1);}
- double X1=Round(F(X0), delta);
- double X2=F(X1);
- N = 2;
- while( (X1 - X2)*(X1 - X2) > fabs((2*X1-X0-X2)*Eps) )
- {
- X0 = X1;
- X1 = X2;
- X2 = F(X1);
- N++;
- }
- return X2;
- }
- double Round (double X,double Delta)
- {
- if (Delta<=1E-9) {puts("Неверное задание точности округления \n");exit(1);}
- if (X>0.0) return (Delta*(long((X/Delta)+0.5)));
- else return (Delta*(long((X/Delta)-0.5)));
- }
- int main(){
- int N;
- double res;
- double eps = 0.1;
- for (int j = 0; j<7; j++){
- res = ITER(0.93, eps, N);
- printf("F(x) = 0 => x = %.7f\n", Round(res,eps));
- printf("N(EPS) = %u(%.7f)\n", N, eps);
- printf("D(x) = %.7f\n\n", Round(res,eps)-1.00000);
- eps /= 10;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement