Паскаль! помогите пожалуйста составить программу в Паскале решение Дифференциального...

0 голосов
31 просмотров

Паскаль! помогите пожалуйста составить программу в Паскале решение Дифференциального уравнения второго порядка
Например, y"-4'+3y=0


Информатика (504 баллов) | 31 просмотров
0

Оно таким и должно быть

0

Ничего страшного

0

Точное не надо

0

У"+бу'+с=0

0

Наверное, это ни к чему

Дан 1 ответ
0 голосов
Правильный ответ
// PascalABC.NET 3.2, сборка 1416 от 26.03.2017
// Внимание! Если программа не работает, обновите версию!

function cx(x:real):string;
begin
  if frac(x)=0 then
    case Trunc(x) of
    0: Result:='';
    1: Result:='*exp(x)';
    -1:Result:='*exp(-x)'
    else Result:='*exp('+x+'x)'
    end
  else Result:='*exp('+x+'x)'
end;

function cx1(x:real):string;
begin
  if frac(x)=0 then
    case Trunc(x) of
    1: Result:='';
    -1:Result:='-'
    else Result:=x.ToString
    end
  else Result:=x.ToString
end;

begin
  var b,c:real;
  Writeln('Введите коэффициенты уравнения y''''+by''+cy=0');
  Read(b,c);
  var d:=b*b-4*c;
  if d>0 then begin
    d:=sqrt(d);
    var x1:=(-b-d)/2;
    var x2:=(-b+d)/2;
    Writeln('y=c1',cx(x1),'+c2',cx(x2))
    end
  else
    if d=0 then begin
      var x:=-b/2;
      if x=0 then Writeln('y=c1+c2*x')
      else Writeln('y=c1',cx(x),'+c2*x',cx(x))
      end
    else begin
      var re:=-b/2;
      var im:=sqrt(-d)/2;
      if re=0 then Writeln('y=c1*cos(',cx1(im),'x)+c2*sin(',cx1(im),'x)')
      else Writeln('y=exp(',cx1(re),'x)*(c1*cos(',cx1(im),
          'x)+c2*sin(',cx1(im),'x))')
      end
end.

Примеры
Введите коэффициенты уравнения y''+by'+cy=0
-2 10
y=exp(x)*(c1*cos(3x)+c2*sin(3x))

Введите коэффициенты уравнения y''+by'+cy=0
-4 3
y=c1*exp(x)+c2*exp(3x)



(150k баллов)
0

Такая требовательная преподавательница, что поделать