Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

// 1.cpp: определяет точку входа для консольного приложения.



// 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 ("%lf", &e);

 

printf ("x0="); // приближение

scanf ("%lf", &x0);

 

do // интерационный процесс

{

x = x0 - f(x0)/H(x0); // собственно считаем корень

x0=x;

//cout<<x<<"\t"; // см. ниже

//cout<<x0<<endl; //если интересно просмотреть все шаги цикла

}

while (fabs(f(x)) > e); // иначе можно записать как модуль х-х0 < Е

 

printf ("x=%lf",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;

 

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

{

printf ("Frolov Oleg. 5 zada4a po spicky 6. Yporyado4nit' 4islovoj vektor \n Pervij variant");

cin.get();

system ("cls");

 

double A[100];

double n;//точность

int i,j; // СЧЁТЧИКИ

 

printf ("n="); // количество членов в последоватеьости

scanf ("%lf",&n);

 

double x;// перемнная для перестановки элементов последовательности

 

printf ("vvedute 4isla \n");

 

for (j=0; j<n; j++) // задача массива (последовательности)

cin>> A[j];

 

for (i=0; i<n; i++) // цикл для высчитывания кол-во операций

{

for (j=i+1; j<n; j++)// считает номер элемента последовательности

 

{

if (A[j] < A[i]) // сравнение и если нужно перестановка

{

x= A[i];

A[i]= A[j];

A[j]=x;

}

else;

 

}

}

 

for (i=0; i<n;i++)

{ //cout<<A[i]<<"\t"; // вывод

printf ("%lg ", A[i]); // так тоже можно выводить.

}

cin.get();

cin.get();

}


 

// 7.cpp: определяет точку входа для консольного приложения.

//

 

#include "stdafx.h"

#include "iostream"

using namespace std;

 

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

{

printf (" Oleg Frolov. Zada4a 8 Sled matrici");

cin.get();

system ("cls");

 

double s=0, A[100][100]; // s - след матрицы)

int i,j, n;

 

printf ("n="); // сколько на сколько матрица

scanf ("%d",&n);

 

 

// вводим матрицу)

for (i=0; i<n; i++)

{

for (j=0; j<n; j++)

{

printf ("A[%d][%d]=",i,j);

scanf ("%lg", &A[i][j]);

}

 

}

// цикл для рассчета суммы всех элементов на центральной диагонале. т.е. те у которых i=j

 

for (i=0; i<n; i++)

{

s = s + A[i][i];

}

 

printf ("s=%lg", s);

 

cin.get();

cin.get();

}

 

 


 

// 8.cpp: определяет точку входа для консольного приложения.

//

 

#include "stdafx.h"

#include "iostream"

using namespace std;

 

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

{

printf ("Frolov Oleg, Zada4a 8. Dispersiya i srednee arifmeti4eskoe posledovatelnosti");

cin.get();

system ("cls");

 

double s, m, q, d, A[100];

// s - сумма всех элементов последовательности

// m - средняя арифметическая сумма всех элементов последовательности (сумма деленная на чилсо элементов)

// d - дисперсия элементов (отклонение значения элемента последовательности от среднего значения элементов последовательности)

// q - корень из дисперсии - стандартное отклонение

 

int n, i;

 

printf("n=");

scanf("%d", & n);

 

for(i=0; i<n; i++)

{

printf("A[%d]=",i);

scanf("%lg", &A[i]);

}

 

s=0;

d=0;

 

for(i=0; i<n; i++)

{

s=s+A[i];

}

 

m=s/n;

 

for(i=0; i<n; i++)

{

d=d+(A[i]-m)*(A[i]-m);

}

 

d=d/n;

q=sqrt(d);//не обязательно. это квадратичное отклонение или стандартное. (на химии считали)

 

printf("\n m=%lg \n q=%lg \n d=%lg ", m, q, d);

 

cin.get();

cin.get();

}

 

 


 

// 9.cpp: определяет точку входа для консольного приложения.

//

 

#include "stdafx.h"

#include "iostream"

using namespace std;

 

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

{

printf ("Frolov Oleg, Zada4a 9. Summa i proizvedenie elementov posledovatel'nosti");

cin.get();

system ("cls");

 

double sum, pr, A[100];// sum - сумма всех элементов последовательности

// pr - произведение всех элементов последовательности

int i,n;

 

printf ("n=");

scanf ("%d", &n); // число элемент *Господи как надоело писать это пояснение!!! Матерь Всевышнеего!!...*ов последовательности.

 

for (i=0; i<n; i++)

{ //cin>>A[i];

printf("A[%d]=",i);

scanf("%lg", &A[i]);

}

 

sum = 0; // нужно присвоить первое значение, а так как складываем, то присваиваем 1

pr=1; // тоже самое, но поскольку перемножаем, то берем 1 (если взять 0, то всё занулиться и ничего не получиться. еденичка - самое то)

// цикл для расчета.

for (i=0; i<n; i++)

{

sum = sum + A[i];

pr = pr * A[i];

}

 

printf ("\n sum=%lg \n pr=%lg", sum, pr);

 

cin.get();

cin.get();

}

 

 


 

// 10.cpp: определяет точку входа для консольного приложения.

//

 

#include "stdafx.h"

#include "iostream"

using namespace std;

 

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

{

printf ("Frolov Oleg, Zada4a 10. Najti max i min posledovatel'nosti");

cin.get();

system ("cls");

 

double min, max, mas[100]; // задача переменных max и min (любыми можно обозначить буквами), mas - массив. последовательность в нашем случае. Тоже можно написать

// любой буквой, например А[100], 100 означает, что максимальное число последовательности - 100.

int n, i; // целые числа

 

printf("n=");

scanf("%d", & n);

 

 

for(i=0; i<n; i++) // цикл для введения массива. (последовательности)

{

printf("mas[%d]=",i);

scanf("%lg", &mas[i]); // scanf ("%lg", & A[i]);

} // закончился циклл ввода

 

 

max=mas[0]; // присваеваем максимум первому элементу последовательности

min=mas[0]; // присваеваем минимум первому элементу последовательности

 

for(i=0; i<n; i++) // цикл, где мы перебераем все значения элементов последовательности и сравниваем их с максимумом и минимумом. И если нужно, то присваеваем

// новое значение переменной.

{

if(max<mas[i]) // для максимума

{

max=mas[i];

}

if(min>mas[i]) // для минмума

{

min=mas[i];

}

}

 

printf("max=%lg \n min=%lg", max, min); // выводим на экран.

 

 

cin.get();

cin.get();

}

 


 

// 12.cpp: определяет точку входа для консольного приложения.

//

 

#include "stdafx.h"

# include "iostream"

using namespace std;

 

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

{

printf ("Frolov Oleg, Zada4a 12. Index elementov posledovatelnosti");

cin.get();

system ("cls");

 

double max, A[100];

int i, n, index;

 

printf ("n="); // число элементов последовательности

scanf("%d", &n);

max = 0;

 

for (i=0; i<n; i++)

{ // дружелюбный интерфейс

printf ("A[%d]=",i);

scanf ("%lg", &A[i]);

}

//cin>>A[i]; // простой вариант ввода. думаю здесь имеет смысл его использовать. но для наглядности работы программы оставим друж.интерфейс.

 

 

for (i=0; i<n; i++)

{

if (max < A[i])

{ max = A[i]; // значение максимального жлемента.

index = i;// его индекс или точнее номер этого элемента в последовательности

}

else;

}

printf ("\n \n A[max el]=%lg, index= %d",max, index);

 

cin.get();

cin.get();

}

 

 


 

// 13.cpp: определяет точку входа для консольного приложения.

//

 

#include "stdafx.h"

#include "iostream"

using namespace std;

 

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

{

printf("Frolov Oleg, Zada4a 13. Transponirovanie kvadratnoj matrici");// короче считайте что повернули матрицу на 90 градусов в првво.

cin.get();

system ("cls");

 

double A[100][100], A1[100][100];

int i,j,n;

printf ("n="); // количество элементов последовательности

scanf ("%d",&n);

//вводим матрицу квадратную

for (i=0; i<n; i++)

{

for (j=0; j<n; j++)

{

printf ("A[%d][%d]=",i,j);

scanf ("%lg", &A[i][j]);

}

}

// меняем матрицу

for (i=0; i<n; i++)

{

for (j=0; j<n; j++)

{

A1[j][i]=A[i][j];

}

}

//выводим на экран матрицу измененную

for (i=0; i<n; i++)

{

for (j=0; j<n; j++)

{

printf ("\n A1[%d][%d]=%lg", i, j, A1[i][j]); // выводим на экран. по другому не получиться)

}

}

// примечание: везде используем двойные циклы, т.к. квадратная матрица. следить за наличием всех фигурных скобок!

cin.get();

cin.get();

}

 

 


 

// 14.cpp: определяет точку входа для консольного приложения.

//

 

#include "stdafx.h"

#include "iostream"

using namespace std;

 

 

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

{

printf ("Frolov Oleg, zada4a 14. To4ka perese4eniya pryamix");

cin.get();

system ("cls");

 

double x, y, a1,b1,c1,a2,b2,c2;

 

// вводим все условия функций. ну а, b, c.

printf ("a1=");

scanf ("%lg",&a1);

printf ("b1=");

scanf ("%lg",&b1);

printf ("c1=");

scanf ("%lg",&c1);

printf ("a2=");

scanf ("%lg",&a2);

printf ("b2=");

scanf ("%lg",&b2);

printf ("c2=");

scanf ("%lg",&c2);

 

x = (c1/b1 - c2/b2) / (a2/b2 - a1/b1); // х существует, если функци равны. приравниваем у и выражаем х.

 

y = -1*(c1/b1) - (a1/b1)*(c1/b1 - c2/b2) / (a2/b2 - a1/b1); // у находим подставив икс.

 

printf ("x=%lg \n y=%lg",x,y);

 

cin.get();

cin.get();

}

 


 

// 15.cpp: определяет точку входа для консольного приложения.

//

 

#include "stdafx.h"

#include "iostream"

using namespace std;

 

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

{

printf ("Oleg Frolov, Zada4a 15. S treygolnika po koordinatam vershin");

cin.get();

system ("cls");

 

double x1, y1, x2, y2, x3, y3, s; // вводим все координаты точек

printf("x1=");

scanf("%lg", &x1);

printf("y1=");

scanf("%lg", &y1);

printf("x2=");

scanf("%lg", &x2);

printf("y2=");

scanf("%lg", &y2);

printf("x3=");

scanf("%lg", &x3);

printf("y3=");

scanf("%lg", &y3);

 

s = fabs(((x1-x3)*(y2-y3)-(x2-x3)*(y1-y3))/2); // собственно формула для расчета. она особо никак не выводиться..придется запомнить. фабс - так как берем по модулю.

// площадь то не может быть отрицатель;)

if (s=0)

{

printf ("treygl'nika net");

}

else;

printf ("\n s=%lg",s);

 

cin.get();

cin.get();

}

 

 


 

// 16.cpp: определяет точку входа для консольного приложения.

//

 

#include "stdafx.h"

#include "iostream"

using namespace std;

 

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

{

printf ("Frolov Oleg, Zada4a 16. Opredelitel' treygol'noj matrici");

cin.get();

system ("cls");

 

double opred, A[100][100];//d1,d2,d3,d4, opred1,opred2; // opred - определитель

int i,j,n;//k;

 

printf ("n="); // ну кто самый умный и догадается? нет идей? а это количество.. Нет не элементов последовательности XD Всего лишь сколько на сколько матрица))

scanf ("%d", &n);

// цикл ввода

for (i=0; i<n; i++)

{

for (j=0; j<n; j++)

{

printf("A[%d][%d]=", i,j);

scanf ("%lg", &A[i][j]);

}

}

 

opred =1; // надо присвоить для расчета какое-то число, т.к. перемножаем, то берем 1.

// цикл для расчета.

 

for (i=0; i<n; i++)

{

opred = opred * A[i][i];

}

printf ("\n opred = %lg", opred);

 

 

cin.get();

cin.get();

}

 

// примечание: мне откровенно лень расписывать и вводить условия на определения треугольности матрицы. 3 час ночи и мне уже скучно.

// У вас итак есть дружелюбный интерфейс. Радуйтесь и вводить грамматно.

// PS. согласно условию и требованиям задачи, я работаю уже с треугольной матрицей. Всё. (..ах да! для тех кто не знает...треугольная матрица где половина матрицы (верхняя/нижняя)

// заполнена нулями. в зависимости от этого различают верхнюю и нижнюю треугольные матрицы. Всё.


 

// 17.cpp: определяет точку входа для консольного приложения.

//

 

#include "stdafx.h"

#include "iostream" // это вводим библиотеку, чтобы програма закрывалась при нажатие ENTER

using namespace std;

 

void _tmain(int argc, _TCHAR* argv[]) // сменил int на void. просто нам наш так советовал.

{

printf ("Frolov Oleg, Zada4a 17. Vectora.");// эти три строчки - просто понты мои личные. удобно просто. для программы они ничего не значат.

cin.get();

system ("cls");

 

 

double x1, x2, x3, y1, y2, y3, d1, d2, c; // задаем переменные. д1 и д2 - это длины отрезков которые мы посчитаем. с1 - скалярное произведение, которое тоже мы считаем.

// примечание: х - это первый вектор, соответственно номер - это ось координат (я бы не так их записывал, а как обычно x, y, z, а вектор числом 1 или 2), но мне лень переписывать всё.

// просто для меня было бы привычнее записыват, как мы на бумаге пишем.

 

printf("x1="); // пишем что на экране отображается.

scanf("%lg", &x1);// пишем что за переменную пользоватеь вводит с клавиатуры. (примечание. мы пишем последовательно принт и сканф, так как так удобнее.

//на экране будет последовательно появляться)

 

// PS. Кошмар!! жутко неудобный интерфейс. не удобно вводить координаты векторов. но можно и так. просто криво идет. вначале воодишь координут х первого

// вектора, а потом х2 второго вектора..и так прыгать..короче не удачный выбор на мой взгляд переменных))) Но в целом никакой ошибки тут нет

printf("y1=");

scanf("%lg", &y1);

 

printf("x2=");

scanf("%lg", &x2);

 

printf("y2=");

scanf("%lg", &y2);

 

printf("x3=");

scanf("%lg", &x3);

 

printf("y3=");

scanf("%lg", &y3); // ввели все координаты

 

 

d1=fabs(sqrt(x1*x1+x2*x2+x3*x3)); // длина 1-го вектора. считается как сумма квадратов координат

d2=fabs(sqrt(y1*y1+y2*y2+y3*y3));// 2-ой вектор

 

c=x1*y1+x2*y2+x3*y3;// скалярное произведение двух векторов. считается по формуле сумма произведения соответсвующих координат

 

printf("d1=%lg\nd2=%lg\nc=%lg", d1, d2, c); // выводим на экран результат

// примечание. \n это с новой строчки.

 

cin.get();// нужны чтобы прога не закрылась сама.

cin.get();

// примечание. я использую void, поэтому return мне не нужен уже.

}

 

 

// 18.cpp: определяет точку входа для консольного приложения.

//

 

#include "stdafx.h"

#include "iostream"

using namespace std;

 

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

{

printf ("Frolov Oleg, Zada4a 18. S treygolinika po formyle Gerona");

cin.get();

system ("cls");

 

double a1, b1, c1, a2, b2, c2, p1, p2, s1, s2, summa, raznost;

// вводим стороны

printf("a1:");

scanf("%lg", &a1);

 

printf("b1:");

scanf("%lg", &b1);

 

printf("c1:");

scanf("%lg", &c1);

 

printf("a2:");

scanf("%lg", &a2);

 

printf("b2:");

scanf("%lg", &b2);

 

printf("c2:");

scanf("%lg", &c2);

 

p1=(a1+b1+c1)/2; // для формулы герона нужны коэф. равный пол сумме всех сторон

p2=(a2+b2+c2)/2; // второй треугольник

 

s1=sqrt(p1*(p1-a1)*(p1-b1)*(p1-c1)); // собственно формула Гурона. сумма треугольника = корень квадратный из произведения коэф. и разности коэф и соответствующих сторон.

s2=sqrt(p2*(p2-a2)*(p2-b2)*(p2-c2)); // 2-ой треугольник

 

// на мой взгляд циклы избыточны но пусть будут

// после до срока...циклы отнюдь не избыточны. Если не напишите, то Вас могут попросить их дописать.

if (s1<0)

{

printf("\n ERROR, treygol'nika 1 net");

}

else

{

printf("s1=%lg; ", s1);

}

 

if(s2<0)

{

printf("\n ERROR, treygol'nika 2 net");

}

else

{

printf("s2=%lg",s2);

}

 

summa=s1+s2; // сумма

raznost=s1-s2; // разность

 

printf("\n summa=%lg \n raznost=%lg", summa, raznost);

 

cin.get();

cin.get();

}

 

 


 

// 19.cpp: определяет точку входа для консольного приложения.

//

 

#include "stdafx.h"

#include "iostream"

using namespace std;

 

double f (double x)

{

return 1/x;

}

 

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

{

printf("Frolov Oleg, Zada4a 19. Integral metodom trapecii (ln2 = integral ot 2 do 1 funkcii d(x)/x");

cin.get();

system ("cls");

 

double a, b, e, h, m1, m2, m3, m4, d;

// a и b - предел интегрирования

//h-длина шага

//m1-предыдущее приближение

//m2-полусумма у0 и уn

//m3-сумма у1+..+уn-1

//m4-текущее приближение для S

//d-модуль разности 2х посл.приближений

//e-точность вычислений

//n - кол-во отрезков разбиения

 

int n=7, i; // задаем для точности. я изменю 4 на 7. мне так больше нравиться. На самом деле чем больше будет n, тем точнее получиться результат.

// примечание. проверил с 4....кто у вас информатику ведет? ответ-то не праивльный будет! малова-то число разбиения.

 

printf("a=");

scanf("%lg", &a);

 

printf("b=");

scanf("%lg", &b);

 

printf("e=");

scanf("%lg", &e);

 

m1=5; // мне не совсем понятно почему приближение исходное мы берем равным 5. вероятно по тому, что оно гарантированно не попадет. я поменяю на 100. мне так больше нравиться.

 

m2=(f(a)+f(b))/2; // ну тут вроде понятно. берему полусумму значений функции на концах отрезка на котором интергрируем

 

do

{

h=(b-a)/n; // вообще говоря, длина отрезка или по другому - шаг

m3=0; // приравниваем нулю, так как потом в цикле суммируем.

 

for(i=0; i<=n; i++)

{

m3=m3+f(a+i*h); // вот тут. считаем сумму всех значаений функции в узлах (узлов(а1, а2 и тд) будет на 1 больше, чем отрезков) следует из условия

//i<=n (вообще говоря несколько сомнительная запись. не понял зачем мы приравняли. ну да Бог с ним.

}

m4=h*(m2+m3); // это есть площадь всех трапеций)) с её помощью и считаем интеграл. (условно говоря, можно было и не выносить m2 из цикла, но тогда

// он каждый раз считал бы в цикле, чем бы его перегружал.

d=fabs(m1-m4); // вообще говоря, это и есть точность вычисления метода

m1=m4; // присваемваем значение

n=n+1; // увеличиваем число отрезков разбиения, на случай, если нужная точность не достигнута)

}

while(d>e); // заканиваем цикла

 

printf("\n s=%lg", m4);

 

cin.get();

cin.get();

}

 

// в целом долго разбирался. просто формулу разбили не плохо так. проверил значение. Ответ нормальный выдает. считает нормально. но всё одно не слишком точно.

//(в онлайн калькуляторе ln2 = 0,69314718056, а у нас при точности 10^(-9) ln2 =0.69327


 

// 20.2.cpp: определяет точку входа для консольного приложения.

//

 

#include "stdafx.h"

#include "iostream"

using namespace std;

double f (double x, double y)

{

return -x/y;

}

 

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

{

printf ("frolov Oleg, Zada4a 20.");

cin.get();

system ("cls");

 

double h, x, y, end;

h=0.01;

y=20;

x=0;

end=20;

 

 

cout<<x<<"\t";

cout<<y<<"\t";

cout<<f(x,y)<<endl;

 

do

{

y= y + h* f(x,y);

x = x+h;

 

cout<<x<<"\t";

cout<<y<<"\t";

cout<<f(x,y)<<endl;

}

while (x<end);

 

cin.get();

cin.get();

}

 


Дата добавления: 2015-08-28; просмотров: 101 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Как установить и настроить сетевой принтер | 1. Read & translate the text:

mybiblioteka.su - 2015-2024 год. (0.145 сек.)