永发信息网

求c语言编程用追赶法求解三对角方程组2x1+x2=1,x1+3x2+x3=2,x2+x3+x4=2,2x3+x4=0悬10分

答案:1  悬赏:0  手机版
解决时间 2021-03-22 17:32
求c语言编程用追赶法求解三对角方程组2x1+x2=1,x1+3x2+x3=2,x2+x3+x4=2,2x3+x4=0悬10分
最佳答案
//2x1+x2=1,x1+3x2+x3=2,x2+x3+x4=2,2x3+x4=0
#include "stdio.h"
#include "math.h"
#define MAXNUM 10 //变量数量
int array[MAXNUM][MAXNUM]={{2,1,0,0,1},{1,3,1,0,2},{0,1,1,1,2},{0,0,2,1,0}};

int unuse_result[MAXNUM];
int GaussFun(int equ,int var,int result[])
{
int i,j,k,col,num1,num2;
int max_r,ta,tb,gcdtemp,lcmtemp;
int temp,unuse_x_num,unuse_index;
col=0;
for (k=0;k {
max_r=k;
for (i=k+1;i {
if (abs(array[i][col])>abs(array[max_r][col]))
{
max_r=i;
}
}
if (max_r!=k)
{
for (j=k;j {
temp=array[k][j];
array[k][j]=array[max_r][j];
array[max_r][j]=temp;
}
}
if (array[k][col]==0)
{
k--;
continue;
}
for (i=k+1;i {
if (array[i][col]!=0)
{
num1=abs(array[i][col]);
num2=abs(array[k][col]);
while (num2!=0)
{
temp=num2;
num2=num1%num2;
num1=temp;
}
gcdtemp=num1;
lcmtemp=(abs(array[i][col])*abs(array[k][col]))/gcdtemp;
ta=lcmtemp/abs(array[i][col]);
tb=lcmtemp/abs(array[k][col]);
if (array[i][col]*array[k][col]<0)
{
tb=-tb;
}
for (j=col;j {
array[i][j]=array[i][j]*ta-array[k][j]*tb;
}
}
}
}
for (i=k;i {
if (array[i][col]!=0)
{
return -1;
}
}
if (k {
for (i=k-1;i>=0;i--)
{
unuse_x_num=0;
for (j=0;j {
if (array[i][j]!=0 && unuse_result[j])
{
unuse_x_num++;
unuse_index=j;
}
}
if (unuse_x_num>1)
{
continue;
}
temp=array[i][var];
for (j=0;j {
if (array[i][j]!=0 && j!=unuse_index)
{
temp=array[i][j]*result[j];
}
}
result[unuse_index]=temp/array[i][unuse_index];
unuse_result[unuse_index]=0;
}
return var-k;
}
for (i=var-1;i>=0;i--)
{
temp=array[i][var];
for (j=i+1;j {
if (array[i][j]!=0)
{
temp-=array[i][j]*result[j];
}
}
if (temp%array[i][i]!=0)
{
return -2;
}
result[i]=temp/array[i][i];
}
return 0;
}
void main()
{
int i,type;
int equnum,varnum;
int result[MAXNUM];
equnum=3;
varnum=3;
type=GaussFun(equnum,varnum,result);
if (type==-1)
{
printf("该方程无解!\n");
}
else if(type==-2)
{
printf("该方程有浮点数解,无整数解!\n");
}
else if (type>0)
{
printf("该方程有无穷多个解!自由变量数量为%d\n",type);
for (i=0;i {
if (unuse_result[i])
{
printf("x%d 是不确定的\n",i+1);
}
else
{
printf("x%d:%d\n",i+1,result[i]);
}
}
}
else
{
printf("该方程的解为:\n");
for (i=0;i {
printf("x%d=%d\n",i+1,result[i]);
}
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
万万没想到大家觉得哪集最搞笑,个人觉得孙悟
学高铁就业前景怎么样
城市精气神的标语,形容精气神的句子
单选题2000年,亚洲经济已开始复苏。人们在分
马栏街道劳动保障事务所我想知道这个在什么地
想问一下大佬哲学版就是R18版吗
与PLc连接的触摸屏的原理是什么?
问:过年相亲,聊的很好,后来男生约我出去玩
重力如何计算
绝地求生8倍镜98K使用技巧,怎么提高命中率?
海信电视怎样?
先付我一万工资,我给谁做三个月事
—Would you like some vegetables?—.A. You
为什么我的QQ卡卡号和密码都是12位的?
阅读理解It’sanightmareforHuazhongUniversi
推荐资讯
藤席好还是竹席好
大明光电地址在什么地方,想过去办事,
通州副中心如何连接北三县发展?
凤凰单枞怎么读
金星与地球走在绕太阳运转,那么金星上的一天
澳斯丹专卖店地址在哪,我要去那里办事
岳云鹏的五环之歌又什么特别的意思么?好笑在
破旧的厂房是翻新改造好,还是直接拆了重建好
2018哪些人的待遇要提高?
什么是会计人员进行自我教育,自我修养前提与
金莎美食城地址在哪,我要去那里办事
四喜鱼馆在哪里啊,我有事要去这个地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?