Пусть говорит, что у меня есть эта матрица:
(x)
X = [1 1 1 0 1 0 0 0;
1 1 0 1 0 1 0 0;
1 0 1 1 0 0 1 0;
0 1 1 1 0 0 0 1;
1 0 0 0 1 1 1 0;
0 1 0 0 1 1 0 1;
0 0 1 0 1 0 1 1;
0 0 0 1 0 1 1 1];
и эта таблица:
kzz
_______
1 80
2 80
3 23
4 14
5 63
6 36
7 41
8 5
и это уравнение:
f = (1/visc)*((2*kzz2*kzz1*az2*az1)/(kzz2*az2*delz+kzz1*az1*delz)
visc = 2
az2 = 6400
az1 = 6400
delz = 30
kzz1 = ? < From the table
kzz2 = ? < From the table
f = (1/2)*((2*kzz2*kzz1*6400*6400)/(kzz2*6400*30+kzz1*6400*30)
это уравнение представляет диагональначалось со столбца 5 в матрице, чуть ниже (X).
Требуемая задача: изменить числа в этой диагонали на это уравнение:
f = (1/2)*((2*kzz2*kzz1*6400*6400)/(kzz2*6400*30+kzz1*6400*30)
Дляпервое значение в диагонали «Матрица (5,1)» kzz2 = 63 и kzz1 = 80 <<, полученное из таблицы </p>
, следовательно, уравнение будет следующим:
f = (1/2)*((2*63*80*6400*6400)/(63*6400*30+80*6400*30)
поэтому, основываясь на расположении в матрице, код должен взять значение из таблицы и подставить его в уравнение.
Мой тест:
k = (4);
d = diag(Matrix,k);
n = d;
n(n==1) = f;
XX = XX - diag(d,k) + diag(n,k);
Пример требуемого вывода
результат должен выглядеть следующим образом (мнимые числа)
1 1 1 0 5 0 0 0
1 1 0 1 0 8 0 0
1 0 1 1 0 0 9 0
0 1 1 1 0 0 0 2
1 0 0 0 1 1 1 0
0 1 0 0 1 1 0 1
0 0 1 0 1 0 1 1
0 0 0 1 0 1 1 1
другие уравнения будут использоваться для изменения других диагоналей для получения этого результата:
1 2 1 0 5 0 0 0
1 1 0 1 0 8 0 0
1 0 1 6 0 0 9 0
0 1 1 1 0 0 0 2
1 0 0 0 1 7 1 0
0 1 0 0 1 1 0 1
0 0 1 0 1 0 1 4
0 0 0 1 0 1 1 1