Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.67
lilliputina
0 / 0 / 0
Регистрация: 01.01.2010
Сообщений: 10
#1

программа C++ для вычисления функции y=f(x)=arccot(x). всё ли правильно?? - C++

02.01.2010, 03:09. Просмотров 3643. Ответов 8
Метки нет (Все метки)

здравствуйте! мне нужно было написать программу для вычисления арккотангенса ( y=f(x)=arccot(x) ) с использованием формулы суммы (разложения) для|x|< 1. (формулу я, к сожалению, не могу сюда скопировать). без использования стандартных математических функций. также нужно было протестировать с каким-нибудь х. вычисление нужно прервать, когда разница значений двух следующщих друг за другом членов z i и z i+1 меньше epsilon или когда будут сложены максимум 20 членов суммы. я ввела 2 вспомогательные функции mypow и myabs. в формуле используется π/2, в программе это значение - константа.

на правильном я вообще пути? =) извините, что некоторые комменты на немецком (я в германии)
спасибо!!!!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/*
Kurzbeschreibung:
Berechnet die Funktionswerte der inversen trigonometrischen Funktion y = f(x) = arccot(x), wenn |x|<1 
Fuer die Berechnung wird Summenformel verwendet 
Da "cmath" nicht anzuwenden sind, wurden zwei Hilfsfunktionen eingefuhrt:
mypow (Potenzwert bilden)
myabs (Betrag bilden).
Berechnung bricht ab, wenn die Differenz des Betrages zweier aufeinanderfolgender Glieder z i und z i+1 kleiner als ein zu definierender Abbruchwert epsilon wird oder wenn maximal 20 Summenglieder berechnet wurden.
Fuer die Variablen wurde der Datentyp "double" verwendet um eine hohe Genauigkeit zu erreichen 
Hinweise:
Die Ergebnisse hangen von der verwendeten Genauigkeit von PI ab.
*/
/* 
name.vorname
*/
 
#include <iostream>
 
using namespace std;
 
double mypow(double basis, int exponent);
double myabs(double input);
 
int main(void)
{
//pi_2 - PI/2, уже высчитано
const double pi_2=1.5707963267948966192313216916398;
double x, epsilon=0.000001, summe, summe_alt=0;
int i;
 
cout<<"ввести значение x: ";
cin>>x;
 
if(myabs(x)<1)
{
//первый член формулы суммы
summe_alt=pi_2;
for(i=0; i<20; i++)
{
//следующие члены формулы суммы
summe=summe_alt-(mypow(-1,i)*(mypow(x,2*i+1)/(2*i+1)));
//разница zi и zi+1
if(myabs(summe-summe_alt)<epsilon) break;
summe_alt=summe;
 }
 
cout<<"\narccot("<<x<<")="<<summe;
 }
else
{
//пользователь задал неверные значения x
cout<<"\nпожалуйста, используйте значения, соответствующие условию (|x|<1)!";
 }
 
return 0;
}
 
//Funktion um Potenz zu berechnen
double mypow(double basis, int exponent)
{
int i;
double expwert=1;
 
for (i=0; i<exponent; i++)
expwert=expwert*basis;
 
return expwert;
}
 
