Задачи решения 3-х переменных переменных зависимости в c ++ - PullRequest
0 голосов
/ 06 ноября 2018

Уравнения здесь Привет! Я пытался решить уравнения 3 pde, используя метод FD в C ++, но я не знаю, почему я получил половину точного ответа за все время. Эти уравнения являются переменной зависимостью. У меня проблема с g (x, y) и g (y, x). Когда я удаляю g (y, x) в уравнении 3, результат не меняется. Но когда я удаляю g (x, y), я получаю ноль, поэтому я думаю, что нам нужно что-то сделать для переменных зависимости. Я не знаю. Я надеюсь получить помощь

if(g[i][k][j]!=g[k][i][j] && i!=k)

     u[i][k][j+1]=u[i][k][j]*(1.0 - 2.0*dt)
    +(dt/(dx*dx))*(g[i+1][k][j]-  2.0*g[i][k][j]+g[i-1][k][j])
    +(dt/(dx*dx))*(g[k+1][i][j]-  2.0*g[k][i][j]+g[k-1][i][j])
      +(dt/(dy*dy))*(g[i][k+1][j]-2.0*g[i][k][j]+g[i][k-1][j])
     +(dt/(dy*dy))*(g[k][i+1][j]-2.0*g[k][i][j]+g[k][i-1][j]); //(eq 1)



      g[i][k][j+1]=g[i][k][j]*(1 - dt)
       +dt*u[i][k][j]
       +(dt/(dy*dy))*(v[i][k+1][j]-2*v[i][k][j]+v[i][k-1][j])
       +(dt/(dx*dx))*(v[i+1][k][j]-2*v[i][k][j]+v[i-1][k][j]); //(eq 2)


     v[i][k][j+1]=v[i][k][j]+(g[k][i][j] + g[i][k][j])*dt; //(eq 3)

1 Ответ

0 голосов
/ 06 ноября 2018

Судя по твоей картинке и коду, я думаю, тебе не хватает пары скобок

if(i!=k && g[i][k][j]!=g[k][i][j]) {
    u[i][k][j+1] = ...;
    g[i][k][j+1] = ...;
    v[i][k][j+1] = ...;
}

Также обратите внимание, что сравнение g[i][k][j]!=g[k][i][j], скорее всего, не удастся, если тип float или double (или complext<float>, complex<double> и т. Д.), См. этот пост .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...