单纯形法c语言Word格式.docx

上传人:b****2 文档编号:5206554 上传时间:2023-05-04 格式:DOCX 页数:17 大小:16.63KB
下载 相关 举报
单纯形法c语言Word格式.docx_第1页
第1页 / 共17页
单纯形法c语言Word格式.docx_第2页
第2页 / 共17页
单纯形法c语言Word格式.docx_第3页
第3页 / 共17页
单纯形法c语言Word格式.docx_第4页
第4页 / 共17页
单纯形法c语言Word格式.docx_第5页
第5页 / 共17页
单纯形法c语言Word格式.docx_第6页
第6页 / 共17页
单纯形法c语言Word格式.docx_第7页
第7页 / 共17页
单纯形法c语言Word格式.docx_第8页
第8页 / 共17页
单纯形法c语言Word格式.docx_第9页
第9页 / 共17页
单纯形法c语言Word格式.docx_第10页
第10页 / 共17页
单纯形法c语言Word格式.docx_第11页
第11页 / 共17页
单纯形法c语言Word格式.docx_第12页
第12页 / 共17页
单纯形法c语言Word格式.docx_第13页
第13页 / 共17页
单纯形法c语言Word格式.docx_第14页
第14页 / 共17页
单纯形法c语言Word格式.docx_第15页
第15页 / 共17页
单纯形法c语言Word格式.docx_第16页
第16页 / 共17页
单纯形法c语言Word格式.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单纯形法c语言Word格式.docx

《单纯形法c语言Word格式.docx》由会员分享,可在线阅读,更多相关《单纯形法c语言Word格式.docx(17页珍藏版)》请在冰点文库上搜索。

单纯形法c语言Word格式.docx

ro-1)

fprintf(write,"

x_b[i]);

else

rj"

for(j=0;

j<

lin;

j++)

if(i==out&

&

j==in)

fprintf(write,"

%6.2f*"

arra[i][j]);

else

%7.2f"

\n"

}

80;

-"

}

voidarray_conv(floatarra[][N],intro,intlin,intin,intout)

floattemp;

temp=arra[out][in];

arra[out][i]/=temp;

if(i!

=out)

{

temp=arra[i][in];

for(j=0;

arra[i][j]-=temp*arra[out][j];

}

intb_to_x(floatarra[][N],float*bx,int*xB,intro,intlin,intin)

inti,j,k=0;

floatmin;

ro-1;

if(arra[i][in]>

-1e-5)

bx[i]=arra[i][lin-1]/arra[i][in];

k=1;

bx[i]=M;

if(k==0)returnM;

min=bx[0];

j=0;

for(i=1;

if(bx[i]<

min)

min=bx[i];

j=i;

elseif((bx[i]-min)>

-1e-5&

(bx[i]-min)<

1e-5)

if(xB[i]>

xB[j])

j=i;

returnj;

intc_in(floatarra[][N],intro,intlin)

min=arra[ro-1][0];

if(arra[ro-1][i]<

min=arra[ro-1][i];

if(min>

returnM;

else

returnj;

voidsmj()

floatxx[N];

row;

array[i][line]=b[i];

line;

array[row][i]=c[i];

array[row][line]=0;

xb[row-1-i]=line-i;

in_basic=c_in(array,row+1,line+1);

out_basic=b_to_x(array,b_x,xb,row+1,line+1,in_basic);

print(in,array,xb,row+1,line+1,in_basic,out_basic);

while(in_basic!

=M)

if(in_basic!

xb[out_basic]=in_basic+1;

array_conv(array,row+1,line+1,in_basic,out_basic);

in_basic=c_in(array,row+1,line+1);

out_basic=b_to_x(array,b_x,xb,row+1,line+1,in_basic);

print(in,array,xb,row+1,line+1,in_basic,out_basic);

if(out_basic==M)

fprintf(in,"

\n找不到出基变量,LP问题无解!

break;

if(out_basic!

j=0;

for(i=0;

if(array[row][i]>

j++;

if(j<

line-row)

\nLP问题有无穷最优解,其中之一如下:

fprintf(in,"

\nf*=%f\n"

-array[row][line]);

x*=("

xx[i]=0;

xx[xb[i]-1]=array[i][line];

%6.2f"

xx[i]);

)T\n"

voidconv()

floattemp[N];

array[i][line]=array[i][line+row+flag];

temp[i]=array[row][xb[i]-1];

line+1;

array[row][i]-=temp[j]*array[j][i];

//

找不到出基变量,LP问题无解!

"

\nLP问题有无穷最优解,其中之一如下:

x*=("

voidconve()

inti,j=0,k;

while(j!

=1)

k=0;

if(xb[i]>

line)

{

k=i;

}

if(j!

=0)

out_basic=k;

for(i=0;

for(k=0;

k<

k++)

if(xb[k]==(i+1))

break;

if(k==row)

{

in_basic=i;

break;

}

array_conv(array,row+1,line+row+1,in_basic,out_basic);

print(in,array,xb,row+1,line+row+1,in_basic,out_basic);

if(j==0)

j=1;

conv();

voidlinezecon(intzl)

inti,j,k,li;

li=row;

k=zl;

while(k!

=N+1)

for(i=k;

li-1;

xb[i]=xb[i+1];

line+row+1;

for(j=k;

array[j][i]=array[j+1][i];

li--;

k=N+1;

li;

break;

if(k!

if(array[k][i]>

1e-5||array[k][i]<

-1e5)

if(i<

k=N+1;

j=1;

array[li][i]=array[row][i];

flag=row-li;

row=li;

if(j==0)

conv();

conve();

void_smj()

inti,j,k;

fprintf(in,"

\n建立辅助LPminw="

row-1;

x%d+"

line+1+i);

x%d\n\n"

line+row);

for(j=line;

line+row;

if(i==j-line)

array[i][j]=1;

array[i][j]=0;

array[i][line+row]=b[i];

c[i+line]=0;

array[row][i]=0;

temp=0;

for(k=0;

temp+=array[k][i];

array[row][i]=-temp;

temp=0;

temp+=array[i][line+row];

array[row][line+row]=-temp;

xb[i]=line+i+1;

in_basic=c_in(array,row+1,line+row+1);

out_basic=b_to_x(array,b_x,xb,row+1,line+row+1,in_basic);

print(in,array,xb,row+1,line+row+1,in_basic,out_basic);

array_conv(array,row+1,line+row+1,in_basic,out_basic);

in_basic=c_in(array,row+1,line+row+1);

out_basic=b_to_x(array,b_x,xb,row+1,line+row+1,in_basic);

print(in,array,xb,row+1,line+row+1,in_basic,out_basic);

if((array[row][line+row]>

1e-5)||(array[row][line+row]<

-1e-5))

因为:

f*=%5.2f!

=0\n原LP问题没有最优解!

-array[row][line+row]);

LP问题进入第二阶段。

\n\n"

conv();

conve();

linezecon(k);

main()

chard='

a'

;

charname[50]="

d:

\\dcxf\\"

printf("

\n************单纯形法求解程序**************\n\n"

请输入矩阵A的行数:

scanf("

%d"

&

row);

请输入矩阵A的列数:

line);

请输入向量c'

="

scanf("

%f"

c[i]);

请输入向量b'

b[i]);

请输入矩阵A为:

scanf("

array[i][j]);

i=0;

while(name[i]!

='

\0'

)i++;

\n请输入输出文件名:

%s"

name+i);

name[i++]='

.'

t'

x'

name[i]='

if((i=access("

\\dcxf"

0))==-1)

system("

mkdird:

if((in=fopen(name,"

w"

))==NULL)

printf("

\n\n文件打不开!

exit(0);

\n\n---------------输入的数据如下-------------------\n\n"

A=\n"

array[i][j]);

\n"

\n\n\tc'

=("

c[i]);

)\n"

\n\tb'

b[i]);

\n---------------具体步骤如下-------------------\n\n"

\n是否是典范式LP?

[y/n]"

while(d!

y'

d!

n'

%c"

d);

if(d=='

smj();

_smj();

\n----------------------END----------------------------\n"

fclose(in);

\n\tWaiting...\n"

system(name);

\n--------------Ok!

----------------\n"

\n\n*********结束**********\n\n"

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2