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

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

Войти
Регистрация
Восстановить пароль
 
 
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
#1

как в моей программе реализовать заданное уравнение. - C++

06.08.2011, 14:05. Просмотров 886. Ответов 17
Метки нет (Все метки)

Подскажите пожалуйста, как решить данное уравнение методом рунге кута 4 порядка?
Метод я реализовал для другого уравнения. Правда не уверен, что правильно. Проверьте пожалуйста.
Проблема в том, что я не понимаю, как в моей программе реализовать заданное уравнение.
Вот заданное уравнение:

Q ̇(с точ)=g/V*(N*cosj-cosQ)
Начальные условия:
Q0 = -6; g = 9;
N=3; j=45;
tнач =1, tкон = 10, Δt;

Программа для другого уравнения:
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
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
double myfunc(const double& x, const double& y)
{
    return 6*x*x+5*x*y+y*y+4*x+2*y-3;
    
}
int main(int argc, char *argv[])
{
    int i, n; 
    double x, y, h,py, fy,k,k0,k1,k2,k3;
    cout<< " h = "; cin>>h;
    cout<< " n = "; cin>>n;
    cout<< " x0 = "; cin>>x;
    cout<< " y0 = "; cin>>y;
   for (i = 0; i <= n; i++)
    {
        fy = myfunc(x, y);
        k0=h*fy;
        k1=h*myfunc(x+h/2, y+k0/2);
        k2=h*myfunc(x+h/2, y+k1/2);
        k3=h*myfunc(x+h, y+k2);
        k=(k0+2*k1+2*k2+k3)/6;
        y += k;
        
        cout << "y = " << y;
        cout << "   x = " << x << "\n";
        x += h;
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
 Комментарий модератора 
Используйте теги форматирования кода!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2011, 14:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос как в моей программе реализовать заданное уравнение. (C++):

Подскажи как подключить функцию проверки на принадлежность символов к моей программе - C++
Подскажи как подключить функцию проверки на принадлежность символов к моей программе. Вот сама функция. // Если x принадлежит строке A,...

Как записать условие, чтобы в моей программе текст выводился только когда не найдено искомых строк. - C++
всем здравствуйте. до сих пор я не имел проблем с составлением условий в программном коде) но вот беда... нет сразу код - потом беда) ...

Помогите найти ошибку в моей программе - C++
#include&lt;iostream.h&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; struct uravn {double a, b, e; void define (double a1=0.0, double b1=0.0,...

Что означают переменные в моей программе? - C++
Что означает строчка в программе Data=сh+data, а точнее , что такое ch?

В моей программе есть глобальные переменные? - C++
int case_Menu(); void case_First(int ***a, int *height, int *width); void case_Second(int ***a, int *height, int *width); void...

Исправьте ошибки что найдете в моей программе. - C++
помогите пожалуйста бедному студенту исправьте пожалуйста ошибки что найдете в моей программе программа читает матрицу проверяет или...

17
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.08.2011, 14:08 #2
nikozavr, воспользуйтесь редактором формул, уравнение не разобрать
0
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
06.08.2011, 14:15  [ТС] #3
во влож
0
Вложения
Тип файла: doc Подскажите пожалуйста.doc (29.5 Кб, 14 просмотров)
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
06.08.2011, 15:58  [ТС] #4
dQ/dt = g/V*(N*cosj-cosQ)
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.08.2011, 23:49 #5
это уравнение в частных производных? или V константа?
0
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
07.08.2011, 01:04  [ТС] #6
V константа
0
mac_alleb
7 / 7 / 0
Регистрация: 05.08.2011
Сообщений: 54
07.08.2011, 04:34 #7
Интересное уравнение! Вообще если шага для Q нет, а есть только написанные начальные
условия, то слева просто константа и решать нечего. Если есть шаг для Q, то это уже не просто
Рунге-Кутт, а разностная задача, а это вообще-то другой алгоритм, хотя и очень похожий .
1
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
07.08.2011, 22:18  [ТС] #8
Шаг для t задается. Q меняется по t.
0
IrineK
Заблокирован
08.08.2011, 02:36 #9
dQ/dt = g/V*(N*cosj-cosQ)
Q - это угол
t - время
dQ/dt - угловая скорость
V - линейная скорость, если V = const, тогда V = L / t, L - должно быть задано
Уравнение преобразуется:
dQ/dt = (g/L)*t*(N*cosj-cosQ)
что более приемлемо для решения.

Тогда переход к Х и У: t->X, Q->Y

Еще один момент: Q0 = -6, j=45 это в градусах?
0
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
08.08.2011, 11:58  [ТС] #10
Да, в градусах.

Добавлено через 51 секунду
L - не надо задавать, V - задается.
0
IrineK
Заблокирован
08.08.2011, 12:34 #11
В каком диапазоне меняется V?

Нужно вывести таблицу зависимости конечного угла Qк от V, или же V - просто одно число? Чему оно равно?
0
IrineK
Заблокирован
08.08.2011, 13:28 #12
Поскольку правая часть от t не зависит, имеем уравнение с разделяющимися переменными, которое спокойно решается в лоб, аналитически (см.вложение).

Во вложении также и решение по РК4.
1
Вложения
Тип файла: zip solution.zip (18.3 Кб, 11 просмотров)
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
08.08.2011, 18:31  [ТС] #13
А если система из 6 уравнений:

dQ/dt = g/V*(N*cosj-cosQ)
dH/dt = V*sinQ
dP/dt=(-g/V*cosQ)*N*sinj
dX/dt=V*cosQ*cosP
dZ/dt=V*cosQ*sinP

g,N,j, V– задаются с клавы
Начальные условия:
Qo , Ho,Po,Xo,Zo – задаются с клавы.


Как реализовать для системы?
0
mac_alleb
7 / 7 / 0
Регистрация: 05.08.2011
Сообщений: 54
08.08.2011, 18:51 #14
По идее не худо бы вообще прописать какие величины в уравнении от чего зависят
( V(t) например), а то поди догадайся, что там за j такие . Если справа все же есть
зависимость от t, то нужно брать разность левой и правой части и решать уравнение
разность = 0.
0
IrineK
Заблокирован
08.08.2011, 19:00 #15
Не вижу шесть уравнений.

Наблюдаю пять.
0
08.08.2011, 19:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2011, 19:00
Привет! Вот еще темы с ответами:

Подскажите в чем ошибка в моей программе (рекурсия) - C++
Программа копирует строку t в конец строки s: вот код: #include&lt;iostream&gt; using namespace std; int i=0; string fn_strcat(string...

Защитник виндовс находит вирус в моей консольной программе - C++
Я даже не знаю, подходит ли вопрос под эту категорию/форум. Короче, я изучаю с++, создал простой консольный проект, чтобы тестить...

Как реализовать в программе поддержку skin-ов - C++
Здравствуйте! Я пытаюсь сделать в Microsoft Visual Studio 2010 на Visual C++ плеер на библиотеке BASS.dll. Как сделать, чтобы программа...

Как реализовать небуферизированный ввод в программе? - C++
Необходим ввод по одному символу (т.е. как в getchar()), но без необходимости ввода специального символа для завершения. Т.е. что-то...


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

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

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