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

Ответы 6

  • Ну я, в общем-то, не школьник :D
    • Автор:

      jojo6cra
    • 5 лет назад
    • 0
  • Будущий программист? Потому что остальным такой уровень программирования не нужен.
    • Автор:

      moose
    • 5 лет назад
    • 0
  • почти что угадал =)
  • Ну значит почти будущий коллега.
  • да.
    • Автор:

      romanbkze
    • 5 лет назад
    • 0
  • Линии пересекаются в точках, где их уравнения при одинаковых аргументах возвращают одинаковые значения. Чтобы определить условия точек пересечения заданных уравнений линий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 ightarrow t; \quad c-m= eghtarrow u; \quad f-p= ightarrow 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 + pend;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)  endend;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,p2 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Общих точек пересечения нет
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years