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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2009, 23:32   #1
HECTOR.A.
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 30
По умолчанию Помогите в исправление кривого кода

Помогите в исправление кривого кода для функции f(x,y)=-0,4*(y^2)+0,1/1,2(x^2)
На примере этой программы изменить значения на вышеперечисленые.


Методом Эйлера и методом Рунге-Кутта с точностью 0,01 решить дифференциальное уравнение: на интервале [a,b] с заданным начальным условием k(a). Построить график полученной функции на заданном интервале. Решить поставленную задачу с использованием функций и процедур языка Pascal. Решить заданное дифференциальное уравнение с использованием пакета MathCAD.

Дана программа для этих значений:
f(x,y)=y-2/x a = 0; b = 1; K(a)=1.


program kkk;
uses graph;
type mas1=array [1..101] of real;
mas2=array [1..101] of integer;
mas3=array [1..20] of real;
mas4=array [1..20] of string;
var kx,ky:mas1;
xx,yy:mas2;
KorX,KorY:mas3;
tx,ty:mas4;
n,p:integer;
x0,y0,h,xk,x,y:real;
function f(x,y:real):real;
begin
f:=y-2*x/y;
end;
{metod Runge-Kutta}
procedure RungeKutta (x0,y0:real;
n,p:integer;
var kx,ky:mas1);
var k1,k2,k3,k4,dy:real;
i,j,t,ii,q:integer;
begin
kx[1]:=x0;
ky[1]:=y0;
x:=x0;
y:=y0;
for i:=0 to n do
begin
k1:=h*f(x,y);
k2:=h*f(x+h/2,y+k1/2);
k3:=h*f(x+h/2,y+k2/2);
k4:=h*f(x+h,y+k3);
dy:=(k1+2*k2+2*k3+k4)/6;
x:=x+h;
y:=y+dy;
kx[i+1]:=x;
ky[i+1]:=y;
end;
i:=0;
t:=n div p;
for i:=0 to n do
begin
if i mod 10=0 then
writeln(i:4,'.',' x=',kx[i]:15:14,' y=',ky[i]:15:14);
end;
writeln('najmite enter');
readln;
end;
{metod Eylera}
procedure Melera (x0,y0,xk,h:real;
n,p:integer;
var kx,ky:mas1);
var i,g,j,t,ii:integer;
x,y:real;
begin
x:=x0;
y:=y0;
kx[1]:=x0;
ky[1]:=y0;
for i:=0 to n do
begin
x:=x+h; {h-tochnost vichisleniya}
y:=y+h*f(x,y);
ky[i+1]:=y;
kx[i+1]:=x;
end;
i:=0;
t:=n div p; {t-chislo vichisleniy}
for i:=0 to n do
begin
if i mod 10=0 then
writeln(i:4,'.',' x=',kx[i]:15:14,' y=',ky[i]:15:14);
end;
writeln('najmi enter');
readln;
end;
{postroenie grafika}
procedure PostroenieGrafika (kx,ky:mas1;
n:integer;
mx:real);
var my,miy,hx,hy:real;
j,i,ex,ey,nx,ny:integer;
x0,y0,pr,le,g:integer;
GraphDriver,GraphMode:integer;
begin
my:=ky[1]; {my-max znachenie y}
miy:=ky[1]; {miy-min znachenie y}
{opredelenie max i min znacheniya X i Y}
for i:=2 to n do
begin
if ky[i]<miy then miy:=ky[i];
if ky[i]>my then my:=ky[i];
end;
GraphDriver:=Detect;
InitGraph(GraphDriver,GraphMode,'') ;
ex:=100; {e-dlina edinichnogo otrezka po osi x}
ey:=100; {e-dlina edinichnogo otrezka po osi y}
le:=40; {le-otstup osi y}
pr:=GetMaxY-40; {pr-otstup po osi x}
{GetMaxY-max znachenie X}
{GetMaxY-max znachenie Y}
nx:=(GetmaxX-le) div ex+1;
ny:=(GetmaxY-le) div ey;
hx:=(ex*nx)/mx;
hy:=(ey*ny)/(my-miy);
for i:=0 to n do
begin
xx[i]:=round(hx*kx[i])+le;
yy[i]:=GetMaxY-round(hy*(ky[i]-miy))-le;
end;
setcolor(6);
setBkcolor(15);
setlinestyle(0,0,3);
outtextxy(100,20,'reshenie differencialnogo uravnenia');
for i:=1 to (n-1) do
Line(xx[i],yy[i],xx[i+1],yy[i+1]);

{sistema koordinat}
setcolor(1);
setlinestyle(0,0,0);
line(le,5,le,GetMaxY-5);
line(5,pr,GetMaxX-5,pr);
for i:=1 to 20 do
begin
KorX[i]:=0;
KorY[i]:=0;
end;
KorX[1]:=0;
tx[1]:='0';
for i:=2 to nx do
begin
KorX[i]:=KorX[i-1]+0.17;
str(KorX[i]:3:2,tx[i]);
end;
KorY[1]:=0.75;
ty[1]:='0.75';
for i:=2 to ny do
begin
KorY[i]:=KorY[i-1]+0.05;
str(KorY[i]:3:2,ty[i]);
end;
j:=le;
for i:=1 to nx do
begin
outtextxy(j-10,pr+4,tx[i]);
j:=j+ex;
end;
g:=pr;
for i:=1 to ny do
begin
outtextxy(le-35,g-10,ty[i]);
g:=g-ey;
end;
j:=le;
g:=pr;
for i:=1 to ny do
begin
line(le-2,g,le+2,g);
g:=g-ey;
end;
j:=le;
for i:=1 to nx do
begin
line(j,pr-2,j,pr+2);
j:=j+ex;
end;

readln;
closeGraph;
end;

{Osnovnaja programma}
begin
x0:=0;
y0:=1;
xk:=1;
h:=0.01;
n:=round((xk-x0)/h);

if n>100 then
begin
writeln('slishkom malenkij shag');
halt;
end;
p:=22;
Melera(x0,y0,xk,h,n,p,kx,ky);
PostroenieGrafika(kx,ky,n,xk);
RungeKutta(x0,y0,n,p,kx,ky);
PostroenieGrafika(kx,ky,n,xk);
end.
HECTOR.A. вне форума Ответить с цитированием
Старый 01.06.2009, 23:48   #2
Stat_ya
Пользователь
 
Аватар для Stat_ya
 
Регистрация: 31.05.2009
Сообщений: 30
По умолчанию

а модуль graph свой тоже скинь
1)почти блондинка
2)почти программист
3)мало знаю, но, к счастью, обозреваю то, чего не знаю.
Stat_ya вне форума Ответить с цитированием
Старый 02.06.2009, 11:05   #3
HECTOR.A.
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 30
По умолчанию ...

Зачем????????
HECTOR.A. вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исправление ошибки в MS VS 2005 NatCa Помощь студентам 6 03.12.2008 18:23
Бинарное исправление звука DaRKSPiRT Общие вопросы C/C++ 2 01.09.2008 11:53
исправление формы. sila Microsoft Office Excel 15 10.07.2008 12:01
Исправление ошибок в проге Juhn Паскаль, Turbo Pascal, PascalABC.NET 11 16.01.2008 18:17
Выдернуть куски кода из html-кода trafbite Помощь студентам 7 18.08.2007 13:51