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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2009, 21:25   #1
Craz
Пользователь
 
Регистрация: 01.10.2009
Сообщений: 21
Стрелка Решение обыкновенных дифференциальных уравнений

Разработайте программу для решения системы из трех ОДУ, описывающей простейшую модель аттрактора. Результаты решения экспортировать в текстовый файл и по данным в нем построить графики зависимости x1, x2, x3 от времени или x3 от x1, x2.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int i,q;
float k1,k2,k3,k4,s,sk,hs,e;
double x[3],dx[3],xp[3],r1[3],r2[3],r3[3],r4[3],a[3];
int bal;
FILE *file;


double fun (double xx[3])
{
dx[0]=-k2*xx[0]+k1*xx[1]*xx[2]+k1*xx[0]*xx[1];
dx[1]=k1*xx[1]+k3*xx[2]-k1*xx[0]*xx[2];
dx[2]=-k4*xx[2]+k1*xx[0]*xx[1];
return dx[i];
}

int raschet ()
{
if ((file = fopen("3.txt","w")) == NULL)
{
printf("Fail ne naiden ili ne sozdan \n");
exit (1);
}
clrscr ();
x[0]=1;
x[1]=0;
x[2]=0;
k1=1;
k2=3;
k3=20;
k4=10;
s=0;
sk=10;
hs=0.05;
q=3;
e=0.0001;
while (s<sk+e)
{
printf ("\n%7.2f %7.15f %7.15f %7.15f",s,x[0],x[1],x[2]);
fprintf (file,"\n%7.2f %7.15f %7.15f %7.15f",s,x[0],x[1],x[2]);
getch ();
for (i=0; i<q; i++)
xp[i]=x[i];
for (i=0; i<q; i++)
r1[i]=fun (xp);
for (i=0; i<q; i++)
{
a[i]=xp[i]+hs*r1[i]/2;
r2[i]=fun (a);
}
for (i=0; i<q; i++)
{
a[i]=xp[i]+hs*r2[i]/2;
r3[i]=fun (a);
}
for (i=0; i<q; i++)
{
a[i]=xp[i]+hs*r3[i]/2;
r4[i]=fun (a);
}
for (i=0; i<q; i++)
x[i]=xp[i]+hs/6*(r1[i]+2*r2[i]+2*r3[i]+r4[i]);
s=s+hs;
}
fclose(file);

return 0;
}

int main ()
{
clrscr ();
raschet ();
getch ();
return 0;
}
Вот решение этого диф уравнения. Далее мне нужно построить график на сцилабе, но у меня ничего не получается((((
Вот начало проги, дальше идёт бредятина(((((
f=mopen('D:\3.txt','r');
N=4;
M=99;
for i=1:N
for j=1:M
A(i,j)=mfscanf(f,'%g');
end
end
mclose(f);

f=mopen('D:\4.txt','w');
for i=1:N
for j=1:M
fprintf(f,'%g\t',A(i,j));
end
fprintf(f,'\n');
end
mclose(f);
*тут же решил проверить на правильность считывания, помогите плиз построить этот график зависимости х1 и х2 от х3!!!!!!!!!
Заранее спасибо!
Craz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Система обыкновенных дифференциальных уравнений Anarki Помощь студентам 1 05.11.2009 00:19
Решение уравнений delete Общие вопросы C/C++ 0 01.10.2009 23:06
решение нелинейных уравнений Жанна__90 Помощь студентам 21 22.07.2009 01:30
решение диффиринциальных уравнений XiN Общие вопросы Delphi 1 08.09.2008 00:00
решение трансцендениных уравнений DjRog Паскаль, Turbo Pascal, PascalABC.NET 2 03.04.2008 13:20