c Коэффициент для specifyCoefficients

Обзор коэффициента c

В этом разделе описывается, как записать коэффициент c в уравнениях, таких как

m2ut2+dut·(cu)+au=f

Тема относится к рекомендуемому рабочему процессу для включения коэффициентов в вашу модель с помощью specifyCoefficients.

Для 2-D систем c является тензором с 4 N2 элементы. Для 3-D систем c является тензором с 9 N2 элементы. Для получения определения элементов тензора смотрите Определение элемента c Tensor Elements. N количество уравнений, см. Уравнения, которые вы можете решить используя PDE Toolbox.

Чтобы записать коэффициент c для включения в модель PDE через specifyCoefficients, дайте c как одно из следующих:

  • Если c является постоянным, дайте вектор-столбец, представляющую элементы в тензоре.

  • Если c не является постоянным, задайте указатель на функцию. Функция должна иметь вид

    ccoeffunction(location,state)

    solvepde или solvepdeeig передайте location и state структуры, для ccoeffunction. Функция должна вернуть матрицу размера N 1-by- Nr, где:

    • N 1 является длиной вектора, представляющего c коэффициент. Существует несколько возможных значений N 1, подробно описанных в Некоторых Векторах C, которые могут быть Короткими. Для 2-D геометрии  1 ≤ N 1 ≤ 4 N2и для 3-D геометрии 1 ≤ N 1 ≤ 9 N2.

    • Nr - число точек в местоположении, которое проходит решатель. Nr равно длине location.x или любой другой location поле. Функция должна оценивать c в этих точках.

Определение элементов тензора c

Для 2-D систем обозначение (cu) представляет N -by-1 матрицу с (i, 1) - компонент

j=1N(xci,j,1,1x+xci,j,1,2y+yci,j,2,1x+yci,j,2,2y)uj

Для 3-D систем обозначение (cu) представляет N -by-1 матрицу с (i, 1) - компонент

j=1N(xci,j,1,1x+xci,j,1,2y+xci,j,1,3z)uj+j=1N(yci,j,2,1x+yci,j,2,2y+yci,j,2,3z)uj+j=1N(zci,j,3,1x+zci,j,3,2y+zci,j,3,3z)uj

Все представления c коэффициент начинается с «уплощения» тензора в матрицу. Для 2-D систем N -by N -by-2-by-2 тензор уплощается к 2 N -by-2 N матрице, где матрица логически является N-by N матрицей блоков 2 на 2.

(c(1,1,1,1)c(1,1,1,2)c(1,2,1,1)c(1,2,1,2)c(1,N,1,1)c(1,N,1,2)c(1,1,2,1)c(1,1,2,2)c(1,2,2,1)c(1,2,2,2)c(1,N,2,1)c(1,N,2,2)c(2,1,1,1)c(2,1,1,2)c(2,2,1,1)c(2,2,1,2)c(2,N,1,1)c(2,N,1,2)c(2,1,2,1)c(2,1,2,2)c(2,2,2,1)c(2,2,2,2)c(2,N,2,1)c(2,N,2,2)c(N,1,1,1)c(N,1,1,2)c(N,2,1,1)c(N,2,1,2)c(N,N,1,1)c(N,N,1,2)c(N,1,2,1)c(N,1,2,2)c(N,2,2,1)c(N,2,2,2)c(N,N,2,1)c(N,N,2,2))

Для 3-D систем N -by N -by-3-by-3 тензор уплощается к 3 N -by-3 N матрице, где матрица логически является N-by N матрицей блоков 3 на 3.

(c(1,1,1,1)c(1,1,1,2)c(1,1,1,3)c(1,2,1,1)c(1,2,1,2)c(1,2,1,3)c(1,N,1,1)c(1,N,1,2)c(1,N,1,3)c(1,1,2,1)c(1,1,2,2)c(1,1,2,3)c(1,2,2,1)c(1,2,2,2)c(1,2,2,3)c(1,N,2,1)c(1,N,2,2)c(1,N,2,3)c(1,1,3,1)c(1,1,3,2)c(1,1,3,3)c(1,2,3,1)c(1,2,3,2)c(1,2,3,3)c(1,N,3,1)c(1,N,3,2)c(1,N,3,3)c(2,1,1,1)c(2,1,1,2)c(2,1,1,3)c(2,2,1,1)c(2,2,1,2)c(2,2,1,3)c(2,N,1,1)c(2,N,1,2)c(2,N,1,3)c(2,1,2,1)c(2,1,2,2)c(2,1,2,3)c(2,2,2,1)c(2,2,2,2)c(2,2,2,3)c(2,N,2,1)c(2,N,2,2)c(2,N,2,3)c(2,1,3,1)c(2,1,3,2)c(2,1,3,3)c(2,2,3,1)c(2,2,3,2)c(2,2,3,3)c(2,N,3,1)c(2,N,3,2)c(2,N,3,3)c(N,1,1,1)c(N,1,1,2)c(N,1,1,3)c(N,2,1,1)c(N,2,1,2)c(N,2,1,3)c(N,N,1,1)c(N,N,1,2)c(N,N,1,3)c(N,1,2,1)c(N,1,2,2)c(N,1,2,3)c(N,2,2,1)c(N,2,2,2)c(N,2,2,3)c(N,N,2,1)c(N,N,2,2)c(N,N,2,3)c(N,1,3,1)c(N,1,3,2)c(N,1,3,3)c(N,2,3,1)c(N,2,3,2)c(N,2,3,3)c(N,N,3,1)c(N,N,3,2)c(N,N,3,3))

Эти матрицы далее уплощаются в вектор-столбец. Сначала N -by - N матрицы блоков 2 на 2 и 3 на 3 преобразуются в «векторы» блоков 2 на 2 и 3 на 3. Затем блоки превращаются в векторы обычным столбцовым способом.

Вектор коэффициентов c относится к тензору с следующим образом. Для 2-D систем,

(c(1)c(3)c(4N+1)c(4N+3)c(4N(N1)+1)c(4N(N1)+3)c(2)c(4)c(4N+2)c(4N+4)c(4N(N1)+2)c(4N(N1)+4)c(5)c(7)c(4N+5)c(4N+7)c(4N(N1)+5)c(4N(N1)+7)c(6)c(8)c(4N+6)c(4N+8)c(4N(N1)+6)c(4N(N1)+8)c(4N3)c(4N1)c(8N3)c(8N1)c(4N23)c(4N21)c(4N2)c(4N)c(8N2)c(8N)c(4N22)c(4N2))

Коэффициент c (i, j, k, l) находится в строке (4 N ( j - 1) +  4 i  + 2 l + k - 6) вектора c.

Для 3-D систем,

(c(1)c(4)c(7)c(9N+1)c(9N+4)c(9N+7)c(9N(N1)+1)c(9N(N1)+4)c(9N(N1)+7)c(2)c(5)c(8)c(9N+2)c(9N+5)c(9N+8)c(9N(N1)+2)c(9N(N1)+5)c(9N(N1)+8)c(3)c(6)c(9)c(9N+3)c(9N+6)c(9N+9)c(9N(N1)+3)c(9N(N1)+6)c(9N(N1)+9)c(10)c(13)c(16)c(9N+10)c(9N+13)c(9N+16)c(9N(N1)+10)c(9N(N1)+13)c(9N(N1)+16)c(11)c(14)c(17)c(9N+11)c(9N+14)c(9N+17)c(9N(N1)+11)c(9N(N1)+14)c(9N(N1)+17)c(12)c(15)c(18)c(9N+12)c(9N+15)c(9N+18)c(9N(N1)+12)c(9N(N1)+15)c(9N(N1)+18)c(9N8)c(9N5)c(9N2)c(18N8)c(18N5)c(18N2)c(9N28)c(9N25)c(9N22)c(9N7)c(9N4)c(9N1)c(18N7)c(18N4)c(18N1)c(9N27)c(9N24)c(9N21)c(9N6)c(9N3)c(9N)c(18N6)c(18N3)c(18N)c(9N26)c(9N23)c(9N2))

