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

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

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

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

20.03.2010, 23:57. Просмотров 1811. Ответов 16
Метки нет (Все метки)

Задание:

Подготовить программу интегрирования дифференциального уравнения у’=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.

В чём проблема? Заранее спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2010, 23:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Интегрирование дифференциального уравнения (C++):

Разработать программу, реализующую численное интегрирование по методу Рунге-Кутта 4-го порядка точности дифференциального уравнения - C++
Всем привет! Я полное дно в этом вопросе, да и как то отвык от данных задач, но если не сложно то нужна помощь. Нужно сделать курсовую...

Решение дифференциального уравнения - C++
Из численного решения дифференциального уравнения найти зависимость x(t) и x'(t) для трех различных шага по времени. Разбить временной...

Найти решение дифференциального уравнения - C++
Здравствуйте. Я бы хотела попросить о помощи с написанием программы. Я пыталась понять самостоятельно, как решить эту задачу, но у меня...

Решение дифференциального уравнения Риккати методом Эйлера - C++
---------------------------------------- Это так сказать задание. Решить дифференциального уравнения Риккати методом Эйлера Само...

Решение дифференциального уравнения методом Рунге-Кутта - C++
решить уравнение v'=u/m*m'. обе производные меняются по времени масса уменьшается, а скорость увеличивается, u=const

Конечно-разностный метод решения краевой задачи (дифференциального уравнения) - C++
Решить краевую задачу конечно-разностным методом, условие в приложенных скриншотах и pdf-файле. Вместо правильного решения выводит...

16
GAME
23 / 23 / 3
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 00:00 #2
C++
1
float integral (float a, float b,int n);
скорей всего в этой строчке..
0
easybudda
Модератор
Эксперт CЭксперт С++
9677 / 5627 / 953
Регистрация: 25.07.2009
Сообщений: 10,801
21.03.2010, 03:09 #3
Цитата Сообщение от БлондинкаЯ Посмотреть сообщение
float integral (float a, float b,int n);
Это объявление функции, а определение где?

Не по теме:

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

0
БлондинкаЯ
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
21.03.2010, 17:06  [ТС] #4
Сейчас будем оправдывать ник))) Определение это что вроде int integral (int a, int b, int n)?
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
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;
}
0
GAME
23 / 23 / 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;
}
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
21.03.2010, 18:20 #7
GAME, ну почему же, объявлять функции внутри других функций можно, а вот описывать уже нельзя
0
GAME
23 / 23 / 3
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 18:38 #8
Цитата Сообщение от Nameless One Посмотреть сообщение
GAME, ну почему же, объявлять функции внутри других функций можно, а вот описывать уже нельзя
вот блин)))
0
easybudda
Модератор
Эксперт CЭксперт С++
9677 / 5627 / 953
Регистрация: 25.07.2009
Сообщений: 10,801
21.03.2010, 19:03 #9
Друзья, от темы не отходим!

БлондинкаЯ, я так понимаю, Вам этот код или дал кто-то, или скачали откуда-то? Как оказалось - не весь... Если Вы не представляете, что должна функция
C
1
float integral (float a, float b,int n);
делать, так хоть задание напишите...
0
БлондинкаЯ
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);
}
?
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
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
0
GAME
23 / 23 / 3
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 19:25 #12
Нэ. Тут надо вспомнить курс мат.анализа за первый семестр, и проинтегрировать... ну или можно попробовать считать интеграл методом прямоугольников(в своё время я так и делал)
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
21.03.2010, 19:27 #13
GAME, так вроде оно и есть, или не так?
0
GAME
23 / 23 / 3
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 19:36 #14
Nameless One, пока писал пост,вы уже отписались) всё так =)
0
БлондинкаЯ
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);}
?
0
21.03.2010, 21:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2010, 21:19
Привет! Вот еще темы с ответами:

Решение краевой задачи для дифференциального уравнения методом сеток - C++
Мне в университете задали данную программу написать. но к сожалению на паре мы не успели пройти этот метод. не могу найти точный пример...

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

Метод Эйлера: численное решение начальных задач для дифференциального уравнения - C++
Численно решить начальные задачи для дифференциального уравнения: (Знак системы) y'=-y+exp(x) (Знак системы) y(0)=0 Найдите...

Метод Эйлера: численное решение начальных задач для дифференциального уравнения - C++ - C++
Численно решить начальные задачи для дифференциального уравнения: (Знак системы) y'=-y+exp(x) (Знак системы) y(0)=0 Найдите...


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

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

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