Технический форум

Технический форум (http://www.tehnari.ru/)
-   C/C++/С# (http://www.tehnari.ru/f42/)
-   -   Создание программы на языке С++ (http://www.tehnari.ru/f42/t74480/)

Вирус 05.06.2012 01:26

Создание программы на языке С++
 
Тема: Решение дифференциальных уравнений 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;

}

Буду очень благодарна, если поможете)

Замечание:
Уважаемая Вирус, клонирование (дублирование) тем, оно же кросспостинг, у нас запрещено, а при повторном применении - наказуемо. Не надо так делать.
Дубликат удален.
Модератор.

kreol 06.06.2012 01:26

1)
Код:

int _tmain(int argc, _TCHAR* argv[])

{

return 0;

}

вообще не понятно зачем...

по поводу пункта 3) странно. у меня все работает
Код:


Vvedite nachaloe znachenie intervala [a,b]=0
Vvedite konechoe znachenie intervala [a,b]=1
Vvedite chislo shagov=10

Vvedite nachalnoe uslovie y=0
Vvedite koefitsient pri x=1
Vvedite koefitsient pri y=0
|Interval|Chislo shagov|Shag prirasheniya|Nacalnoe Y|Uravnenie vida:|
|--------|-------------|-----------------|----------|---------------|
|[0,1] |10 |0.1 |0 |y'=1x+0y |


                Interval x=0    Resultat y=0.005
                Interval x=0.1  Resultat y=0.019
                Interval x=0.2  Resultat y=0.0411
                Interval x=0.3  Resultat y=0.07049
                Interval x=0.4  Resultat y=0.106441
                Interval x=0.5  Resultat y=0.148297
                Interval x=0.6  Resultat y=0.195467
                Interval x=0.7  Resultat y=0.24742
                Interval x=0.8  Resultat y=0.303678
                Interval x=0.9  Resultat y=0.363811

насчет правильности сказать не могу, как-то сильно большая погрешность... да и программа сама странная если честно(может завтра сделаю более правильную или разберусь в этой)... но то, что выдает столько результатов это нормально.

По поводу первого пункта посмотрите справочник... там будет зависимость от коэффициентов если при y 0 то одно уравнение, если при x то другое, если два - нули, то вырожденное выводится с помощью функции cout<<"тут ваш текст".
Пункт 2 не знаю. мне не нравиться эта программа...

Вирус 08.06.2012 11:08

Она и мне не нравится. Но спасибо. Уже все исправлено.


Часовой пояс GMT +4, время: 05:52.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.