1 / 1 / 1
Регистрация: 17.05.2011
Сообщений: 54
1

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

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

Author24 — интернет-сервис помощи студентам
Приветствую вас. Очень помощь нужна мне © Йода 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2012, 19:40
Ответы с готовыми решениями:

Метод Милна
#include &lt;iomanip&gt; #include &lt;math.h&gt; #include &lt;iostream&gt; double f(double x, double y) { return...

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

Свести задачу к двум дифференциальным уравнениям первого порядка и применить метод Рунге-Кутта
Задача: Движение центра параллелепипеда, съезжающего по наклонной плоскости под углом α к...

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

1
1 / 1 / 1
Регистрация: 17.05.2011
Сообщений: 54
22.04.2012, 21:20  [ТС] 2
Скажите хотя бы, если первое уравнение системы если 1,6*х+0,5у, то каким будет второе уравнение системы?
0
22.04.2012, 21:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2012, 21:20
Помогаю со студенческими работами здесь

Метод наложения, расчет токов
Помогите пожалуйста с расчетом токов методом наложения

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

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

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


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

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

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