Коэффициент c (i, j, k, l) находится в строке (9 N ( j - 1) +  9 i  + 3 l + k - 12) вектора c.

Некоторые векторы c могут быть короткими

Часто ваш тензор c имеет структуру, такую как симметричная или блочная диагональ. Во многих случаях можно представлять c с помощью меньшего вектора, чем с 4 N2 компоненты для 2-D или 9 N2 компоненты для 3-D. В следующих разделах приведены возможности.

2-D системы

Скаляр c, 2-D системы.  Программное обеспечение интерпретирует скаляр c как диагональную матрицу, с c (i, i, 1,1) и c (i, i, 2,2) равный скаляру и всем другим записям 0.

(c000000c000000c000000c000000c000000c)

Двухэлементный вектор-столбец c, 2-D систем.  Программное обеспечение интерпретирует вектор - столбец с двумя элементами c как диагональную матрицу, с c (i, i, 1,1) и c (i, i, 2,2) как эти два записей и все другие записи 0.

(c(1)000000c(2)000000c(1)000000c(2)000000c(1)000000c(2))

Трехэлементный вектор-столбец c, 2-D систем.  Программа интерпретирует трехэлементный вектор-столбец, c как симметричную блочную диагональную матрицу с c (i, i, 1,1 ) = c (1), c (i, i, 2,2) = c (3) и c (i , i, 1,2) = c (i, i, 2,1) = c (2).

(c(1)c(2)0000c(2)c(3)000000c(1)c(2)0000c(2)c(3)000000c(1)c(2)0000c(2)c(3))

Четырехэлементный вектор-столбец c, 2-D систем.  Программа интерпретирует четырехэлементный вектор-столбец c как блочную диагональную матрицу.

(c(1)c(3)0000c(2)c(4)000000c(1)c(3)0000c(2)c(4)000000c(1)c(3)0000c(2)c(4))

N-элемент Вектора-столбца c, 2-D системы.  Программа интерпретирует вектор-столбец N c как диагональную матрицу.

(c(1)000000c(1)000000c(2)000000c(2)000000c(N)000000c(N))

Внимание

Если N = 2, 3 или 4, векторная форма 2-, 3- или 4-элементного столбца имеет приоритет над формой N -элемент. Для примера, если  N = 3, и у вас есть c матрица вида

(c1000000c1000000c2000000c2000000c3000000c3)

вы не можете использовать N -элемент форму c. Вместо этого необходимо использовать форму 2 N - элемент. Если вы даете c как вектор [c1;c2;c3]программное обеспечение интерпретирует c как 3-элементная форма:

(c1c20000c2c3000000c1c20000c2c3000000c1c20000c2c3)

Вместо этого используйте форму 2 N - элемент [c1;c1;c2;c2;c3;c3].

2N-Element Вектор-столбец c, 2-D Systems.  Программа интерпретирует вектор N столбцом 2-х c как диагональную матрицу.

(c(1)000000c(2)000000c(3)000000c(4)000000c(2N1)000000c(2N))

Внимание

Если N = 2, форма с 4 элементами имеет приоритет над формой 2 N -element. Для примера, если ваша c матрица

(c10000c20000c30000c4)

вы не можете дать c как [c1;c2;c3;c4], потому что программа интерпретирует этот вектор как 4-элементную форму

(c1c300c2c40000c1c300c2c4)

Вместо этого используйте форму 3 N - элемент [c1;0;c2;c3;0;c4] или форма 4 N - элемент [c1;0;0;c2;c3;0;0;c4].

