Опубликовано 03.01.2018 по предмету Информатика от Гость

Определить пересекаются ли линии y=ax^4+bx^3+cx^2+dx+f и y=bx^3+mx^2+dx+p. Если пересекаются, найти точку пересечения. Язык Паскаль.

Ответ оставил Гость

Линии пересекаются в точках, где их уравнения при одинаковых аргументах возвращают одинаковые значения. Чтобы определить условия точек пересечения заданных уравнений линий
y=ax^4+bx^3+cx^2+dx+f; /quad y=bx^3+mx^2+dx+p
следует приравнять их правые части и решить полученное уравнение относительно аргумента х.
ax^4+bx^3+cx^2+dx+f=bx^3+mx^2+dx+p; // ax^4+cx^2+f=mx^2+p; ax^4+x^2(c-m)+(f-p)=0;
Сделаем подстановку и получим квадратное уравнение:
x^2 /rightarrow t; /quad c-m= /reghtarrow u; /quad f-p= /rightarrow v /quad /Rightarrow /quad at^2+ut+v=0;
Далее находим дискриминант, проверяем его знак, производим ветвление алгоритма в зависимости от результата. При неотрицательных t определяем х, извлекая из t квадратный корень и для каждого х вычисляем у из второго уравнения (оно короче).

var
  a, b, c, d, f, m, p: real;

function y(x: real): real;
begin
  y := b * x * sqr(x) + m * sqr(x) + d * x + p
end;

procedure OutPoint(x: real);
begin
  writeln(Найдена точка пересечения функций (, x, ,, y(x), ))
end;

procedure TDev(t: real; var np: Boolean);
var
  x: real;
begin
  if t = 0 then begin
    np := false;
    OutPoint(0)
  end
  else if t > 0 then begin
    np := false;
    x := -sqrt(t);
    OutPoint(x);
    x := sqrt(t);
    OutPoint(x)
  end
end;

var
  x1, x2, u, v, t1, t2, Dis: real;
  NoPoints: Boolean;

begin
  writeln(Введите значения переменных a,b,c,d,f,m,p);
  readln(a, c, f, m, p);
  u := c - m;
  v := f - p;
  Dis := sqr(u) - 4 * a * v;
  NoPoints := true;
  if Dis = 0 then begin
    t1 := -u / (2 * a);
    TDev(t1,NoPoints);
     end
  else begin
    t1 := (-u - sqrt(Dis)) / (2 * a);
    TDev(t1,NoPoints);
    t2 := (-u + sqrt(Dis)) / (2 * a);
    TDev(t2,NoPoints);
  end;
  if NoPoints then writeln(Общих точек пересечения нет)
end.

Тестовое решение

Введите значения переменных a,b,c,d,f,m,p
2 3 4 5 6 7 8
Найдена точка пересечения функций (-1.27201964951407,14.0901699437495)
Найдена точка пересечения функций (1.27201964951407,14.0901699437495)

Введите значения переменных a,b,c,d,f,m,p
-3 -5 -3 2 1 4 5
Общих точек пересечения нет



Не нашел нужный ответ?

Если ответ по предмету Информатика отсутствует или он оказался неправильным, то попробуй воспользоваться поиском других ответов во всей базе сайта.


Найти другие ответы
Самые новые вопросы