Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
isaak
103 / 40 / 9
Регистрация: 17.10.2010
Сообщений: 670
#1

Математический маятник - C++

08.09.2012, 22:36. Просмотров 3013. Ответов 26
Метки нет (Все метки)

Доброго время суток. Нужно написать программу. Математический маятник совершает колебания по закону http://www.cyberforum.ru/cgi-bin/latex.cgi?x(t) = A* sin(\omega *t + {\omega }_{0}). Частота http://www.cyberforum.ru/cgi-bin/latex.cgi?\omega маятника известна. В начальный момент координата x в k раз меньше амплитуды A. В какой момент времени T отклонение маятника максимально? Написать программу для определения параметра T при условии, что параметры http://www.cyberforum.ru/cgi-bin/latex.cgi?\omega и k вводятся пользователем. При составлении программы воспользоваться соотношениями http://www.cyberforum.ru/cgi-bin/latex.cgi?{\varphi }_{0}=\arcsin (1/k) и http://www.cyberforum.ru/cgi-bin/latex.cgi?T = (\pi /2 - {\varphi }_{0})/\omega. Вот код программы, но он работает не правильно:
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
#include <iostream>
#include <cmath>
#include <iostream> 
using namespace std;
int main()
{
       setlocale( LC_ALL,"Russian" );
        double omega, k; 
        double T, A, phi0, x;
        const double g = 9.78;
        const double PI = 3.1415;
       cout << "Введите частоту: ";
       cin >> omega;
       if( omega =0 ) // контроль введенных данных
    {
        cout<<"Такого момента времени не существует\n";
        system("pause");
        return 1;
    }
       cout << "Введите амплитуду: ";
       cin >> A;
       cout << "Введите k: ";
       cin >> k;
if( k=0 ) // контроль введенных данных
    {
        cout<<"Такого угла не существует\n";
        system("pause");
        return 1;
    }
 phi0 = asin(1/k);
T= ((PI/2) - phi0)/omega;
x = A*sin (((omega*T ) + phi0 )*PI/180);
cout << "phi0 =  "<<phi0<<"\n "; 
cout << "T =  "<<T<<"\n ";
cout << "x =  "<<x<<"\n ";   
 
 system("pause");
        return 0;
}
Подскажите пожалуйста как правильно написать программу???? заранее огромное спасибо!!!!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2012, 22:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Математический маятник (C++):

математический маятник - C++
какая длина математического маятника, если за время t он сделает n колебаний?

Математический функции - C++
Где можно прочитать про всякие математические функции в c++? Пользуюсь #include &lt;math.h&gt; Интересует, особенно, как записать число...

Математический пример.как? - C++
Ребят помогите пожалуйста, кому несложно. Нужно написать код с++ для вот этого чуда. Я пробовал не получается ни чего , надежда на ВАС ...

Неправильный математический расчёт - C++
int tempInt = 0; int temp23 = (250*sizeof(char))+(sizeof(int)*5); tempInt = (0 / temp23); tempInt в итоге = 0 int tempInt =...

