#c #math #boundary
#c #математика #граница
Вопрос:
Я должен решить следующую краевую задачу с начальными условиями
y»-sin(y) = exp(x), y(1) = 2, y(0) = 1
(некоторые теоретические вещи)
для начала я решил сначала решить следующую задачу y»-y = exp (x), y (1) = 2, y (0) = 1 и алгоритм отлично работает. ответ правильный.
но в какой-то момент я немного запутался.решая вторую задачу, ясно, что -1 следует принимать за коэффициент C (поскольку -y) . Но как насчет случая с -sin(y), что я должен взять в качестве коэффициента?
#include <iostream>
#include <cmath>
#include <cstdlib>
double F(double x)
{
return exp(x);
}
int main(int argc, char** argv) {
double a, b, h, dx;
a = 0.0;
b = 1.0;
dx = 0;
int n;
printf("steps: ");
scanf("%d", amp;n);
h = (a b)/(n-1);
printf("%lfn", h);
double *x = new double [n];
for (int i = 0; i<n; i )
{
x[i] = dx;
dx = dx h;
}
double *y = new double [n];
double *A = new double [n];
double *B = new double [n];
double *C = new double [n];
double *G = new double [n];
for (int i = 0; i<n; i )
{
A[i] = 1;
B[i] = (-1)*h*h - 2.0;
C[i] = 1;
G[i] = F(x[i])*h*h;
}
double *L = new double [n];
double *N = new double [n];
L[0] = 0;
N[0] = 1;
for (int i = 1; i<n-1; i )
{
L[i] = (-C[i]) / (A[i] * L[i-1] B[i]);
N[i] = (G[i] - A[i] * N[i-1]) / (A[i] * L[i-1] B[i]);
}
y[n-1] = 2;
y[0] = 1;
for(int i = n-2; i>0; i--)
{
y[i] = L[i] * y[i 1] N[i];
}
for(int i = 0; i<n; i )
{
printf("x = %.3lf ::: y = %.5lfn", x[i], y[i]);
}
return 0;
}
Комментарии:
1. Ваш код написан на C , а не на C (даже если вы по какой-то причине используете небезопасные для типа функции ввода / вывода C).
2. @Someprogrammerdude хорошо, отредактировано
3. Прежде чем пытаться решить математическую часть задачи, исправьте проблемы, связанные с программированием
4. @TedLyngmo мой код компилируется, я не знаю, в чем ваша проблема.
5. @Vs_De_S Я пытался помочь вам, показав, что даже если ваш код компилируется, он может делать вещи, из-за которых ваша программа имеет неопределенное поведение . Программу с неопределенным поведением довольно бессмысленно пытаться анализировать результат. Сначала исправьте эту часть.