С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
defender.star
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 1
#1

Метод Милна - C++

15.09.2012, 14:54. Просмотров 2275. Ответов 1
Метки нет (Все метки)

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
50
51
52
53
54
55
56
57
58
59
60
#include <iomanip> 
#include <math.h>
#include <iostream>
double f(double x, double y)
{ return (x*x+y*y); }
using namespace std;
void main ()
{
    int i,n=10;
    double A,B,h,E; 
    h=0.05;
    E=0.001;
    double x[10],y[10],y1[10],k1,k2,k3,k4;
    x[0]=0;
    y[0]=1;
    y1[0]=f(x[0],y[0]);
    /*cout<<"x[0]=";cin>>x[0];cout<<"y[0]=";cin>>y[0];cout<<"h=";cin>>h;cout<<"E=";cin>>E;*/
    for (i=1;i<=3;i++)
        
        {   
            k1= h*f(x[i-1],y[i-1]);
            k2= h*f(x[i-1]+h/2,y[i-1]+k1/2);
            k3= h*f(x[i-1]+h/2,y[i-1]+k2/2);
            k4= h*f(x[i-1]+h,y[i-1]+k3);
            x[i]= x[i-1]+h;
            y[i]= y[i-1]+(k1+2*k2+2*k3+k4)/6;
            y1[i]=f(x[i],y[i]);
    }
    for(i=1;i<=3;i++)
    {cout<<" x= "<<x[i]<<" , y= "<<y[i]<<endl;}
    
 
    i=3;
    [B]do 
    {  
        y[i+1]= y[i-3]+(4/3)*h*(2*y1[i]-y1[i-1]+2*y1[i-2]);
        x[i+1]=x[i]+h;
 
        B=y[i+1];
        
        do 
        {
            A=B ;
            y1[i+1]= f(x[i+1],A);
            B=y[i-1]+h*(y1[i+1]+4*y1[i]+y1[i-1])/3;
            ++i;
        }
        while(fabs(A-B)>=E);
    
        y[i+1]= B;
       
        
    }
    while(i<=10);[/B]
 
        for(i=4;i<=10;i++)
        {cout<<" x = "<<x[i]<<" , y = "<<y[i]<<endl;}
    
 
}
первые три точки находит правильно,начиная с i=3; do { это часть программы считает остальные значения x,y выводит значения = 1.03052352e-32 или типа этого
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2012, 14:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод Милна (C++):

Метод Милна. Расчет по нескольким уравнениям. - C++
Приветствую вас. Очень помощь нужна мне © Йода XD. Нужно модернизировать программку, чтобы можно было производить расчет по нескольким...

СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя - C++
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++

Метод медиан из трех элементов VS улучшенный быстрый метод сортировки(метод Бентли-Макилроя) - C++
Здравствуйте! Дали весьма интересное задание. Сравнить два вышеуказанных метода сортировки для массива из 10000 элементов, результаты...

Мой код - метод бисекции, метод секущих (метод хорд) - C++
Всем привет!!! Изучаем в институте С++. Сделал код, и там, и там одна и та же проблема - при любых вбиваемых значениях программа делает...

Исследовать итерационный метод- метод касательных для решения нелинейных уравнений - C++
прочитал много всего , но сам пример реализовать никак не могу , кто может помогите F(x) = x5+5x+1=0 с...

Не сходится теория и практика метод Шелла и метод простого выбора - C++
Здравствуйте! Помогите пожулуйста найти ошибке в коде, Я уже не знаю где ее искать. У меня метод простого выбора работает по показателям...

1
cmath
Модератор
2444 / 1685 / 134
Регистрация: 11.08.2012
Сообщений: 3,286
Завершенные тесты: 6
16.09.2012, 11:57 #2
индексация элементов массива в C++ с нуля начинается.
Цитата Сообщение от defender.star Посмотреть сообщение
y[i+1]= y[i-3]+(4/3)*h*(2*y1[i]-y1[i-1]+2*y1[i-2]);
у вас в y[i-3] индекс = 0 (т.е. обращаетесь к y[0], в котором как была всякая "хрень", так там и осталась), а также
Цитата Сообщение от defender.star Посмотреть сообщение
while(i<=10);
Цитата Сообщение от defender.star Посмотреть сообщение
y[i+1]= y[i-3]+(4/3)*h*(2*y1[i]-y1[i-1]+2*y1[i-2]);
т.е. вы делаете обращение к y[11], который не предусмотрен, уже на i = 9 (y[10]) должна выползти ошибка о нехорошем блоке памяти.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2012, 11:57
Привет! Вот еще темы с ответами:

Метод деления отрезка пополам для решения нелинейных уравнений (метод дихотомии) - C++
Здравствуйте. Помогите пожалуйста дописать программу. Вот что вымучал, но на сдаче завалили, типо нет вывода корней, не рассмотрены...

Нахождения корней уравнения: метод половинного деления (бисекции) или метод хорд - C++
Разработать программу нахождения корней уравнения f(x) =0 на интервале с точностью e = 0,001 (интервал или подобрать самостоятельно). При...

Производный класс: метод возведения в произвольную степень, и метод для вычисления логарифма числа - C++
Реализовать класс-оболочку Number для числового типа float. Реализовать методы сложения и деления. Создать производный класс Real, в...

Класс vector (поля: координаты, 2 конструктора, метод нахождения длины вектора и метод вывода координат на экран) - C++
Здравствуйте , помогите пожалуйста с заданием. Организовать класс Вектор на плоскости – поля: координаты, 2 конструктора, метод...


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

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

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