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

Метод Рунге-Кутта 4 порядка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Построить пересечение массивов a и b http://www.cyberforum.ru/cpp-beginners/thread1031160.html
Даны два массива целых чисел a и b, каждый их которых не содержит повторяющихся элементов. Исходная информация записана в файле. Построить пересечение массивов a и b. Вот что написала, не понимаю что не так :( int _tmain(int argc, _TCHAR* argv) { setlocale(LC_CTYPE,"russian"); int *x, *y, *z; int i, n, m, k, nz, tmp; fstream ff("input.txt");
C++ Программа работы с текстом из файла или его набора с клавиатуры Добрый день! Изучаю язык С++ пару недель, с текстовыми файлами работать не умею вообще, поэтому прошу помочь написать код и, по возможности растолковать, кому не лень, вот сама задача: "Задан текст. В каждом слове текста переместить гласные буквы в начала слова, согласные – в конец слова." Заранее благодарю... http://www.cyberforum.ru/cpp-beginners/thread1031159.html
Распечатать координаты вектора, равного сумме двух векторов a и b размерностью n=10 и найти его модуль C++
Распечатать координаты вектора, равного сумме двух векторов a и b размерностью n=10 и найти его модуль помогите решить, пожалуйста!
Задача на сортировку C++
Не понимаю в чем дело( Прошу помочь с кодом) #include <iostream> using namespace std; int random (int A) { int mas,i; for (i = 1; i <= 40; i++) {
C++ Найти функцию с точностью e , т.е. пока |fn+1-fn| < e http://www.cyberforum.ru/cpp-beginners/thread1031137.html
Ребята, помогите, пожалуйста, написать программку или составить формулу для вычисления точности определения данной функции. Найти функцию с точностью e , т.е. пока |fn+1-fn| < e . Определить необходимое число членов ряда. Определить абсолютную разность между табличной функцией и суммой ряда. Определить с какой точностью в машине определяется эта функция. ex = 1 + x +x2/2! + x3/3! + ... ...
C++ Раздел для студентов Товарищи модераторы, администраторы, сразу прошу прощения что в разделе С++ для начинающих, собственно и к вам предложение. А давайте ка запилим раздел для студентов типа: "сделайте за меня я не хочу учиться" или как угодно. Как время к сессии, форум просто невозможно читать, одно переделайте да сделайте, а те люди которые реально учат и решают\обсуждают вопросы, не получают должного внимания,... подробнее

Показать сообщение отдельно
fleshk1n
0 / 0 / 0
Регистрация: 17.03.2011
Сообщений: 8

Метод Рунге-Кутта 4 порядка - C++

06.12.2013, 19:04. Просмотров 427. Ответов 0
Метки (Все метки)

Всем добра!
Ребята есть вот:
задача: Решить краевую задачу для обыкновенного дифференциального уравнения с точностью е=1*е-4. Проверить полученную точность. Результаты представить с шагом h=0.06. y’’ - y’/x2 – 3xy = -3/x – 3.2
y(2)=-2.6
y(2.6)=1

Метод Рунге-Кутта
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
#include<stdio.h>
#include<math.h>
#define P(x) (-1/(x)/(x))
#define Q(x) (-3*(x))
#define F(x) (-3/(x)-3.2)
#define M 10
 
void fn(int fl);
double a=2,b=2.6,A=-2.6,B=1;
double v[M+1],h;
int i,n=M;
 
int main(){
double u[M+1],epss[M],y[M+1][2];
double c,eps=0.0001,norm=1;
int flag=0;epss[0]=0;epss[10]=0;
 
do{
h=(b-a)/n;
v[0]=0;fn(0);
for(i=0;i<=M+1;i++)u[i]=v[i];
v[0]=A;fn(1);
c=(B-v[M])/u[M];
for(i=0;i<=M;i++)
y[i][flag]=c*u[i]+v[i];
if(flag==0)flag=1;
else{
norm=0;
for(i=1;i<M;i++){epss[i]=fabs(y[i][0]-y[i][1]);if(epss[i]>norm)norm=epss[i];}
for(i=0;i<=M;i++){y[i][0]=y[i][1];}}
n=n*2;
}while (norm>eps);
 
printf("\nh/%d=%f \n| N |    X     |    Y    |   Eps    |\n",n/(2*M),h);
for(i=0;i<=M;i++) printf("| %2d | %.2f | %f |  %.5e  |\n",i,i*(b-a)/M+a, y[i][0], epss[i]);}
 
void fn(int fl){
double z[M+1],x,ku1,ku2,ku3,ku4,kz1,kz2,kz3,kz4;
int j;z[0]=1-fl;
 
for(i=0;i<n;i++){
x=i*h+a;j=i*M/n;if((i*M)%n!=0)j++;
ku1=z[j];
kz1=-P(x)*z[j]-Q(x)*v[j]+fl*F(x);
ku2=z[j]+kz1*h/2;
kz2=-P(x+h/2)*(z[j]+kz1*h/2)-Q(x+h/2)*(v[j]+ku1*h/2)+fl*F(x+h/2);
ku3=z[j]+kz2*h/2;
kz3=-P(x+h/2)*(z[j]+kz2*h/2)-Q(x+h/2)*(v[j]+ku2*h/2)+fl*F(x+h/2);
ku4=z[j]+kz3*h;
kz4=-P(x+h)*(z[j]+kz3*h)-Q(x+h)*(v[j]+ku3*h)+fl*F(x+h);
v[i*M/n+1]=v[j]+h/6*(ku1+ku2*2+ku3*2+ku4);
z[i*M/n+1]=z[j]+h/6*(kz1+kz2*2+kz3*2+kz4);}}
Все работает как часы, есть одна проблемка, нужны комментарии к программе.(я в этом не силен совсем) Если есть добрые люди, которые могут написать их, буду очень благодарен.(Суть в том, что надо комментарии почти по каждой строчке, типо: #include <math.h> // открывает библиотеку математики и т.д. ) Причуд моего препода не понять, он так сказать из "Нарнии".
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru