Краевые задачи. Методы решения А.Ю.Виноградова. Включая жесткие краевые задачиРефераты >> Математика >> Краевые задачи. Методы решения А.Ю.Виноградова. Включая жесткие краевые задачи
for(int i=0;i<4;i++){
for(int j=0;j<8;j++){
MATRIX_many[i][j]=U[i][j];
MATRIX_many[8*11-4+i][8*11-8+j]=V[i][j];
}
B_many[i]=u_[i];
B_many[8*11-4+i]=v_[i];
}
for(int kk=0;kk<(11-1);kk++){//(11-1) единичных матриц и матриц EXPO надо записать в MATRIX_many
for(int i=0;i<8;i++){
MATRIX_many[i+4+kk*8][i+kk*8]=1.0;//заполнение единичными матрицами
for(int j=0;j<8;j++){
MATRIX_many[i+4+kk*8][j+8+kk*8]=-expo_from_minus_step[i][j];//заполнение матричными экспонентами
}
}
}
//Решение систем линейных алгебраических уравнений
GAUSS(MATRIX_many,B_many,Y_many);
//Вычисление векторов состояния в 101 точке - левая точка 0 и правая точка 100
exponent(A,step,expo_from_plus_step);
for(int i=0;i<11;i++){//заполнение промежуточных точек во всех 10-ти интервалах (всего получим точки от 0 до 100) между 11 узлами
for(int j=0;j<8;j++){
Y[0+i*10][j]=Y_many[j+i*8];//в 11-ти узлах векторы беруться из решения СЛАУ - из Y_many
}
}
for(int i=0;i<10;i++){//заполнение промежуточных точек в 10-ти интервалах
for(int j=0;j<8;j++){
Y_vspom[j]=Y[0+i*10][j];//начальный вектор для i-го участка, нулевая точка, точка старта i-го участка
}
mat_on_vect(expo_from_plus_step, Y_vspom, Y_rezult);
for(int j=0;j<8;j++){
Y[0+i*10+1][j]=Y_rezult[j];//заполнение 1-ой точки интервала
Y_vspom[j]=Y_rezult[j];//для следующего шага
}
mat_on_vect(expo_from_plus_step, Y_vspom, Y_rezult);
for(int j=0;j<8;j++){
Y[0+i*10+2][j]=Y_rezult[j];//заполнение 2-ой точки интервала
Y_vspom[j]=Y_rezult[j];//для следующего шага
}
mat_on_vect(expo_from_plus_step, Y_vspom, Y_rezult);
for(int j=0;j<8;j++){
Y[0+i*10+3][j]=Y_rezult[j];//заполнение 3-ой точки интервала
Y_vspom[j]=Y_rezult[j];//для следующего шага
}
mat_on_vect(expo_from_plus_step, Y_vspom, Y_rezult);
for(int j=0;j<8;j++){
Y[0+i*10+4][j]=Y_rezult[j];//заполнение 4-ой точки интервала
Y_vspom[j]=Y_rezult[j];//для следующего шага
}
mat_on_vect(expo_from_plus_step, Y_vspom, Y_rezult);
for(int j=0;j<8;j++){
Y[0+i*10+5][j]=Y_rezult[j];//заполнение 5-ой точки интервала
Y_vspom[j]=Y_rezult[j];//для следующего шага
}
mat_on_vect(expo_from_plus_step, Y_vspom, Y_rezult);
for(int j=0;j<8;j++){
Y[0+i*10+6][j]=Y_rezult[j];//заполнение 6-ой точки интервала
Y_vspom[j]=Y_rezult[j];//для следующего шага
}
mat_on_vect(expo_from_plus_step, Y_vspom, Y_rezult);
for(int j=0;j<8;j++){
Y[0+i*10+7][j]=Y_rezult[j];//заполнение 7-ой точки интервала
Y_vspom[j]=Y_rezult[j];//для следующего шага
}
mat_on_vect(expo_from_plus_step, Y_vspom, Y_rezult);
for(int j=0;j<8;j++){
Y[0+i*10+8][j]=Y_rezult[j];//заполнение 8-ой точки интервала
Y_vspom[j]=Y_rezult[j];//для следующего шага
}
mat_on_vect(expo_from_plus_step, Y_vspom, Y_rezult);
for(int j=0;j<8;j++){
Y[0+i*10+9][j]=Y_rezult[j];//заполнение 9-ой точки интервала
Y_vspom[j]=Y_rezult[j];//для следующего шага
}
}
//Вычисление момента во всех точках между краями
for(int ii=0;ii<=100;ii++){
Moment[ii]+=Y[ii][4]*(-nju*nn2)+Y[ii][6]*1.0;//Момент M1 в точке [ii]
//U[2][4]=-nju*nn2; U[2][6]=1.0; u_[2]=0;//Момент M1
}
}//ЦИКЛ ПО ГАРМОНИКАМ ЗДЕСЬ ЗАКАНЧИВАЕТСЯ
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;
}
21. 19 декабря 2012: Случай переменных коэффициентов (ошибка).
Где-то 2 года назад мой отец доктор физико-математических наук профессор МГТУ им. Баумана показал мне его статью в «Докладах Российской Академии наук» о том, как вычислять матрицу Коши в случае, когда система дифференциальных уравнений имеет матрицу с переменными коэффициентами .
До статьи моего отца это можно было делать так:
Из теории матриц [Гантмахер] известно свойство перемножаемости матричных экспонент (матриц Коши):
.
В случае, когда система дифференциальных уравнений имеет матрицу с переменными коэффициентами , решение задачи Коши предлагается искать при помощи свойства перемножаемости матриц Коши. То есть интервал интегрирования разбивается на малые участки и на малых участках матрицы Коши приближенно вычисляются по формуле для постоянной матрицы в экспоненте. А затем матрицы Коши, вычисленные на малых участках, перемножаются:
,
где матрицы Коши приближенно вычисляются по формуле:
, где .
Новый материал (ошибка):
Когда я читал статью своего отца, то я не понял сложный вывод формулы. А сегодня утром мне вдруг (непонятно откуда) отчётливо пришла в голову мысль о том, как можно вывести формулу моего отца почти в одно действие.
пусть
.
17 июля 2013: Исправление ошибок.
В журнале «Математическое моделирование» РАН мне сообщили, что оказывается широко известно, что для матриц А и В: exp(A+B) НЕ РАВНО exp(A)*exp(B).
1) Это означает, что ФОРМУЛА
НЕ ВЕРНА.
2) Также это означает, что следующая ФОРМУЛА ТОЖЕ НЕ ВЕРНА:
Но я даже сейчас не очень понимаю, зачем я переусложнял жизнь, когда, по-видимому, можно для участка пользоваться формулой из «Теории матриц» Гантмахера:
, где вместо x наверное надо просто подставить .