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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2010, 15:10   #1
Lifastyle
 
Регистрация: 13.03.2010
Сообщений: 3
Стрелка Вычислить значение функции y, развив функцию ln(x) в ряд Тейлора

Задача:
Вычислить значение функции y, развив функцию ln(x) в ряд Тейлора. Аргумент х изменяется от -1 до 3 с шагом 0.5. Определить погрешность.

Y=
ln(x)+ln(x/2) 0<x<=2
ln(x/2-1) x>=2

Мой код программы:

Код:
#include <stdio.h> 
#include <conio.h>
#include <math.h> 
 
 
double logon(float x)
{ 
   float sum=x-1;     //сумма членов ряда
   int i=1;         //знаменатель элемента ряда
   float t=0.001;   //точность вычисления
   float member=x-1;  //текущий элемент ряда
   while (member>t) //пока текущий элемент превышает точность рассчетов
      { member=member*(-(x-1)/i); //текущий элемент за формулой Тейлора
         sum+=member;            // сумма
         i++;        }           //переход к новому елементу ряда
   return sum;    
 }
void main (void) 
{  
   float y,           //виражение за формулой Тейлора
         st,          //значение стандартной функции log
         x,           //аргумент функции
         xn, xk,      //начальное, конечное значение аргумента
         xs, err;    //шаг изенения аргумента и погрешность
printf("\n input xn, xk, xs (-1 3 0.5)\n");
scanf("%f%f%f", &xn, &xk, &xs);
puts("===================================================");
printf("     x             y          standart        error \n");
puts("===================================================");
 for ( x=xn;x<=xk;x+=xs)        //цикл перебора значений аргумента функции
  { if (0<=x<=2)                //проверка условий вибора рассчетной функции
      {  y=logon(x)–logon(x/2); //определение функции за формулой Тейлора
          st=log(exp(x)) – log(exp(x/2));       //определение функции за стандартною формулою
          err=st–y;             //расхождение между точним и приближенным значениями функции
     }
 else if (x>=2)
           { y=logon(x/2-1);
              st=log(exp(x/2-1));
              err=st–y;
        }
 printf ("  %f     %f     %f      %f \n", x, y, st, err);
   }
}
Помогите,пожалуйста,отладить код...убрать ошибки, неточности и т.д.
Только начинаюизучать язык...вся надежда на вас...
Буду благодарна лбой помощи!!!
Lifastyle вне форума Ответить с цитированием
Старый 14.03.2010, 11:29   #2
Lifastyle
 
Регистрация: 13.03.2010
Сообщений: 3
По умолчанию

Вот еще немного поработала над кодом, но всё равно не компилируется...

Код:
#include <stdio.h> 
#include <conio.h>
#include <math.h> 
 
 
double logon(float x)
{ 
   float sum=x-1;     
   int i=1;         
   float t=0.001;   
   float member=x-1;  
   while (member>t) 
      { member=member*(x-1);
         sum+=member/i;                  
         i++;        }           
   return sum;    
 }
void main (void) 
{  
   float y,           
         st,          
         x,           
         xn, xk,      
         xs, err;    
   int flag=0;     
printf("\n input xn, xk, xs (-1 3 0.5)\n");
scanf("%f%f%f", &xn, &xk, &xs);
puts("===================================================");
printf("     x             y          standart        error \n");
puts("===================================================");
 for ( x=xn;x<=xk;x+=xs)        
  { if (0<=x && x<=2)           
      {  y=logon(x)–logon(x/2); 
          st=log(x) – log(x/2);;        
          err=st–y;             
    }
 else if (x>=2)
           { y=logon(x/2-1);
              st=log(x/2-1);
              err=st–y;
        }
else if (x<=0)  flag =1; 
        if ( flag==0)           
         printf ("  %f     %f     %f      %f \n", x, y, st, err);
         else    printf ("  %f     not define    \n", x ); 
   }
}
Lifastyle вне форума Ответить с цитированием
Старый 15.03.2010, 11:26   #3
DartDayring
Пользователь
 
Регистрация: 10.02.2010
Сообщений: 55
По умолчанию

Код:
#include "stdafx.h"
#include <stdio.h> 
#include <conio.h>
#include <math.h> 
 
 
double logon(float x)
{ 
   float sum=x-1;     
   int i=1;         
   float t=0.001;   
   float member=x-1;  
   while (member>t) 
      { member=member*(x-1);
         sum+=member/i;                  
         i++;        }           
   return sum;    
 }
void main (void) 
{  
   float y,           
         st,          
         x,           
         xn, xk,      
         xs, err;    
   int flag=0;     
printf("\n input xn, xk, xs (-1 3 0.5)\n");
scanf("%f%f%f", &xn, &xk, &xs);
puts("===================================================");
printf("     x             y          standart        error \n");
puts("===================================================");
for ( x=xn;x<=xk;x+=xs)        
  { if (0<=x && x<=2)           
      {   y=logon(x)-logon(x/2); 
          st=log(x)-log(x/2);        
          err=st-y;            
    }
 else if (x>=2)
           { y=logon(x/2-1);
              st=log(x/2-1);
              err=st-y;
        }
else if (x<=0)  flag =1; 
        if ( flag==0)           
         printf ("  %f     %f     %f      %f \n", x, y, st, err);
         else    printf ("  %f     not define    \n", x ); 
   }
}
DartDayring вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разложение функции, Ряд Тейлора. Andrag Помощь студентам 6 22.01.2010 14:41
Одномерный массивы; разложение функции в ряд Тейлора.... lTIGRAl Помощь студентам 3 28.12.2009 17:52
Одномерный массивы, разложение функции в ряд Тейлора...... lTIGRAl Помощь студентам 0 28.12.2009 15:30
Вычислить значение функции Deus Общие вопросы Delphi 10 25.01.2009 17:09