СЦБИСТ - железнодорожный форум, блоги, фотогалерея, социальная сеть
Это сообщение показано отдельно, перейти в тему, где размещено сообщение: Помогаем студентам!
Старый 19.07.2011, 18:30   #225 (ссылка)
V.I.P.
 
Аватар для Rafa

Регистрация: 24.10.2009
Адрес: МОЙДОДЫР
Сообщений: 5,650
Поблагодарил: 388 раз(а)
Поблагодарили 577 раз(а)
Фотоальбомы: не добавлял
Всем привет!
Друг попросил помочь написать программу решения ДУ в С++. Задана формула dy/dx=x^2. Надо найти значение у в точке х1=1. Начальные условия тоже даны.
При просмотре действия написанной программы столкнулся с тем, что при шаге h=0.1 программа выдает x=1.000000 y=1.285000.
Самое интересное начинается если я задаю h=0.01.
Тем самым увеличиваю точность.
Тогда
x=1.009999 y=1.338350.
Так вот, хочу спросить у продвинутых людей в С++ как-же так получается, если я ограничиваюсь с помощью условного оператора (x<1).
.................................................. .................
Вот текст.

#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
float x,y,h,x0,y0,x1;
clrscr();
printf("x0=");
scanf("%f",&x0);
printf("y0=");
scanf("%f",&y0);
printf("x1=");
scanf("%f",&x1);
printf("h=");
scanf("%f",&h);
x=x0; y=y0;
s1:
if (x<x1)
{
y=y+h*(pow(x,2));
x=x+h;
goto s1;
}
printf("x=%f\n",x);
printf("y=%f",y);
getch();
}

................................................




Заранее спасибо!

Последний раз редактировалось Rafa; 19.07.2011 в 19:14.
Rafa вне форума   Цитировать 1
 Нажмите здесь, чтобы написать комментарий к этому сообщению  
 

Яндекс.Метрика