C语言实现单纯行法与对偶单纯行法
某次为了完成课程要求所做:
单纯形法代码如下,使用方法修改二位数组A[ip][jp],
#include<stdio.h>
#define ip 3
#define jp 7
int i,j,m,n,flag=1;
float max=-1,min=1000,guiyi;
float C[jp-1]={
-100,-100,100,0,0,0};
float A[ip][jp]={
{
1,1,2,1,0,0,-1},{
1,1,-1,0,1,0,-1},{
-1,1,1,0,0,1,-1}};
float X[ip]={
0,0,0};
float zc[jp-1]={
0};
int ji[ip]={
3,4,5};//第3、4、5为4.5.6前系数
void show();
void jinji();
void chuji();
void trans();
void show_result();
int main()
{
char c;
//初始矩阵显示
show();
//计算矩阵的判别数 记录大于0的最大的判别数 确认进基变量
jinji();
while(flag==1)
{
//确认出基变量
chuji();
//初等行变换
trans();
//初等行变换后结果
show();
//计算矩阵的判别数 记录大于0的最大的判别数 确认进基变量
jinji();
flag=0;
for(j=0;j<jp-1;j++)
{
if(zc[j]>0)
flag=1;
}
}
show_result();
c=getchar();
return 0;
}
void show()
{
printf(" ") ;
for(j=0;j<jp-1;j++)//显示x1~x6
{
printf("x%d ",j+1);
}
printf("\n");
for(i=0;i<ip;i++)
{
printf("x%d ",ji[i]+1);
for(j=0;j<jp;j++)
{
if(A[i][j]>=0)
printf(" ");
printf("%.2f ",A