Нужна программа для решения любых нелинейных уравнений методом хорд. В общем дело не в методе, пользователь который запустил программу должен иметь возможность ввести ЛЮБОЕ нелинейное уравнение, программа же должна его понять и соответственно решить. Помогите, не знаю как подобное реализовать. Пишу на Visual C++ 2010 Express
Нужна программа для решения любых нелинейных уравнений методом хорд. В общем дело не в методе, пользователь который запустил программу должен иметь возможность ввести ЛЮБОЕ нелинейное уравнение, программа же должна его понять и соответственно решить. Помогите, не знаю как подобное реализовать. Пишу на Visual C++ 2010 Express
любое уравнение решается методом сношения с преподавателем в самых запущенных случаях нужно предъявить комиссии(если сношение с ней уже на этапе проверки работы) видимость, слышимость, понимаемость некоторых трудозатрат p.s. если субъект будет возражать от предложенной схемы лечения проблемы, озадачьте его уравнением p=np или p!=np, что в сегоднешней науке одно и то же
Нужна программа для решения любых нелинейных уравнений методом хорд. В общем дело не в методе, пользователь который запустил программу должен иметь возможность ввести ЛЮБОЕ нелинейное уравнение, программа же должна его понять и соответственно решить.Помогите, не знаю как подобное реализовать.Пишу на Visual C++ 2010 Express
Изучаешь модуль Boost:Spirit (неплохо заодно почитать книжки по написанию парсеров) - станет понятно, как программе его распознавать. А когда, месяца через три изучения, уровень знаний достигнет состояния, при котором оно заработает - вопрос с решением метод хорд уже не потребует подсказок.
Member
Статус: Не в сети Регистрация: 01.05.2007 Откуда: Тель-Авив Фото: 1
zanac писал(а):
Herod, т.е., чтобы не писать struct SDL_somestruct *my_cool_struct; в случае объявления struct SDL_somestruct{...};?
Ну да. Я сам так очень любил делать, когда под Винду писал. А политика Линукс кернела такие штуки запрещает (ИМХО, чисто религиозно) По идее, разницы никакой.
Member
Статус: Не в сети Регистрация: 31.05.2010 Откуда: Минск Фото: 4
Как убрать из области видимости препроцессора директиву libc
Код:
#define remove(x) unlink(x)
? Вариант
Код:
#ifdef __SYMBIAN32__ #undef remove(x) // Warning : extra tokens at end of #undef directive #endif
не работает. Получаю 'class ...' has no member named 'remove' . А этот вариант не работает(сыплются ошибки macro `remove' used without args) :
Код:
#ifdef __SYMBIAN32__ #undef _SYS_UNISTD_H #endif
Добавлено спустя 2 часа 29 минут 52 секунды: В базовом классе объявлена чистая виртуальная функция remove, переопределённая в потомках. Почему-то препроцессор их определяет как производную директивы remove(x). Если этот дефайн закоментировать - всё компилируется и работает.
Member
Статус: Не в сети Регистрация: 27.12.2011 Откуда: Краснодар
Мужики тема жива? Пытаюсь реализовать алгоритм ФОРЕЛЬ. Вот что пока есть. Знаю позор это все( Нужно сделать чтобы числа вводились либо вручную либо подгружались с файла excel.
КОД
Код:
#include <iostream> #include <math.h>
using namespace std;
int main() { setlocale(LC_ALL, "Russian"); double x[5]={0.5,1,1.5,10,12.5}, y[5]={1.5,0.5,1,7,9};
cout<<" X Y"<<endl; for(int i=0;i<5;i++) { cout<<"Объект"<<i<<" "<<x[i]<<" "<<y[i]<<endl; }
double maxX,maxY; double minX=maxX=x[0], minY=maxY=y[0]; for (int i=1;i<5;i++) { if (minX>x[i])//минимум х minX=x[i]; if (maxX<x[i])//максимум х maxX=x[i]; if (minY>y[i])//минимум y minY=y[i]; if (maxY<y[i])//максимум y maxY=y[i]; }
double R0,R1,k; cout<<"Введите множитель(от 0 до 1) k="; cin>>k; R0=pow((maxX-minX)*(maxX-minX)+(maxY-minY)*(maxY-minY),0.5)/2;//общий радиус R1=R0*k;//радиус группы вместо 0.3 можно использовать переменную k запрет ввода чисел больше 1 и отрицательных cout<<"Нахождение общего радиуса R0"<<endl; cout<<"R0="<<R0<<endl; cout<<"Радиуса для классов R1=R0*k"<<endl; cout<<"R1="<<R1<<endl; cout<<endl; cout<<"Нахождене длины L от Объект2 ("<<x[1]<<":"<<y[1]<<") обозначим номер точки Ti"; //Рандомный выбор точки из массива double d[5]; for (int i=0;i<5;i++) { d[i]=abs(pow((x[1]-x[i])*(x[1]-x[i])+(y[1]-y[i])*(y[1]-y[i]),0.5)); } cout<<endl;
int x1[5]; for(int i=0;i<5;i++) { if (R1>=d[i]) x1[i]=1,cout<<"Класс1: "<<x[i]<<" : "<<y[i]<<endl; else if (R1<=d[i]) x1[i]=0; }
cout<<"Находим центр тяжести для найденного класса:"<<endl; //Среднее арифметическое X и Y и получем координаты центра тяжести int z; z=0; for(int i=0;i<5;i++) { z+=x1[i]; } double Cx=0,Cy=0; for(int i=0;i<5;i++) { Cx+=x[i]*x1[i]; Cy+=y[i]*x1[i]; } Cx=Cx/z; Cy=Cy/z; cout<<"Центр тяжести(координаты)= "<<Cx<<":"<<Cy<<endl; double d1[4]; d1[0]=abs(pow((Cx-x[0])*(Cx-x[0])+(Cy-y[0])*(Cy-y[0]),0.5)); d1[1]=abs(pow((Cx-x[2])*(Cx-x[2])+(Cy-y[2])*(Cy-y[2]),0.5)); d1[2]=abs(pow((Cx-x[3])*(Cx-x[3])+(Cy-y[3])*(Cy-y[3]),0.5)); d1[3]=abs(pow((Cx-x[4])*(Cx-x[4])+(Cy-y[4])*(Cy-y[4]),0.5)); cout<<endl; system("pause"); return 0; }
НАшел кусок кода реализации на делфи но мне это не помогло.
Код делфи
Код:
procedure TForm1.Button4Click(Sender: TObject); var i,j,d,n,m,f,l: integer; r: array of array of real; s,e,min, max: real; tk,p: array [1..10] of real; begin n:= StrToInt(Edit1.Text); m:= StrToInt(Edit2.Text); e:= StrToFloat(Edit3.Text); SetLength(r,n); for i:=0 to n-1 do SetLength(r[i],m); for i:=0 to n-1 do begin for j:=0 to m-1 do begin r[i][j]:= StrToFloat(StringGrid3.Cells[j+1,i+1]); end;end; min:=500; for i:=0 to n-1 do begin max:=-100; for j:=0 to m-1 do begin if(r[i][j] > max) then max:=r[i][j]; end; if(max < min) then min:=max; end; s:=min-e; for i:= 0 to n-1 do tk[i]:=0; f:=1; repeat max:=-1; for i:=0 to n-1 do begin p[i]:=0; for j:=0 to m-1 do begin if (r[i,j] < s) and(tk[j]=0) and(tk[i]=0)then p[i]:=p[i]+1; end; if (p[i]> max) then begin max:=p[i]; l:=i; end; end; tk[l]:=f; for i:=0 to n-1 do if (r[l][i]<s) then tk[i]:=f; f:=f+1; d:=0; for i:=0 to n-1 do if (tk[i]=0) then d:=1; until d=0; for i:=0 to f-1 do begin Memo1.Lines.Add('в таксон с центром '+IntToStr(i)+' вошли:'); for j:=0 to n-1 do begin if (tk[j]=i) then Memo1.Lines.Add(FloatToStr(tk[j]));; end; end; end;
Во еще одно описание алгоритма.
Шаг 1. Построить гиперсферу радиуса охватывающую все множество точек:
Шаг 2. Установить радиус гиперсферы и перенести центр сферы в любую из внутренних точек (расстояние до которых меньше радиуса):
Шаг 3. Вычислить новый центр тяжести и перенести в него центр сферы:
Шаг 4. Если новый центр тяжести отличается от предыдущего необходимо вернуться к шагу 2 и повторить цикл. Цикл будет повторяться до тех пор пока центр тяжести не перестанет смещаться. Таким образом, центр сферы перемещается в область локального сгущения точек. В предложенном примере центр сферы , поэтому: необходимо установить новый радиус сферы и перенести центр сферы в произвольную внутреннюю точку:
Шаг 5. Вычислить новый центр тяжести и перенести в него центр сферы. Новый центр тяжести , поэтому внутренние точки текущей сферы объединяются в таксон:
Шаг 6. Точки принадлежащие новому таксону исключаются из анализа и работа алгоритма повторяется с шага №1. И так до тех пор пока все точки не будут исключены из анализа:
парни подскажите пожалуйста.Какие из прототипов синтаксически правельны в с++ ? a) void foo(int x,int y=5 ,int); правильный? b)void foo(int,int,int,int y=5);правильный? c)void foo(int x;int y=5 );; d)void foo(int x,y=5 ); e)void foo(int x,int y= x); И еще .. Как можно предотвратить потерю данных в memcache a)установить максимальное время жизни при добавлении новой записи b)установить время жизни 0 при добавлении новой записи c)при чтении тут же ее перезаписывать,тем самым обновляя ее время жизни d)нет правильного ответ
Сейчас этот форум просматривают: Toplist и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения