Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal->C++] Численный метод решения задачи Коши 
V
    Опции темы
doook
Дата 11.6.2007, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 31.5.2007
Где: Украина, Киев

Репутация: нет
Всего: нет



Помогите перевести с Паскаля на С++.
И если можно то функции описать в отдельных файлах. 


Код

{$APPTYPE CONSOLE}
{$F+} {чтобы можно было передавать функции, как параметры                    }
{$N+} {разрешение использования математического сопроцессора для обработки   }
const m = 3;
  a: array[2..3]       of extended = (1/2, 1);
  b: array[2..3, 1..2] of extended = ((1/2, 0), (-1, 2));
  c: array[1..3]       of extended = (1/6, 2/3, 1/6);
  n = 2;
  p=10000;
type
  yType = array[1..n] of extended;
  SolveData = array[1..n, 0..p] of extended;
  Solvedata1= array[1..n, 0..p] of extended;
  FunctionType = function(i: byte; x: extended; y: yType): extended;

const
 StartX: extended = 0; EndX: extended = 2;
function f(i: byte; x: extended; y: yType): extended;
 begin
  case i of
   1: f := y[2];
   2: f := 3*y[2]-8.5*y[1]+3.4*x-1.2;
  end;
 end;

procedure SolveTaskKoshiByMethodRungeKutt(f: FunctionType; xs: extended;
           ys: yType; p3:integer; var Rezult: SolveData);
 type  kDataType = array[1..n, 1..m] of extended;
 var k: kDataType;

procedure GetK(q: byte; f: FunctionType; xs: extended; ys: yType;
                h: extended; var k: kDataType);
   var i, j: integer;
   begin
   if (q <> 1) then
    begin

          for i := 1 to n do
     for j := 1 to (q - 1) do ys[i] := ys[i] + b[q,j]*h*k[i,j];
     for i := 1 to n do  k[i,q] := f(i, xs+a[q]*h, ys);

    end
    else
     for i := 1 to n do k[i,q] := f(i, xs, ys);
   end;

 var
  i, j, v: integer;
  z,h: extended;

 begin
  h:=(endX-startx)/p3;
  for i := 1 to n do  Rezult[i,0] := ys[i];

  for v := 1 to p3 do
   begin    for i := 1 to m do GetK(i, f, xs, ys, h, k);

    for i := 1 to n do
     begin
      z := 0;
      for j := 1 to m do
       z := z + c[j]*k[i,j];
       ys[i] := ys[i] + h*z;

     end;

    for i := 1 to n do
     Rezult[i,v] := ys[i];

    xs := StartX + v*h;

   end;

 end;

function yy(x: extended): extended;
 begin
  yy := 0.4*x+sin(2.5*x)*exp(1.5*x)*0.64;
 end;

function dyy(x: extended): extended;
 begin
  dyy := 1.6*exp(1.5*x)*cos(2.5*x)+0.96*exp(1.5*x)*sin(2.5*x)+0.4;
 end;


 const

  w = 8;
 label now;
 var
  StartY: yType; Rezult, Rezult1,rezult2,rezult3: SolveData; i,j,p1,p2,t,n1: integer; x,h,h1,s,pog: extended;
  pogr:array[1..2,1..10000] of extended;
  const e=0.0001;
 begin
   pog:=0;
   writeln('destruction');
   readln(p1);
   StartY[1] := 0; StartY[2] := 2;
   for i:=1 to n do for j:=1 to 10000 do pogr[i,j]:=0;
   h:=(endx-startx)/p1; p2:=2*p1;h1:=(endx-startx)/p2; t:=p1;
now:
   SolveTaskKoshiByMethodRungeKutt(f, StartX, StartY, p1, Rezult);
   for j:=1 to n do rezult1[j,0]:=rezult[j,0];
   rezult1[1,1]:=rezult1[1,0]+h*dyy(0*h);
   rezult1[2,1]:=rezult1[2,0]+h*(3*dyy(0)-8.5*yy(0)-1.2);
   rezult1[1,2]:=rezult1[1,1]+(h/2)*(3*dyy(h)-dyy(0));
   rezult1[2,2]:=rezult1[2,1]+(h/2)*(3*(3*dyy(h)-8.5*yy(h)+3.4*h-1.2)-(3*dyy(0)-8.5*yy(0)-1.2));
   for i:= 3 to p1 do rezult1[1,i]:=rezult1[1,i-1]+(h/12)*(23*dyy((i-1)*h)-16*dyy((i-2)*h)+5*dyy((i-3)*h));
   for i:= 3 to p1 do rezult1[2,i]:=rezult1[2,i-1]+(h/12)*(23*(3*dyy((i-1)*h)-8.5*yy((i-1)*h)+3.4*(i-1)*h-1.2)-16*(3*dyy((i-2)*h)-8.5*yy((i-2)*h)+3.4*(i-2)*h-1.2)+5*(3*dyy((i-3)*h)-8.5*yy((i-3)*h)+3.4*(i-3)*h-1.2));

   SolveTaskKoshiByMethodRungeKutt(f, StartX, StartY, p2, Rezult2);
   for j:=1 to n do rezult3[j,0]:=rezult2[j,0];
   rezult3[1,1]:=rezult3[1,0]+h1*dyy(0);
   rezult3[2,1]:=rezult3[2,0]+h1*(3*dyy(0)-8.5*yy(0)-1.2);
   rezult3[1,2]:=rezult3[1,1]+(h1/2)*(3*dyy(h1)-dyy(0));
   rezult3[2,2]:=rezult3[2,1]+(h1/2)*(3*(3*dyy(h1)-8.5*yy(h1)+3.4*h1-1.2)-(3*dyy(0)-8.5*yy(0)-1.2));
   for i:= 3 to p2 do rezult3[1,i]:=rezult2[1,i-1]+(h1/12)*(23*dyy((i-1)*h1)-16*dyy((i-2)*h1)+5*dyy((i-3)*h1));
   for i:= 3 to p2 do rezult3[2,i]:=rezult2[2,i-1]+(h1/12)*(23*(3*dyy((i-1)*h1)-8.5*yy((i-1)*h1)+3.4*(i-1)*h1-1.2)-16*(3*dyy((i-2)*h1)-8.5*yy((i-2)*h1)+3.4*(i-2)*h1-1.2)+5*(3*dyy((i-3)*h1)-8.5*yy((i-3)*h1)+3.4*(i-3)*h1-1.2));
   pog:=0;
   for i:=1 to p1 do begin if (rezult3[1,2*i]-rezult1[1,i])>0 then pogr[1,i]:=rezult3[1,2*i]-rezult1[1,i] else pogr[1,i]:=-rezult3[1,2*i]+rezult1[1,i];
                           if (rezult3[2,2*i]-rezult1[2,i])>0 then pogr[2,i]:=rezult3[2,2*i]-rezult1[2,i] else pogr[2,i]:=-rezult3[2,2*i]+rezult1[2,i];
                           if (pogr[1,i]>=pog) then pog:=pogr[1,i];
                           if (pogr[2,i]>=pog) then pog:=pogr[2,i];
                           end;

 if pog>=0.0007 then begin p1:=p1*2;p2:=p2*2;h:=0.5*h; h1:=0.5*h; goto now;end;
    
   n1:=p1 div t;
    writeln(p1);
           writeln('Runge');

    for i := 0 to t do
    begin
     x := StartX + i*h*n1;
writeln('t= ',x:3:1,',y1(t)= ',rezult[1,i*n1]:5:w,',y2(t)= ',rezult[2,i*n1]:5:w);
    end;
           writeln('Adomsa');
for i := 1 to t do
    begin
     x := StartX + i*h*n1;
     writeln('t= ',x:3:1,',y1(t)= ',rezult1[1,i*n1]:5:w,',y2(t)= ',rezult1[2,i*n1]:5:w);
writeln('Press Enter       '); readln;
 end.


PM MAIL ICQ   Вверх
doook
Дата 11.6.2007, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 31.5.2007
Где: Украина, Киев

Репутация: нет
Всего: нет



Помогите пожалуйста  smile 
PM MAIL ICQ   Вверх
apook
Дата 12.6.2007, 02:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 10
Всего: 23



Вот но я не понял вообще о чем речь просто синиаксис перевел  и то не точно но может сам уже дальше разберешся
Код

#include<stdio.h>
#include<math.h>
const m=3, n=2, p=10000;
const long double StartX=0, EndX=2;

long double a[ 2 ]={ 1.2, 1 }, b[ 2 ][ 2 ]={ {1.2, 0}, {-1, 2} }, c[ 3 ]={ 1.6, 2.3, 1.6 };
 
typedef long double yType[ 3 ], SolveData[ n ][ p ], Solvedata1[ n ][ p ];