3N-Element Вектор-столбец c, 2-D Systems.  Программа интерпретирует вектор N столбцом 3-х c как симметричную блочную диагональную матрицу.

(c(1)c(2)0000c(2)c(3)000000c(4)c(5)0000c(5)c(6)000000c(3N2)c(3N1)0000c(3N1)c(3N))

Коэффициент c (i, j, k, l) последовательно (3 i +  k +  l - 4) вектора c.

4N-Element Вектор-столбец c, 2-D Systems.  Программа интерпретирует вектор N столбцом 4-х c как блочную диагональную матрицу.

(c(1)c(3)0000c(2)c(4)000000c(5)c(7)0000c(6)c(8)000000c(4N3)c(4N1)0000c(4N2)c(4N))

Коэффициент c (i, j, k, l) находится в строке ( 4 i + 2 l + k - 6) вектора c.

2N (2N + 1 )/ 2-Element Вектор-столбец c, 2-D  Systems. Программа интерпретирует вектор-столбец с 2 N (2 N + 1 )/2 элементами c как симметричную матрицу. На следующей схеме • означает, что запись симметрична.

(c(1)c(2)c(4)c(6)c((N1)(2N1)+1)c((N1)(2N1)+3)c(3)c(5)c(7)c((N1)(2N1)+2)c((N1)(2N1)+4)c(8)c(9)c((N1)(2N1)+5)c((N1)(2N1)+7)c(10)c((N1)(2N1)+6)c((N1)(2N1)+8)c(N(2N+1)2)c(N(2N+1)1)c(N(2N+1)))

Коэффициент c (i, j, k, l), для  i < j, в строке (2 j2 - 3  j + 4 i +  2 l  + k - 5) вектора c. Для i = j, коэффициент c (i, j, k, l) последовательно (2 i2 + i + l + k - 4) вектора c.

4 Н2- Вектор-столбец элемента c, 2-D системы.  Программное обеспечение интерпретирует 4 N2-элементный вектор-столбец, c как матрица.

(c(1)c(3)c(4N+1)c(4N+3)c(4N(N1)+1)c(4N(N1)+3)c(2)c(4)c(4N+2)c(4N+4)c(4N(N1)+2)c(4N(N1)+4)c(5)c(7)c(4N+5)c(4N+7)c(4N(N1)+5)c(4N(N1)+7)c(6)c(8)c(4N+6)c(4N+8)c(4N(N1)+6)c(4N(N1)+8)c(4N3)c(4N1)c(8N3)c(8N1)c(4N23)c(4N21)c(4N2)c(4N)c(8N2)c(8N)c(4N22)c(4N2))

Коэффициент c (i, j, k, l) находится в строке (4 N ( j - 1) +  4 i  + 2 l + k - 6) вектора c.

3-D системы

Скаляр c, 3-D системы.  Программное обеспечение интерпретирует скаляр c как диагональную матрицу, с c (i, i, 1,1), c (i, i, 2,2), и c (i, i, 3,3) равный скаляру и всем другим записям 0.

(c000000000c000000000c000000000c000000000c000000000c000000000c000000000c000000000c)

Трехэлементный вектор-столбец c, 3-D систем.  Программное обеспечение интерпретирует вектор - столбец с тремя элементами c как диагональную матрицу, с c (i, i, 1,1), c (i, i, 2,2), и c (i, i, 3,3) как эти три записей и все другие записи 0.

(c(1)000000000c(2)000000000c(3)000000000c(1)000000000c(2)000000000c(3)000000000c(1)000000000c(2)000000000c(3))

Шестиэлементный вектор-столбец c, 3-D систем.  Программа интерпретирует шестиэлементный вектор-столбец c как симметричный блок диагонали матрицу с

c (i, i, 1,1) = c (1)
c (i, i, 2,2) = c (3)
c (i, i, 1,2) = c (i, i, 2,1) = c (2)
c (i, i, 1,3) = c (i, i, 3,1) = c (4)
c (i, i, 2,3) = c (i, i, 3,2) = c (5)
c (i, i, 3,3) = c (6).

