欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c語言計算線性函數(shù) c語言運(yùn)算函數(shù)詳解

用c語言編程求線性方程組的解

#include "stdlib.h"

10年積累的成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有黃陵免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

#include "math.h"

#include "stdio.h"

int rgauss(n,a,b)

int n;

double a[],b[];

{ int *js,l,k,i,j,is,p,q;

double d,t;

js=malloc(n*sizeof(int));

l=1;

for (k=0;k=n-2;k++)

{ d=0.0;

for (i=k;i=n-1;i++)

for (j=k;j=n-1;j++)

{ t=fabs(a[i*n+j]);

if (td) { d=t; js[k]=j; is=i;}

}

if (d+1.0==1.0) l=0;

else

{ if (js[k]!=k)

for (i=0;i=n-1;i++)

{ p=i*n+k; q=i*n+js[k];

t=a[p]; a[p]=a[q]; a[q]=t;

}

if (is!=k)

{ for (j=k;j=n-1;j++)

{ p=k*n+j; q=is*n+j;

t=a[p]; a[p]=a[q]; a[q]=t;

}

t=b[k]; b[k]=b[is]; b[is]=t;

}

}

if (l==0)

{ free(js); printf("fail\n");

return(0);

}

d=a[k*n+k];

for (j=k+1;j=n-1;j++)

{ p=k*n+j; a[p]=a[p]/d;}

b[k]=b[k]/d;

for (i=k+1;i=n-1;i++)

{ for (j=k+1;j=n-1;j++)

{ p=i*n+j;

a[p]=a[p]-a[i*n+k]*a[k*n+j];

}

b[i]=b[i]-a[i*n+k]*b[k];

}

}

d=a[(n-1)*n+n-1];

if (fabs(d)+1.0==1.0)

{ free(js); printf("fail\n");

return(0);

}

b[n-1]=b[n-1]/d;

for (i=n-2;i=0;i--)

{ t=0.0;

for (j=i+1;j=n-1;j++)

t=t+a[i*n+j]*b[j];

b[i]=b[i]-t;

}

js[n-1]=n-1;

for (k=n-1;k=0;k--)

if (js[k]!=k)

{ t=b[k]; b[k]=b[js[k]]; b[js[k]]=t;}

free(js);

return(1);

}

徐世良老師的.原地工作全選主元的高斯消元.用的符號有點(diǎn)詭異,而且將矩陣以線性表輸入的.

我也寫過一個,不過估計你不太喜歡用我的,這個用來解b也是矩陣的.

#include stdio.h

#include stdlib.h

#include math.h

void swap(double *a,double *b){

double temp;

temp=*a;

*a=*b;

*b=temp;

}

void printMatrix(int n,int m,double **a){

int i,j;

for (i=0;in;i++){

for (j=0;jm;j++) printf("%e\t",a[i][j]);

printf("\n");

}

}

int rgauss(int n,int m,double **a,double **b){//,double *det){

int *colex,rowex,s,i,j,k;

double d,t;

// *det=1;

s=0;

colex=malloc(n*sizeof(int));

for (k=0;kn;k++){

d=0.0;

for (i=k;in;i++){

for (j=k;jn;j++){

t=fabs(a[i][j]);

if (td){

d=t;

colex[k]=j;

rowex=i;

}

}

}

if (d+1.0==1.0){

free(colex);

printf("Singular Matrix!\n");

return 0;

}

else{

if (colex[k]!=k){

for (i=0;in;i++)

swap(a[i]+colex[k],a[i]+k);

s=s+colex[k]-k;

}

if (rowex!=k){

for (j=0;jn;j++)

swap(a[rowex]+j,a[k]+j);

for (j=0;jm;j++)

swap(b[rowex]+j,b[k]+j);

s=s+rowex-k;

}

}

d=a[k][k];

// *det=*det*d;

for (j=k+1;jn;j++) a[k][j]/=d;

for (j=0;jm;j++) b[k][j]/=d;

for (i=k+1;in;i++){

for (j=k+1;jn;j++)

a[i][j]-=a[i][k]*a[k][j];

for (j=0;jm;j++)

b[i][j]-=a[i][k]*b[k][j];

}

}

for (i=n-2;i-1;i--)

for (j=i+1;jn;j++)

for (k=0;km;k++)

b[i][k]-=a[i][j]*b[j][k];

colex[n-1]=n-1;

for (i=n-1;i-1;i--)

if (colex[i]!=i)

for (j=0;jm;j++) swap(b[colex[i]]+j,b[i]+j);

// if (s1) *det=-*det;

return 1;

}

void main(){

#define N 2

#define M 1

double input_a[]={1,1,1,2};

double input_b[]={1,2};

double *a[N],*b[N];

int i;

for (i=0;iN;i++){

a[i]=input_a+N*i;

b[i]=input_b+M*i;

}

rgauss(N,M,a,b);

printf("方程解為:\n");

printMatrix(N,M,b);

printf("\n");

}

用c語言程序?qū)懸粋€函數(shù),求線性代數(shù)方程組AX=b,要有通用性。非常感謝幫忙。

高斯-賽德爾迭代法

#include stdio.h

#include conio.h

#include alloc.h

#include math.h

#define N 100

float *GauseSeidel(float *a,int n)

{

int i,j,nu=0;

float *x,dx;

x=(float *)malloc(n*sizeof(float));

for(i=0;i =n-1;i++)

x[i]=0.0;

do

{

for(i=0;i =n-1;i++)

{

float d=0.0;

for(j=0;j =n-1;j++)

d+=*(a+i*(n+1)+j)*x[j];

dx=(*(a+i*(n+1)+n)-d)/(*(a+i*(n+1)+i));

x[i]+=dx;

}

if(nu =N)

{

printf( "迭代發(fā)散\n ");

exit(1);

}

nu++;

}

while(fabs(dx) 1e-6);

return x;

}

main()

{

int i;

float *x;

float c[12]={5,2,1,8,2,8,-3,21,1,-3,-6,1};

float *GauseSeidel(float *,int);

x=GauseSeidel(c,3);

clrscr();

for(i=0;i =2;i++)

printf( "x[%d]=%f\n ",i,x[i]);

getch();

}

c語言如何定義一個線性函數(shù)y=kx+b的系數(shù)k,b,從鍵盤讀取這兩個系數(shù),并讀取任意?

float k,b,x,y;

printf("請輸入k,b:");

scanf("%f%f",k,b);

printf("請輸入x:");

scanf("%f",x);

y=k*x十b;

printf("y=%f\n",y);

c語言解線性方程組的編程題 【做的好會多給分】

以下算法的適用條件:A的各階主子式不為零

另外還可以采用

直接法:

消元法:Gauss-Jordan消元法,

分解法:Dolittle分解 (我用的是Courant分解法),追趕法,對稱正定矩陣的LDL‘分解

----------

迭代法:

Jacobi迭代

Gauss-Seidel迭代

松弛迭代

-----------------

你上網(wǎng)可以搜索一下,或者看看數(shù)值計算方面的書

OK, 你看看這個, 另外還加了注釋 :

Courant分解算法:

aX = b, 作 A=LU, L是下三角矩陣, U是上三角矩陣

即L =

| L11

| L21 L22

| L31 L32 L33

| ..............

| Ln1 Ln2 ........Lnn

U =

| 1 U12 ..... U1n

| 空格 1 ..... U2n

| 空格 空格 ........

| 空格 空格 空格 空格 空格1

---------------------------------------------------

aX = b ----- LUX = b

記 UX = y,

由Ly = b得到

因?yàn)闊o法輸出數(shù)學(xué)符號,以下采用[i, j]Ai 表示對Ai從i到j(luò)求和

yi = (bi - [j=1, i-1]Lij yj) / Lii i = 1, 2, ..., n

由UX = y得到

xi = yi - [j=i+1, n]uij xj j = n, n-1, ..., 2, 1

你在紙上驗(yàn)證一下就明白了

--------------------------------------------------------------

以下采用Courant分解 解 aX = b, 經(jīng)檢查,程序運(yùn)行正確

這是運(yùn)行結(jié)果:

--------------------------------------------------------------

Input n value(dim of Ax=b): 3

Now input the matrix a(i, j), i, j = 0, ..., 2:

1 2 1 -2 -1 -5 0 -1 6

Now input the matrix b(i), i = 0, ..., 2:

24 -63 50

Solve...x_i =

7.000000

4.000000

9.000000

--------------------------------------------------------------

#include "stdafx.h"

#include stdio.h

#include math.h

#define MAX_N 20

int main(int argc, char* argv[])

{

int n; // 未知數(shù)個數(shù)

int i, j, k;

static double a[MAX_N][MAX_N], b[MAX_N], x[MAX_N], y[MAX_N];

static double l[MAX_N][MAX_N], u[MAX_N][MAX_N];

printf("\nInput n value(dim of Ax=b): ");

scanf("%d", n);

if(n MAX_N)

{

printf("The input n is larger than MAX_N, please redefine the MAX_N.\n");

return 1;

}

if(n = 0)

{

printf("Please input a number between 1 and %d.\n", MAX_N);

return 1;

}

// {{ 程序輸入

printf("Now input the matrix a(i, j), i, j = 0, ..., %d:\n", n-1);

for (i=0; in; i++)

for (j=0; jn; j++)

scanf("%lf", a[i][j]);

printf("Now input the matrix b(i), i = 0, ..., %d:\n", n-1);

for(i=0; in; i++)

scanf("%lf", b[i]);

// }} 程序輸入

for(i=0; in; i++)

u[i][i] = 1; //

for(k=0; kn; k++)

{

for(i=k; in; i++) // 計算L的第k列元素

{

l[i][k] = a[i][k];

for(j=0; j=k-1; j++)

l[i][k] -= (l[i][j]*u[j][k]);

}

for(j=k+1; jn; j++) //計算U的第k行元素

{

u[k][j] = a[k][j];

for(i=0; i=k-1; i++)

u[k][j] -= (l[k][i]*u[i][j]);

u[k][j] /= l[k][k];

}

}

for(i=0; in; i++) // 解Ly = b

{

y[i] = b[i];

for(j=0; j=i-1; j++)

y[i] -= (l[i][j]*y[j]);

y[i] /= l[i][i];

}

for(i=n-1; i=0; i--) // 解UX = Y

{

x[i]=y[i];

for(j=i+1; jn; j++)

x[i] -= (u[i][j]*x[j]);

}

printf("Solve...x_i = \n"); // 輸出結(jié)果

for(i=0; in; i++)

printf("%f\n", x[i]);

return 0;

}

用C語言求解Ax=b的齊次線性方程組。 最好采用帶子函數(shù)的輸入形參為(A,b),返回結(jié)果為x;

#include "stdio.h"

int main()

{

int a,b,x;

scanf("%d %d",a,b);

if( a==0 )printf("error");

else {

x=b/a;

printf("%d\n",x);

}

return 0;

}

新聞名稱:c語言計算線性函數(shù) c語言運(yùn)算函數(shù)詳解
標(biāo)題鏈接:http://chinadenli.net/article2/doojgic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)面包屑導(dǎo)航軟件開發(fā)建站公司品牌網(wǎng)站制作網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站