С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
Лунатик
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 8
#1

Краевая задача - C++

04.11.2011, 21:41. Просмотров 3955. Ответов 2
Метки нет (Все метки)

Решение краевых задач методом прогонки для диф. уравнений второго порядка. Подскажите, где ошибка. Погрешности гигантские получаются
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <stdlib.h>
#include <math.h>
using namespace std;
 
void main()
{
        int n,i;
        float c1=1.0, d1=1.0, c2=-2.0, d2=2.0, c=0, d=0, a=-1.0, b=1, fx;
        float h,e[9999], maxe;
        float p[9999],q[9999],betta[9999],gamma[9999],fi[9999],alfa[9999];
        float y[9999],u[9999],v[9999],x[9999], yt[9999];
        cout<<"Vvedite 4islo uzlov n"<<endl;
        cout<<endl<<"n=";
        cin>>n;
        x[0]=a;
        h=(b-a)/n;//шаг
        betta[0]=c1*h-c2;
        gamma[0]=c2;
        fi[0]=h*c;
        alfa[0]=0;
        yt[0]=10*exp(-x[0]*x[0]);
        for(i=1;i<n;i++)
        {
                yt[i]=10*exp(-x[i]*x[i]);
                x[i]=x[i-1]+h;//определение отрезка
                p[i]=x[i]*x[i];// р на данном отрезке
                q[i]=x[i];//q на данном отрезке
                fx=10*exp(-x[i]*x[i])*(2*x[i]*x[i]-1)*(2-x[i]);
                fi[i]=h*((y[i+1]-2*y[i]+y[i-1])/h*h+p[i]*(y[i+1]-y[i-1])/2*h+q[i]*y[i]);// функция на данном отрезке
                alfa[i]=1/h-(1/2)*p[i];
                betta[i]=q[i]*h-2/h;
                gamma[i]=1/h+(1/2)*p[i];
        }
        alfa[n]=-d2;
        betta[n]=h*d1+d2;
        fi[n]=h*d;
        gamma[n]=0;
        v[0]=gamma[0]/betta[0];
        u[0]=fi[0]/betta[0];
        for(i=1;i<n;i++)//прямой ход прогонки
        {
                v[i]=-gamma[i]/(betta[i]+alfa[i]*v[i-1]);
                u[i]=(fi[i]-alfa[i]*u[i-1])/(betta[i]+alfa[i]*v[i-1]);
        }
        y[n]=u[n];
        v[n]=0;
        for(i=n-1;i>0;i--) //обратный ход прогонки
                y[i]=u[i]+v[i]*y[i+1];
        
        cout<<"maximal'naya pogre6nost'"<<endl;//нахождение погрешности
        for(i=0;i<n;i++)
        {
                cout<<yt[i]<<endl<<y[i]<<endl;
                e[i]=y[i]-yt[i];
        }
        maxe=e[0];
        for(i=0;i<n;i++)
        {
                if (e[i]>maxe) maxe=e[i]; 
        }
        cout<<maxe <<endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2011, 21:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Краевая задача (C++):

Краевая задача 1 порядка - C++
Решаю краевую задачу y''+(x+1)y' -y=x^2+2x+1 y=1; y=2; точное решение x^2+1; Использую метод прогонки . проблема в том что погрешность на...

Краевая задача - MathCAD
Уважаемые форумчане,помогите новичку в маткаде,пожалуйста. Необходимо найти решение краевой задачи в точках pi/10, pi/2, 9*pi/10, где pi...

Краевая задача - Дифференциальные уравнения
Решить краевую задачу -y''+3y={e}^{1.6x} с условиями: 1.7y'(2.3)=4 , 1.2y'(3.9)+0.6y(3.9)=5.7 проболел,не знаю...

Краевая задача - Matlab
Задание: Убедитесь, что функция x(t) является решением краевой задачи x'' = 2x' - x + t2 - 1 на интервале с x(0) = 5 и x(1) = 10,...

Краевая задача - Дифференциальные уравнения
{x}^{2}y&quot;+2xy'=2ln(x) y(1)=0 y'(3)=0

Краевая задача на с++ - Численные методы
есть задание. т.к. оно большое прикрепил файл. также попробовал закодить задание, но есть моменты, которые я не понимаю и,...

2
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
05.11.2011, 09:39 #2
Цитата Сообщение от Лунатик
C++
1
for(i=1;i<n;i++)
повторится n - 1 раз
в массивах пропустит элемент с индексом ноль
0
Евгений М.
1036 / 977 / 54
Регистрация: 28.02.2010
Сообщений: 2,829
Завершенные тесты: 2
05.11.2011, 12:39 #3
Цитата Сообщение от Лунатик Посмотреть сообщение
for(i=n-1;i>0;i--) //обратный ход прогонки
Аналогично.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2011, 12:39
Привет! Вот еще темы с ответами:

Краевая задача - Matlab
Дано задание: Методом сеток найти решение краевой задачи. И Построить график решения. y''(x) + 0.5 / (x+1) * y'(x) = - 1/(sqrt(x+1)), ...

Нелинейная краевая задача - Matlab
Добрый день! Прошу помощи в решении задачи. Не могу разобраться с заданием прямоугольной области и граничных условий в pdetool, а также...

задача Коши и краевая задача - Matlab
Помогите кто чем может))

Краевая задача разностным методом - Pascal
Поставлена краевая задача: U''+p(t)U'+g(t)U=f(t), t\in \left\{\begin{matrix} &amp; {k}_{1}u(a)+{k}_{2}u'(a)=A \\ &amp;...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.