Решение дифференциальных уравнений 1 порядка методом Эйлера - C (СИ)
Формулировка задачи:
Вот я написал программу, которая решает дифференциальные уравнения 1 порядка методом Эйлера (в данном случае y'=2а+y):
проблемма состоит в том, что мне нужно, чтобы после каждого нахождения
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
float a, b, y, h, n;
char f;
printf("\n Vvedite nachalo intervala {a;b}");
scanf("%f", &a);
printf("\n Vvedite konec intervala {a;b}");
scanf("%f", &b);
printf("\n Vvedite nachalnoe znachenie y(0)");
scanf("%f", &y);
printf("\n Vvedite chislo shagov h");
scanf("%f", &n);
f=2*a+y;
h=(b-a)/n;
printf("\n %f \t %f", a, y);
for(int i=0;i<n;i++)
{
f=2*a+y;
y=y+h*f;
a=a+h;
printf("\n %f \t %f", a, y);
}
getch();
}y
иа
их новые значения автоматически вставлялись(заменяли старые значения а и у) в функцию f=2*a+y (21 строка), чтобы на ее основе вычислить новый у и т.д. Помогите плс! Скажите что мне нужно сделать!Решение задачи: «Решение дифференциальных уравнений 1 порядка методом Эйлера»
textual
Листинг программы
#include<stdio.h>
int main()
{
float a, b, y, h, n, f, y0;
int i;
printf("\n Vvedite nachalo intervala {a;b}");
scanf("%f", &a);
printf("\n Vvedite konec intervala {a;b}");
scanf("%f", &b);
printf("\n Vvedite nachalnoe znachenie y(0)");
scanf("%f", &y0);
printf("\n Vvedite chislo shagov h");
scanf("%f", &n);
h=(b-a)/n;
for(i=0;i<n;i++)
{
f=2*a+y0;
y=y0+h*f;
printf("\n %f \t %f", a, y);
a=a+h;
y0=y;
}
getch();
}
Объяснение кода листинга программы
- Ввод начальных значений:
- Вводятся начальные значения для переменных
a,b,y0иnс помощью функцииscanf(). aиbпредставляют собой начальные и конечные значения интервала, в котором будет решаться дифференциальное уравнение.y0- это начальное значение функцииy(0).n- количество шагов, на которые разбивается интервал.
- Вводятся начальные значения для переменных
- Вычисление шага:
- Значение
hвычисляется как(b-a)/n, гдеh- это шаг,(b-a)- длина интервала, аn- количество шагов.
- Значение
- Цикл по шагам:
- Запускается цикл
for, который выполняетсяnраз, по одному разу для каждого шага. - Внутри цикла вычисляются значения функции
fиyна текущем шаге. - Значения
aиy0обновляются для следующего шага. - Выводится текущее значение
aиy.
- Запускается цикл
- Окончание программы:
- После завершения цикла программа завершается с помощью функции
getch(), которая ожидает нажатия клавиши.
- После завершения цикла программа завершается с помощью функции