powell算法求解惩罚函数内点法 用c语言实现 谁会 急!!!!

如题所述

第1个回答  2016-05-20
#include#definestacksize100//假定预分配的栈空间最多为100个元素typedefcharelementtype;//假定栈元素的数据类型为字符,在此处可以自行设置typedefstruct{elementtypedata[stacksize];inttop;}seqstack;//置空栈voidinitstack(seqstack*s){s->top=-1;//解释一下,s->top指向的是当前栈顶元素的位置//当要向栈中添加一个新元素时,要先将s->top增加1,//此时s->top指向的就是新元素要添加的位置了。//所以当栈为空时,填加第一元素时,top加1后//s->top的值就变为0,也就是第一个元素的位置了。}//判栈空intstackempty(seqstack*s){if(s->top==-1)return1;//若相等就返回1,否则为0elsereturn0;}//入栈voidpush(seqstack*s,elementtypex){if(s->top==stacksize-1)//进栈前判断栈是否已经满了printf("stackoverflow\n");else{s->top=s->top+1;s->data[s->top]=x;}}//出栈elementtypepop(seqstack*s){if(stackempty(s))//出栈前先判断当前栈中是否有内容printf("stackisempty\n");else{returns->data[s->top--];//出栈后s->top的值会自减1}}//取栈顶元素(只是想知道栈顶的值,并没有出栈)elementtypegettop(seqstack*s){if(stackempty(s)){printf("stackalreadyempty.\n");}elsereturns->data[s->top];}intmain(){elementtypex;seqstack*s;//定义一个栈,用指针的方式定义的initstack(s);//想初始化定义好的栈//当栈为空时调用出栈操作pop(s);//向栈中添加一个元素apush(s,'a');//观察此时的栈顶元素x=gettop(s);printf("%c\n",x);//再添加一个元素bpush(s,'b');//观察此时的栈顶元素x=gettop(s);printf("%c\n",x);//弹出栈顶的元素x=pop(s);printf("%c\n",x);//观察弹出后栈顶元素的变化情况x=gettop(s);printf("%c\n",x);return0;}追问

我的目标函数是(0.18851/10000*x1*x1*x2*x3)-(1/(1.5*x1/x2+0.35*x3-5.3)+1/(4-x2/x1)+1/(x2/x1-16)+1/(x1+x2-22)) 能用鲍威尔算法写成c程序么

相似回答