="justify"> {(int j=0; j
{[j] [k]=(X [k] * X [k]) / (4 * exp (2.0 * T [j]) - 2);}
} out3 («fu.txt»); << nx << endl; (int i=0; i
{(int j=0; j
{<< u [j] [i] << « t»;
} << endl;
}. close (); [] eta; [] eta1; [] V; [] V1; ();
return 0;
}
Результати обчислень записуються в три файлу. Перший файл містить значення функції. Графічно її можна представити так:
У другій файл записуються результати обчислень в самій програмі. Функція виглядає так:
У третій файл записуються значення функції, знаючи що
Тоді графічно це буде мати вигляд:
Таким чином, графіки функцій, побудовані за результатами обчислень в програмі і непосредественно, майже збігаються.
Приклад 2. Розглянемо більш складне рівняння. Як функції виберемо
Тоді вихідне рівняння прийме вигляд:
В якості початкової умови візьмемо функцію
Тоді
Рівняння системи (26) перепишуть у вигляді:
Аналогічно складаємо програму чисельного рішення. Зауважимо, що в цьому випадку не вийде безпосередньо обчислити. Доведеться знаходити значення обох функцій і за їх попереднім наближенням.
Візьмемо наступні значення параметрів: Тоді функція f прийме вигляд:
При збільшенні значень значення функції прагнуть до нуля.
Таким чином, у програмі використовуються наступні рівняння:
Програма 2.
# include «stdafx.h»
# include
# include
# include
# include namespace std; U (double t, double x, double u)
{u;
} fi (double x)
{exp (-pow (x, 2));
}
fi1 (double x)
{- 2 * x * exp (-pow (x, 2));
}
_tmain (int argc, _TCHAR * argv [])
{T0=5; int nt=25;
double T [nt]; S [nt]; dt=T0 / (nt - 1); [0]=0; [0]=0; (int i=1; i
{[i]=T [i - 1] + dt; [i]=S [i - 1] + dt;
} / / return 2.0; X0=20; int nx=20;
double X [nx]; dx;=X0 / (nx - 1);
/ / cout << dx << endl; [0] =-X0 / 2; (int i=1; i
{[i]=X [i - 1] + dx;
} u [nt] [nx]; (* eta) [nt] [nx];=new double [nt] [nt] [nx]; (* eta1) [nt] [nx ];=new double [nt] [nt] [nx]; (* V) [nt] [nx];=new double [nt] [nt] [nx]; (* W) [nt] [nx]; =new double [nt] [nt] [nx]; (* V1) [nt] [nx];=new double [nt] [nt] [nx];
double (* W1) [nt] [nx];=new double [nt] [nt] [nx]; (int i=0; i