|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.01.2010, 21:36 | #1 |
Пользователь
Регистрация: 01.10.2009
Сообщений: 21
|
Метод Рунге-Кутта_мерсона для системы из 3 уравнений
Всем Доброе Время Суток!
Я пытаюсь составить алгортм решения системы дифференциальных 3 уравнений. Написал прогу для системы из 2-х уравнений, а теперь патыюсь переделать под 3 уравнения. Очень прошу помочь мне с этой проблемой, тк завтра сдавать курсач... Вот моя попытка для 2 уравнений, которую я переделываю для 3 уравнений. Помогите плиз сделать прогу для 3 уравнений... Очень прошу помочь мне с этой проблемой, тк завтра сдавать курсач... #include <stdio.h> #include <conio.h> #include <math.h> const double t = 1e-3; float x1,x2,x3,a,b,t0,tk; float c1,c2,c3,c4; double func1 (double x1, double x2, double x3) {x1=-c2*x1+c1*x2*x3+c1*x1*x2; return x1;} double func2 (double x1, double x2, double x3) {x2=c1*x2+c3*x3-c1*x1*x3; return x2;} double func3 (double x1, double x2, double x3) {x3=-c4*x3+c1*x1*x2; return x3;} int main () { float x,y1,y2,y3,k1,k2,k3,k4,k5,r,h,d1,d2 ,d3; clrscr(); c1=1; c2=3; c3=20; c4=10; printf("\n x1="); scanf("%f", &x1); printf("\n x2="); scanf("%f", &x2); printf("\n x3="); scanf("%f", &x3); printf("\n t0="); scanf("%f", &t0); printf("\n tk="); scanf("%f", &tk); cprintf("\n Metod Runge-Kutta-Mersona"); h=tk/20; y1=x1; y2=x2; y3=x3; for (a=t0; a<=tk+t; a+=h) { k1=h*func1(x1,x2,x3); k2=h*func1(x1+(1/3)*h,x2+(1/3)*k1); k3=h*func1(x1+(1/3)*h,x2+(1/6)*k1+(1/6)*k2); k4=h*func1(x1+(1/2)*h,x2+(1/8)*k1+(3/8)*k3); k5=h*func1(x1+h,x2+(1/2)*k1-(3/2)*k3+2*k4); d1=y1+(k1+4*k4+k5)/6; k1=h*func2(x1,x2,x3); k2=h*func2(x2+(1/3)*h,x1+(1/3)*k1); k3=h*func2(x2+(1/3)*h,x1+(1/6)*k1+(1/6)*k2); k4=h*func2(x2+(1/2)*h,x1+(1/8)*k1+(3/8)*k3); k5=h*func2(x2+h,x1+(1/2)*k1-(3/2)*k3+2*k4); d2=y2+(k1+4*k4+k5)/6; k1=h*func3(x1,x2,x3); k2=h*func3(x3+(1/3)*h,x1+(1/3)*k1); k3=h*func3(x3+(1/3)*h,x1+(1/6)*k1+(1/6)*k2); k4=h*func3(x3+(1/2)*h,x1+(1/8)*k1+(3/8)*k3); k5=h*func3(x3+h,x1+(1/2)*k1-(3/2)*k3+2*k4); d3=y3+(k1+4*k4+k5)/6; r=(2*k4-3*k3-k5)/10; if (fabs(r)>tk) { h=h/2;} if (32*(fabs(r)<tk)) { h=h*2;} printf("\n x1=%f d1=%f ",(a+x1),d1); printf("\n x2=%f d2=%f ",(a+x2),d2); printf("\n x3=%f d3=%f ",(a+x3),d3); } getch(); return 0; } |
28.01.2010, 21:36 | #2 |
Пользователь
Регистрация: 01.10.2009
Сообщений: 21
|
Заранее СПАСИБО!!!!
|
28.01.2010, 21:49 | #3 | |
FORTRAN programmer
Форумчанин
Регистрация: 08.12.2009
Сообщений: 153
|
Цитата:
|
|
28.01.2010, 21:55 | #4 |
Пользователь
Регистрация: 01.10.2009
Сообщений: 21
|
Я понимаю, в численных методах я не силён...
Но если Вам не трудно, запишите пожалуйста наиболее правильный с Вашей точки зрения вариант для решения системы из 3-х уравнений! Заранее СПАСИБО! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
метод Рунге | sneZZZinka | Помощь студентам | 1 | 21.12.2009 17:31 |
Чиленное интегрирование.Метод Рунге | sneZZZinka | Помощь студентам | 0 | 20.12.2009 19:29 |
Метод простых итерации для нелинейных уравнений. Подскажите где ошибка | DuHbka | Помощь студентам | 15 | 31.05.2009 22:46 |
метод Рунге-Кутта для систем дыф.уравнений 1 порядка | Natok | Помощь студентам | 4 | 31.05.2009 02:37 |
Метод итерации для уравнений | Hellgrom | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 10.05.2009 18:38 |