Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 05.06.2012, 01:26   #1 (permalink)
Вирус
Новичок
 
Регистрация: 05.06.2012
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Exclamation Создание программы на языке С++

Тема: Решение дифференциальных уравнений 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;

}

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

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

Старый 05.06.2012, 01:26
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Ваш пост по содержанию очень схож с данными темами

Помогите написать программы на языке Pascal
Нужна помощь по написанию программы на языке С ++
Помогите написать 2 программы по программированию на языке С++
Задача на языке Паскаль
Требуется помощь в написании программы на языке Turbo Pascal
На каком языке программировать?

Старый 06.06.2012, 01:26   #2 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
По умолчанию

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 не знаю. мне не нравиться эта программа...
kreol вне форума   Ответить с цитированием
Старый 08.06.2012, 11:08   #3 (permalink)
Вирус
Новичок
 
Регистрация: 05.06.2012
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Она и мне не нравится. Но спасибо. Уже все исправлено.
Вирус вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.