Составить программу которая находит решение x0 уравнения

Лихоманенко Николай Иванович

Ведёт: Лихоманенко Николай Иванович —> Название или описание блога (изменить)

Навигация

Поиск по сайту

Последние новости
  • Начало

Звонки

Новое в блогах

10 класс. П.70 Практическая работа №61. Решение уравнений методом перебора

Учебник. К.Ю Поляков, Е.А. Ерёмин. Информатика. 10 класс. Углублённый уровень. §70 Решение уравнений

Практическая работа №61. Решение уравнений методом перебора

Напишите программу, которая находит все решения заданного вам уравнения на интервале [-5;5]. Программа должна выполнить следующие действия:

1. Определяет и выводит на экран интервалы, на которых расположены корни уравнения.

2. На каждом интервале, используя метод перебора, ищет решение с точностью 0,001 и выводит полученные решения на экран.

Вычисление функции, стоящей в левой части уравнения, оформите в виде подпрограммы.

Уровень A. Интервалы, на которых расположены корни, можно найти с помощью электронных таблиц. Программа запрашивает левую границу очередного интервала и выводит найденный корень уравнения.

Введите левую границу интервала:

Уровень B. Составить две программы, одна из которых выделяет все интервалы, на которых находятся корни, а вторая запрашивает левую границу очередного интервала и выводит найденный корень уравнения.

Уровень C. Составить одну программу, которая работает полностью автоматически: достаточно ввести в программу функцию и запустить. Программа находит все интервалы, на которых расположены корни и уточняет решения. После того, как очередной интервал найден, программа выводит его на экран и, применяя метод перебора с нужным шагом, уточняет решение.

Интервал [- 2;- 1 , 5]

Вариант 1. x 3 — 8*x + 1 = sin(x)

program pr61ABC;

function f(x: real): real;

begin

f := x * x * x — 8 * x + 1 — 5 * sin(x);

end ;

const

var

begin

writeln(‘Введите левую границу интервала:’);

while (f(x) * f(x + delta) > 0) and (k

if k

then writeln(‘x = ‘, (x + eps):6:3)

else writeln(‘Возможно корни находятся левее введённой границы’);

while a

begin

while (f(a) * f(a + 0.1) > 0) and (a

if (f(a) * f(a + 0.1)

then begin

writeln(‘Интервал [‘, a, ‘;’, a + 0.1, ‘]’);

while f(x) * f(x + delta) > 0 do x := x + delta;

writeln(‘Решение: ‘, (x + eps):6:3)

end;

end;

end .

using namespace std;

double f(double x)

return x * x * x — 8 * x + 1 — 5 * sin(x);

double eps = 0.001;

double x, delta, a;

while ((f(x) * f(x + delta) > 0) && (k

else cout Возможно корни находятся левее введённой границы»

while (a

while ((f(a) * f(a + 0.1) > 0) && (a

if (f(a) * f(a + 0.1)

while ( f(x) * f(x + delta) > 0 ) x += delta;

Решение уравнения с помощью инструмента «Поиск решения».

Практическая работа № 17.

Тема: Решение линейных и нелинейных уравнений с помощью MS Excel.

Цель: научиться решать линейные и нелинейные уравнения различными способами.

Теоретические сведения и задания:

Графический метод решения уравнения.

Известно, что графическим решением уравнения f(x)=0 является точка пересечения графика функции f(x) с осью абсцисс, т.е. такое значение x, при котором функция обращается в ноль.

Разберем графический метод решения уравнения на примере: пусть необходимо решить уравнение x 3 — 0,01x 2 — 0,7044x + 0,139104 = 0.

На листе 1 проведем табулирование нашей функции на интервале от -1 до 1 с шагом 0,2, для этого построим таблицу значений. Затем по таблице построим точечную диаграмму. Результаты вычислений приведены на рисунке, где в ячейку В2 была введена формула: = A2^3 — 0,01*A2^2 — 0,7044*A2 + 0,139104. На графике видно, что функция три раза пересекает ось Оx, а так как полином третьей степени имеет не более трех вещественных корней, то графическое решение поставленной задачи найдено. Иначе говоря, была проведена локализация корней, т.е. определены интервалы, на которых находятся корни данного полинома: [-1,-0.8], [0.2,0.4] и [0.6,0.8] (можно получить более точное решение если выбрать шаг 0,1).

Лист 1 переименовать в Задание1 и сохранить работу в своей папке с именем Фамилия пр17.xls

Решение уравнения с помощью инструмента «Подбор параметра».

Перейти на лист 2.

Чтобы решить нелинейное уравнение можно воспользоваться средством Подбор параметра, выбрав команду Подбор параметра в меню Сервис. При подборе параметра Excel изменяет значение в одной конкретной ячейке до тех пор, пока вычисления по формуле, ссылающейся на эту ячейку, не дадут нужного результата.

Возьмем в качестве примера квадратное уравнение х 2 -5х+6=0. Для нахождения корней уравнения выполним следующие действия:

В ячейку С3 введем формулу для вычисления значения функции, стоящей в уравнении слева от знака равенства. В качестве аргумента используем ссылку на ячейку С2, т.е. =С2^2-5*C2+6.

Окно диалога Подбор параметра

· В окне диалога Подбор параметра в поле Установить в ячейке введем ссылку на ячейку с формулой, в поле Значение — ожидаемый результат, в поле Изменяя значения ячейки — ссылку на ячейку, в которой будет храниться значение подбираемого параметра (содержимое этой ячейки не может быть формулой).

· После нажатия на кнопку Ok Excel выведет окно диалога Результат подбора параметра. Если подобранное значение необходимо сохранить, то нажмите на Оk, и результат будет сохранен в ячейке, заданной ранее в поле Изменяя значения ячейки. Для восстановления значения, которое было в ячейке С2 до использования команды Подбор параметра, нажмите кнопку Отмена.

При подборе параметра Excel использует итерационный (циклический) процесс. Количество итераций и точность устанавливаются в меню Сервис/Параметры/вкладка Вычисления. Если Excel выполняет сложную задачу подбора параметра, можно нажать кнопку Пауза в окне диалога Результат подбора параметра и прервать вычисление, а затем нажать кнопку Шаг, чтобы выполнить очередную итерацию и просмотреть результат. При решении задачи в пошаговом режиме появляется кнопка Продолжить — для возврата в обычный режим подбора параметра.

Вернемся к примеру. Возникает вопрос: как получить второй корень? Для того чтобы найти второй корень, достаточно в качестве начального приближения в ячейку C2 поместить константу 5 и после этого запустить процесс Подбор параметра.

Лист 2 переименовать в Задание2.

Решение уравнения с помощью инструмента «Поиск решения».

Команда Подбор параметра является удобной для решения простых уравнений. Для более сложных задач следует использовать команду Поиск решения, доступ к которой реализован через пункт меню Сервис/Поиск решения. При решении уравнений с помощью Поиска решений можно учитывать различные дополнительные ограничения, например, ОДЗ (область допустимых значений).

Перейти на лист 3.

Рассмотрим, как воспользоваться Поиском решения на примере того же квадратного уравнения.

Окно диалога Поиск решения

После открытия диалога Поиск решения необходимо выполнить следующие действия:

1. в поле Установить целевую ячейку ввести адрес ячейки, содержащей формулу для вычисления значений оптимизируемой функции, в нашем примере целевая ячейка — это С4, а формула в ней имеет вид: = C3^2 — 5*C3 + 6;

2. для максимизации значения целевой ячейки, установить переключатель максимальному значению, для минимизации используется переключатель минимальному значению, в нашем случае устанавливаем переключатель в положение значению и вводим значение 0;

3. в поле Изменяя ячейки ввести адреса изменяемых ячеек, т.е. аргументов целевой функции (С3), разделяя их знаком «;» (или щелкая мышью при нажатой клавише Сtrl на соответствующих ячейках), для автоматического поиска всех влияющих на решение ячеек используется кнопка Предположить;

4. в поле Ограничения с помощью кнопки Добавить ввести все ограничения, которым должен отвечать результат поиска: для нашего примера ограничений задавать не нужно;

5. для запуска процесса поиска решения нажать кнопку Выполнить.

Результаты поиска

Для сохранения полученного решения необходимо использовать переключатель Сохранить найденное решение в открывшемся окне диалога Результаты поиска решения. После чего рабочий лист примет вид, как на рисунке. Полученное решение зависит от выбора начального приближения, которое задается в ячейке С4 (аргумент функции). Если в качестве начального приближения в ячейку С4 ввести значение, равное 1,0, то с помощью Поиска решения найдем второй корень, равный 2,0.

Решение линейного уравнения

Решение уравнения на Си.Программа на си должна решать линейное уравнение

Задается линейное уравнение ax=b. Задаются параметры уравнения a и b. Программа определяет, есть ли решение уранвения, если решение есть,то оно выводится на экран.При написании программы полезными будет уроки Ввод данных с клавиатуры в Си и Логические операции в Си Описание алгоритма решения линейного уравнения на Си. В начале программы с клавиатуры задаются значения параметров уравнения a и b.
В уравнении ax=b необходимо проанализировать все возможные варианты.
Если a=0 и b=0, то решение уравнения это любое действительное число
Если a=0 b и b≠0,т уравнения не имеет решений
Если a≠0,то решение уравнения рассчитывается по формуле x=b/a
Чтобы проверить выполнение двух условий одновременно, необходимо использовать логическую функцию И. В Си он задается с помощью &&.

Возможный вариант реализации программа на си решение линейного уравнения
#include
#include
#include

На заметку.
1.Чтобы вывести вещественное число на экран без лишних нулей используется %g
printf («Ищем решение уравнения %gx=%g «, a,b);
2.Чтобы задать условие равенства 0 используется ==. Например условие a=0 задается в Си a==0. Чтобы задать условие не равенства 0 используется логическое отрицание, которое задается знаком ! Например b≠0 задается в Си !(b==0)
Задания для самостоятельной работы:
1.Решение квадратного уравнения. Задается уравнение ax^2+bx+c=0. Задаются параметры a и b и c с клавиатуры. Определяется дискриминант. Если решения есть , то выводятся на экран, если решения нет то сообщается об этом.
В этой программе необходимо вычислить дискриминант d=b*b-4*a*c
Если d 0, то два решения x1=(-b+sqrt(d))/2a и x2 =(-b-sqrt(d))/2a

Возможный вариант реализации программа на си решение квадратного уравнения

#include
#include
#include
#include

main()
<
float a; // коэффициент при x^2
float b; // коэффицент при x
float c;// свободный член
float d;// переменная для дискрименанта

float x1;// переменная для первого корня
float x2;// перменная для второго корня

// ввод коэффициентов уравнения

printf («Введите коэффициент a\n»);
scanf(«%f», &a);
printf («Введите коэффициент b\n»);
scanf(«%f», &b);
printf («Введите свободный член с\n»);
scanf(«%f», &c);
printf («Ищем решение уравнения %gx^2+%gx+%g=0\n», a,b,c);
// расчет дискрименанта
d=b*b-4*a*c;

// анализ дискрименанта
if (d

if (d>0)
<
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf («Уравнение имеет два корня\n»);
printf(«x1=%g\n»,x1);
printf(«x2=%g\n»,x2);

Полезно почитать по теме условия в си


источники:

http://megalektsii.ru/s18417t6.html

http://itrobo.ru/programmirovanie/praktikum/reshenie-lineinogo-uravnenija.html