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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
PhotOn
1 / 1 / 0
Регистрация: 17.05.2011
Сообщений: 54
#1

Метод Милна. Расчет по нескольким уравнениям. - C++

21.04.2012, 19:40. Просмотров 2051. Ответов 1
Метки нет (Все метки)

Приветствую вас. Очень помощь нужна мне © Йода XD. Нужно модернизировать программку, чтобы можно было производить расчет по нескольким уравнениям, а не по одному, заданному программой. Ниже вложено изображение с примерами. Все что нужно сделать в программе: сделать возможным ввод коэффициентов уравнений и выбора степени х и у. Ну и хотелось бы чтобы прога выводила значения правильно)))

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
float TForm1::f1(float xa, float ya, float yb)
{
return 2*xa*xa+2*ya+yb;
}
// Второе уравнение системы
float TForm1::f2(float xa, float ya, float yb)
{
return 1-2*xa*xa+2*ya-yb;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float h;   // Шаг
float a,b,k1,k2,k3,k4;
float r1,r2,r3,r4;
float eps,abs_pogr;   // eps - точность
float zkor[11],zpr[11],ypr[11],ykor[11],x[11],y1[11],y2[11];
int i=0;
// Ввод концов отрезка
a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);
x[0]=a;
// Начальные условия:
y1[0]=StrToFloat(Edit3->Text);
y2[0]=StrToFloat(Edit4->Text);
// Шаг
h=StrToFloat(Edit5->Text);
// Точность
eps=StrToFloat(Edit6->Text);
// Решение системы уравнений методом Рунге-Кутта
while (i<=3)
{
k1=h*f1(x[i],y1[i],y2[i]);
r1=h*f2(x[i],y1[i],y2[i]);
k2=h*f1(x[i]+h/2,y1[i]+k1/2,y2[i]+r1/2);
r2=h*f2(x[i]+h/2,y1[i]+k1/2,y2[i]+r1/2);
k3=h*f1(x[i]+h/2,y1[i]+k2/2,y2[i]+r2/2);
r3=h*f2(x[i]+h/2,y1[i]+k2/2,y2[i]+r2/2);
k4=h*f1(x[i]+h,y1[i]+k3,y2[i]+r3);
r4=h*f2(x[i]+h,y1[i]+k3,y2[i]+r3);
 
y1[i+1]=y1[i]+(k1+2*k2+2*k3+k4)/6;
y2[i+1]=y2[i]+(r1+2*r2+2*r3+r4)/6;
 
x[i+1]=x[i]+h;
i=i+1;
}
i=4;
// Решение системы уравнений методом Милна
while (x[i]<=b+h)
{
// Для предсказания используется первая формула Милна
ypr[i]=y1[i-4]+(4*h)/3*(2*f1(x[i-3],y1[i-3],y2[i-3])-f1(x[i-2],y1[i-2],y2[i-2])+2*f1(x[i-1],y1[i-1],y2[i-1]));
// Для уточнения - вторая формула Милна
ykor[i]=y1[i-2]+(h/3)*(f1(x[i-2],y1[i-2],y2[i-2])+4*f1(x[i-1],y1[i-1],y2[i-1])+f1(x[i],ypr[i],y2[i]));
// Для второго уравнения
zpr[i]=y2[i-4]+(4*h)/3*(2*f2(x[i-3],y1[i-3],y2[i-3])-f2(x[i-2],y1[i-2],y2[i-2])+2*f2(x[i-1],y1[i-1],y2[i-1]));
zkor[i]=y2[i-2]+(h/3)*(f2(x[i-2],y1[i-2],y2[i-2])+4*f2(x[i-1],y1[i-1],y2[i-1])+f2(x[i],zpr[i],y2[i]));
 
abs_pogr=abs(ykor[i]-ypr[i])/29;
if (abs_pogr>eps) y1[i]=ykor[i];
else y1[i]=ypr[i];
// Абсолютная погрешность
abs_pogr=abs(zkor[i]-zpr[i])/29;
// Контроль точности полученного результата
if (abs_pogr>eps) y2[i]=zkor[i];
else y2[i]=zpr[i];
 
x[i+1]=x[i]+h;
i=i+1;
}
// Вывод решения системы уравнений в виде функций y1[i], y2[i]
ListBox1->Items->Add("x[i]         y1[i]            y2[i]");
for (i=0;i<=10;i++)
{
ListBox1->Items->Add(FloatToStrF(x[i],ffFixed,3,1)+"      "+
FloatToStrF(y1[i],ffFixed,10,6)+
"      "+FloatToStrF(y2[i],ffFixed,10,6));
}
}
 
//------
0
Миниатюры
Метод Милна. Расчет по нескольким уравнениям.  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2012, 19:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод Милна. Расчет по нескольким уравнениям. (C++):

Метод Милна - C++
#include &lt;iomanip&gt; #include &lt;math.h&gt; #include &lt;iostream&gt; double f(double x, double y) { return (x*x+y*y); } using namespace std;...

Метод Милна - 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
Нужно решить дифференциальные уравнения второго порядка методом Милна. Помогите пожалуйста или ткните на теорию, не могу разобраться. Вот...

Простенький код по кв. уравнениям - PHP
Я, как прогульщик математики, заявляю, что математика таки пригодится. В общем сабж, я в пхп хоть и новичок, но то, что я хочу сделать -...

Тесты по диф.уравнениям - Дифференциальные уравнения
Добрый день! Помогите, пожалуйста, ответить на вопросы, по возможности прокомментируйте ответ. Всем откликнувшимся огромное спасибо!!! ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
PhotOn
1 / 1 / 0
Регистрация: 17.05.2011
Сообщений: 54
22.04.2012, 21:20  [ТС] #2
Скажите хотя бы, если первое уравнение системы если 1,6*х+0,5у, то каким будет второе уравнение системы?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2012, 21:20
Привет! Вот еще темы с ответами:

Построить кривые по их уравнениям - Turbo Pascal
Помогите плиз с задачей.Никак не могу решить. Задача:Построить кривые по их уравнениям, заданным в полярных координатах: Кохлеоида ρ =...

Курсовая по дифференциальным уравнениям - Дифференциальные уравнения
Добрый день!)) Такой вопрос,какую нибудь интересную тему для курсовой не подскажете?учусь на втором курсе,только с этого курса этот...

13 Заданий по Дифференциальным уравнениям - Дифференциальные уравнения
Всем доброго времени суток! Простите за дерзость и спешку. Срочно нужно решить 13 задач по этому предмету. Решите что можете. Желательно с...

Задание по диф.уравнениям - Дифференциальные уравнения
7.16 б)


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

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

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