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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2010, 23:43   #1
PPPPPP
Пользователь
 
Регистрация: 28.02.2010
Сообщений: 22
По умолчанию Метод Рунге-Кутта (Си)

Добрый день. Есть программа, которую нужно модифицировать. В идеале, эта штука должна решать любой дифур первого порядка методом Рунге-Кутта 4-ого порядка. Однако, этого не происходит. А я не вижу ошибки. Не подскажете?!

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

double f(double x, double y)
{
	return(x-y);
}  
 
void main()
{
	int i,n;
	double K1,K2,K3,K4,h,x,x1,y;
	printf("vvedite zna4enie y0=");
	scanf("%lf",&y);
    printf("vvedite zna4enie x0=");
	scanf("%lf",&x);
    printf("vvedite zna4enie xn=");
	scanf("%lf",&x1);
    printf("vvedite veli4iny shaga h=");
	scanf("%lf",&h);
	
    n=(x1-x)/h;

	for(i=0;i<n;i++)
	{
	K1=f(x,y);
	printf("\n %lf",&K1);

	K2=f(x+h/2,y+h/2*K1);
	printf("\n %lf",&K2);

	K3=f(x+h/2,y+h/2*K2);
	printf("\n %lf",&K3);

	K4=f(x+h,y+h*K3);
	printf("\n %lf",&K4);

	y=y+h/6*(K1+2*K2+2*K3+K4);
    printf("\n %lf",&y);
	}
scanf("%lf",&y);
}
PPPPPP вне форума Ответить с цитированием
Старый 09.04.2010, 20:18   #2
Domydorogi
Новичок
Джуниор
 
Регистрация: 06.04.2010
Сообщений: 1
По умолчанию

Держи.


Код:
//  #include "stdafx.h"
#include<math.h>
#include<stdio.h>

double f(double x, double y)
{
	return(x-y);
}

void main()
{
	int i,n;
	double K1,K2,K3,K4,h,x,x1,y;
	printf("vvedite zna4enie y0=");
	scanf("%lf",&y);
    printf("vvedite zna4enie x0=");
	scanf("%lf",&x);
    printf("vvedite zna4enie xn=");
	scanf("%lf",&x1);
    printf("vvedite veli4iny shaga h=");
	scanf("%lf",&h);

    n=(x1-x)/h;

	for(i=0;i<n;i++)
	{
	K1=f(x,y);
//	printf("%lf\n", K1);

	K2=f(x+h/2,y+h/2*K1);
//	printf("%lf\n", K2);

	K3=f(x+h/2,y+h/2*K2);
//	printf("%lf\n", K3);

	K4=f(x+h,y+h*K3);
//	printf("%lf\n", K4);

	y=y+h/6*(K1+2*K2+2*K3+K4);
    x=x+h;

    printf("%10.4lf%10.4lf\n", x, y);
	}
scanf("%lf",&y);
}

Последний раз редактировалось Stilet; 12.04.2010 в 09:46.
Domydorogi вне форума Ответить с цитированием
Старый 12.04.2010, 02:58   #3
PPPPPP
Пользователь
 
Регистрация: 28.02.2010
Сообщений: 22
По умолчанию

ОГО!! Офигенски!!! Спасибо огромное!!!
PPPPPP вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод Рунге-Кутта (Си) PPPPPP Общие вопросы C/C++ 1 13.04.2010 00:55
[Delphi] Помогите справиться с задачей по числякам (метод Рунге-Кутта) Unlit Помощь студентам 0 01.10.2009 09:51
метод Рунге-Кутта для систем дыф.уравнений 1 порядка Natok Помощь студентам 4 31.05.2009 02:37
Задача Методом Эйлера и методом Рунге-Кутта. Прошу помочь. Очень срочно. BeNeDiKT Паскаль, Turbo Pascal, PascalABC.NET 0 12.05.2009 13:14