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 ] 

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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