c++中printf为什么打印不出来,大佬解救一下

#include<iostream>
using namespace std;

double test(double a, double b)  //定义函数。求c=-sgn(A[r][r])d
{
    double c;
    if (a > 0)
    {
        c = -b;
    }
    else if (a == 0)
    {
        c = b;
    }
    else
    {
        c = b;
    }
    return c;
}
void Hessenberg(double A[10][10]) //以下为矩阵的拟上三角化An-1
{
    int i, j, r;
    double d = 0, c, h, t, v[10]{}, u[10]{}, p[10]{}, qT[10]{};//避免矩阵之间相乘,设定向量与矩阵相乘
    //其中qT为行向量,其余为列向量
    for (r = 0; r < 8; r++)  //最外层大循环,循环8次
    {
        for (i = 0; i < 10; i++)
        {
            if (i < r + 1) { v[i] = 0; }
            else { v[i] = A[i][r]; }
            d += v[i] * v[i];
        }
        d = sqrt(d);          //计算v[10]的模长
        c = test(A[r + 1][r], d);
        for (i = 0; i < 10; i++) //计算u[10]
        {
            if (i < r + 1) { u[i] = 0; }
            else if (i = r + 1) { u[i] = A[i][r] - c; }
            else { u[i] = A[i][r]; }
        }
        h = c * c - c * A[r + 1][r];//计算u[10]T*u[10]/2

        for (i = 0; i < 10; i++)// p[10]=A[10][10]*u[10]/h
        {
            for (j = 0; j < 10; j++)
            {
                p[i] += A[i][j] * u[j];
            }
            p[i] = p[i] / h;
        }
        for (i = 0; i < 10; i++)//qT[10]=u[10]T*A[10][10]/h 。qT[10]为行向量
        {
            for (j = 0; j < 10; j++)
            {
                qT[i] += u[j] * A[j][i];
            }
            qT[i] = qT[i] / h;
        }
        t = 0;
        for (i = 0; i < 10; i++) // t=u[10]T*A[10][10]*u[10]/h^2
        {
            t += u[i] * p[i];
        }
        t = t / h; //t是一个数
        //计算Ar + 1;
        for (i = 0; i < 10; i++) // Ar+1=Ar-(p*uT)-(u*qT)+(t*u*uT)
        {
            for (j = 0; j < 10; j++)
            {
                A[i][j] = A[i][j] - p[i] * u[j] - u[i] * qT[j] + t * u[i] * u[j];
            }
        }
    }
    
}//拟上三角化
 int main()
{
    double arr[10][10]{};
    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 10; j++)
        {
            if (i != j)
            {
                arr[i][j] = sin((0.5 * ((double)i  + 1) + 0.2 * ((double)j + 1)));
            }
            else
            {
                arr[i][j] = 1.52 * cos((((double)i + 1) + 1.2 * ((double)j + 1)));
            }
        }
    }//输入矩阵

    Hessenberg(arr);
    printf("输出拟上三角A(n-1)为:\n");
        for(int i=0;i<10;i++)
        {
            for (int j = 0; j < 10; j++)
            {
                printf("%.12f", arr[i][j]);
            }
        }
        fflush(stdout);
    system("pause");
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值