1

Тема: Допоможіть с С++

Для х змінючого(изменяющегося) від a до b з кроком (b-a) / k, де (k = 10), обчислити функцію f (x), використовуючи її розкладання в степеневий ряд в трьох випадках:
а) для заданої  n;
б) для заданої точності е (е=0.0001);
с) для «точного» значення (з аналітичної формулою).
Для порівняння знайти відносну похибку обчислення функції значення функції

о_погр = ABS( (точ_знач – приближ_знач)/ точ_знач)

http://www.cyberforum.ru/attachments/381200d1395844573

виконаний для функції у = pow(3,x), в діапазоні зміни х від
а = 0.1 до b = 1 з кроком (b-a) / k, де (k = 10)

#include <stdio.h>

float y(float x)
{
float f=pow(3,x);
return (f);
}
int main()
{
const int a=0.1, b=1, k=10;
float step=(b-a)/k, tek=a;

while(tek<b)
{
tek+=step;
printf("y(%1.1f)=%1.2f\n",tek,y(tek));
}

return (0);
}

для S=

#include <iostream>
#include <iomanip>
using namespace std;
unsigned long long factorial(const unsigned n) { return (n == 0) ? 1 : n * factorial(n - 1); }
int main() {
setlocale(0, "");
double x;
do {
cout << " Введите x: ";
cin >> x;
} while (x < 0.1 || x > 1.0);
double s = 1;
for (unsigned n = 1; n <= 10; ++n) s += (pow(log(3.0), n) / factorial(n)) * pow(x, n);
cout << " S = " << fixed << setprecision(16) << setw(20) << s << "\n 3^x = " << setw(18) << pow(3.0, x) << endl;
cin.sync();
cin.get();
}

не виходе об'єднати

2

Re: Допоможіть с С++

Перший код на C, другий на C++. Звісно, об'єднання становить... гм... проблему. Як в Росії з Кримом. Тобто в принципі можливо, але проблеми будуть вилізати звідусіль.
А вам треба написати дві функції, які будуть обчислювати функцію з точністю та з певною кількістю циклів. Оскільки в першій програмі ви користуєтеся функціями, то маєте знати, як це робити. Ну а потім запхати виклики цих функцій в цикл в першій чи другій програмі.

3

Re: Допоможіть с С++

я б не питав як би міг би об'єднати

4

Re: Допоможіть с С++

Тримайте функцію з точністю:

double f_eps(double x, double eps)
{
  double f = 1.0, old, log3 = 1.0, xn = 1.0, fac = 1.0;
  int n=1;
  do
  {
    old = f;
    log3 *= log(3.0);
    xn *= x;
    fac *= n++;
    f += log3 / fac * xn;
  }while( abs( f - old ) > eps );
  return f;
}

5

Re: Допоможіть с С++

Тримайте функцію з точністю:

double f_eps(double x, double eps)
{
  double f = 1.0, old, log3 = 1.0, xn = 1.0, fac = 1.0;
  int n=1;
  do
  {
    old = f;
    log3 *= log(3.0);
    xn *= x;
    fac *= n++;
    f += log3 / fac * xn;
  }while( abs( f - old ) > eps );
  return f;
}