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

Интегрирование дифференциального уравнения - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
БлондинкаЯ
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
20.03.2010, 23:57     Интегрирование дифференциального уравнения #1
Задание:

Подготовить программу интегрирования дифференциального уравнения у’=cos(x+1)*tg(x)+y на отрезке 0<=x<=1 при у(0)=0. Интерфейс приложения – диалог. Обязательные элементы управления – EditBox, Picture и ListBox.

Есть следующий код:

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
{
UpdateData(true);
float p1,d; 
float fk,f1;
char finish;
if(fu(k)*fu(l)>0) goto finish;
do
{p1=(k+l)/2;
f1=fu(p1);
if(f1==0)
{ d=0;
m_2=p1;
m_3=d;
goto finish;
};
fk=fu(k);
if(fk*f1<0)
l=p1;
else
k=p1;
d=l-k;
m_2=p1;
m_3=d;
}
while(d>=e);
finish:;
float I;
int n=1000000;
float integral (float a, float b,int n);
I=integral(0,1,n);
m_1=I;
UpdateData(false);
}
 
// Код вспомогательной функции:
 
float fu(float t)
{return cos(t+1)*tan(t);}
И следующие ошибки:

error LNK2001: unresolved external symbol "double __cdecl integral(double,double,int)" (?integral@@YANNNH@Z)
Debug/try14.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

В чём проблема? Заранее спасибо)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GAME
 Аватар для GAME
22 / 22 / 3
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 00:00     Интегрирование дифференциального уравнения #2
C++
1
float integral (float a, float b,int n);
скорей всего в этой строчке..
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
21.03.2010, 03:09     Интегрирование дифференциального уравнения #3
Цитата Сообщение от БлондинкаЯ Посмотреть сообщение
float integral (float a, float b,int n);
Это объявление функции, а определение где?

Не по теме:

Как-то ник с заголовком не вяжется

БлондинкаЯ
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
21.03.2010, 17:06  [ТС]     Интегрирование дифференциального уравнения #4
Сейчас будем оправдывать ник))) Определение это что вроде int integral (int a, int b, int n)?
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
21.03.2010, 17:42     Интегрирование дифференциального уравнения #5
Объявление - это сигнатура функции + тип возвращаемого значения (прототип функции):
C
1
int func(const int n);
Описание (определение, семантика) - это исполняемый код функции:
C
1
2
3
4
int func(const int n)
{
   return n+2;
}
GAME
 Аватар для GAME
22 / 22 / 3
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 18:00     Интегрирование дифференциального уравнения #6
+ещё функции нельзя объявлять\описывать внутри других функций
C++
1
2
3
4
5
6
//Нельзя
int main()
{
int func(int);
return 0;
}
C++
1
2
3
4
5
6
7
8
9
//Нельзя
int main()
{
int func(int a)
   {
      return a*a;
   };
return 0;
}
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
21.03.2010, 18:20     Интегрирование дифференциального уравнения #7
GAME, ну почему же, объявлять функции внутри других функций можно, а вот описывать уже нельзя
GAME
 Аватар для GAME
22 / 22 / 3
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 18:38     Интегрирование дифференциального уравнения #8
Цитата Сообщение от Nameless One Посмотреть сообщение
GAME, ну почему же, объявлять функции внутри других функций можно, а вот описывать уже нельзя
вот блин)))
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
21.03.2010, 19:03     Интегрирование дифференциального уравнения #9
Друзья, от темы не отходим!

БлондинкаЯ, я так понимаю, Вам этот код или дал кто-то, или скачали откуда-то? Как оказалось - не весь... Если Вы не представляете, что должна функция
C
1
float integral (float a, float b,int n);
делать, так хоть задание напишите...
БлондинкаЯ
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
21.03.2010, 19:09  [ТС]     Интегрирование дифференциального уравнения #10
А применительно к моему коду определение будет вроде

float integral (float a, float b,int n);
{
return cos(n+1)*tan(n);
}
?
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
21.03.2010, 19:24     Интегрирование дифференциального уравнения #11
Цитата Сообщение от БлондинкаЯ Посмотреть сообщение
А применительно к моему коду определение будет вроде

float integral (float a, float b,int n);
{
return cos(n+1)*tan(n);
}
?
Никак не вяжется с понятием "integral". Лично я думаю, что эта функция считает определенный интеграл в пределах от a до b, число отрезков, на которые разбивается функция в этих пределах равно n.

Добавлено через 7 минут
Вот возможное тело функции (если я не напутал с определением интеграла):
C++
1
2
3
4
5
6
7
{
float sum=0;
float step=(b-a)/(float)n;
for(size_t i=1; i<=n; ++i)
    sum+=f(a+step*i)*step;
return sum;
}
Здесь float f(float x) - вычисление значения интегрируемой функции в точке x
GAME
 Аватар для GAME
22 / 22 / 3
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 19:25     Интегрирование дифференциального уравнения #12
Нэ. Тут надо вспомнить курс мат.анализа за первый семестр, и проинтегрировать... ну или можно попробовать считать интеграл методом прямоугольников(в своё время я так и делал)
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
21.03.2010, 19:27     Интегрирование дифференциального уравнения #13
GAME, так вроде оно и есть, или не так?
GAME
 Аватар для GAME
22 / 22 / 3
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 19:36     Интегрирование дифференциального уравнения #14
Nameless One, пока писал пост,вы уже отписались) всё так =)
БлондинкаЯ
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
21.03.2010, 21:19  [ТС]     Интегрирование дифференциального уравнения #15
Значит конечный вид такой:
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
{
UpdateData(true);
float p1,d; 
float fk,f1;
char finish;
if(fu(k)*fu(l)>0) goto finish;
do
{p1=(k+l)/2;
f1=fu(p1);
if(f1==0)
{ d=0;
m_2=p1;
m_3=d;
goto finish;
};
fk=fu(k);
if(fk*f1<0)
l=p1;
else
k=p1;
d=l-k;
m_2=p1;
m_3=d;
}
while(d>=e);
finish:;
float I;
int n=1000000;
float integral (float a, float b,int n);
I=integral(0,1,n);
m_1=I;
{
float sum=0;
float step=(b-a)/(float)n;
for(size_t i=1; i<=n; ++i)
    sum+=f(a+step*i)*step;
return sum;
}
UpdateData(false);
}
 
// Код вспомогательной функции:
 
float fu(float t)
{return cos(t+1)*tan(t);}
?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
21.03.2010, 21:23     Интегрирование дифференциального уравнения #16
Добавьте ещё
C++
1
2
3
4
5
6
7
float integral (float a, float b,int n){
float sum=0;
float step=(b-a)/(float)n;
for(size_t i=1; i<=n; ++i)
    sum+=f(a+step*i)*step;
return sum;
}
Добавлено через 50 секунд
и перестаньте один и тот же код вставлять, да ещё и без тегов!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2010, 23:08     Интегрирование дифференциального уравнения
Еще ссылки по теме:

Решение дифференциального уравнения C++
C++ Метод Эйлера (решение дифференциального уравнения). Ошибка. Написание программы
C++ Численное интегрирование

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

Или воспользуйтесь поиском по форуму:
БлондинкаЯ
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
21.03.2010, 23:08  [ТС]     Интегрирование дифференциального уравнения #17
Так я же вроде вставила уже этот кусок? А за теги извините - не знаю как их делать)
Yandex
Объявления
21.03.2010, 23:08     Интегрирование дифференциального уравнения
Ответ Создать тему
Опции темы

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