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

Лабораторная работа №3 Вариант 2 (другой)

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

2

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ

Лабораторная работа №3

по дисциплине

«Технология программирования»

Программирование алгоритмов генерации псевдослучайных чисел

Студент

Ельшаева Н.А.

подпись, дата

фамилия, инициалы

Группа

АС-09

Принял

Домашнев П.А.

ученая степень, звание

подпись, дата

фамилия, инициалы

Липецк 2010

1. Задание

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

.

Варианты

Алгоритм поиска

2 – метод Фибоначчи

Функция: .

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

2. Блок-схема

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

#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;

}

void main()

{

setlocale(LC_ALL,"Rus");

float x1, x2, a, b, P1=1.0, P2=1.0;

char name[30];

int i=0,n;

FILE *fp;

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

scanf("%s",&name);

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

scanf("%f",&a);

scanf("%f",&b);

printf("Введите количество итераций n: ");

scanf("%d",&n);

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

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

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

{

x1=b-(P1/P2)*(b-a);

x2=a+(P1/P2)*(b-a);

if(function(x1)>function(x2))

a=x1;

else if(function(x1)<function(x2))

b=x2;

P2=P1+P2;

P1=P2-P1;

printf("\nШаг %d: \nТекущий интервал поиска:%f %f\nЗначения в этих точках: %f %f",i,a,b,function(a),function(b));

fprintf(fp,"\nШаг %d: \nТекущий интервал поиска:%f %f\nЗначения в этих точках: %f %f",i,a,b,function(a),function(b));

}

if(function(a)<function(b))

printf("\nx= %f\ny= %f",a,function(a));

else

printf("\nx= %f\ny= %f",b,function(b));

fclose(fp);

getch();

}

4. Контрольный пример