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

задача с прямым течением времени, где ошибка? - C++

Восстановить пароль Регистрация
 
eaita
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 3
23.11.2012, 17:28     задача с прямым течением времени, где ошибка? #1
исправьте пжл где моя ошибка,не могу понять где Вот код:

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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include "stdafx.h"
 #include <conio.h>
 #include <math.h>
 #include <iostream>
 using namespace std;
 
 const int B=-1;
 float nu(float x) {
 return 5*exp(B*x);
 }
 
 float m1(float t) {
 return 5*exp(B*t);
 }
 
 float m2(float t) {
 return 5*exp(B*(1+t));
 }
 
 void main() {
 int i,j;
 float x[10], t[10], y[10][10], tao, h=0.01, tr[10][10], ro[10][10], k[10][10], f[10][10], a[10], b[10], c[10], d[10], r, alfa[10], beta[10];
 a[10]=0, b[0]=0, c[0]=1, c[10]=1;
 t[0]=0;
 tao=0.01;
 t[1]=tao;
 r=tao/(h*h);
 
 for(i=0; i<10; i++){
 x[i]=i*h;
 y[i][0]=nu(x[i]);
 
 for(j=0; j<10; j++){
 t[j+1]=t[j]+tao;
 y[0][j]=m1(t[j]);
 y[10][j]=m2(t[j]);
 
 ro[i][j+1]=1+x[i]+t[j+1];
 k[i][j+1]=x[i]*x[i]+t[j+1]*t[j+1]+5;
 tr[i][j]=5*exp(B*(x[i]+t[j]));
 f[i][j+1]=5*B*exp(B*(x[i]+t[j+1]))*(ro[i][j+1]-2*x[i]-B*k[i][j+1]);
 }}
 
 for(i=0; i<10; i++){
 for(j=0; j<10; j++){
 d[0]=m1(t[j+1]);
 d[10]=m2(t[j+1]);
 
 a[i]=r*k[i-1/2][j+1];
 b[i]=r*k[i+1/2][j+1];
 c[i]=ro[i][j+1]+(k[i-1/2][j+1]+k[i+1/2][j+1])*r;
 d[i]=tao*f[i][j+1]+ro[i][j+1]*y[i][j];
 }
 }
 
 /*for(i=1; i<=9; i++) {
 alfa[0]=b[0]/c[0];
 beta[0]=d[0]/c[0];
 alfa[i]=b[i]/(c[i]-a[i]*alfa[i-1]);
 beta[i]=(d[i]+beta[i-1]*a[i])/(c[i]-a[i]*alfa[i-1]);
 for(j=0; j<9; j++){
 beta[10]=y[10][j+1];
 }}*/
 
 for(i=9; i>=1; i--){
 alfa[0]=b[0]/c[0];
 alfa[i]=b[i]/(c[i]-a[i]*alfa[i-1]);
 beta[i]=(d[i]+beta[i-1]*a[i])/(c[i]-a[i]*alfa[i-1]);
 for(j=0; j<9; j++){
 beta[0]=m1(t[j+1]);
 beta[10]=m2(t[j+1]);
 y[i][j+1]=alfa[i]*y[i+1][j+1]+beta[i];
 printf("i=%1d, j+1=%1d, pogr=%0.5f",i,j+1,abs(y[i][j+1]-tr[i][j+1]));
 printf("\n");
 }
 }
 getch();
 }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
23.11.2012, 17:37     задача с прямым течением времени, где ошибка? #2
А программа хоть компилируется? И какие сообщения появляются при компиляции?

Добавлено через 1 минуту
Цитата Сообщение от eaita Посмотреть сообщение
a[10]=0, c[10]=1;
тут точно ошибки. выход за границу массива
eaita
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 3
23.11.2012, 17:59  [ТС]     задача с прямым течением времени, где ошибка? #3
да, компилируется. все нормально работает, но получается большая погрешность. у меня вопрос почему?
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
23.11.2012, 18:09     задача с прямым течением времени, где ошибка? #4
В программе много ошибок. Она будет работать, только неправильно.
Цитата Сообщение от eaita Посмотреть сообщение
d[10]=m2(t[j+1]);
Цитата Сообщение от eaita Посмотреть сообщение
beta[10]=m2(t[j+1]);
и еще здесь:
Цитата Сообщение от eaita Посмотреть сообщение
f[i][j+1]=5*B*exp(B*(x[i]+t[j+1]))*(ro[i][j+1]-2*x[i]-B*k[i][j+1]);
когда j будет 9 то f[i][9+1] == f[i][10] - опять получается выход за границы массива
eaita
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 3
24.11.2012, 15:24  [ТС]     задача с прямым течением времени, где ошибка? #5
Постановка задачи и входные данные
Миниатюры
задача с прямым течением времени, где ошибка?  
Yandex
Объявления
24.11.2012, 15:24     задача с прямым течением времени, где ошибка?
Ответ Создать тему
Опции темы

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