Лекция: Пример выполнения задания с использованием цикла for

 

Для функцииF(X ) =2X (X −1)−(X 2−1) ln(X 2−1) (X 2 −1)(X −1)2

 

при 9 значениях приращения аргумента DX =(0,5; 0,25; 0,125;...) вычислить:

1) точные значения приращений первообразной

 

DP(X )= ln((X + DX )2 −1) ln(X 2 −1) ,  
(X + DX ) −1 X −1  
       

 

а также вычислить

 

2) по формуле F(X+DX/2)·DX — приближенные значения

 

а) DP1, упростив вычисления за счет дополнительных переменных, б) DP2, не используя дополнительных переменных, и

3) |DP-DP1| — абсолютные ошибки вычисленных приближенных значений. Результаты вычислений и соответствующие значения DX вывести в виде таблицы

с заголовками столбцов и номерами строк. В последней колонке таблицы вывести в экс-поненциальной форме значения ошибки, чтобы был виден её порядок.

 

#include «stdafx.h» #include «math.h»

 

int _tmain(int argc, _TCHAR* argv[])

 

{

 

const double X=1.5;

 

double DP,DP1,DP2,D,R,K,X1,DX;

 

 

«Практикум по программированию на языке C в среде VS C++»


 

int I,N;

 

//Вывод заголовка таблицы

 

printf("%s%s"

 

," # DX DP "

 

,«DP1 DP2 |DP-DP1|»);

 

//Переменная DX будет представлять //текущее приращение аргумента

DX=0.5;

 

for (I=1;I<10;I++)

 

{

 

//Вычисление точного значения DP(X)

 

DP=log((X+DX)*(X+DX)-1)/(X+DX-1)-log(X*X-1)/(X-1);

 

 

//Вычисление значений дополнительных переменных

 

X1=X+DX/2; K=X1*X1; R=K-1; D=X1-1;

 

//Вычисление приближенных значений DP(X) //с использованием дополнительных переменных

DP1=(2 * X1 * D — R * log(R)) / R / D*D*DX;

 

//без использования дополнительных переменных

 

DP2=(2*(X+DX/2)*(X+DX/2-1)-((X+DX/2)*(X+DX/2)-1) *log((X+DX/2)*(X+DX/2)-1)) /((X+DX/2)*(X+DX/2)-1)/(X+DX/2-1)/(X+DX/2-1)*DX;

 

//Вывод в строку таблицы вычисленных значений

 

printf("\n%3d%10.5lf %12.6lf %10.6lf %9.6lf %e"

 

,I,DX,DP,DP1,DP2,fabs(DP-DP2));

 

//Изменение значения приращения аргумента

 

DX=DX/2;

 

}//конец for

 

printf("\n");

 

return 0;

 

}

 

 

Результат работы программы представляет следующая таблица.

 

# DX DP DP1 DP2 |DP-DP1|
0.50000 0.652325 0.274404 0.487830 1.644955e-001

 

«Практикум по программированию на языке C в среде VS C++»


 

0.25000 0.518938 0.185754 0.475532 4.340651e-002
0.12500 0.345837 0.106737 0.337340 8.496082e-003
0.06250 0.203703 0.057105 0.202339 1.363851e-003
0.03125 0.111248 0.029526 0.111054 1.947223e-004
0.01563 0.058238 0.015011 0.058212 2.607041e-005
0.00781 0.029810 0.007568 0.029806 3.374592e-006
0.00391 0.015082 0.003800 0.015082 4.293168e-007
0.00195 0.007586 0.001904 0.007586 5.414117e-008

 

В этом примере, в отличие от предыдущего, длинная строка заголовка таблицы была разбита на две последовательно выводимые по формату %s строковые константы. Такой приём, то есть помещение строковой константы в списке вывода, приходится ис-пользовать также в случае перекодирования символов строки.

 

еще рефераты
Еще работы по информатике