Правила Форума редакция от 22.06.2020 |
|
|
|
|
|
Опции темы | Опции просмотра | Language |
07.04.2013, 19:44 | #1 |
Неактивный пользователь
Пол: Регистрация: 29.11.2008
Сообщений: 5
Репутация: 0
|
Ошибка C2872
Добрый вечер! Разработать алгоритм и составить программу определения точки экстремума функции двух переменных f(x,y) с помощью метода покоординатного спуска.
При выполнении программы в VS 2008 у меня возникла ошибка error C2872: max: неоднозначный символ ЗАРАНЕЕ СПАСИБО ЗА ПОМОЩЬ!!! // IO1.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" # include "math.h" // библиотеки # include "stdio.h" # include "conio.h" # include "stdlib.h" #include <iostream> using namespace std; float s,d,w, x=0, y=0, e=0.0005, z, max, k,fz,a=-4,b=4 ; // s,d,w- промежуточные переменные для удобства вычислений // х,у- переменные // е- предельная чувствительность // z-проверка условия // max- максимум // к-сигнал // fz //a, b- координаты отрезка на котором определяется максимум float max_value (double,double); // прототипы функций void vivod (void); int _tmain(int argc, _TCHAR* argv[]) { printf("\n*********************** МЕТОД ПОКОРДИНАТНОГО СПУСКА ************************ "); printf("\n"); printf("Поиск максимального значения"); printf("x^2+y^2+z^2=16 уравнение сферы "); printf("\n"); printf ("Выполнила студентка группы"); k=1; // фиксируем переменную хб ищем максимум по у do { z=max_value(x,y); y=max; if (z<e) { vivod();break;} else { k=0; z=max_value(x,y); x=max; } if (z<e) {vivod(); break; } else k=1; } while(k==1); printf("\n \n \n \n \n \n"); printf( " \n Для завершения работы нажмите <Enter>"); getch(); } float max_value(float x,float y) { float var1, var2, v1, v2, c, v, f1, f2; // var1,var2,v1,v2-вспомогательные ячейки // f1,f2- значения функций // с- координата середины отрезка. float prx,pry,prxy,prx2,pry2; // prx- частная производная по х // pry- частная производная по у // prxy- частная производная по х,у // prx2- вторая частная производная по х // pry2- вторая частная производная по у do { c=(a+b)/2; if (k==1) v=x; else v=y; var1=c-e/2; var2=c+e/2; f1=sqrt(16-pow(var1,2)-pow(v,2)); f2=sqrt(16-pow(var2,2)-pow(v,2)); if (f1==f2) { a=var1; b=var2; max=(a+b)/2; } if (f1>f2) { max=var1; b=var2; } else if (f1<f2) { max=var2; a=var1; } } while ((b-a)>=2*e); if (k==1) { v1=max; v2=v; } else{v1=v; v2=max; } s=16; w=s-(pow(v1,2)-pow(v2,2)) ; d= pow (w,3) ; prx=(-1*v2)/(sqrt(s-pow(v1,2)-pow(v2,2))); pry=(-1*v1)/(sqrt(s-pow(v1,2)-pow(v2,2))); prxy=(-1*v1*v2)/sqrt(d ); prx2=(pow(v1,2)-s)/sqrt (d); pry2=(pow(v2,2)-s)/sqrt (d) ; z=e*(prx+pry)+pow(e,2)*(prx2+prxy+pry2); return z; } void vivod (void) { cout <<"\nЗначение координаты x= " <<x; printf("\n"); cout <<"\n Значение координаты y= " << y; printf("\n"); fz=sqrt(16-pow(x,2)-pow(y,2)); cout <<"\n Значение функции z= " <<fz; printf("\n"); } |
Реклама: | Рекомендуем - VA24DQFR - Подарок каждому покупателю! | ибп для дома 5 квт с аккумуляторами цена | YouTrack и Monday | барнхаус одноэтажный 60м2 | Компьютерная фирма КНС Нева предлагает Dahua DH-IPC-H3BP-0360B - поставщик техники для дома и бизнеса в Санкт-Петербурге. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка | roman_ | Скорая помощь | 3 | 26.07.2009 23:15 |
Ошибка | Shruz | Архив | 4 | 28.08.2007 11:44 |
XP SP1 IE 6.0 Ошибка 501/505 | newreactive | Microsoft Windows | 1 | 05.04.2006 14:51 |
Ошибка | кучка | Архив | 5 | 04.03.2006 21:28 |
|
|