Помогите: уравнение типа теплопроводности!

RedHawk002

Господа, может у кого-нибудь есть численное решение(программа с решением такого уравнения?
Буду очень признателен и благодарен, если кто-нибудь поможет в данном вопросе.
Помогите пожалуйста.

railok

Че, сам не можешь чтоли?

demiurg

там вроде есть че-то в этом духе

gygo

конкретнее задачу напиши может смогу помочь

katya1990

Большое спасибо, посмотрю...

dimcom

Вот эту я в свое время писал. Старался как можно проще, тоже для несмышленых делал. Пока что все смогли разобраться самостоятельно.

#include "stdafx.h"

#include <math.h>
#include <iostream.h>

#define M_PI 3.1415926535897932385

#define T_STEP 0.01
#define T_MAX 0.2
#define X_STEPS 20
#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)

alpha[1] = 0; // kappa1
beta[1] = 0; // nu1

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];

for(i = 0; i <= N; i++)
{
y0[i] = y1[i];
cout << y0[i] << "\t";
}

cout << "\n";
}

return 0;
}

RedHawk002


ОК
Спасибо пребольшое, за помощь невучу!:)
Как решу свою задачу, всех, кто мне помог постараюсь отблагодарить...
Оставить комментарий
Имя или ник:
Комментарий: