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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2014, 17:50   #1
slasty
 
Регистрация: 03.01.2014
Сообщений: 3
Восклицание Метод милна для решения оду (подскажите в чем ошибка)

Добрый вечер,Форумчане! Подскажите где ошибка в программе.
дано диф.уравнение y'+x*y=0.5*(x-1)*exp(x)*y^2 ,нач.условие у(0)=2.
реализовать в программе вывод x,y,ykor,ypr .
Проблема заключается в том что,выводит не все х и у.
Код:
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <cstring>
#include <conio.h>
#include <iomanip>

using namespace std;

double X0, Y0, h;
double k1, k2, k3, k4;
double eps, abs_pogr;
double ypr [10];
double ykor [10];
double x [10];
double y [10];
int i;

double f1 (double xa, double ya)
{
	return 0.5*(xa-1)*exp(xa)*ya*ya-xa*ya;
}

int main()
{	cout <<"Vvedite eps = ";cin>>eps;
	cout <<"Vvedite h = ";cin>>h;
	cout <<"Vvedite X0 = ";cin>>X0;
	cout <<"Vvedite Y0 = ";cin>>Y0;
	x[0] = X0;
	y[0] = Y0;
	// Gotovim 1-e 3 tochki po metodu runge-kutta 

	for (i = 0 ; i <= 3 ; i++)
	{
		k1 = h * f1(x[i], y[i]);
		k2 = h * f1(x[i] + h/2, y[i] + k1/2);
		k3 = h * f1(x[i] + h/2, y[i] + k2/2);
		k4 = h * f1(x[i] + h, y[i] + k3);
		y[i+1] = y[i] + (k1 + 2*k2 + 2*k3 + k4)/6;
		x[i+1] = x[i] + h;
	}

	for (i = 4 ; x[i] <= (1 + h) ; i++) // eps > abs_pogr
	{
		// etap prognoza i korrektsii
		ypr[i] = y[i-4] + (4*h) / 3*( 2*f1(x[i-3],y[i-3] )-f1( x[i-2],y[i-2] )+2*f1( x[i-1],y[i-1] ));
		ykor[i] = y[i-2] + (h/3)*(f1(x[i-2],y[i-2] )+4*f1(x[i-1],y[i-1] )+ f1(x[i], ypr[i] ));
		abs_pogr = abs (ykor[i] - ypr[i]) / 29;
		if (abs_pogr>eps) y [i] = ykor [i];
		else y[i] = ypr [i];
		abs_pogr = abs(ykor[i] - ypr[i]) / 29;
		x[i+1] = x[i] + h;
		cout<<"ykor= "<<ykor[i]<<"     ypr= "<<ypr[i]<<endl;
		
	}
	
	cout <<"\nx: "<<"   y: "<<endl;
	for (i = 0; i < 7; i++) cout <<x[i] << "    "<< y[i] << "      "<< endl;

	_getch();
	return 0;
}
slasty вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подскажите где ошибка - метод конечных разностей для уравнения в частных производных illuminates Общие вопросы C/C++ 0 07.11.2013 14:32
Метод Милна PhotOn C++ Builder 0 23.04.2012 06:56
метод Милна пельмень Паскаль, Turbo Pascal, PascalABC.NET 3 12.12.2011 14:36
Написать программу на C++ для решения ОДУ разностным методом Macuka Фриланс 0 13.12.2010 21:29
Метод простых итерации для нелинейных уравнений. Подскажите где ошибка DuHbka Помощь студентам 15 31.05.2009 22:46