Лабораторная работа №3 Вариант 2 (другой)
.doc
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ
Лабораторная работа №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. Контрольный пример