На следующей схеме • означает, что запись симметрична.

(c(1)c(2)c(4)000000c(3)c(5)000000c(6)000000000c(1)c(2)c(4)000000c(3)c(5)000000c(6)000000000c(1)c(2)c(4)000000c(3)c(5)000000c(6))

Девятиэлементный вектор-столбец c, 3-D систем.  Программа интерпретирует вектор-столбец с девятью элементами c как блок диагонали матрицу.

(c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(9)000000000c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(9)000000000c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(3))

N-элемент Вектора-столбца c, 3-D системы.  Программа интерпретирует вектор-столбец N c как диагональную матрицу.

(c(1)000000000c(1)000000000c(1)000000000c(2)000000000c(2)000000000c(2)000000000c(N)000000000c(N)000000000c(N))

Внимание

Если N = 3, 6 или 9, векторная форма 3-, 6- или 9-элементного столбца имеет приоритет над формой N -элемент. Для примера, если  N = 3, и у вас есть c матрица вида

(c(1)000000000c(1)000000000c(1)000000000c(2)000000000c(2)000000000c(2)000000000c(3)000000000c(3)000000000c(3))

вы не можете использовать N -элемент форму c. Если вы даете c как вектор [c1;c2;c3]программное обеспечение интерпретирует c как 3-элементная форма:

(c(1)000000000c(2)000000000c(3)000000000c(1)000000000c(2)000000000c(3)000000000c(1)000000000c(2)000000000c(3))

Вместо этого используйте одну из следующих форм:

  • 6 N - элемент форма - [c1;0;c1;0;0;c1;c2;0;c2;0;0;c2;c3;0;c3;0;0;c3]

  • 9 N - элемент форма - [c1;0;0;0;c1;0;0;0;c1;c2;0;0;0;c2;0;0;0;c2;c3;0;0;0;c3;0;0;0;c3]

3N-Element Вектор-столбец c, 3-D Systems.  Программа интерпретирует вектор N столбцом 3-х c как диагональную матрицу.

(c(1)000000000c(2)000000000c(3)000000000c(4)000000000c(5)000000000c(6)000000000c(3N2)000000000c(3N1)000000000c(3N))

Внимание

Если N = 3, форма с 9 элементами имеет приоритет над формой 3 N - элемент. Для примера, если ваша c матрица

(c(1)000000000c(2)000000000c(3)000000000c(4)000000000c(5)000000000c(6)000000000c(7)000000000c(8)000000000c(9))

вы не можете дать c как [c1;c2;c3;c4;c5;c6;c7;c8;c9], потому что программа интерпретирует этот вектор как форму с 9 элементами

(c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(9)000000000c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(9)000000000c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(3))

Вместо этого используйте одну из следующих форм:

  • 6 N - элемент форма - [c1;0;c2;0;0;c3;c4;0;c5;0;0;c6;c7;0;c8;0;0;c9]

  • 9 N - элемент форма - [c1;0;0;0;c2;0;0;0;c3;c4;0;0;0;c5;0;0;0;c6;c7;0;0;0;c8;0;0;0;c9]

6N-Element Вектор-столбец c, 3-D Systems.  Программа интерпретирует 6 N элементный вектор-столбец c как симметричную блочную диагональную матрицу. На следующей схеме • означает, что запись симметрична.

(c(1)c(2)c(4)000000c(3)c(5)000000c(6)000000000c(7)c(8)c(10)000000c(9)c(11)000000c(12)000000000c(6N5)c(6N4)c(6N2)000000c(6N3)c(6N1)000000c(6N))

Коэффициент c (i, j, k, l) находится в строке ( 6  i + k + 1/2 l (l -1) -6) вектора c.

9N-Element Вектор-столбец c, 3-D Systems.  Программа интерпретирует вектор-столбец N 9-тью c как блочную диагональную матрицу.

