Тема: Решение дифференциальных уравнений 1 порядка методом Эйлера.Создала программу на языке с++, она работает, но очень криво. Исправить не получается, выдает ошибки. А исправить нужно следующее:
1) Сообщить о том, какие именно уравнения 1 порядка решает данная программа, т.е. задать вид уравнения ( их несколько видов ).
2) Задать начальное условие для для х.
3) После ввода коэффициентов программа вылетает и результата не выдает, точнее выдает множество результатов для каждого значения х из интервала [a;b].
Код программы:
// реш_диф_уров.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
#include<iostream>
using namespace std;
void func(double& Xi, double& Yi,double kx, double ky, double h);
int main()
{
double h,Xi,Yi,Xkon,kx,ky;
int n;
cout<<"\t"<<"\t"<<"******************************* *****************n";
cout<<"\t"<<"\t"<<"* * "<<"\n";
cout<<"\t"<<"\t"<<"* Reshenie difurov 1 poryadka methodom Eulera *"<<"\n";
cout<<"\t"<<"\t"<<"******************************* ******************" ;
cout<<endl;
cout<<"Vvedite nachaloe znachenie intervala [a,b]=";
cin>>Xi;
cout<<"Vvedite konechoe znachenie intervala [a,b]=";
cin>>Xkon;
cout<<"Vvedite chislo shagov=";
cin>>n;
h=(Xkon- Xi)/n;
cout<<endl;
cout<<"Vvedite nachalnoe uslovie y=";
cin>>Yi;
cout<<"Vvedite koefitsient pri x=";
cin>>kx;
cout<<"Vvedite koefitsient pri y=";
cin>>ky;
cout<<"|Interval|Chislo shagov|Shag prirasheniya|Nacalnoe Y|Uravnenie vida:| "<<"\n";
cout<<"|--------|-------------|-----------------|----------|---------------|"<<"\n";
cout<<"|"<<"["<<Xi<<","<<Xkon<<"]" <<" |"<<n<<" |"<<h<<" |"<<Yi<<" |"<<"y'="<<kx<<"x"<<"+"<<ky<<"y"<<" |"<<"\n";
cout<<endl;
cout<<endl;
for (int i=1;i<=n;i++)
{
func(Xi,Yi,kx,ky,h);
cout<<"\n";
}
return 0;
}
void func(double& Xi, double& Yi, double kx, double ky, double h)
{
double f1,Yprom,a,Xprom;
f1=(kx*Xi)+(ky*Yi);
Yprom=Yi+f1*(h/2);
Xprom=Xi+h/2;
a=kx*Xprom-Yprom;
Yi=Yi+a*h;
cout<<"\t"<<"\t"<<"Interval x="<<Xi<<"\t"<<" Resultat y="<<Yi;
Xi=Xi+h;
}
Буду очень благодарна, если поможете)
Замечание: |
Уважаемая Вирус, клонирование (дублирование) тем, оно же кросспостинг, у нас запрещено, а при повторном применении - наказуемо. Не надо так делать.
Дубликат удален.
Модератор. |