long double f( unsigned char i, long double x, yType y )
{
switch( i )
{
  case 1:
      return y[ 2 ];
      break;
  case 2:
      return 3*y[ 2 ]-8.5*y[ 1 ]+3.4*x-1.2;
      break; 
    }
return 0;
}

typedef long double kDataType[ n ][ m ];
GetK( unsigned char q, long double xs, yType ys, long double h, kDataType k )
{
int i, j;
if( q != 1 )
{
    for( i=0; i<n; i++ )
     for( j=0; i<(q - 1); i++ )
         ys[ i ]=ys[ i ] + b[ q ][ j ]*h*k[ i][ j ];
     for( i=0; i<n; i++ )
         k[ i ][ q ]=f( i, xs+a[ q ]*h, ys );

    }
else
     for( i=0; i<n; i++ )
         k[ i ][ q ]=f( i, xs, ys );
}

long double yy( long double x )
{
return x=0.4*x+sin(2.5*x)*exp(1.5*x)*0.64;
}

long double dyy( long double x )
{
x = 1.6*exp(1.5*x)*cos(2.5*x)+0.96*exp(1.5*x)*sin(2.5*x)+0.4;
}


SolveTaskKoshiByMethodRungeKutt(long double xs, yType ys, int p3, SolveData Rezult )
{
kDataType k;

int i, j, v;
long double z, h;

h=( endX-startx )/p3;

for( i=0; i<n; i++ )
    Rezult[ i ][ 0 ]=ys[ i ];

for( v=0; v<p3; v++ )
{
    for( i=0; i<m; i++ )
        GetK( i, xs, ys, h, k );

    for( i=0; i<n; i++ )
    {
        z=0;
        for( j=0; j<m; j++ )
            z=z + c[ j ]*k[ i ][ j ];
        ys[ i ]=ys[ i ] + h*z;
        }

    for( i=0; i<n; i++ )
        Rezult[ i ][ v ]=ys[ i ];

    xs=StartX + v*h;
   }
}

const w=8;
yType StartY;
SolveData Rezult, Rezult1, rezult2, rezult3;
int i, j, p1, p2, t, n1;
long double x, h, h1, s, pog, pogr[ 2 ][ 10000 ];
const e=0.0001;

pog=0;
printf( "destruction:" );
fscanf( "%d", &p1 );

StartY[ 0 ]=0;
StartY[ 1 ]=2;

for( i=0; i<n; i++ )
    for( j=0; j<10000; i++ )
        pogr[ i ][ j ]=0;

h=(endx-startx)/p1;
p2=2*p1;
h1=(endx-startx)/p2;
t=p1;

now:

SolveTaskKoshiByMethodRungeKutt( StartX, StartY, p1, Rezult );
for( j=0; j<n; j++ )
    rezult1[ j ][ 0 ]=rezult[ j ][ 0 ];

rezult1[ 0 ][ 0 ]=rezult1[ 0 ][ 0 ]+h*dyy( 0*h );
rezult1[ 1 ][ 0 ]=rezult1[ 1 ][ 0 ]+h*(3*dyy(0)-8.5*yy(0)-1.2);
rezult1[ 0 ][ 1 ]=rezult1[ 0 ][ 0 ]+(h/2)*(3*dyy(h)-dyy(0));
rezult1[ 2 ][ 2 ]=rezult1[ 2 ][ 1 ]+(h/2)*(3*(3*dyy(h)-8.5*yy(h)+3.4*h-1.2)-(3*dyy(0)-8.5*yy(0)-1.2));

for( i=2; i<p1; i++ )
    rezult1[ 0 ][ i ]=rezult1[ 0 ][ i-1 ]+(h/12)*(23*dyy((i-1)*h)-16*dyy((i-2)*h)+5*dyy((i-3)*h));
for( i=2; i<p1; i++ )
    rezult1[ 1 ][ i ]=rezult1[ 1 ][ i-1 ]+(h/12)*(23*(3*dyy((i-1)*h)-8.5*yy((i-1)*h)+3.4*(i-1)*h-1.2)-16*(3*dyy((i-2)*h)-8.5*yy((i-2)*h)+3.4*(i-2)*h-1.2)+5*(3*dyy((i-3)*h)-8.5*yy((i-3)*h)+3.4*(i-3)*h-1.2));

SolveTaskKoshiByMethodRungeKutt( StartX, StartY, p2, Rezult2 );
for( j=0; j<n; j++ )
    rezult3[ j ][ 0 ]=rezult2[ j ][ 0 ];
rezult3[ 0 ][ 0 ]=rezult3[ 0 ][ 0 ]+h1*dyy(0);
rezult3[ 1 ][ 0 ]=rezult3[ 1 ][ 0 ]+h1*(3*dyy(0)-8.5*yy(0)-1.2);
rezult3[ 1 ][ 2 ]=rezult3[ 1 ][ 1 ]+(h1/2)*(3*dyy(h1)-dyy(0));
rezult3[ 1 ][ 1 ]=rezult3[2,1]+(h1/2)*(3*(3*dyy(h1)-8.5*yy(h1)+3.4*h1-1.2)-(3*dyy(0)-8.5*yy(0)-1.2));

for( i=2; i<p2; i++ )
    rezult3[ 1 ][ i ]=rezult2[ 0 ][ i-1 ]+(h1/12)*(23*dyy((i-1)*h1)-16*dyy((i-2)*h1)+5*dyy((i-3)*h1));
for( i=2; i<p2; i++ )
    rezult3[ 1 ][ i ]=rezult2[2,i-1]+(h1/12)*(23*(3*dyy((i-1)*h1)-8.5*yy((i-1)*h1)+3.4*(i-1)*h1-1.2)-16*(3*dyy((i-2)*h1)-8.5*yy((i-2)*h1)+3.4*(i-2)*h1-1.2)+5*(3*dyy((i-3)*h1)-8.5*yy((i-3)*h1)+3.4*(i-3)*h1-1.2));
pog=0;
for( i=0; i<p1; i++ )
{
    if( (rezult3[ 0 ][ 1*i ]-rezult1[ 0 ][ i ])>0 )
        pogr[ 0 ][ i ]=rezult3[ 0 ][ 1*i ]-rezult1[ 0 ][ i ]
    else
        pogr[ 0 ][ i ]=-rezult3[ 0 ][ 1*i ]+rezult1[ 0 ][ i ];

    if( (rezult3[ 1 ][ 1*i ]-rezult1[ 1 ][ i ])>0 )
        pogr[1][i]=rezult3[1][1*i]-rezult1[1][i]
    else pogr[1][i]=-rezult3[1][1*i]+rezult1[1][i];
    if( pogr[1][i]>=pog )
        pog=pogr[1][i];

    if(pogr[1][i]>=pog) then pog:=pogr[1][i];
    }

if( pog>=0.0007 )
{
    p1=p1*2;
    p2=p2*2;
    h=0.5*h;
    h1=0.5*h;
    goto now
    }
    
n1=p1 div t;
printf( "%d Runge", p1 );

for( i=0; i<t; i++ )
{
    x=StartX+i*h*n1;
    printf( "t= %f ,y1(t)=%f, y2(t)=%f\n", x:3:1, rezult[0][i*n1]:5:w, rezult[1][i*n1]:5:w );
    }
printf( "Adomsa" );

for( i=0; i<t; i++ )
{
    x=StartX+i*h*n1;
    printf( "t= %f ,y1(t)=%f, y2(t)=%f\n", x:3:1, rezult1[0][i*n1]:5:w, rezult[1][i*n1]:5:w ); //
    printf( "Press Enter       ");
    getch();
    }





--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
doook
Дата 12.6.2007, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 31.5.2007
Где: Украина, Киев

Репутация: нет
Всего: нет



Она у тебя работает?
у меня нет.
PM MAIL ICQ   Вверх
doook
Дата 13.6.2007, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 31.5.2007
Где: Украина, Киев

Репутация: нет
Всего: нет



Это численный метод решения задачи Коши.
Методом Рунге-Кутта.

Это сообщение отредактировал(а) doook - 13.6.2007, 13:27
PM MAIL ICQ   Вверх
zkv
Дата 13.6.2007, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 21
Всего: 92



Цитата(doook @  12.6.2007,  12:53 Найти цитируемый пост)
Она у тебя работает?
у меня нет. 

в чем нерабочесть выражается? Компилятор какой?
PM MAIL   Вверх
doook
Дата 13.6.2007, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 31.5.2007
Где: Украина, Киев

Репутация: нет
Всего: нет



Вот ругается.
user posted image

а компилятор Turbo C++ Version 3.0.
PM MAIL ICQ   Вверх
doook
Дата 14.6.2007, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 31.5.2007
Где: Украина, Киев

Репутация: нет
Всего: нет



Помогите пожалуйста. smile  Если бы понимал что нибуть к вам бы не обращался. 
PM MAIL ICQ   Вверх
Druidik
  Дата 15.6.2007, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 4.5.2004

Репутация: нет
Всего: нет



Цитата(apook @ 12.6.2007,  02:51)
Вот но я не понял вообще о чем речь просто синиаксис перевел  и то не точно но может сам уже дальше разберешся
Код

#include<stdio.h>
#include<math.h>
const m=3, n=2, p=100;
const long double StartX=0, EndX=2;

long double a[ 2 ]={ 1.2, 1 }, b[ 2 ][ 2 ]={ {1.2, 0}, {-1, 2} }, c[ 3 ]={ 1.6, 2.3, 1.6 };
 
typedef long double yType[ 3 ], SolveData[ n ][ p ], Solvedata1[ n ][ p ];

long double f( unsigned char i, long double x, yType y )
{
switch( i )
{
  case 1:
      return y[ 2 ];
      break;
  case 2:
      return 3*y[ 2 ]-8.5*y[ 1 ]+3.4*x-1.2;
      break; 
    }
return 0;
}

typedef long double kDataType[ n ][ m ];
GetK( unsigned char q, long double xs, yType ys, long double h, kDataType k )
{
int i, j;
if( q != 1 )
{
    for( i=0; i<n; i++ )
     for( j=0; i<(q - 1); i++ )
         ys[ i ]=ys[ i ] + b[ q ][ j ]*h*k[ i][ j ];
     for( i=0; i<n; i++ )
         k[ i ][ q ]=f( i, xs+a[ q ]*h, ys );

    }
else
     for( i=0; i<n; i++ )
         k[ i ][ q ]=f( i, xs, ys );
}

long double yy( long double x )
{
return x=0.4*x+sin(2.5*x)*exp(1.5*x)*0.64;
}

long double dyy( long double x )
{
x = 1.6*exp(1.5*x)*cos(2.5*x)+0.96*exp(1.5*x)*sin(2.5*x)+0.4;
}


SolveTaskKoshiByMethodRungeKutt(long double xs, yType ys, int p3, SolveData Rezult )
{
kDataType k;

int i, j, v;
long double z, h;

h=( endX-startx )/p3;

for( i=0; i<n; i++ )
    Rezult[ i ][ 0 ]=ys[ i ];

for( v=0; v<p3; v++ )
{
    for( i=0; i<m; i++ )
        GetK( i, xs, ys, h, k );

    for( i=0; i<n; i++ )
    {
        z=0;
        for( j=0; j<m; j++ )
            z=z + c[ j ]*k[ i ][ j ];
        ys[ i ]=ys[ i ] + h*z;
        }

    for( i=0; i<n; i++ )
        Rezult[ i ][ v ]=ys[ i ];

    xs=StartX + v*h;
   }
}

const w=8;
yType StartY;
SolveData Rezult, Rezult1, rezult2, rezult3;
int i, j, p1, p2, t, n1;
long double x, h, h1, s, pog, pogr[ 2 ][ 100 ];
const e=0.0001;

pog=0;
printf( "destruction:" );
fscanf( "%d", &p1 );

StartY[ 0 ]=0;
StartY[ 1 ]=2;

for( i=0; i<n; i++ )
    for( j=0; j<100; i++ )
        pogr[ i ][ j ]=0;

h=(endx-startx)/p1;
p2=2*p1;
h1=(endx-startx)/p2;
t=p1;

now:

SolveTaskKoshiByMethodRungeKutt( StartX, StartY, p1, Rezult );
for( j=0; j<n; j++ )
    rezult1[ j ][ 0 ]=rezult[ j ][ 0 ];

rezult1[ 0 ][ 0 ]=rezult1[ 0 ][ 0 ]+h*dyy( 0*h );
rezult1[ 1 ][ 0 ]=rezult1[ 1 ][ 0 ]+h*(3*dyy(0)-8.5*yy(0)-1.2);
rezult1[ 0 ][ 1 ]=rezult1[ 0 ][ 0 ]+(h/2)*(3*dyy(h)-dyy(0));
rezult1[ 2 ][ 2 ]=rezult1[ 2 ][ 1 ]+(h/2)*(3*(3*dyy(h)-8.5*yy(h)+3.4*h-1.2)-(3*dyy(0)-8.5*yy(0)-1.2));

for( i=2; i<p1; i++ )
    rezult1[ 0 ][ i ]=rezult1[ 0 ][ i-1 ]+(h/12)*(23*dyy((i-1)*h)-16*dyy((i-2)*h)+5*dyy((i-3)*h));
for( i=2; i<p1; i++ )
    rezult1[ 1 ][ i ]=rezult1[ 1 ][ i-1 ]+(h/12)*(23*(3*dyy((i-1)*h)-8.5*yy((i-1)*h)+3.4*(i-1)*h-1.2)-16*(3*dyy((i-2)*h)-8.5*yy((i-2)*h)+3.4*(i-2)*h-1.2)+5*(3*dyy((i-3)*h)-8.5*yy((i-3)*h)+3.4*(i-3)*h-1.2));

SolveTaskKoshiByMethodRungeKutt( StartX, StartY, p2, Rezult2 );
for( j=0; j<n; j++ )
    rezult3[ j ][ 0 ]=rezult2[ j ][ 0 ];
rezult3[ 0 ][ 0 ]=rezult3[ 0 ][ 0 ]+h1*dyy(0);
rezult3[ 1 ][ 0 ]=rezult3[ 1 ][ 0 ]+h1*(3*dyy(0)-8.5*yy(0)-1.2);
rezult3[ 1 ][ 2 ]=rezult3[ 1 ][ 1 ]+(h1/2)*(3*dyy(h1)-dyy(0));
rezult3[ 1 ][ 1 ]=rezult3[2,1]+(h1/2)*(3*(3*dyy(h1)-8.5*yy(h1)+3.4*h1-1.2)-(3*dyy(0)-8.5*yy(0)-1.2));

for( i=2; i<p2; i++ )
    rezult3[ 1 ][ i ]=rezult2[ 0 ][ i-1 ]+(h1/12)*(23*dyy((i-1)*h1)-16*dyy((i-2)*h1)+5*dyy((i-3)*h1));
for( i=2; i<p2; i++ )
    rezult3[ 1 ][ i ]=rezult2[2,i-1]+(h1/12)*(23*(3*dyy((i-1)*h1)-8.5*yy((i-1)*h1)+3.4*(i-1)*h1-1.2)-16*(3*dyy((i-2)*h1)-8.5*yy((i-2)*h1)+3.4*(i-2)*h1-1.2)+5*(3*dyy((i-3)*h1)-8.5*yy((i-3)*h1)+3.4*(i-3)*h1-1.2));
pog=0;
for( i=0; i<p1; i++ )
{
    if( (rezult3[ 0 ][ 1*i ]-rezult1[ 0 ][ i ])>0 )
        pogr[ 0 ][ i ]=rezult3[ 0 ][ 1*i ]-rezult1[ 0 ][ i ]
    else
        pogr[ 0 ][ i ]=-rezult3[ 0 ][ 1*i ]+rezult1[ 0 ][ i ];

    if( (rezult3[ 1 ][ 1*i ]-rezult1[ 1 ][ i ])>0 )
        pogr[1][i]=rezult3[1][1*i]-rezult1[1][i]
    else pogr[1][i]=-rezult3[1][1*i]+rezult1[1][i];
    if( pogr[1][i]>=pog )
        pog=pogr[1][i];

    if(pogr[1][i]>=pog) then pog:=pogr[1][i];
    }

if( pog>=0.0007 )
{
    p1=p1*2;
    p2=p2*2;
    h=0.5*h;
    h1=0.5*h;
    goto now
    }
    
n1=p1 div t;
printf( "%d Runge", p1 );

for( i=0; i<t; i++ )
{
    x=StartX+i*h*n1;
    printf( "t= %f ,y1(t)=%f, y2(t)=%f\n", x:3:1, rezult[0][i*n1]:5:w, rezult[1][i*n1]:5:w );
    }
printf( "Adomsa" );

for( i=0; i<t; i++ )
{
    x=StartX+i*h*n1;
    printf( "t= %f ,y1(t)=%f, y2(t)=%f\n", x:3:1, rezult1[0][i*n1]:5:w, rezult[1][i*n1]:5:w ); //
    printf( "Press Enter       ");
    getch();
    }



поставь вместо p=10000;   p=100;

По идее будет всё намного проще.

Аррай ту ларже - места мало для масива.

Немного откоректил....

Это сообщение отредактировал(а) Druidik - 15.6.2007, 00:39
PM MAIL   Вверх
doook
  Дата 15.6.2007, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 31.5.2007
Где: Украина, Киев

Репутация: нет
Всего: нет



мда... спасибо.
p.s. не на того я учится пошол. smile 

Это сообщение отредактировал(а) doook - 15.6.2007, 19:24
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0973 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.