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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2010, 19:06   #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 вне форума Ответить с цитированием
Старый 13.04.2010, 00:55   #2
xVxSeRGxVx
Пользователь
 
Регистрация: 28.09.2009
Сообщений: 42
По умолчанию

Цитата:
Сообщение от PPPPPP Посмотреть сообщение
Добрый день. Есть программа, которую нужно модифицировать. В идеале, эта штука должна решать любой дифур первого порядка методом Рунге-Кутта 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);
}
может я чего-то не понимаю, но зачем амперсанд (&) в printf???

Код:
#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);
}
у меня что-то выводило
xVxSeRGxVx вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
метод Рунге sneZZZinka Помощь студентам 1 21.12.2009 17:31
[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