Краевые задачи. Методы решения А.Ю.Виноградова. Включая жесткие краевые задачиРефераты >> Математика >> Краевые задачи. Методы решения А.Ю.Виноградова. Включая жесткие краевые задачи
mat_row_for_partial_vector(A, (-step), mat_row_for_plus_expo);
mat_4x8_on_mat_8x8(VjORTO,expo_from_plus_step,Vj);//Вычисление матрицы Vj=VjORTO*expo_from_plus_step
//partial_vector(FF);//Вычисление НУЛЕВОГО вектора частного решения системы ОДУ на шаге
partial_vector_real(expo_from_plus_step, mat_row_for_plus_expo, angle, step,FF);// - для движения справа на лево
mat_4x8_on_vect_8(VjORTO,FF,vj_2);//Вычисление вектора vj_2=VjORTO*FF
minus(vj_ORTO, vj_2, vj_);//Вычисление вектора vj_=vj_ORTO-vj_2
orto_norm_4x8(Vj, vj_, VjORTO, vj_ORTO);//Ортонормирование для текущего шага по ii
for(int i=0;i<4;i++){
for(int j=0;j<8;j++){
MATRIXS[ii][i+4][j]=VjORTO[i][j];
}
VECTORS[ii][i+4]=vj_ORTO[i];
}
}//Цикл по шагам ii (НИЖНЕЕ заполнение)
//Решение систем линейных алгебраических уравнений
for(int ii=0;ii<=100;ii++){
for(int i=0;i<8;i++){
for(int j=0;j<8;j++){
MATRIX_2[i][j]=MATRIXS[ii][i][j];//Вспомогательное присвоение для соответствия типов в вызывающей функции GAUSS
}
VECTOR_2[i]=VECTORS[ii][i];//Вспомогательное присвоение для соответствия типов в вызывающей функции GAUSS
}
GAUSS(MATRIX_2,VECTOR_2,Y_2);
for(int i=0;i<8;i++){
Y[ii][i]=Y_2[i];
}
}
//Вычисление момента во всех точках между краями
angle=start_angle;//начальное значение угловой координаты
for(int ii=0;ii<=100;ii++){
Moment[ii]+=Y[ii][4]*(-nju*nn2/sin(angle)/sin(angle))+Y[ii][5]*(nju/tan(angle))+Y[ii][6]*(1.0);//Момент M1 в точке [ii]
angle+=step;
//U[2][4]=-nju*nn2/sin(start_angle)/sin(start_angle);
//U[2][5]=nju/tan(start_angle);
//U[2][6]=1.0; Момент
}
}//ЦИКЛ ПО ГАРМОНИКАМ ЗДЕСЬ ЗАКАНЧИВАЕТСЯ
for(int ii=0;ii<=100;ii++){
fprintf(fp,"%f\n",Moment[ii]);
}
fclose(fp);
printf( "PRESS any key to continue .\n" );
_getch();
return 0;
}
5. Второй вариант метода «переноса краевых условий» в произвольную точку интервала интегрирования.
Этот вариант метода еще не обсчитан на компьютерах.
Предложено выполнять интегрирование по формулам теории матриц [Гантмахер] сразу от некоторой внутренней точки интервала интегрирования к краям:
Y(0) = K(0←x) ∙ Y(x) + Y*(0←x) ,
Y(1) = K(1←x) ∙ Y(x) + Y*(1←x) .
Подставим эти формулы в краевые условия и получим:
U∙Y(0) = u,
U∙[ K(0←x) ∙ Y(x) + Y*(0←x) ] = u,
[ U∙ K(0←x) ] ∙ Y(x) = u -U∙Y*(0←x) .
и
V∙Y(1) = v,
V∙[ K(1←x) ∙ Y(x) + Y*(1←x) ] = v,
[ V∙ K(1←x) ] ∙ Y(x) = v -V∙Y*(1←x) .
То есть получаем два матричных уравнения краевых условий, перенесенные в рассматриваемую точку x:
[ U∙ K(0←x) ] ∙ Y(x) = u -U∙Y*(0←x) ,
[ V∙ K(1←x) ] ∙ Y(x) = v -V∙Y*(1←x) .
Эти уравнения аналогично объединяются в одну систему линейных алгебраических уравнений с квадратной матрицей коэффициентов для нахождения решения Y(x) в любой рассматриваемой точке x:
∙ Y(x) = .
В случае «жестких» дифференциальных уравнений предлагается следующий алгоритм.
Используем свойство перемножаемости матриц Коши:
K(x←x) = K(x←x) ∙ K(x←x) ∙ … ∙ K(x←x) ∙ K(x←x)
и запишем выражения для матриц Коши, например, в виде:
K(0←x) = K(0←x) ∙ K(x←x) ∙ K(x←x),
K(1←x) = K(1←x) ∙ K(x←x) ∙ K(x←x) ∙ K(x←x),
Тогда перенесенные краевые условия можно записать в виде:
[ U∙ K(0←x) ∙ K(x←x) ∙ K(x←x) ] ∙ Y(x) = u -U∙Y*(0←x) ,
[ V∙ K(1←x) ∙ K(x←x) ∙ K(x←x) ∙ K(x←x) ] ∙ Y(x) = v -V∙Y*(1←x)
или в виде:
[ U∙ K(0←x) ∙ K(x←x) ∙ K(x←x) ] ∙ Y(x) = u* ,