Функция пользователя
написать программу расчета выбранной функции Y(x), или S(x) (желательно и |Y(x)–S(x)|), вид которой в свою очередь передается в качестве параметра в функцию вывода (Out_Rez). Функции в прикрепленом файле.
вот код который у меня вышел. вроде func2() без проблем посчитать(т.е Y(x)), а вот как посчитать S(x)?
у меня при каждом х выдается NAN
Очень прошу помочь.
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <iostream>
using namespace std;
typedef double (*TFun)(double,double);
double fun1(double,double);
double fun2(double,double);
void Out_Rez (TFun, double, double, double,double );
int main()
{
double a, b, h,n;
puts("Input a, b,h ,n"); scanf("%lf%lf%lf%lf", &a, &b, &h, &n);
puts("\n\t Function - S(x) = (cos(kpi/4))/k!*x^k)"); Out_Rez (fun1,a, b,h,n);
puts("\n\t Function - Y(x) = e^(xcos(pi/4)*(cos(xsin(pi/4))))"); Out_Rez (fun2,a,b,h,n);
puts("\n Press any key... ");
getch();
return 0;
}
double fun1( double x,double n){
double s=1;
double pi = 3.1415926;
int fact = 1;
for (int k = 0; k <= n; k++) {
fact*=k;
s+=(cos(k*pi/4)*pow(x, k))/fact;
}
return s;
}
double fun2(double x,double n) {
double pi = 3.1415926;
return exp(x*cos(pi/4))*cos(x*sin(pi/4));
}
void Out_Rez (TFun f, double xn, double xk, double h, double n) {
for(double x=xn; x<=xk; x+=h){
printf(" x = %5.2lf, y = %8.4lf\n",x, f(x,n));
}
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Да вот как посчитать это ваше S(x,n):
double cs[4] = { 1, 1/sqrt(2), 0, -1/sqrt(2) };
double S = 1, t = 1;
for(int k = 1; k <= n; ++k) S += cs[k%4]*(1 - 2*((k/4)%2))*(t *= x/k);
Ну, а вся программа — тут: https://ideone.com/uOQaTe
Да, от С++ (тем более С++11) у вас тут нет ничего, кроме неиспользуемого #include<iostream>, так что я метку вопроса изменил на C.