Дискуссионный математический форумМатематический форум
Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Неявная разностная схема С++
СообщениеДобавлено: 23 май 2015, 15:59 
Не в сети
Начинающий
Зарегистрирован:
21 май 2015, 19:30
Сообщений: 8
Cпасибо сказано: 2
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
День добрый, форумчане. Нужен ваш совет.
Имеется у меня код, это решение уравнения теплопроводности с помощью неявной разностной схемы. и всё бы ничего, и вроде всё работает, за исключением одного момента: пока массив В объявлен размерностью конкретного числа double B[11]; всё работает, как только объявляешь double B[n1]; что мне и требуется, работать всё перестает. Я далеко не мастер в С++, но может быть вы меня наведете на мысль как исправить косяк в задаче

#include "math.h"
#include "iostream"
#include"fstream"
using namespace std;



double func( double x , double t )
{ return exp ( - 3.14 * 3.14 * t ) * sin ( 3.14 * x ) ; }


int main()
{
int n1 = 11 ;
int n,k;
double z;
double A[n1][n1];
double B[11];
double eps[n1];
double X[n1];
double et[n1];
double cou, tau=0.005,h=1.0/(n1-1);

cou = 2.0 * tau / ( h * h );

for ( int l = 0 ; l < n1 ; l++ )
for( int m = 0 ; m < n1 ; m++ )
A[m][l]=0;

for ( int j = 0 ; j < n1 + 1 ; j++ )
{
A[j][j-1] = cou / 2 ;
A[j][j] = - 1 - cou ;
A[j][j+1] = cou / 2 ;
}

for ( int i = 0; i < n1; i++ )
{
B[i] = - sin ( i * h * 3.14 );
}

n = n1 - 1 ;
eps[0] = - A[0][1] / A[0][0] ;
et[0] = B[0] / A[0][0] ;

for(int i=1;i<n;i++)
{
z=A[i][i]+A[i][i-1]*eps[i-1];
eps[i]=-A[i][i+1]/z;
et[i]=(B[i]-A[i][i-1]*et[i-1])/z;
}

X[n]=(B[n]-A[n][n-1]*et[n-1])/(A[n][n]+A[n][n-1]*eps[n-1]);

for(int i=n-1;i>=0;i--)
X[i]=eps[i]*X[i+1]+et[i];

double max = 0;
for(int i=0; i<n1-1;i++)
if(fabs(func(i*h, tau)-X[i])>max)
max=fabs(func(i*h, tau)-X[i]);
printf("%f", max);

return 0;
}

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Неявная разностная схема С++
СообщениеДобавлено: 11 июл 2015, 09:12 
Не в сети
Начинающий
Аватара пользователя
Зарегистрирован:
12 окт 2013, 19:30
Сообщений: 24
Откуда: Berlin
Cпасибо сказано: 6
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Code::Blocks IDE не ругается ни на 11, ни на n1. Единственное предупреждение - неиспользованная переменная k.
И printf("%f", max); я бы заменила на cout << max ;


Онлайн-компилятор/IDE выдает ошибку с n1 если B стоит после А, как у вас. Если их поменять местами - ошибка исчезает.
Технически я не могу объяснить, с чем это связано. Но если вам нужно просто запустить этот код, попробуйте в другой программе или поменять их местами. Мне оба варианта помогли.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Неявная разностная схема С++
СообщениеДобавлено: 11 июл 2015, 12:27 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
19 фев 2011, 23:53
Сообщений: 1888
Откуда: Алексин
Cпасибо сказано: 275
Спасибо получено:
981 раз в 775 сообщениях
Очков репутации: 229

Добавить очки репутацииУменьшить очки репутации
Я бы написал после всех #include : #define n1 11, а объявление переменной n1 удалил бы.

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

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Неявная схема для задачи теплопроводности

в форуме Численные методы

Gargantua

1

417

02 ноя 2016, 00:10

Разностная схема для гиперболического уравнения

в форуме Численные методы

alex345

0

452

06 сен 2014, 15:12

Разностная схема для плоскости и сферы

в форуме Численные методы

mihailothepooh

2

400

24 авг 2017, 22:19

Явная конечно-разностная схема

в форуме Численные методы

rokanten13

1

306

02 июн 2019, 14:06

Разностная схема имеет максимальный порядок аппроксимации

в форуме Численные методы

illumatthey

0

190

12 июн 2022, 20:44

Правая разностная схема с использованием второй производной

в форуме Дифференциальные и Интегральные уравнения

stut

3

511

05 сен 2014, 08:50

Неявная производная

в форуме Дифференциальное исчисление

lockyst

1

169

05 июн 2018, 19:34

Конечно-разностная аппроксимация ОДУ второго порядка, краева

в форуме Численные методы

Ramzil

1

491

03 мар 2015, 14:02

Схема

в форуме Дискретная математика, Теория множеств и Логика

drago123

4

292

28 ноя 2017, 18:00

Схема

в форуме Электричество и Магнетизм

DeWaldemar

0

361

07 июн 2015, 18:50


Часовой пояс: UTC + 3 часа [ Летнее время ]



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

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


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

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2023 MathHelpPlanet.com. All rights reserved