

x = xn; do
{
y = yn; do
{
a = x – y;
if (a <= -1) U = y * exp(x); else
{
if (a < 1) U = log(pow(x,4) + 1); else U = pow(x,2) – y;
}
cout << setw(12) << x << setw(12) << y << setw(12) << U << endl; y = y + hy;
}
while (y <= yk + hy/10.0); x = x + hx;
}
while (x <= xk + hx/10.0); getchar();
}

24. Результаты программы на С++ (2 do while)
25. Программа в Excel (2)

26. Постановка задачи (3)
а) Вычислить и распечатать таблицу всех значений функции U(x,y) с координатами расчётных точек.
б) Найти минимум среди всех положительных значений функции U и координаты точек в которой он достигается.
в) Найти количество расчётных точек, попадающих в область:
( − 3)2 + 2 ≤ 9
Для вывода таблицы в С++ использовать функцию printf().
|
|
если |
− ≤ −1 |
|
|||
= {ln( 4 + 1) |
если − 1 < − < 1 |
||
2 − |
если |
− ≥ 1 |
-1 ≤ x ≤ 1 с шагом hx = 0.6
и
-1 ≤ y ≤ 1 с шагом hy = 0.5
27.Блок-схема (3)
1)Вспомогательная блок-схема для пользовательской функции fU(x,y) для вычисления
U(x,y):
Вход в fU(x,y)
Описание переменных a, U
a = x - y
a ≤ -1
=

a ≤ -1
= ln( 4 + 1)
= 2 −
Return U
2) Основная блок-схема:
Начало
Описание переменных
x, xn, xk, hx, y, yn, yk, hy, a, U, mp, mpx, mpy, k
k = 0 mp = 1010 mpx = 0 mpy = 0
«Введите xn, xk, hx, yn, yk, hy :»
Ввод xn, xk, hx, yn, yk, hy
«Исходные данные:»
xn = xk = hx = |
yn = yk = hy = |
«Таблица результатов: |
|
x y |
U» |
x = xn
x ≤ xk

y = yn |
|
|
y ≤ yk |
|
|
U = fU(x,y) |
||
x |
y |
U |
( − 3)2 + 2 ≤ 9 |
||
k = k + 1 |
||
> 0 |
и < |
|
mp = U |
||
mpx = x |
||
mpy = y |
||
y = y + hy |
||
x = x + hx |
||
«МПЗ и его координаты: » |
||
mp, mpx, mpy |
||
«Кол-во точек, попавших в область: » |
||
|
k |
|
Конец |

28. Листинг программы на С++ (3)
#include “stdafx.h” #include <math.h> #include <iostream> #include <conio.h> using namespace std;
double fU(double x, double y)
{
double a, U; a = x - y;
if (a <= -1) U = y * exp(x); else
{
if (a < 1) U = log(pow(x,4) + 1); else U = pow(x,2) – y;
}
return U;
}
void main()
{
double x, xn, xk, hx, y, yn, yk, hy, a, U, mp, mpx, mpy; int k;
k = 0; |
|
|
mp = pow(10,10); |
|
|
mpx = 0; |
|
|
mpy = 0; |
|
|
setlocale(LC_ALL, “Russian”); |
|
|
printf(" Введите xn, xk, hx: \n"); |
|
|
cin >> xn >> xk >> hx ; |
|
|
printf(" Введите yn, yk, hy: \n"); |
|
|
cin >> yn >> yk >> hy ; |
|
|
printf("\n Исходные данные: \n xn = %5.1f |
|
xk = %5.1f hx = %5.1f \т", xn, xk, hx); |
printf("\n yn = %5.1f yk = %5.1f hy = %5.1f \n", yn, yk, hy); |
||
printf("\n Таблица результатов: \n x |
y |
U \n"); |
for (x = xn; x <= xk + hx / 10.0; x = x + hx) |
|
|
{ |
|
|
for (y = yn; y <= yk + hy / 10.0; y = y + hy)
{
U = fU(x,y);
printf("\n %8.3f %8.3f %10.5f ", x, y, U);
if (pow((x - 3), 2) + pow(y, 2) <= 9) k = k + 1; if (U > 0 && U < mp)
{
mp = U;

mpx = x; mpy = y;
}
}
}
printf("\n \n Минимальное положительное значение U = %5.4f \n Координаты, в
которых оно достигается: \n x = %5.3f \n y = %5.3f \n", mp, mpx, mpy);
printf("\n Количество расчётных точек, попавших в заданную область: k = %2i \n", k); getchar();
}

29. Результаты программы на С++ (3)
30. Программа в Mathcad (3)

31. Программа в Excel (3)