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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2011, 13:55   #1
ivanchel
 
Регистрация: 03.06.2011
Сообщений: 5
По умолчанию

Еще раз здравствуйте. Построил программу на языке С++ по заданию, все работает только оказалось что счет интеграла не правильный. Теперь вот сижу не могу понять в каких формулах ошибся. А может и вовсе не то написал что-то!
Помогите пожалуйста разобраться с этой проблемой.
Буду очень благодарен)))
Вот задача:


Построить и записать алгоритм вычисления значения определенного интеграла от (0.01) до (a) ch(x)\x*dx для действительного предела (a) с точностью eps с использованием рекурсии.

Любая подсказка очень важна. Буду ждать ответа))) Заранее огромное спасибо!

Вот моя програма которую я построил!
только в чем ошибка не могу понять
Код:
#include "stdafx.h"
#include <math.h>
int func(float part);

int n=1;
float eps,rez,x;

void main ()
{
	printf("Vvedite znachenie а \n");
	scanf("%f",&x);
	x/=57.29;
	printf ("Vvedite tochnost' \n");
	scanf("%f",&eps);
	rez=x;
	func(rez);
	printf ("\nZnachenie integrala ravno %.3f",rez);
	getchar();
	getchar();
	getchar();
}

int func(float part)
{
	float ret,fact=1;
	int i;
	if(abs(part)<eps)
	{
		return 0;
	}
	for(i=1;i<=2*n+1;++i)		//подсчет факториала
		fact*=i;
	part=pow(-1.0,n)*pow(x,n-1)/fact;
	rez+=part;
	n++;
	func(part);
	return 0;
}
в программе как я понял должен быть ряд Тейлора. Если я не ошибся))

Последний раз редактировалось Stilet; 04.06.2011 в 17:23.
ivanchel вне форума Ответить с цитированием
Старый 04.06.2011, 17:19   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,609
По умолчанию

Функция ch(x)dx / x или ch(x) / xdx?

dx сверху или снизу дроби?
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 04.06.2011, 20:24   #3
ivanchel
 
Регистрация: 03.06.2011
Сообщений: 5
По умолчанию

Нет dx после дроби получается так (ch(x)/x)*dx

ivanchel вне форума Ответить с цитированием
Старый 05.06.2011, 07:27   #4
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,609
По умолчанию

Разложение chx = Σ (x^2n) / (2n!) = 1 + (x^2)/2! + (x^4)/4! + ...
Затем подставляем ряд вместо функции chx (не уверен, что правильно) и интеграл получается следующим
(x + (x^3)/2! + (x^5)/4! + ...)dx
Интегрируем каждый элемент суммы, получаем
(x^2) / 2 + (x^4)/ (2!*4) + (x^6)/(4!*6) +...
Вычисляем на интервале от 0.01 до a

Поправьте, если я ошибаюсь.
______

Код:
 x/=57.29;
Зачем, не понял. Откуда взялась константа 57.29
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 05.06.2011, 22:23   #5
ivanchel
 
Регистрация: 03.06.2011
Сообщений: 5
По умолчанию

Ну это я как бы понял. Получается мне теперь нужно последнюю формулу вставить в программу и по ней будет ответ? Только получается что формула бесконечна. И как тогда мне ее забить в прогу??
ivanchel вне форума Ответить с цитированием
Старый 06.06.2011, 08:49   #6
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Цитата:
Сообщение от ivanchel Посмотреть сообщение
Только получается что формула бесконечна. И как тогда мне ее забить в прогу??
Считать до тех пор пока элемент суммы не станет меньше заданной точности.
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 06.06.2011, 16:36   #7
akex454
Новичок
Джуниор
 
Регистрация: 06.06.2011
Сообщений: 1
По умолчанию

здравствуйте, написал программу на С++, программа считает на сложение, мне нужно заменить положительные числа квадратом минимума, тут скину саму задачу и текст программы

Записать выходной файл, заменив все положительные
числа квадратом минимума.

Код:
#include <fstream>
#include <iostream>


using namespace std;
int main()
{   setlocale(LC_ALL,"rus");
	ifstream fin;
  int n=21, i; 
  int  a[21];
  int sum=0;
                fin.open("C:\\numbers2.txt ");
                for(int j=0;j<i-1;j++)
		{
			if 			out<<mas[j]<<" ";
		}
                        
						
                       cout<<("\n Номер ")<<i<<" = "<<a[i];

                }
                 cout<<endl;
                cout<<("\n Сумма чисел = ")<<sum<<endl;;
                cout<<"\n******************"<<endl;
              
				ofstream fout;
                   
                  
					

                fout.open("C:\\numbers3.txt ");
               for(int i=1;i<n;i++)
                fout<<a[i]-sum<<'\n';
                  
        fout.close ();

      return 0;
}

Последний раз редактировалось MaTBeu; 06.06.2011 в 18:20.
akex454 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема косвенной рекурсии Теркин Общие вопросы Delphi 1 31.05.2011 13:47
Си шарп..) Метод рекурсии. Вычисление определителя матрицы произвольного размера. Sneginka* Помощь студентам 1 03.03.2010 20:14
Проблема с программой bboba Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 18.06.2009 19:50
проблема с программой dima00 Общие вопросы Delphi 2 20.11.2007 13:56
Проблема с программой Dues Помощь студентам 1 19.11.2007 01:46