Doolittle算法C语言实现
生活随笔
收集整理的這篇文章主要介紹了
Doolittle算法C语言实现
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
首先簡(jiǎn)單講解一下Doolittle:
看懂公式就能寫(xiě)出代碼了。
#include <stdio.h>
#include <math.h>
/*
4
2 10 0 -3
-3 -4 -12 13
1 2 3 -4
4 14 9 -13*/
void Doo()
{int n;int i,j,k;int mi;double mx,tmp;double a[20][20],b[20],x[20],y[20];double l[20][20],u[20][20];printf("\ninput n \n");scanf("%d",&n);printf("\ninput A:\n");for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%lf",&a[i][j]);}}for(i=0;i<n;i++)l[i][i]=1;for(k=0;k<n;k++){for(j=k;j<n;j++){u[k][j]=a[k][j];for(i=0;i<=k-1;i++){u[k][j]-=(l[k][i]*u[i][j]);}}for(i=k+1;i<n;i++){l[i][k]=a[i][k];for(j=0;j<=k-1;j++)l[i][k]-=(l[i][j]*u[j][k]);l[i][k]/=u[k][k];}}for(i=0;i<n;i++)//Ly=b{y[i]=b[i];for(j=0;j<=i-1;j++)y[i]-=(l[i][j]*y[j]);}for(i=n-1;i>=0;i--)//Ux=y{x[i]=y[i];for(j=i+1;j<n;j++)x[i]-=(u[i][j]*x[j]);x[i]/=u[i][i];}printf("L:\n");for(i=0;i<n;i++){for(j=0;j<n;j++){printf("%lf ",l[i][j]);}printf("\n");}printf("U:\n");for(i=0;i<n;i++){for(j=0;j<n;j++){printf("%lf ",u[i][j]);}printf("\n");}
}int main()
{int flag=1;while(flag){Doo();printf("\npress 0 to end.\n");scanf("%d",&flag);}return 0;
}
?
總結(jié)
以上是生活随笔為你收集整理的Doolittle算法C语言实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 求一个关于时间个性签名
- 下一篇: Python数据挖掘:数据转换-数据规范