//Funktion um Betrag zu berechnen
double myabs(double input)
{
if(input>0)
return input;
else
return -input;
 
//пользователь задал значение x
cout<<x=0.5
cout<<"y="<<y
 
return=0
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2010, 03:09     программа C++ для вычисления функции y=f(x)=arccot(x). всё ли правильно??
Посмотрите здесь:
Программа для вычисления функции C++
Программа для вычисления значения функции С++ C++
C++ Программа для вычисления значения функции.
C++ Программа для приближенного вычисления функции ln(1+x)
программа для вычисления значения функции y C++
C++ Программа для вычисления значений функции заданной рядом
C++ Программа для вычисления значений функции F(x) на отрезке [a,b] с шагом h (Dev-C++)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vet
175 / 175 / 13
Регистрация: 08.04.2009
Сообщений: 1,309
02.01.2010, 04:31     программа C++ для вычисления функции y=f(x)=arccot(x). всё ли правильно?? #2
Программа выдает верное решение(x=0.58 arcctg = pi/3=1.04521), но у меня такой вопрос, судя по всему создание ф-ций myabs и mypow требовалось по заданию, иначе в их использовании просто нету смысла, есть же стандартные
И исправте ф-цию :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
 double myabs(double input)
 {
if(input>0)
 return input;
 else
 return -input;
 
//ïîëüçîâГ*òåëü Г§Г*Г¤Г*Г« Г§Г*Г*Г·ГҐГ*ГЁГҐ x
 //cout<<x=0.5;// x,y ведь даже не определены в этой ф-ции
 //cout<<"y="<<y;
 
 //return 0;
}

Не по теме:

и используйте в дальнейшем пожалуйста теги кода

body90
360 / 293 / 8
Регистрация: 26.05.2009
Сообщений: 2,676
02.01.2010, 04:54     программа C++ для вычисления функции y=f(x)=arccot(x). всё ли правильно?? #3
У меня на первом курсе тоже была такая лабораторная работа.
odip
Эксперт С++
7156 / 3296 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
02.01.2010, 09:50     программа C++ для вычисления функции y=f(x)=arccot(x). всё ли правильно?? #4
const double pi_2=1.5707963267948966192313216916398;
Вроде double не хранит значения с такой точностью - хвост все равно потеряется.
В модуле math.h есть константа PI.

Добавлено через 57 секунд
формулу я, к сожалению, не могу сюда скопировать
А почему собственно ?
Снять с экрана, обрезать края, выложить в виде картинке в форум через Расширенный режим.

Добавлено через 1 минуту
извините, что некоторые комменты на немецком
Хе - я когда-то давно в школе немецкий учил

Добавлено через 3 минуты
mypow(-1,i)
Лучше так:
int sign= 1;
В цикле
sign= -sign;
Как минимум это быстрее считает.
body90
360 / 293 / 8
Регистрация: 26.05.2009
Сообщений: 2,676
02.01.2010, 16:54     программа C++ для вычисления функции y=f(x)=arccot(x). всё ли правильно?? #5
Пи как то через math.h и define делалось.
malaya
0 / 0 / 0
Регистрация: 12.12.2009
Сообщений: 3
02.01.2010, 17:48     программа C++ для вычисления функции y=f(x)=arccot(x). всё ли правильно?? #6
C++
1
2
3
4
5
6
7
8
9
10
// через define можно объявить вот так 
#include<iostream.h>
#include<math.h>
#define pi 3.14 //как пример  
 
void main ()
{
..............................
..............................
}
body90
360 / 293 / 8
Регистрация: 26.05.2009
Сообщений: 2,676
02.01.2010, 20:01     программа C++ для вычисления функции y=f(x)=arccot(x). всё ли правильно?? #7
Не так
lilliputina
0 / 0 / 0
Регистрация: 01.01.2010
Сообщений: 10
03.01.2010, 01:38  [ТС]     программа C++ для вычисления функции y=f(x)=arccot(x). всё ли правильно?? #8
спасибо!!! многое прояснили ) а как без myabs и mypow? просто убрать их?

вот формула:

http://www.tu-chemnitz.de/informatik..._m479bfe54.gif

спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2010, 16:19     программа C++ для вычисления функции y=f(x)=arccot(x). всё ли правильно??
Еще ссылки по теме:
C++ Программа для вычисления суммы и произведения элементов массива с использованием функции
C++ Программа для вычисления квадратного корня. Ошибка компиляции в аргументе функции
Составить блок-схему, алгоритм вычисления и программу для вычисления значения кусочно заданной функции C++
C++ Программа вычисления функции...
C++ Программа вычисления функции на C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
оренбуржец
5 / 5 / 0
Регистрация: 12.12.2009
Сообщений: 56
06.01.2010, 16:19     программа C++ для вычисления функции y=f(x)=arccot(x). всё ли правильно?? #9
Цитата Сообщение от body90 Посмотреть сообщение
Пи как то через math.h и define делалось.
а не легче задать число пи как переменную с присвоенным значением типа float или double?)
Yandex
Объявления
06.01.2010, 16:19     программа C++ для вычисления функции y=f(x)=arccot(x). всё ли правильно??
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru