用c语言编程求线性方程组的解
发布时间:2025-05-13 09:40:57 发布人:远客网络
一、用c语言编程求线性方程组的解
给,下面的代码已经编译运行确认,肯定好用了,试试吧:)
printf("\n用gauss列主元消元法解线性方程组");
printf("\n1.解方程组请按enter.");
printf("\n2.退出程式请按esc.");
printf("\n现在输入系数矩阵a和向量b:");
printf("\n请输入a%d1--a%d%d系数和向量b%d:
/*实现将每一行中的系数和向量一次性输入,数之间用空格格开,输完后回车确定*/
/*判断方程是否为线性方程,即是否合法*/
printf("\n此方程组不合法!");message();
a[i][j]=a[i][j]-a[k][j]*a[i][k]/a[k][k];
printf("\nx%d=%f",i,x[i]);
default:{printf("\n不合法的输入!");message();}
二、如何用C语言解二元一次方程组
给定一个二元一次方程组,形如:
x,y代表未知数,a, b, c, d, e, f为参数。
0<= a, b, c, d, e, f<= 2147483647。
二元一次方程组是由两个含有两个未知数的方程组成的,要求解,就要把二元转化为一元。由二元一次方程组的解法思想知,要把二元转化为一元.
C语言解求二元一次方程:(顺序消元法)
“消元”是解二元一次方程的基本思路。所谓“消元”就是减少未知数的个数,使多元方程最终转化为一元方程再解出未知数。这种将方程组中的未知数个数由多化少,逐一解决的想法,叫做消元思想。
因为在求解过程中只有数之间的运算,而没有整个式子的运算,因此这种方法被广泛地用于计算机中。
三、用C语言编写解二元一次方程的程序
1、不存在某个变量系数为 0的情况(即总是二元方程);
2、不考虑小数,其实考虑小数也简单,你可以自己思考如何实现。
3、首先,使用 scanf()将回车之前的整个字符串扫描进来,放进 str变量中;
4、之后,分别以 x y=为界,找到它们分隔的三个字符串,即从 str的第一位开始循环,当遇到'x'时,停止并将之前的所有字符存到 x的系数字符串 xStr中,再从 x之后开始寻找,遇到'y'时将找到的'x'与'y'之间的字符存到 y的系数字符串 yStr中,再向后从'='开始直到结束,存为结果字符串 sumStr。
5、这样,我们得到的三个字符串都具有相同的格式,一定可以通过某种方式将其转换为一个数字,使用同一个函数就可以做到。
6、对于某个字符串来说,它可能是以负号'-'开头,也可能以正号开头'+',也可能没有符号,也可能为空,分别考虑:以负号开头的,将其作为负数,以正号开头或没有符号的,将其作为正数;为空的字符串将其视为 1。
7、截取符号之后,如果没有剩余字符了,将其视为 1,再与符号相乘,就是最终结果。
8、如果还有剩余,那么之后的字符都是纯数字了(不考虑小数),从字符串的最后一位往前开始循环,下标记为 i(从0开始一直到最前面的数字位数),每一位字符记为 ch,则 n=(int)(ch-'0')就是当前字符所代表的数字,用 n*pow(10, i)就得到了当前数字的实际值,把所有的乘积都加起来,就得到了总的系数的绝对值,再乘以符号,就得到了系数值。
9、实现了这个部分之后,假设的情况也可以一一实现了,无非就是标记归属的问题。我没有贴代码是因为我看到你问的问题非常认真,我希望你可以通过我的描述自己去实现它。这里用到了一些字符串相关的函数,例如 strlen(str)可以获得 str字符串的长度,strncpy(dest, src, 3)可以将 src字符串的前三位拷贝到 dest字符串中,strncpy(dest, src+3, 3)可以将 src字符串的 4~7位拷贝到 dest字符串中。