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

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

Восстановить пароль Регистрация
 
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
06.08.2011, 14:05     как в моей программе реализовать заданное уравнение. #1
Подскажите пожалуйста, как решить данное уравнение методом рунге кута 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;
}
 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2011, 14:05     как в моей программе реализовать заданное уравнение.
Посмотрите здесь:

Исправьте ошибки что найдете в моей программе. C++
C++ Как реализовать в программе поддержку skin-ов
Как реализовать небуферизированный ввод в программе? C++
C++ Помогите найти ошибку в моей программе
Как записать условие, чтобы в моей программе текст выводился только когда не найдено искомых строк. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.08.2011, 14:08     как в моей программе реализовать заданное уравнение. #2
nikozavr, воспользуйтесь редактором формул, уравнение не разобрать
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
06.08.2011, 14:15  [ТС]     как в моей программе реализовать заданное уравнение. #3
во влож
Вложения
Тип файла: 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)
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.08.2011, 23:49     как в моей программе реализовать заданное уравнение. #5
это уравнение в частных производных? или V константа?
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
07.08.2011, 01:04  [ТС]     как в моей программе реализовать заданное уравнение. #6
V константа
mac_alleb
7 / 7 / 0
Регистрация: 05.08.2011
Сообщений: 54
07.08.2011, 04:34     как в моей программе реализовать заданное уравнение. #7
Интересное уравнение! Вообще если шага для Q нет, а есть только написанные начальные
условия, то слева просто константа и решать нечего. Если есть шаг для Q, то это уже не просто
Рунге-Кутт, а разностная задача, а это вообще-то другой алгоритм, хотя и очень похожий .
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
07.08.2011, 22:18  [ТС]     как в моей программе реализовать заданное уравнение. #8
Шаг для t задается. Q меняется по t.
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 это в градусах?
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
08.08.2011, 11:58  [ТС]     как в моей программе реализовать заданное уравнение. #10
Да, в градусах.

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

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

Во вложении также и решение по РК4.
Вложения
Тип файла: 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 – задаются с клавы.


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

Наблюдаю пять.
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
08.08.2011, 20:37  [ТС]     как в моей программе реализовать заданное уравнение. #16
Тогда 5.
mac_alleb
7 / 7 / 0
Регистрация: 05.08.2011
Сообщений: 54
08.08.2011, 23:19     как в моей программе реализовать заданное уравнение. #17
Согласен .
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2011, 12:18     как в моей программе реализовать заданное уравнение.
Еще ссылки по теме:

Подскажите в чем ошибка в моей программе (рекурсия) C++
Что означают переменные в моей программе? C++
C++ В моей программе есть глобальные переменные?

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

Или воспользуйтесь поиском по форуму:
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
09.08.2011, 12:18  [ТС]     как в моей программе реализовать заданное уравнение. #18
И как ?
Yandex
Объявления
09.08.2011, 12:18     как в моей программе реализовать заданное уравнение.
Ответ Создать тему
Опции темы

Текущее время: 23:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru