помогите - выгоняют !

Andruha

нужна прога для решения уравнения теплопроводности!
У кого есть?
очень нужна!

demiurg

На маткаде есть

dimcom

Если на c, то ниже приведен самый простой и тупой вариант, написанный мною в свое время для друзей.


#include <math.h>
#include <iostream.h>
#define T_STEP 0.005
#define T_MAX 0.2
#define X_STEPS 10
#define NEXT_DEP 1
// du/dt = d2u/dx2; 0 < x < pi; t > 0
// u|x=0 = 0
// u|x=pi = 0
// u|t=0 = sin(3x)
int main(int argc, char* argv[])
{
int N = X_STEPS, K = int(T_MAX / T_STEP i, j;
double gamma, sigma = NEXT_DEP, tau = T_STEP, A, B, C, h;
double x0 = 0, xN = M_PI; // 0 < x < pi
double y0[X_STEPS + 1], y1[X_STEPS + 1], alpha[X_STEPS + 1], beta[X_STEPS + 1];
h = (xN - x0) / N;
gamma = tau / pow(h, 2);
A = sigma * gamma;
B = A;
C = 1 + A + B;
for(i = 0; i <= N; i++)
y0[i] = sin(3 * (x0 + i * h; // u|t=0 = sin(3x)
for(i = 0; i <= N; i++)
{
// y0[i] = y1[i];
cout << y0[i] << "\t";
}
cout << "\n";
alpha[1] = 0;
beta[1] = 1;
for(j = 0; j < K; j++)
{
for(i = 1; i <= N - 1; i++)
{
alpha[i + 1] = B / (C - A * alpha[i]);
beta[i + 1] = (A * beta[i] + y0[i]) / (C - A * alpha[i]);
}
y1[N] = 0; // u|x=pi = 0
for(i = N - 1; i >= 0; i--)
y1[i] = alpha[i + 1] * y1[i + 1] + beta[i + 1];
y1[0] = 0; // u|x=0 = 0
for(i = 0; i <= N; i++)
{
// y0[i] = y1[i];
cout << y0[i] << "\t";
}
cout << "\n";
}
return 0;
}


Единственное, что требуется — разобраться, где в тексте спрятаны начальные условия и само уравнение.

slavaussr

есть колебания
Оставить комментарий
Имя или ник:
Комментарий: