Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/14: Рейтинг темы: голосов - 14, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
1

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

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

Author24 — интернет-сервис помощи студентам
Задание:

Подготовить программу интегрирования дифференциального уравнения у’=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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2010, 23:57
Ответы с готовыми решениями:

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

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

Найти решение дифференциального уравнения
Здравствуйте. Я бы хотела попросить о помощи с написанием программы. Я пыталась понять...

Решение дифференциального уравнения методом Эйлера
Написать программу, находящую решение дифференциального уравнения y‘=f(x,y) методом Эйлера на...

16
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 00:00 2
C++
1
float integral (float a, float b,int n);
скорей всего в этой строчке..
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12830 / 7567 / 1764
Регистрация: 25.07.2009
Сообщений: 13,959
21.03.2010, 03:09 3
Цитата Сообщение от БлондинкаЯ Посмотреть сообщение
float integral (float a, float b,int n);
Это объявление функции, а определение где?

Не по теме:

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

0
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
21.03.2010, 17:06  [ТС] 4
Сейчас будем оправдывать ник))) Определение это что вроде int integral (int a, int b, int n)?
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 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
23 / 23 / 5
Регистрация: 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
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
21.03.2010, 18:20 7
GAME, ну почему же, объявлять функции внутри других функций можно, а вот описывать уже нельзя
0
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 18:38 8
Цитата Сообщение от Nameless One Посмотреть сообщение
GAME, ну почему же, объявлять функции внутри других функций можно, а вот описывать уже нельзя
вот блин)))
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12830 / 7567 / 1764
Регистрация: 25.07.2009
Сообщений: 13,959
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
Эксперт С++
5828 / 3479 / 358
Регистрация: 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
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
21.03.2010, 19:25 12
Нэ. Тут надо вспомнить курс мат.анализа за первый семестр, и проинтегрировать... ну или можно попробовать считать интеграл методом прямоугольников(в своё время я так и делал)
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
21.03.2010, 19:27 13
GAME, так вроде оно и есть, или не так?
0
23 / 23 / 5
Регистрация: 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
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12830 / 7567 / 1764
Регистрация: 25.07.2009
Сообщений: 13,959
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 секунд
и перестаньте один и тот же код вставлять, да ещё и без тегов!
0
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
21.03.2010, 23:08  [ТС] 17
Так я же вроде вставила уже этот кусок? А за теги извините - не знаю как их делать)
0
21.03.2010, 23:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2010, 23:08
Помогаю со студенческими работами здесь

Решение дифференциального уравнения методом Эйлера
Написать программу, находящую решение дифференциального уравнения y‘=f(x,y) методом Эйлера на...

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

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

Решение дифференциального уравнения методом Рунге-Кутты
Не могу понять почему не правильно выдает значения. #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt;...

Метод конечных разностей для решения дифференциального уравнения
Используя метод конечных разностей, решить краевую задачу для дифференциального уравнения второго...

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru