雅克比迭代法的c语言程序帮我找找错误

雅克比迭代法的c语言程序帮我找找错误,第1张

我看除了while(ture) 这之中的true错了之外

还有s=o 这里s应该是等于 0 吧

其他就没什么问题了

如还有编译上的问题就是你编译器的环境变量没设置好

给你一个正确的程序,你自己参考一下吧!

function [x,k]=Jacobimethod(A,b,x0,N,emg)

% A:线性方程组左端矩阵

% b:线性方程组右端向量

% x0:迭代初值

% N:迭代次数上界,若迭代次数大于n,则迭代失败

% emg:精度指标

% k:迭代次数

% x:用迭代法求得的线性方程组的近似解

n=length(A)

x1=zeros(n,1)x2=zeros(n,1)

x1=x0k=0

r=max(abs(b-A*x1))

while r>emg

for i=1:n

sum=0

for j=1:n

if i~=j

sum=sum+A(i,j)*x1(j)

end

end

x2(i)=(b(i)-sum)/A(i,i)

end

r=max(abs(x2-x1))

x1=x2

k=k+1

if k>N

disp('迭代失败,返回');

return

end

end

祝朋友好运!

#include<stdio.h>

#include<conio.h>

#include<malloc.h>

#include<math.h>

#define EPS 1e-6

#define MAX 100

float *Jacobi(float a[3][4],int n)

{

float *x,*y,s

double epsilon

int i,j,k=0

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

y=(float *)malloc(n*sizeof(float))

for(i=0i<ni++) x[i]=0

while(1)

{

epsilon=0

k++

for(i=0i<ni++)

{s=0

for(j=0j<nj++)

{if(j==i) continue

s+=a[i][j]*x[j]

}

y[i]=(a[i][n]-s)/a[i][i]

epsilon += fabs(y[i]-x[i])

}

if(epsilon <EPS)

{

printf("µ¸¥˙¥Œ ˝Œ™:%d\n",k)

return y

}

if(k>=MAX)

{printf("The Method is disconvergent")return y}

for(i=0i<ni++) x[i]=y[i]

}

}

main()

{int i,jfloat a[3][4]

float *x

for(i=0i<3i++)

{

for(j=0j<4j++)

scanf("%f",&a[i][j])

}

x=(float *)malloc(3*sizeof(float))

x=Jacobi(a,3)

//clrscr()

for(i=0i<3i++)printf("x[%d]=%f\n",i,x[i])

getch()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11157185.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存