F
Fazer77777
Здравствуйте!
Задача такая:
Дан поленом y(x) = 2{x}^{3} + 3{x}^{2} - 6x + 6. Нахожу его его производную y(x) = 6{x}^{2} + 6x - 6 (вручную).
1. Далее нужно подставить концы отрезка [a;b], a = 6, b = - 6 в производную на место x и посчитать.
Затем с некоторым шагом i = 1 находить производную пока не выйдет за пределы отрезка (за b), т.е. x = a+i. Я думаю сохранять все точки в 1-й массив.
2. Находим 2 ближайшие друг к другу точки с разным знаком, то нужно запомнить их - это концы нового отрезка [c;d]. Тут я думаю извлечь из массива эти нужные точки и сохранить во 2-ой массив, но как это сделать не знаю. Не знаю как пробежаться по всем элементам массива и вытащить нужные значения (точки).
3. С новым отрезком повторить шаг 1 и 2 пока все точки не будут менять знак, все будут одинакового знака, значит найден минимальный нужный отрезок.
4. Воспользоваться методом деления отрезка пополам.
Найти производную на концах полученного отрезка, например получился 3-й по счёту, [e;f].
5. Найти среднюю точку xcp = (e+f)/2. Находим производную в этой точке y'(xcp) и если y'(xcp)>0, то рассматриваем отрезок [e; xcp]. Если y'(xcp)<0, то рассматриваем отрезок [xcp; f].
6. С новым отрезком повторить шаг 4 и 5 пока отрезок не уменьшиться (пока производная на концах отрезка в шаге 4 имеет разные знаки).
Пытаюсь так:
Помогите с задачкой
Задача такая:
Дан поленом y(x) = 2{x}^{3} + 3{x}^{2} - 6x + 6. Нахожу его его производную y(x) = 6{x}^{2} + 6x - 6 (вручную).
1. Далее нужно подставить концы отрезка [a;b], a = 6, b = - 6 в производную на место x и посчитать.
Затем с некоторым шагом i = 1 находить производную пока не выйдет за пределы отрезка (за b), т.е. x = a+i. Я думаю сохранять все точки в 1-й массив.
2. Находим 2 ближайшие друг к другу точки с разным знаком, то нужно запомнить их - это концы нового отрезка [c;d]. Тут я думаю извлечь из массива эти нужные точки и сохранить во 2-ой массив, но как это сделать не знаю. Не знаю как пробежаться по всем элементам массива и вытащить нужные значения (точки).
3. С новым отрезком повторить шаг 1 и 2 пока все точки не будут менять знак, все будут одинакового знака, значит найден минимальный нужный отрезок.
4. Воспользоваться методом деления отрезка пополам.
Найти производную на концах полученного отрезка, например получился 3-й по счёту, [e;f].
5. Найти среднюю точку xcp = (e+f)/2. Находим производную в этой точке y'(xcp) и если y'(xcp)>0, то рассматриваем отрезок [e; xcp]. Если y'(xcp)<0, то рассматриваем отрезок [xcp; f].
6. С новым отрезком повторить шаг 4 и 5 пока отрезок не уменьшиться (пока производная на концах отрезка в шаге 4 имеет разные знаки).
Пытаюсь так:
C++:
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
int main() {
int yDif2, s=2, b = 102, mas1[16], mas2[16], c, d;
double yDif1, a=-6;
for (int i = 2; i < 10; i++) { //границы индексов здесь интуитивно поставил,
//т.е. первые же i=0,1 приводили к yDif1>b,
//b - здесь не значение отрезка, а значение производной yDif1 в b.
yDif1 = 6*pow((a+i), s) + 6*(a+i) - 6;
if (yDif1>b) { //чтобы производная не превышала значение производной в b
i=10;
}
mas1 = yDif1; // Сохраняю все точки в 1 массив,
//далее не знаю как пробежаться по нему и сохранить во 2-й массив нужные значения (точки) и т.д.
cout <<"yDif1 = "<< yDif1 <<endl;
cout << "Value of element is mas1 = " << mas1 << endl;
}
system ("pause");
return 0;
}
Помогите с задачкой

Последнее редактирование: