Форум программистов, компьютерный форум CyberForum.ru

метод конечных элементов на си++ - C++

Восстановить пароль Регистрация
 
buttermas
Сообщений: n/a
23.12.2013, 20:14     метод конечных элементов на си++ #1
Всем привет!нужно написатьт прогу для решения одномерной задачи методом конечных элементов. в чем ошибка?
int _tmain(){
setlocale ( LC_ALL, "rus" );
int i=0,j=0;
double h=0.01,N=100,a[100][100],u[100],fi[100],alf[100],bet[100],xi=-1;
a[0][0]=200.0066667;
a[0][1]=-99.99833333;
fi[0]=(0.009999177558*sin(3.141592654*h*(i+1)));
alf[0]=-a[0][1]/a[0][0];
bet[0]=fi[0]/a[0][0];
for(i=1;i<N-1;++i){
a[i][i]=200.0066667;
a[i][i+1]=-99.99833333;
a[i][i-1]=-99.99833333;
fi[i]=0.;
for(j=1;j<200;++j){
xi+=h;
fi[i]+=(sin(3.14*(h*xi+h*i))*(1-abs(xi)));
}
fi[i]*=h*h;
xi=-1;
if(i==98){
a[i+1][i+1]=100.0033333;
a[i+1][i]=-99.99833333;
fi[99]=0.;
for(j=1;j<100;++j){
xi+=h;
fi[99]+=(sin(3.14*(h*xi+h*i))*(1-abs(xi)));
}
fi[99]*=h*h;
}
if(i==1){
alf[i]=-a[i-1][i]/a[i-1][i-1];
bet[i]=fi[i-1]/a[i-1][i-1];
}
alf[i+1]=-a[i][i+1]/(a[i][i-1]*alf[i]+a[i][i]);
bet[i+1]=(fi[i]-a[i][i+1]*bet[i])/(a[i][i-1]*alf[i]+a[i][i]);
if(i==98){
alf[99]=-a[99][98]/a[99][99];
bet[99]=fi[99]/a[99][99];
u[99]=(fi[99])/(a[99][99]);
i=100;
u[100]=0;
}
}

cout<<" u("<<100*h<<")="<<u[100]<<'\n';
cout<<" u("<<99*h<<")="<<u[99]<<'\n';
for(i=98;i>0;--i){
u[i]=alf[i]*u[i+1]+bet[i];
cout<<" u("<<h*i<<")="<<u[i]<<'\n';
if(i==1){
u[i-1]=0;
}
}
cout<<" u("<<0*h<<")="<<u[0]<<'\n';
getch();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2013, 20:14     метод конечных элементов на си++
Посмотрите здесь:

Рассчет конечных сумм 1/1! + 4/2! + n^2/n! C++
Метод конечных элементов C++
C++ Метод медиан из трех элементов VS улучшенный быстрый метод сортировки(метод Бентли-Макилроя)
C++ Нахождение конечных разностей в с++
C++ Метод конечных разностей для краевой задачи
Метод Конечных Разностей для уравнения в частных производных C++
Модуль формирования глобальной С-матрицы для метода конечных элементов C++
C++ Метод конечных автоматов для списка слов

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lpvoid
23.12.2013, 20:17
  #2

Не по теме:

make me unsee it.

Hoottie_McGOOB
107 / 105 / 5
Регистрация: 04.10.2013
Сообщений: 231
24.12.2013, 14:56     метод конечных элементов на си++ #3
C++
1
cout<<" u("<<100*h<<")="<<u[100]<<'\n';
как минимум в этой строке выход за пределы массива... размерность 100... элементов 100... а обращение к 101-му элементу.
Yandex
Объявления
24.12.2013, 14:56     метод конечных элементов на си++
Ответ Создать тему
Опции темы

Текущее время: 13:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru