Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2013, 19:38   #1
Friezi
Новичок
Джуниор
 
Регистрация: 20.05.2013
Сообщений: 2
По умолчанию Метод Дормана-Принса

Здравствуйте, я очень нуждаюсь в помощи. Задание курсовой звучит так: Разработка программного средства для численного решения дифференциального уравнения одной переменной методом Дормана–Принса. я начала писать код, но что-то плохо получается, помогите пожалуйста, очень нужно!

Код:
#include "stdafx.h"
#include <iostream>

using namespace System;
using namespace std;

double f(double x, double y);


int main()
{
	setlocale( LC_ALL,"Russian" );
	int n;
	long double h, xi, yi;
	//long double c2=1/5, c3=3/10, c4=4/5, c5=8/9, c6=1, c7=1;
	//long double b1=35/384, b2=0, b3=500/1113, b4=125/192, b5=-2187/6784, b6=11/84, b7=0;
	long double k1, k2, k3, k4, k5, k6, k7;
	//long double a21=1/5, a31=3/40, a32=9/40, a41=44/45, a42=-56/15, a43=32/9, a51=19372/6561, a52=-25360/2187, a53=64448/6561, a54=-212/729, a61=9017/3168;
	//long double a62=-355/33, a63=46732/5247, a64=49/176, a65=-5103/18656, a71=35/384, a72=0, a73=500/1113, a74=125/192, a75=-2187/6784, a76=11/84;
    cout<<"Введите шаг интегрирования: ";
	cin>>h;
	cout<<"Введите число раз интегрирования: ";
	cin>>n;
	cout<<"Введите начальное условие x0 = ";
	cin>>xi;
	cout<<"Введите начальное условие y0 = ";
	cin>>yi;
	cout<<"  x    y  "<<endl;
	cout<<"  "<<xi<<"  "<<"  "<<yi<<"  "<<endl;

	for (int j=0; j<n; j++)
	{
		k1=h*f(xi,yi);
		k2=h*f(xi+(1/5),yi+k1*(1/5));
		k3=h*f(xi+(3/10),yi+k1*(3/40)+k2*(9/40));
		k4=h*f(xi+(4/5),yi+k1*(44/45)+k2*(-56/15)+k3*(32/9));
		k5=h*f(xi+(8/9),yi+k1*(19372/6561)+k2*(-25360/2187)+k3*(64448/6561)+k4*(-212/729));
		k6=h*f(xi+1,yi+k1*(9017/3168)+k2*(-355/33)+k3*(46732/5247)+k4*(49/176)+k5*(-5103/18656));
		k7=h*f(xi+1,yi+k1*(35/384)+k2*0+k3*(500/1113)+k4*(125/192)+k5*(-2187/6784)+k6*(11/84));
		xi=xi+h;
		yi=yi+h*((35/384)*k1+0*k2+(500/1113)*k3+(125/192)*k4+(-2187/6784)*k5+(11/84)*k6+0*k7);
		cout<<"  "<<xi<<"  "<<"  "<<yi<<"  "<<endl;
		k1=0;k2=0;k3=0;k4=0;k5=0;k6=0;k7=0;
		
	}
	
	
	char end;
	cin>>end;
    return 0;
}

double f(double x, double y)
{
	double Ur;
	Ur=2*y/x;
	return Ur;
}
Очень нуждаюсь в помощи!
Friezi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод перебора, Метод дихотомии, Метод золотого сечения Delphi !!! OneBri Помощь студентам 0 03.10.2012 08:42
Конструктор,метод вывода на экран Display, метод для преобразования в строку toString в Delphi Чумак Татьяна Помощь студентам 6 03.04.2012 11:58
исследовать метод квадратных корней и метод Холецкого для решения СЛАУ Vит@x@ Помощь студентам 0 22.11.2011 10:47
Задача Коммивояжера. Метод Монте-Карло и метод приращений. [Паскаль] U9110 Помощь студентам 4 06.04.2011 09:48
Turbo Pascal[програмыки : текстовая\метод симпсона\метод половинного деления qsccsq Помощь студентам 7 24.12.2010 05:23