Математический пример, используем if, switch - C++
Задание: x*x Если 0&lt;=x&lt;=3 f(x)= { 4 В противном случае #include &quot;stdafx.h&quot; #include...

Записать математический пример программно - C++
Ребят, дело пустяковое, но я не понимаю в чем у меня ошибка. Вот этот пример - функция. Как мне написать ее программно. Я делаю вот...

26
Psilon
Master of Orion
Эксперт .NET
5908 / 4805 / 634
Регистрация: 10.07.2011
Сообщений: 14,407
Записей в блоге: 5
Завершенные тесты: 4
10.09.2012, 18:59 #16
-=ЮрА=-, Оу, мы уже на ты. Ну ладно. Вы советуете выразить автору формулу, которая у него уже присутствует в коде, значит ты вообще не глядя "сказанул". Круто че
0
-=ЮрА=-
Заблокирован
Автор FAQ
10.09.2012, 19:39 #17
isaak, ниже по твоей просьбе привожу решение (я дам расклад всех формул из условия чтобы было ясно откуда они взялись)
http://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{cases}  <br />
x(t) = A*sin(\omega *t + {\varphi }_{0})  \\   <br />
x(T) = A*sin(\omega *T + {\varphi }_{0})  \\  <br />
\frac{x(T)}{x(t)} = k \end{cases}
Теперь как я показал выше да и в условии сказано период колебаний составляет:
http://www.cyberforum.ru/cgi-bin/latex.cgi?T = \frac{\frac{\pi}{2} -{ \varphi }_{0}}{\omega}
Таким образом наша система преобразуется к виду:
http://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{cases}   <br />
x(t) = A*sin(\omega *t + {\varphi }_{0})  \\    <br />
x(T) = A*sin(\omega *(\frac{\frac{\pi}{2} -{ \varphi }_{0}}{\omega}) + {\varphi }_{0}) = A \\   \frac{x(T)}{x(t)} = k \end{cases}
В принципе преобразования можно было и не делать, ведь и так ясно что x(t) = A но я показал для наглядности что это так и есть
Так вот имеем
http://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{cases}   <br />
x(t) = A*sin(\omega *t + {\varphi }_{0})  \\    <br />
x(T) = A \\   <br />
\frac{x(T)}{x(t)} = k \end{cases}
Т.е получаем http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{1}{k}  = sin(\omega *t + {\varphi }_{0})
Откуда легко получить уже известное нам соотношение для начальной фазы колебаний (правда в условии автор с целью упрощения подал arcsin(1/k) как соотношение для начальной фазы колебаний, хотя это соотношение для полной фазы которая связана с начальной вот таким соотношением http://www.cyberforum.ru/cgi-bin/latex.cgi?\varphi = \omega *t +{ \varphi }_{0})

Ну а теперь касательно основного задания программы:
Цитата Сообщение от isaak Посмотреть сообщение
Написать программу для определения параметра T при условии, что параметры и k вводятся пользователем.
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
#include <cmath>
#include <iostream>
using namespace std;
 
int main()
{
    double k = 0;
    double w = 0;
    double phi0 = 0;
    double pi_2 = asin(1.0);//arcsin(1) = Пи/2
    double t    = 0;
    setlocale(LC_ALL,"RUS");
    while(true)
    {
        cout<<"k = ";cin>>k;
        cout<<"w = ";cin>>w;
        if(w == 0)
            cout<<"Некорректный ввод пользователя (w == 0) - тело покоится\n";
        else
        if(k < 1)
            cout<<"Отклонение не может иметь отношение больше амплитудного\n";
        else
        if(pi_2 < (phi0 = asin(1/k)) - 1E-12)//1E-12 - та фишка с даблами о которой рассказывал
            //у чисел с плавающей точкой всегда есть погрешность
            cout<<"Данное отношение 1/k недопустимо\n";
        else
        if((t = (pi_2 - phi0)/w) == 0)
            cout<<"Маятник уже досиг амплитудного отклонения\n";
        else
            cout<<"Маятник досигнет амплитудного отклонения через :"<<t<<" сек\n";
    }
    return 0;
}
PS:Psilon вот скажи я тебя трогаю?!Мало того что твоё решение негодится, так ты ещё грубишь!

Не по теме:

Ты лучше бы глаза разул и увидел что автор той книги из которой задача ввёл упрошение дляначальной фазы подразумевая под ней полную фазу

2
Миниатюры
Математический маятник  
Вложения
Тип файла: rar CalcTime.exe.rar (72.4 Кб, 18 просмотров)
-=ЮрА=-
10.09.2012, 19:43
  #18

Не по теме:

Цитата Сообщение от Psilon Посмотреть сообщение
Оу, мы уже на ты.
- хороше вам за 30-гик?Если нет то нечего вообще тут просить меня выкать - я сам как бы не маленький (уже детей воспитываю), ещё выкать кому то буду, кто кому ещё вы должен говорить!

0
isaak
103 / 40 / 9
Регистрация: 17.10.2010
Сообщений: 670
11.09.2012, 21:32  [ТС] #19
-=ЮрА=- от души огромное спасибо, все по полочкам разложил и про экстремум, производную и раскладка всех формул. А то в книге у автора ни хрена не понятно откуда че берется, у меня в голове каша была. Сейчас все стало проясняться.
0
-=ЮрА=-
Заблокирован
Автор FAQ
11.09.2012, 21:39 #20
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
isaak, всегда пожалуйста!Скажу, что книга та очень интересная в плане задачек и изложенного материала Просто излагать физику в книге по математике не принято, обычно подают готовые формулы с весьма и весьма лаконичным разъяснениями, я бы тебе советовал вооружится ещё учебником по физике с разделом механика и кинематика и тогда бы разбираться было бы легче
3
Psilon
Master of Orion
Эксперт .NET
5908 / 4805 / 634
Регистрация: 10.07.2011
Сообщений: 14,407
Записей в блоге: 5
Завершенные тесты: 4
11.09.2012, 21:41 #21
-=ЮрА=-, помогли человеку => я не прав. Извиняюсь

Не по теме:

И все же уважительное отношение или "тыкалка" определяется не возрастом, а другими параметрами.

0
isaak
103 / 40 / 9
Регистрация: 17.10.2010
Сообщений: 670
11.09.2012, 21:56  [ТС] #22
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение

Не по теме:

я сам как бы не маленький (уже детей воспитываю)/OFF]

Не по теме:


Извини, что отвлекаю от святого дела - воспитания детей, ты тоже делаешь благое дело учишь студентов правильно программировать, по сравнению с тобой ни один преподаватель не может или даже не хочет толково объяснять. Хотя у них ученые степени кандидаты, доценты и даже доктора наук. Но я заметил такую тенденцию чем выше у человека ученая степень тем больше он заболевает звездной болезнью и смотрит на студентов с презрением как на низшее существо.

0
-=ЮрА=-
Заблокирован
Автор FAQ
11.09.2012, 21:58 #23
Psilon, и я не хотел тебя обижать и на ты со мной можешь(я не считаю это за невоспитанность когда пишусь на ты при ответах на форуме), невоспитанность - это когда человеку с палочкой место не уступят или бабульке не помогут выйти на высокую платформу вокзала, а ты вы, да бог с ним).
Когда отвечал за производную хотел для isaak показать как исследовать на максимум функцию, возможно ты как то прератно это воспринял и понеслось как тут обычно бывает
Всё ок
PS: Хорошо можно на вы мне без разницы, вы так вы, просто это как то вычурно...
0
isaak
103 / 40 / 9
Регистрация: 17.10.2010
Сообщений: 670
11.09.2012, 22:00  [ТС] #24
Ребята не ссорьтесь. Psilon вам тоже огромное спасибо за советы, все мы иногда тоже ошибаемся ни чего страшного в этом нет.
0
-=ЮрА=-
11.09.2012, 22:01
  #25

