Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <cmath>
- using namespace std;
- float func(float x,float m) {
- return powf(1+x,m);
- }
- float approximate_func(float x,float m) {
- float result = 1;
- float temp_x = 1;
- float temp_m = 1;
- float temp_fact = 1;
- int i = 1;
- while (i<=4) {
- temp_m *= (m-i+1);
- temp_x *= x;
- temp_fact *= i;
- float value = temp_m * temp_x / temp_fact;
- result += value;
- i++;
- }
- return result;
- }
- int fact(int n) {
- int result = 1;
- int i = 1;
- while (i<n)
- result *= (++i);
- return result;
- }
- float inverse_fact(float n,int count) {
- float result = n;
- while (count > 0) {
- result *= (--n);
- count--;
- }
- return result;
- }
- float power(float a,int b) {
- if (b == 0)
- return 1;
- float result = a;
- for (int i=1;i<b;i++)
- result *= a;
- return result;
- }
- float approximate_func_without(float x,float m) {
- int i = 1;
- float result = 1;
- while (i<=4) {
- result += (inverse_fact(m,i-1) * power(x,i) / fact(i));
- i++;
- }
- return result;
- }
- int _tmain(int argc, _TCHAR* argv[]) {
- setlocale(0, "");
- float x;
- float m = 0;
- cout << "Введите x:";
- cin >> x;
- cout << "Значение\tПриближенное значение\tАбсолютная ошибка\tОтносительная ошибка" << endl;
- while (m <= 6) {
- float exact = func(x,m);
- float approximate = approximate_func(x,m);
- cout << exact;
- cout << "|";
- cout << approximate;
- cout << "|";
- cout << fabs(exact - approximate);
- cout << "|";
- cout << fabs(exact - approximate) / fabs(approximate);
- cout << endl;
- m += 0.5;
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement