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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
yangicher
0 / 0 / 0
Регистрация: 11.12.2010
Сообщений: 29
#1

Метод Адамса - исправить ошибки - C++

26.11.2011, 02:30. Просмотров 2545. Ответов 3
Метки нет (Все метки)

в коде программы 3 ошибки, тот кто шарит, помогите исправить)
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
#include <math.h>
#include <stdio.h>
const float a=0,b=2;             // bounds of the interval
const int num_points=10,         // number of points to solve
          num_starting_points=4; // number of points to solve with Runge-Kutta method
float x0=0,y0=1;                 // starting conditions
float f(float x, float y)
{
  return x+y;  // y'=x+y
}
// this function realises Runge-Kutta method for n starting points
void calculate(float *y)
{
  float k1,k2,k3,k4,x,yi,h;
  h=(b-a)/num_points;  // step
  yi=y0; x=x0;
  for (int i=0;i<num_starting_points;i++)
  {
    k1=h*f(x,yi);
    k2=h*f(x+h/2,yi+k1/2);
    k3=h*f(x+h/2,yi+k2/2);
    k4=h*f(x+h,yi+k3);
    yi+=(k1+2*k2+2*k3+k4)/6;
    x+=h;
    *(y+i+1)=yi;
  }
}
void main(void)
{
  float y[num_points+1],h;
  y[0]=y0;
  // apply Runge-Kutta method
  calculate(y);
  h=(b-a)/num_points;
  // extrapolating
  for (int i=num_starting_points;i<num_points;i++)
    y[i] = y[i-1]+h/24*(55*f(x0+(i-1)*h,y[i-1])-
             59*f(x0+(i-2)*h,y[i-2])+
             37*f(x0+(i-3)*h,y[i-3])-
             9*f(x0+(i-4)*h,y[i-4]));
  printf("X\t\tY\t\tExact solution\n");
  for (i=0;i<num_points;i++)
    printf("%f\t%f\t%f\n",(x0+i*h),y[i],(2*exp(x0+i*h)-(x0+i*h)-1));
}
вот такие ошибки:

c:\program files\microsoft visual studio\myprojects\8834\98.cpp(6) : error C2373: 'y0' : redefinition; different type modifiers
c:\program files\microsoft visual studio\vc98\include\math.h(434) : see declaration of 'y0'
c:\program files\microsoft visual studio\myprojects\8834\98.cpp(16) : error C2440: '=' : cannot convert from 'double (__cdecl *)(double)' to 'float'
There is no context in which this conversion is possible
c:\program files\microsoft visual studio\myprojects\8834\98.cpp(31) : error C2440: '=' : cannot convert from 'double (__cdecl *)(double)' to 'float'
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2011, 02:30     Метод Адамса - исправить ошибки
Посмотрите здесь:

Метод Гаусса C++, исправить ошибки в коде - C++
Писал код по этому алгоритму, но с циклами совершенно не умею работать, помогите найти ошибки пожалуйста #include&lt;iostream&gt; ...

Найти наибольший общий делитель чисел M и N, используя метод Эйлера (исправить ошибки) - C++
Добрый вечер всем. Помогите пожалуйста с решением данной задачи в с++ 6.0 (знаю что это древняя версия но с нас требуют выполнения в ней(()...

Метод Адамса-Моултена - C++
Решить приближенно задачу Коши методом Адамса-Моултона, либо методом Эйлера. {y}^{,}=1+0.2*y*sinx-{y}^{2}; y(0)=0

Исправить ошибки - C++
Откомпелируйте и исправьте ошибки в следующих программах: 1 программа: #include&lt;iostream&gt; using namespace std; int main() { ...

Исправить ошибки - C++
Выполнить задание 6-й лабораторной работы («Двумерные массивы»), оформив каждый пункт задания в виде функции. Все необходимые данные для...

Исправить ошибки - C++
#include&lt;iostream&gt; using namespace std; class empty { setlocale(LC_ALL,&quot;rus_rus.1251&quot;); char*obj_name; public: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bootleanC
6 / 6 / 1
Регистрация: 28.04.2009
Сообщений: 106
19.11.2012, 09:54     Метод Адамса - исправить ошибки #2
это метод рунге-кутта, а не адамса!

Добавлено через 5 минут
хотя конец решение адамса
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
19.11.2012, 09:54     Метод Адамса - исправить ошибки #3
у0() уже есть в файле math.h, подключенным как заголовок. не знаю, что он там делает правда. но второй раз объявлять переменную нельзя.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2012, 10:02     Метод Адамса - исправить ошибки
Еще ссылки по теме:

исправить ошибки - C++
тут вроде все так а выполнение не проходит. помогите исправить пожалуйста #include&lt;iostream&gt; using namespace std; struct ListElem ...

Исправить ошибки - C++
вот написал программу для расчета зарплаты, записи и чтения её из файла но появились ошибки их исправить я не могу вот код помогите...

Исправить ошибки - C++
Прошу поправить ошибки и проверить правильность! #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; class...

Исправить ошибки - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; void main () { int a,b,k=0,sum=0; int i;...

Исправить ошибки - C++
друг скинул код но увы немогу скомпилить у него 2015 visual а у тебя 2010 помогите исправить эту ошибку

Исправить ошибки. - C++
Не получается скомпилировать программу. Пожалуйста, укажите ошибки в программе и как их исправить. #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
bootleanC
6 / 6 / 1
Регистрация: 28.04.2009
Сообщений: 106
19.11.2012, 10:02     Метод Адамса - исправить ошибки #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Все заработало когда сменил перемененную y0 на yl

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
#include "stdafx.h"
#include <math.h>
#include <stdio.h>
#include <conio.h>
const float a=0,b=2;             // bounds of the interval
const int num_points=10,         // number of points to solve
          num_starting_points=4; // number of points to solve with Runge-Kutta method
float x0=0;
float yl=1; 
 
float f(float x, float y)
{
  return x+y;  // y'=x+y
}
// this function realises Runge-Kutta method for n starting points
void calculate(float *y)
{
  float k1,k2,k3,k4,x,yi,h;
  h=(b-a)/num_points;  // step
  yi=yl; x=x0;
  for (int i=0;i<num_starting_points;i++)
  {
    k1=h*f(x,yi);
    k2=h*f(x+h/2,yi+k1/2);
    k3=h*f(x+h/2,yi+k2/2);
    k4=h*f(x+h,yi+k3);
    yi+=(k1+2*k2+2*k3+k4)/6;
    x+=h;
    *(y+i+1)=yi;
  }
}
void main(void)
{
  float y[num_points+1],h;
  y[0]=yl;
  // apply Runge-Kutta method
  calculate(y);
  h=(b-a)/num_points;
  // extrapolating
  for (int i=num_starting_points;i<num_points;i++)
    y[i] = y[i-1]+h/24*(55*f(x0+(i-1)*h,y[i-1])-
             59*f(x0+(i-2)*h,y[i-2])+
             37*f(x0+(i-3)*h,y[i-3])-
             9*f(x0+(i-4)*h,y[i-4]));
  printf("X\t\tY\t\tExact solution\n");
  for (int i=0;i<num_points;i++)
    printf("%f\t%f\t%f\n",(x0+i*h),y[i],(2*exp(x0+i*h)-(x0+i*h)-1));
  _getch();
}
Yandex
Объявления
19.11.2012, 10:02     Метод Адамса - исправить ошибки
Ответ Создать тему
Опции темы

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