Язык С++ как инструмент моделирования на основе решения дифференциальных уравнений в частных производных - page 26

24
1.3.1. Численное решение задачи параболического типа с заданными
начальными и граничными условиями
Программная реализация на С++.
Программная реализация алгоритма решения рассматриваемой
задачи (1.1)-(1.4) на основе ее конечно-разностного представления
начального условия, численной схемы Кранка-Николсона для
дифференциального уравнения параболического типа (1.20) с начальным
условием (1.4) и двухточечной аппроксимации граничных условий с
первым порядком точности по координате.
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <fstream>
#include <stdio.h>
#include <string>
#define PI 3.1415926535897932384626433832795
using namespace std;
void tdma_h(double*,double*,double*,double*,double*,int);
void main()
{
double Xsize=PI, Tsize=1,
nt=10, nxbase=10,
//A=0, B=0, C=0, F=0,
a=0.1,
dx=Xsize/nxbase, dt=Tsize/nt,
nx=nxbase+1;
int i,j;
double *A= new double[(int)nx];
double *B= new double[(int)nx];
double *C= new double[(int)nx];
double *F= new double[(int)nx];
for(i=0; i<nx; i++){
A[i]=0; B[i]=0; C[i]=0; F[i]=0;
}
double *X= new double[(int)nx];
for(i=0; i<nx; i++){
X[i]=i*dx;
cout<<i<<" "<<X[i]<<endl;
}
1...,16,17,18,19,20,21,22,23,24,25 27,28,29,30,31,32,33,34,35,36,...52
Powered by FlippingBook