
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
// 1.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "iostream"
using namespace std;
void _tmain(int argc, _TCHAR* argv[])
{
printf ("Oleg frolov. Zada4a po informatike 1 \n Sin(x) razlojenie v rid Tejlora");
cin.get();
system ("cls"); // очистака экрана
const double p =3.14159265358979323; // число пи
double x; // переменная
printf ("x=");
scanf ("%lf", &x);
double E; // точность (эпсилон)
printf ("E=");
scanf ("%lf", &E);
double s, d, sum; // s и sum - сумма и переменная необходимая для её выражения, d- что-то типа добавочного члена определяющего точность.
// (на самом деле хз как там и что, так как формула разложения содержит фактариалы, а я не особо понял как мы её упростили,
// но в полученой формуле нужны таки евот преобразования..)
while (x>p/2) // в целом тоже ересь. связана с отрезками. т.е. пределом где мы определяем синус
x = x - 4*p;
while (x<p/2) // аналогично.
x = x + 4*p;
int i=1; // счетчик
s = x;
sum = x;
do
{
s= - (s*x*x)/((2*i+1)*(2*i)); // вот оно! та самая ересь. формула которую я не понял на метематическом уравне, где сократились факториалы.
i = i + 1;
sum = sum + s;
d = (s*x)/(2*i); // вторая ересь про которую я говорил..откуда эта формула..я хз.
//cout<<sum<<endl; // эта фишка особо не нужна, выводит на экран все действия в цикле
}
while (fabs (d) > E); // условие выхода. фабс - модуль числа. (про d смотрим выше)
printf (" sin(%lf)=%lf",x, sum); // ну тут понятно. вывод на экран результата цикла. там где первое lf это переменная, вторая - это сумма
cin.get();
cin.get();
}
// 2.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "iostream"
using namespace std;
Void _tmain(int argc, _tchar* argv[])
{
printf ("Oleg frolov, zda4a 2. Vi4islit' eksponenty");
cin.get();
system ("cls");
double x,a=1,b,ost=1,eps;
int i;
printf ("x=");
scanf ("%lg",&x);
printf ("eps=");
scanf ("%lg",&eps);
b=3; // ограниченность функции вводим
double sum=0;// скалдываем, так что =0
a=1;// так как перемножаем =1
i=1; // надо вернуть значение после предыдущего цикла =1
while(fabs(ost)>eps)
{
a=a*x/i;
sum=sum+a;
ost=a*b;
i=i+1;
}
printf("f=%lg",sum);
cin.get();
cin.get();
}
// проверка. x=2 => e*e => f=7.38905609
// 3.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "iostream"
using namespace std;
double f(double x) // вводим функцию
{
return cos(x) - x*x*x ; // пишем что за функция
// для проверки ответ 0.86547
// х0 = 0.5
}
double H(double x)
{
return -1*sin(x) - 3*x*x; // производная
}
Void _tmain(int argc, _tchar* argv[])
{
printf ("Oleg frolov, zada4a 3. najti koren' f(x)=0 na [a,b] N'uton"); // фишка такая..есть куча условий когда вообще применим этот метод..так что я их писать не буду. но они есть.
cin.get();
system ("cls");
// примечание. когда я писал прогу преподавателю, то выяснилось что всё проще. задаем только два параметра
double x,e,x0;
printf ("e="); // точность
scanf ("%lg", &e);
printf ("x0="); // приближение
scanf ("%lg", &x0);
do // интерационный процесс
{
x = x0 - f(x0)/H(x0); // собственно считаем корень
x0=x;
//cout<<x<<"\t"; // см. ниже
//cout<<x0<<endl; //если интересно просмотреть все шаги цикла
}
while (fabs(f(x)) > e ); // иначе можно записать как модуль х-х0 < Е
printf ("x=%lg",x);
cin.get();
cin.get();
}
// 4.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "iostream"
using namespace std;
double f(double x)
{
return x*x*x; // вводим функцию. Вроде работает...
}
Void _tmain(int argc, _tchar* argv[])
{
printf ("Oleg Frolov, zada4a 4. metod delenia po palam");
cin.get();
system ("cls");
double a,b,n, d; // d- это то, что ищем. переменная + d- длина отрезка
// а и b отрезок и n - точность
printf ("n=");
scanf ("%lf", &n);
printf ("a=");
scanf ("%lf", &a);
printf ("b=");
scanf ("%lf", &b);
d= (a+b)/2; // вынесли из цикла, тчобы считал быстрее
if (f(a)* f(b) < 0)
{
while ( fabs(f(d)) > n) // цикл. ну смысл в том, что тут точность должна быть больше чем, то значение которое нашли. по модулю (нафиг по модулю? ну мы же не идиоты и пониаем, что значение может и отрицательным быть..)
{d= d/2;
if (f(a)*f(d) > 0) // так..ну тут сложнее. фишка в том, что если у нас функция изменила знак, то она прошла через искомую нами точку..так вроде..)
{
a=d;
}
else
b=d;
}
printf ("f(x)=%lf ",d);
}
else // условие если метод не выполним, т.е функция не меняет знак на отрезки ab или обращается в 0 на конце отрезка.
{
printf ("Metod ne rabotaet");
}
cin.get();
cin.get();
}
// 5.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "iostream"
using namespace std;