追赶法求解方程组(C语言)

编写用追赶法解三对角线方程组的程序,并解下列方程组:

这里写图片描述

#include<stdio.h>
#include<math.h>
void main()
{
    int i;
    int n=4;

    float x[4];
    float c[4][5]={2,-1,0,0,5,
                   -1,2,-1,0,-12,
                   0,-1,2,-1,11,
                   0,0,-1,2,-1};

    float y[10];
    float d[10][11]={-4,1,0,0,0,0,0,0,0,0,-27,
                     1,-4,1,0,0,0,0,0,0,0,-15,
                     0,1,-4,1,0,0,0,0,0,0,-15,
                     0,0,1,-4,1,0,0,0,0,0,-15,
                     0,0,0,1,-4,1,0,0,0,0,-15,
                     0,0,0,0,1,-4,1,0,0,0,-15,
                     0,0,0,0,0,1,-4,1,0,0,-15,
                     0,0,0,0,0,0,1,-4,1,0,-15,
                     0,0,0,0,0,0,0,1,-4,1,-15,
                     0,0,0,0,0,0,0,0,1,-4,-15};

    void zhui(float *,int,float[]);
    zhui(c[0],4,x); 
        zhui(d[0],10,y);    
    for(i=0;i<=3;i++)printf("x[%d]=%f\n",i+1,x[i]);
    printf("\n");
    for(i=0;i<=9;i++)printf("x[%d]=%f\n",i+1,y[i]); 
}
//追赶法
void zhui(float *u,int n,float x[])
{
    int i,j;
    float p;

for(i=1;i<=n-1;i++)
    {
        p=*(u+i*(n+1)+i-1)/(*(u+(i-1)*(n+1)+i-1));
        *(u+i*(n+1)+i-1)=0;
        *(u+i*(n+1)+i)-=p*(*(u+(i-1)*(n+1)+i));
        *(u+i*(n+1)+n)-=p*(*(u+(i-1)*(n+1)+n));
    }

    x[n-1]=(*(u+(n-1)*(n+1)+n))/(*(u+(n-1)*(n+1)+n-1));
    for(j=n-2;j>=0;j--)
    {

        x[j]=((*(u+j*(n+1)+n))-x[j+1]*(*(u+j*(n+1)+j+1)))/(*(u+j*(n+1)+j));
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值