Не по теме:

Цитата Сообщение от isaak Посмотреть сообщение
тепень тем больше он заболевает звездной болезнью и смотрит на студентов с презрением как на низшее существо
- ну у меня когда то был такой этап, я чертовски за него сожалею!!!Поэтому стараюсь искупать былые грешки)Мне нравится писать программы, алгоритмы, точные науки, для меня это кайф(когда время имеется помогаю с радостью)

0
Psilon
Master of Orion
Эксперт .NET
5908 / 4805 / 634
Регистрация: 10.07.2011
Сообщений: 14,407
Записей в блоге: 5
Завершенные тесты: 4
11.09.2012, 22:06 #26
-=ЮрА=-, ну я не считаю, что отступление на заранее подготовленные (или неподготовленные) позиции является поражением. Предпочитаю признать ошибку. В конце концов, виноватых нет, есть недопонимание. Ну а теперь, надеюсь, нету.

Не по теме:

Если у вас есть видеоуроки по С/С++ было бы интересно, т.к. я в этих ЯП не разбираюсь, а пишу на C#. Однако тут поступило предложение написать СУБД и клиент-серверное приложение, и если на сервере я могу рассчитывать на фреймворк выше 3.5, то вот на клиентских машинах вряд ли. В связи с чем возникла необходимость написать клиент на нативно компилируемом ЯП, как вариант: С/С++. Но т.к. я в них разбираюсь не более, чем написать helloworld в цикле (из ЯП у нас был только Pascal/Delphi), то нужно подучить. Т.к. лично со мной возиться никто не будет (надо и время выбирать, и профита с меня никакого: у студента откуда деньги?..), то вот такая вот просьба: мб бложик ведете наподобие такого вот или видеоуроки на ютубе или еще что

0
-=ЮрА=-
11.09.2012, 22:15     Математический маятник
  #27

Не по теме:

Psilon, линки тут по моему забанены, я отписался одной хорошей статьёй в ЛС

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2012, 22:15
Привет! Вот еще темы с ответами:

Как написать математический пример - C++
Как написать этот пример на С++ ? n П X1=2; i=1 Xi=0.5*Xi-1 Вот что у меня получилось верно ли я...

Что сделать, чтобы математический парсер заработал? - C++
#include &quot;stdafx.h&quot; #ifndef PARSER_H_INCLUDED #define PARSER_H_INCLUDED #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include...

Элементарный математический код, но почему то всегда равно 0,0000 - C++
Элементарный математический код, но почему то всегда равно 0,0000. Тут я еще использую старые функции ввода-вывода, потому что так надо на...

Математический анализ кода программы. Как работает rand()? - C++
Помогите, пожалуйста, с математическим анализом кода программы. #include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;ctime&gt; ...


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

Или воспользуйтесь поиском по форуму:
27
11.09.2012, 22:15
Ответ Создать тему
Опции темы

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