|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.11.2009, 21:25 | #1 |
Пользователь
Регистрация: 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!!!!!!!!! Заранее спасибо! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Система обыкновенных дифференциальных уравнений | 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 |