数学建模由鸡兔同笼问题抽象出的一类线性方程组的解法并用代码进
由鸡兔同笼问题抽象出的一类线性方程组的解法并用代码进行
实现
摘要:
线性方程组的解法,早在中国古代的数学著作《九章算术 方程》章中已作了比较完整的论述。其中所述方法实质上相当于现代的对方程组的增广矩阵施行初等行变换从而消去未知量的方法,即高斯消元法。在西方,线性方程组的研究是在 17 世纪后期由莱布尼茨开创的。他曾研究含两个未知量的三个线性方程组组成的方程组。麦克劳林在 18 世纪上半叶研究了具有二、三、四个未知量的线性方程组,得到了现在称为克莱姆法则的结果。克莱姆不久也发表了这个法则。 18世纪下半叶,法国数学家贝祖对线性方程组理论进行了一系列研究,证明了n元齐次线性方程组有非零解的条件是系数行列式等于零。
大量的科学技术问题,最终往往归结为解线性方程组。因此线性方程组的数值解法在计算数学中占有重要地位。本文将对一般线性方程组的解法进行探究。
关键字:线性方程组、高斯消元、矩阵
相关知识: 高斯消元法:
基本思想:用逐次消去未知数的方法把原方程组化为上三角形方程组进行
求解。
求解分为两步:
1、 消元过程:用初等行变换把原方程组的系数矩阵化为上三角形矩阵。 2、 回代过程:对上三角方程组的最后一个方程求解,将求得的解逐步往上
一个方程代入求解。
一、问题的提出
大约在1500年前,我国古代数学名著《孙子算经》中记载了一个有趣的问题。书中是这样叙述的:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?” 这四句话的意思是:有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。问笼中各有几只鸡和兔?
古人在《孙子算经》中是这样解决这个问题的:假设让鸡抬起一只脚,兔抬起两只脚,还有94÷2=47只脚;这时每只鸡一只脚,每只兔两只脚,笼子里只要有一只兔,则脚的总数就比头的总数多1;这时脚的总数与头的总数之差47-35=12,就是兔的只数。
这个问题虽然很容易就得到了解决,但是在继续进行“龟鹤同游”和“人狗同行”问题的研究时,我们发现 “鸡兔同笼”不只是代表着鸡、兔同笼的问题,
有很多类似的问题都可以看成是“鸡兔同笼”问题,如牛鸡问题、汽车和自行车的轮子问题等等。
所以,我们对这类问题进行抽象,以找出这一类问题的解法。
二、问题分析
对于“鸡兔同笼”问题不用方程的思想可以这样认为:
假设全是鸡:2×35=70(只), 比总脚数少的:94-70=24 (只) 兔:24÷(4-2)=12 (只) 鸡:35-12=23(只)
将“鸡兔同笼”问题中的“鸡”和“兔”分别抽象为“x”和“y”,于是上述问题转化为求解二元一次方程组:
针对“鸡兔同笼”的实际问题,其中假设的“x”和“y”都必须是非负整数,实际生活中的问题的解并不都是这样整齐的,于是我们继续将这个问题一般化,这一类的所有问题都可以归结为解方程组:
即Ax=b
其中,A=错误!未找到引用源。,b= 错误!未找到引用源。错误!未找到引用源。
对比看:这样,就将与“鸡兔同笼”同类问题抽象为求二元一次方程组的解的问题。利用以前所学习过的知识,上述问题很容易求得答案。于是这一类问题很容易的得到解决。
而在实际生活中,只存在两个变量的问题是很少的,例如下面的问题:
营养减肥食谱
剑桥减肥食谱——用33种食物精确提供31种营养现仅考虑三种食品三种营
同样将变量抽象为数学符号,设这三种食物的量分别为x1,x2,x3。 可列方程组:
其增广矩阵B为:
36511333 B 52347445
071.13
用高斯消元法对矩阵化简:
347445 52
B 027.46 38.231.85
0010.852.53 回代得解:x1=0.277,x2=0.392,x3=0.233.
为了提供所需要的蛋白质、碳水化合物和脂肪总量,食谱中需要包含0.277
单位的脱脂牛奶,0.392单位的大豆粉,0.233单位的乳清. 由上面问题可以看出,将问题抽象为数学符号并用二元一次方程组和三元一次方程组的方法求解会使问题更加清晰,把事物符号化也更容易向别人解释阐述。
三、问题的推广
在实现了三元一次方程组求解之后,我们希望找到更复杂问题的解,于是将方程推广为n元
其中的未知数。
如果用线性代数中的概念来表达,则线性方程组可以写成:
以及等等是已知的常数,而等等则是要求的
由于方程与未知数较多,计算较为复杂,为了更高效的求解,我们利用高斯消元法的思想用c语言编写程序,实现对n元线性方程组的求解。
四、程序代码
#include<math.h> #include<stdio.h> #define MAX 10
float a[MAX][MAX+1] ,ark; int r,n;
jiaohuan(int r,int k) {
float b; int i,j;
for(i=1;i<=n+1;i++) { }
for(i=1;i<=n;i++) {
for(j=1;j<=n+1;j++) b=a[r][i]; a[r][i]=a[k][i]; a[k][i]=b;
printf(" %fl",a[i][j]);
}
printf("\n");
}
printf("\n");
}
float maxr(int k) { int i; double zhu=0; for(i=k;i<=n;i++) { if(fabs(a[i][k])>zhu) { zhu=fabs(a[i][k]); r=i;
}
}
return zhu;
} main()
{ float x[MAX]; int k,i,j;
printf("\n高斯列主元消元法解线性方程组"); printf("\n 请输入方程组的维数:n="); scanf("%d",&n);
printf(" \n\n请输入系数矩阵a:\n"); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { printf("请输入a[%d][%d]=",i,j);
scanf("%f",&a[i][j]);
}
}
for(i=1;i<=n;i++)
{ printf("\n请输入b[%i]=",i);
scanf("%f",&a[i][n+1]);
}
for(k=1;k<=n-1;k++) { ark=maxr(k); if(ark==0)
{ printf("\n系数为零错误,即将退出!"); }
else if(r!=k)
jiaohuan(r,k);
for(i=k+1;i<=n;i++) { for(j=k+1;j<=n+1;j++) { a[i][j]=a[i][j]-a[k][j]*a[i][k]/a[k][k]; }
}
for(i=k+1;i<=n;i++) { a[i][k]=0; }
for(i=1;i<=n;i++) { for(j=1;j<=n+1;j++) { printf(" %fl",a[i][j]); }
printf("\n");
}
printf("\n");
}
x[n]=a[n][n+1]/a[n][n]; for( k=n-1;k>=1;k--) { float me=0; for(j=k+1;j<=n;j++)
{ me=me+a[k][j]*x[j];
}
x[k]=(a[k][n+1]-me)/a[k][k]; }
printf("\n回代求得:\n"); for(i=1;i<=n;i++)
{ printf(" \tx%d=%f",i,x[i]); }
printf("\n"); }
在VC++6.0上运行程序,试解一个四元一次方 …… 此处隐藏:1705字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [文秘资料]班长职务辞职报告
- [文秘资料]完美的辞职报告
- [文秘资料]经典的员工辞职报告
- [文秘资料]医院口腔医生辞职报告
- [文秘资料]总经理辞职报告范文四篇
- [文秘资料]超市职员个人辞职报告
- [文秘资料]村妇联主任的辞职报告
- [文秘资料]辞职报告书格式
- [文秘资料]酒店辞职报告简单范文
- [文秘资料]联通的辞职报告
- [文秘资料]2017最新私企员工辞职报告范文
- [文秘资料]2019年度医院基层党组织书记抓党建述职
- [文秘资料]工作时间长辞职报告
- [文秘资料]辞职报告怎么写出来
- [文秘资料]个人能力原因辞职报告
- [文秘资料]网络工程师辞职报告
- [文秘资料]项目部辞职报告
- [文秘资料]缝纫工辞职报告怎么写
- [文秘资料]XXX州委书记述职报告
- [文秘资料]抓基层党建工作述职报告
- (王虎应老师讲课记录)六爻理象思维
- 八个常见投影机故障排除法
- 质量专业综合知识(中级)第一章质量管理
- 煤矿班组建设实施意见
- 我国快餐业与肯德基经营模式的比较与分
- 汽车保险杠模具标准化模架技术工艺研究
- 汽车二级维护作业团体赛比赛规程
- 装卸搬运工安全操作规程
- 高效的工作方法-刘铁
- 依据《生产安全事故报告和调查处理条例
- 2015专业PS夜景亮化效果图制作教程
- 企业劳动定额定员浅析
- 中枢神经系统医学影像学本科五年制第五
- 长城汽车参观探营第三站:研发试验中心
- 小升初语文专项训练
- 建筑工程质量检测资质分类与等级标准
- 周燕珉-我国养老社区的发展现状与规划
- 《生命里最后的读书会》读后感
- 实验室管理评审报告
- CCNA思科网院教程精华之网络基础知识




