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

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

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

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

15.09.2012, 14:54. Просмотров 2113. Ответов 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 или типа этого
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2012, 14:54     Метод Милна
Посмотрите здесь:

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

Метод Милна - Pascal
Дали курсовую работу, &quot;Автоматизация процесса приближенного решения дифференциальных уравнений методом Милна&quot; Теорию нашел, а вот с...

Решение ОДУ методами Милна и Хемминга - Matlab
доброе время суток! вот такое ОДУ x^2*dy/dx-y=x^2*e(x-1/x) 1&lt;=x&lt;=2; y(x=1)=1 не знаю даже с чего начать.может ссылкой кто поделится...

Решить дифференциальные уравнения второго порядка методом Милна - MathCAD
Нужно решить дифференциальные уравнения второго порядка методом Милна. Помогите пожалуйста или ткните на теорию, не могу разобраться. Вот...

Метод getPreventDefault() является устаревшим. Для его замены используйте метод defaultPrevented. В чем причина этой ошибки? - jQuery
Здравствуйте) Обращаюсь к вам за помощью: при выборе элемента из списка &lt;select&gt;, (то есть по событию change()) должен отправиться ajax...

Метод средней точки (метод Больцано) - Методы оптимизации
Здравствуйте,мое задание состоит в том, чтобы определить координаты минимума функции методом Больцано. Написала код, пытаюсь запустить в...

Метод Ньютона и метод левых прямоугольников - Информатика
Ребят помогите решить, не знаю уже куда обратится, сам в этом ничего не понимаю так что надежда на вас помогите чем сможете. Для...

Обычный метод перевести в метод Ньютона - C (СИ)
Здравствуйте, дорогие форумчане. Имеется код программы, считающей корень функции 0,3arctgx-x-1 обычным школьным методом. #include...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cmath
Модератор
2432 / 1651 / 133
Регистрация: 11.08.2012
Сообщений: 3,282
Завершенные тесты: 5
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]) должна выползти ошибка о нехорошем блоке памяти.
Yandex
Объявления
16.09.2012, 11:57     Метод Милна
Ответ Создать тему
Опции темы

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