Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2011, 20:38   #1
Klodi
Новичок
Джуниор
 
Регистрация: 13.01.2011
Сообщений: 1
По умолчанию Приближенные вычисления

Нужно составить программу на Си, которая печатает таблицу значений элементарной функции, вычисленной двумя способами: по формуле Тейлора и с помощью встроенных функций языка программирования. Вычисления по формуле Тейлора проводить по экономной в сложностном смысле схеме с точностью ε(машинное эпсилон аппаратно реализованного вещественного типа).
собственно сама функция

Программа работает только в отдельных случаях. Думаю может ошибка в разложении формулы тейлора

Код:
#include <stdio.h>
#include <math.h>


typedef double Float;
#define PR_FLOAT "lf"


Float findent(Float x) 
{ 
      return x; 
}


typedef float Function(float);
 

float val2(float x)
{
       return (1+2*pow(x,2))*exp(pow(x,2)); // расчет функции  помощью встроенных функций языка программирования
}



float mod (float x) {
      if ( x < 0) {
      x = pow(pow(x,2), 1/2.0);
      }
      return x;
      }



//нахождение машинного эпсилон
Float epsylone()
{
   float eps=1.0;
       while ( findent(eps/2+1) > 1 ) eps=eps/2;
        
       return eps;      
}

int main()
{
   
   float eps=epsylone(); 
   	int width = ceil(-log10(eps));
   	printf("The epsylone is %.*" PR_FLOAT "\n", width, eps); 
   
    float n = 0;
    int step = 0;
    float x=1;
    float val1 = 0;
    while ( mod(val1 - val2(x)) < eps) {   
               n = n + 0.1;
               val1 = val1 +(((2*n+1) *n *pow(x,2))/(n+0.1)); // подсчет значения функции по тейлору
        
         ++step; // кол-во шагов за которое достигается эпсилон
         }
         
   printf ( "Kol-vo shagov:%i\n", step);    
   printf ( "Znachenie fun po formule Teilora:%f\n Znachenie fun:%f\n", val1, val2(x) ); 
  
   return 0;     
	
}
Klodi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисления cargo29 Общие вопросы Delphi 3 17.12.2010 02:13
Вычисления AcidBurst Помощь студентам 14 22.09.2010 15:09
Ну, господа админы и человеки, к ним приближенные JTG Свободное общение 31 31.07.2010 08:51
Графически приближенные значения корней уравнения CrossDeLena Помощь студентам 1 18.10.2008 16:31
вычисления Александр8585 Microsoft Office Excel 8 16.09.2008 15:22