(c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(9)000000000c(10)c(13)c(16)000000c(11)c(14)c(17)000000c(12)c(15)c(18)000000000c(9N8)c(9N5)c(9N2)000000c(9N7)c(9N4)c(9N1)000000c(9N6)c(9N3)c(9N))

Коэффициент c (i, j, k, l) находится в строке ( 9 i + 3 l + k - 12) вектора c.

3N (3N + 1 )/ 2-Element Вектор-столбец c, 3-D  Systems. Программа интерпретирует вектор-столбец с 3 N (3 N + 1 )/2 элементами c как симметричную матрицу. На следующей схеме • означает, что запись симметрична.

(c(1)c(2)c(4)c(7)c(10)c(13)c(3(N1)(3(N1)+1)/2+1c(3(N1)(3(N1)+1)/2+4c(3(N1)(3(N1)+1)/2+7c(3)c(5)c(8)c(11)c(14)c(3(N1)(3(N1)+1)/2+2c(3(N1)(3(N1)+1)/2+5c(3(N1)(3(N1)+1)/2+8c(6)c(9)c(12)c(15)c(3(N1)(3(N1)+1)/2+3c(3(N1)(3(N1)+1)/2+6c(3(N1)(3(N1)+1)/2+9c(16)c(17)c(19)c(3(N1)(3(N1)+1)/2+10c(3(N1)(3(N1)+1)/2+13c(3(N1)(3(N1)+1)/2+16c(18)c(20)c(3(N1)(3(N1)+1)/2+11c(3(N1)(3(N1)+1)/2+14c(3(N1)(3(N1)+1)/2+17c(21)c(3(N1)(3(N1)+1)/2+12c(3(N1)(3(N1)+1)/2+15c(3(N1)(3(N1)+1)/2+18c(3N(3N+1)/25)c(3N(3N+1)/24)c(3N(3N+1)/22)c(3N(3N+1)/23)c(3N(3N+1)/21)c(3N(3N+1)/2))

Коэффициент c (i, j, k, l), для  i < j, находится в строке (9 (j -1) (j -2 )/2 + 6  (j -1 ) +  9 i + 3 l + k - 12) вектора c. Для i = j, коэффициент c (i, j, k, l) является последовательно (9 (i-1) (i-2 ) /2 + 15 (i -1) + 1/2 <reservedrangesplaceholder3>  (l-1) + k) вектора c.

9 Н2- Вектор-столбец элемента c, 3-D системы.  Программное обеспечение интерпретирует 9 N2-элементный вектор-столбец, c как матрица.

(c(1)c(4)c(7)c(9N+1)c(9N+4)c(9N+7)c(9N(N1)+1)c(9N(N1)+4)c(9N(N1)+7)c(2)c(5)c(8)c(9N+2)c(9N+5)c(9N+8)c(9N(N1)+2)c(9N(N1)+5)c(9N(N1)+8)c(3)c(6)c(9)c(9N+3)c(9N+6)c(9N+9)c(9N(N1)+3)c(9N(N1)+6)c(9N(N1)+9)c(10)c(13)c(16)c(9N+10)c(9N+13)c(9N+16)c(9N(N1)+10)c(9N(N1)+13)c(9N(N1)+16)c(11)c(14)c(17)c(9N+11)c(9N+14)c(9N+17)c(9N(N1)+11)c(9N(N1)+14)c(9N(N1)+17)c(12)c(15)c(18)c(9N+12)c(9N+15)c(9N+18)c(9N(N1)+12)c(9N(N1)+15)c(9N(N1)+18)c(9N8)c(9N5)c(9N2)c(18N8)c(18N5)c(18N2)c(9N28)c(9N25)c(9N22)c(9N7)c(9N4)c(9N1)c(18N7)c(18N4)c(18N1)c(9N27)c(9N24)c(9N21)c(9N6)c(9N3)c(9N)c(18N6)c(18N3)c(18N)c(9N26)c(9N23)c(9N2))

Коэффициент c (i, j, k, l) находится в строке (9 N ( j - 1) +  9 i  + 3 l + k - 12) вектора c.

Функциональная форма

Если ваш c коэффициент не является постоянным, представлять его как функцию вида

ccoeffunction(location,state)

solvepde или solvepdeeig передайте location и state структуры, для ccoeffunction. Функция должна вернуть матрицу размера N 1-by- Nr, где:

  • N 1 - это количество коэффициентов, которые вы передаете решателю. Существует несколько возможных значений N 1, подробно описанных в Некоторых Векторах C, которые могут быть Короткими. Для 2-D геометрии  1  N 1 4 N2и для 3-D геометрии 1 ≤ N 1 ≤ 9 N2.

  • Nr - число точек в местоположении, которое проходит решатель. Nr равно длине location.x или любой другой location поле. Функция должна оценивать c в этих точках.

Передайте коэффициент в specifyCoefficients как указатель на функцию, такой как

specifyCoefficients(model,'c',@ccoeffunction,...)
  • location - структура с этими полями:

    • location.x

    • location.y

    • location.z

    • location.subdomain

    Поля x, y, и z представлять x -, y - и z - координаты точек, для которых ваша функция вычисляет значения коэффициентов. The subdomain поле представляет числа поддоменов, которые в настоящее время применяются только к 2-D моделям. Поля местоположения являются векторами-строками.

  • state - структура с этими полями:

    • state.u

    • state.ux

    • state.uy

    • state.uz

    • state.time

    The state.u поле представляет текущее значение u решения. The state.ux, state.uy, и state.uz области - оценки частных производных решения ( <reservedrangesplaceholder8> /  <reservedrangesplaceholder7>,  <reservedrangesplaceholder6> /  <reservedrangesplaceholder5> и  <reservedrangesplaceholder4> /  <reservedrangesplaceholder3>) в соответствующих точках структуры местоположения. Решения и оценки градиента являются N -by Nr матрицами. The state.time поле является скаляром, представляющим время для зависящих от времени моделей.

Например, предположим N = 3, и у вас есть 2-D геометрия. Предположим, что вы c матрица имеет вид

c=[12281+x2+y2u(2)1+u(1)2+u(3)2u(2)1+u(1)2+u(3)21+x2+y2s1(x,y)11s1(x,y)]

где отсутствующие элементы равны нулю. Здесь s 1 (x, y) равен 5 в субдомене 1 и равен 10 в субдомене 2.

Этот c является симметричной, блок-диагональной матрицей с различными коэффициентами в каждом блоке. Поэтому естественно представлять c как 3N-Element вектор-столбец c, 2-D Systems:

(c(1)c(2)0000c(2)c(3)000000c(4)c(5)0000c(5)c(6)000000c(3N2)c(3N1)0000c(3N1)c(3N))

Для этой формы подходит следующая функция.

function cmatrix = ccoeffunction(location,state)

n1 = 9;
nr = numel(location.x);
cmatrix = zeros(n1,nr);
cmatrix(1,:) = ones(1,nr);
cmatrix(2,:) = 2*ones(1,nr);
cmatrix(3,:) = 8*ones(1,nr);
cmatrix(4,:) = 1+location.x.^2 + location.y.^2;
cmatrix(5,:) = state.u(2,:)./(1 + state.u(1,:).^2 + state.u(3,:).^2);
cmatrix(6,:) = cmatrix(4,:);
cmatrix(7,:) = 5*location.subdomain;
cmatrix(8,:) = -ones(1,nr);
cmatrix(9,:) = cmatrix(7,:);

Чтобы включить эту функцию в качестве вашей c коэффициент, передайте указатель на функцию @ccoeffunction:

specifyCoefficients(model,'c',@ccoeffunction,...

Похожие темы