Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Реализации различных алгоритмов на Си / поиск метод случайного поиска

.doc
Скачиваний:
24
Добавлен:
20.06.2014
Размер:
70.14 Кб
Скачать

2

  1. Задание

Написать программу, осуществляющую поиск оптимального значения функции или решение уравнения заданным методом. Интервал поиска (или начальную точку – в зависимости от метода) вводит пользователь. На экране пользователю должен отображаться ход решения, т.е. все промежуточные точки и значения функции в этих точках. Начальные условия (функция, интервал/начальная точка) и ход поиска должны дублироваться в текстовый файл. Имя файла вводит пользователь.

7- Метод случайного поиска

Функция: .

Интервал/начальную точку выбирать в пределах [-10;10].

  1. Листинг программы

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <locale.h>

#include <math.h>

float function(float x)

{

float exp=2.718281, y;

y=(sin(x*x/10)*pow(exp,x/10))/(x*x+1);

return y;

}

float diff(float x)

{

float exp=2.718281,y;

y=((-x*cos(x*x/10)*pow(exp,x/10)/5 +sin(x*x/10)*pow(exp,x/10)/10)*(x*x+1)-2*x*(sin(x*x/10)*pow(exp,x/10)))/pow((x*x+1),2);

return y;

}

void main()

{

setlocale(LC_ALL,"Rus");

float x1, x2, a, b,e,len,f, n,m;

char name[30];

srand(0);

FILE *fl;

printf("Введите имя файла: ");

scanf("%s", &name);

fl=fopen(name, "a+");

printf("Введите интервал поиска минимума функции [a,b] (a > -10 , b < 10): ");

scanf("%f %f",&a,&b);

printf("Введите погрешность е: ");

scanf("%f",&e);

printf("Начальные условия:\na= %f\nb= %f\ne= %f\n",a,b,e);

fprintf(fl,"Интервал поиска[%f;%f]\nПогрешность:%f\nФункция (sin(x^2/10)*e^(x/10))/(x^2+1)\n",a,b,e);

n=5;

while(abs(n)>e)

{

m=(float)rand()/10000.0;

while(m>b)

m=m-abs(a-b);

while(m<a)

m=m+abs(a-b);

f=diff(m);

printf("точка%f\tзначение в произв%f\n",m,diff(m));

if(abs(f)<n)

n=f;

}

printf("решение значение%f точка%f", function(n),m);

fprintf(fl,"решение %f %f", function(n),m);

getch();

}