#include <iostream>
#include <cmath>
double f(double x) {
return std::pow(2, -x) - std::sin(x);
}
double findRoot(double a, double b, double epsilon) {
double c = (a + b) / 2.0;
while (std::abs(f(c)) > epsilon) {
if (f(a) * f(c) < 0) {
b = c;
} else {
a = c;
}
c = (a + b) / 2.0;
}
return c;
}
int main() {
double a = -10.0; // Начальная левая граница
double b = 10.0; // Начальная правая граница
double epsilon = 0.0001; // Точность
double root = findRoot(a, b, epsilon);
std::cout << "Корень уравнения: " << root << std::endl;
return 0;
}
Объяснение:
В этом коде функция f вычисляет разность между значениями выражения 2^(-x) и sin(x). Функция findRoot использует метод бисекции (деления отрезка пополам) для нахождения корня уравнения с заданной точностью. В функции main задаются начальные границы a и b и точность epsilon. Результат решения выводится на экран.
После выполнения программы будет выведено значение корня уравнения, которое удовлетворяет условию 2^(-x) = sin(x).
#include <iostream>
#include <fstream>
const int ROWS = 5;
const int COLS = 5;
void readNumbersFromFile(int Z[ROWS][COLS]) {
std::ifstream inputFile("danie.txt");
if (inputFile.is_open()) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
inputFile >> Z[i][j];
}
}
inputFile.close();
} else {
std::cout << "Failed to open the file." << std::endl;
}
}
void printMatrix(const int Z[ROWS][COLS]) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
std::cout << Z[i][j] << " ";
}
std::cout << std::endl;
}
}
int main() {
int Z[ROWS][COLS];
readNumbersFromFile(Z);
std::cout << "Matrix Z:" << std::endl;
printMatrix(Z);
std::cout << "Result:" << std::endl;
for (int j = 0; j < COLS; j++) {
std::cout << Z[0][j] + Z[1][j] << " ";
}
std::cout << std::endl;
return 0;
}
x = -17
y = 20
Объяснение: