2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 краевая задача
Сообщение21.11.2016, 20:59 


11/06/16
50
есть задание.
т.к. оно большое прикрепил файл.
Изображение
также попробовал закодить задание, но есть моменты, которые я не понимаю и, соответственно, код-бред (набросок).
вопросы: что такое n в последнем уравнении? и замечания, пожалуйста.
что не хватает в коде? может, не так реализовываю вообще?
Код:
#include "stdafx.h"
#include <math.h>
#include <iostream>
#include <iomanip>
using namespace std;


float fun_a(float xi, float yj) // положительная ф-я
{
   // здесь должна быть какая-нибудь ф-я
   // возвращаю значение от балды. т.к. на данный момент не знаю, что и возвращать.
   return xi+yj;   
}

float fun_b(float xi, float yj) // положительная ф-я
{
   // здесь должна быть какая-нибудь ф-я
   // возвращаю значение от балды. т.к. на данный момент не знаю, что и возвращать.
   return xi+yj; 
}

float fun_c(float xi, float yj) // любая ф-я
{
   // здесь должна быть какая-нибудь ф-я
   // возвращаю значение от балды. т.к. на данный момент не знаю, что и возвращать.
   return xi+yj;   
}

float fun_d(float xi, float yj) // любая ф-я
{
   // здесь должна быть какая-нибудь ф-я
   // возвращаю значение от балды. т.к. на данный момент не знаю, что и возвращать.
   return xi+yj; 
}

float fun_g(float xi, float yj) // неотрицательная ф-я
{
   // здесь должна быть какая-нибудь ф-я
   // возвращаю значение от балды. т.к. на данный момент не знаю, что и возвращать.
   return xi+yj; 
}

float fun_f(float xi, float yj)
{
   // здесь должна быть какая-нибудь ф-я
   // возвращаю значение от балды. т.к. на данный момент не знаю, что и возвращать.
   return xi+yj;   
}


int main()
{
   const int I = 3;
   const int J = 3;

   float x[100], y[100];
   float h, t;
   h = 2; t = 1; // сами задаем
   float a[100][100], b[100][100], c[100][100], d[100][100], g[100][100], f[100][100];
   float A[100][100], B[100][100], C[100][100], D[100][100], E[100][100];
   float a_segment, b_segment;
   float u[100][100];
   // зададим свои значения для отрезка a,b
   a_segment = 0;
   b_segment = 1;

   for (int i = -I; i <= I; i ++)
   {
      x[i] = i * h;
      for (int j = -J; j <= J; j ++)
      {
         y[j] = j * t;

         a[i][j] = fun_a(x[i], y[j]);
         b[i][j] = fun_b(x[i], y[j]);
         c[i][j] = fun_c(x[i], y[j]);
         d[i][j] = fun_d(x[i], y[j]);
         g[i][j] = fun_g(x[i], y[j]);
         f[i][j] = fun_f(x[i], y[j]);


         A[i][j] = (a[i][j])/(pow(h,2)) + (c[i][j])/(2*h);
         B[i][j] = (a[i][j])/(pow(h,2)) - (c[i][j])/(2*h);

         C[i][j] = (b[i][j])/(pow(t,2)) + (d[i][j])/(2*t);
         D[i][j] = (b[i][j])/(pow(t,2)) - (d[i][j])/(2*t);

         E[i][j] = (2*a[i][j])/(pow(h,2)) + (2*b[i][j])/(pow(t,2)) - g[i][j];

      }
   }


   for (int i = -I+1; i < I; i ++)
   {
      for (int j = -J+1; j < J; j ++)
      {
         u[i][j] = (A[i][j])/(E[i][j]) * u[i+1][j] + (B[i][j])/(E[i][j]) * u[i-1][j] + (C[i][j])/(E[i][j]) * u[i][j+1] + (D[i][j])/(E[i][j]) * u[i][j-1] - (f[i][j])/(E[i][j]);
         cout << "u[i][j] = " << u[i][j] << endl; // ясное дело, выводит бред
      }
   }


   system ("pause");
   return 0;
}

 Профиль  
                  
 
 Re: краевая задача
Сообщение22.11.2016, 01:27 
Заслуженный участник
Аватара пользователя


01/03/06
13626
Москва
boss.dima.karpov в сообщении #1170670 писал(а):
вопросы: что такое n в последнем уравнении?

Это номер шага в итерации.

 Профиль  
                  
 
 Re: краевая задача
Сообщение22.11.2016, 02:11 


11/06/16
50
Brukvalub в сообщении #1170736 писал(а):
boss.dima.karpov в сообщении #1170670 писал(а):
вопросы: что такое n в последнем уравнении?

Это номер шага в итерации.


получается, там будет три цикла?
Код:
   for (int n = 0; i < N; n ++) // кол-во итераций
   {
      for (int i = -I; i <= I; i ++)
         {
             for (int j = -J; j <= J; j ++)
                     {
                           ...
                      }
          }
   }


 Профиль  
                  
 
 Re: краевая задача
Сообщение22.11.2016, 09:59 
Заслуженный участник
Аватара пользователя


01/03/06
13626
Москва
Примерно так и будет.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: mihaild


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group