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

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

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

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

20.03.2010, 23:57. Просмотров 1791. Ответов 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.

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

Интегрирование, ошибка - C++
При вводе данных в консоль выскакивает ошибка: 'Invalid floating operation' и выделяет часть кода: if (error==0)...

интегрирование функции - C++
программа интегрирования на интервале двух функций методом трапеций можно объяснить суть программы?...интегрирование это нахождение...

Простое интегрирование по времени - C++
while (t&lt;=interval) { v=vp+((1-pa/p)*g-(9/2)*na*vp/(r*r*p))*dt; z=zp+vp*dt; ...

Интегрирование методом прямоугольников и трапеций - C++
Такой вопрос, писал программу, которая вычисляет определенный интеграл методом трапеций и прямоугольников. Получил ответ, но нужно...

Интегрирование полинома, считанного из файла - C++
Из файла считывается степень полинома и его коэффициенты. Например, ============== 5 1 2 3 4 5 6 ============== ~ 1 + 2*x + 3*x^2...

Интегрирование методом левых прямоугольников - C++
Доброго времени суток, дорогие программисты. В универе дали задание, а я С++ не особо шарю, помогите пожалуйста выполнить) Задание: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GAME
23 / 23 / 3
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 00:00     Интегрирование дифференциального уравнения #2
C++
1
float integral (float a, float b,int n);
скорей всего в этой строчке..
easybudda
Эксперт CЭксперт С++
9470 / 5483 / 927
Регистрация: 25.07.2009
Сообщений: 10,505
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
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
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
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;
}
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
21.03.2010, 18:20     Интегрирование дифференциального уравнения #7
GAME, ну почему же, объявлять функции внутри других функций можно, а вот описывать уже нельзя
GAME
23 / 23 / 3
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 18:38     Интегрирование дифференциального уравнения #8
Цитата Сообщение от Nameless One Посмотреть сообщение
GAME, ну почему же, объявлять функции внутри других функций можно, а вот описывать уже нельзя
вот блин)))
easybudda
Эксперт CЭксперт С++
9470 / 5483 / 927
Регистрация: 25.07.2009
Сообщений: 10,505
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
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
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
23 / 23 / 3
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 19:25     Интегрирование дифференциального уравнения #12
Нэ. Тут надо вспомнить курс мат.анализа за первый семестр, и проинтегрировать... ну или можно попробовать считать интеграл методом прямоугольников(в своё время я так и делал)
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
21.03.2010, 19:27     Интегрирование дифференциального уравнения #13
GAME, так вроде оно и есть, или не так?
GAME
23 / 23 / 3
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 19:36     Интегрирование дифференциального уравнения #14
Nameless One, пока писал пост,вы уже отписались) всё так =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2010, 21:19     Интегрирование дифференциального уравнения
Еще ссылки по теме:

Интегрирование методом левых прямоугольников - C++
Задание: &quot;В прикладной программе проводится функция f(x)=cos(x), пределы интегрирования А и В. Решение провести методом левых...

Интегрирование функции с помощью адаптивного алгоритма - C++
интегрирование функции с использованием адаптивного алгоритма(например х*х*х*х) производится интегрирование по N и N*10 точкам.если...

Численное интегрирование системы дифференциальных уравнений методом Рунге - Кутта - C++
Доброго времени суток. Пытаюсь разработать функцию для численного интегрирования систем дифференциальных уравнений методом Рунге-Кутта. При...

Кусочное интегрирование дифференциального уравнения - Matlab
здравствуйте, не поможете, столкнулся с проблемой. Как проинтегрировать уравнение dwx = wy*wz + U; dwy = wx*wz + U; dwz = wx*wy +...


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

Или воспользуйтесь поиском по форуму:
БлондинкаЯ
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);}
?
Yandex
Объявления
21.03.2010, 21:19     Интегрирование дифференциального уравнения
Ответ Создать тему
Опции темы

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