C#如何实现matlab解方程组组

C#解方程组之Jacobi法实例
解方程组之Jacobi法
迭代过程首先将方程组中的系数矩阵A分解成三部分,即:A = L+D+U,如图1所示,其中D为对角阵,L为下三角矩阵,U为上三角矩阵。之后确定迭代格式,X^(k+1) = B*X^(k) +f ,(这里^表示的是上标,括号内数字即迭代次数),如图2所示,其中B称为迭代矩阵,雅克比迭代法中一般记为J。(k = 0,1,......)再选取初始迭代向量X^(0),开始逐次迭代。核心部分,迭代实现:
public void Calcu5()
int count1 = 0, count2 = 0;
while(true)
for(int i=0;i&n;i++)
double sum = 0;
for(int j=0;j&n;j++)
sum += a[i, j] * x[j];
x2[i] = (a[i, n] - sum) / a[i, i];
if (Math.Abs(x2[i] - x[i]) & e)
if(count1&10000)
{ Console.WriteLine(&迭代发散!!!&); }
if(count2==n)
{ Console.WriteLine(&迭代次数:{0}&, count2); }
for(int i=0;i&n;i++)
{ x[i] = x2[i]; }
using System.Collections.G
using System.L
using System.T
using System.Threading.T
namespace Jacobi迭代
class Jacobi
public int N
set { n = }
public double[,] A
set { a = }
public double[] X
set { x = }
double e = 0.00001;
public double E
set { e = }
private double[] x2;
public double[] X2
get { return x2; }
set { x2 = }
public void Input()
Console.WriteLine(&请输入阶数:&);
n = Convert.ToInt32(Console.ReadLine());
a = new double[n, n + 1];
x = new double[n];
x2 = new double[N + 1];
for (int i = 0; i & N; i++)
Console.WriteLine(&请输入各行系数(','或' '隔开):&);
for (int i = 0; i & i++)
string s = Console.ReadLine();
string[] ss = s.Split(' ', ',');
for (int j = 0; j & n + 1; j++)
a[i, j] = Convert.ToDouble(ss[j]);
public void Calcu5()
int count1 = 0, count2 = 0;
while(true)
for(int i=0;i&n;i++)
double sum = 0;
for(int j=0;j&n;j++)
sum += a[i, j] * x[j];
x2[i] = (a[i, n] - sum) / a[i, i];
if (Math.Abs(x2[i] - x[i]) & e)
if(count1&10000)
{ Console.WriteLine(&迭代发散!!!&); }
if(count2==n)
{ Console.WriteLine(&迭代次数:{0}&, count2); }
for(int i=0;i&n;i++)
{ x[i] = x2[i]; }
public void Output()
Console.WriteLine(&方程系数为:&);
for (int i = 0; i & i++)
string s =
for (int j = 0; j & n + 1; j++)
s += string.Format(&{0,8:f2}&, a[i, j]);
Console.WriteLine(s);
public void OutputX()
Console.WriteLine(&\n方程组的解是:&);
for (int i = 0; i & i++)
Console.WriteLine(&x{0}={1}&, i + 1, x[i]);
class Program
static void Main(string[] args)
Jacobi abc = new Jacobi();
abc.Input();
abc.Output();
abc.Calcu5();
abc.OutputX();
运行结果:c# 怎么解方程组????
[问题点数:50分,结帖人weixin_]
本版专家分:0
结帖率 80%
CSDN今日推荐
本版专家分:231
本版专家分:27469
2018年2月 总版技术专家分月排行榜第二
2018年2月 .NET技术大版内专家分月排行榜第一
2018年1月 .NET技术大版内专家分月排行榜第二
本版专家分:129642
本版专家分:129642
本版专家分:0
本版专家分:1560
本版专家分:0
本版专家分:7702
本版专家分:287
本版专家分:287
本版专家分:10
本版专家分:0
本版专家分:46098
2017年11月 .NET技术大版内专家分月排行榜第二2017年10月 .NET技术大版内专家分月排行榜第二
2018年6月 .NET技术大版内专家分月排行榜第三2018年3月 .NET技术大版内专家分月排行榜第三2017年12月 .NET技术大版内专家分月排行榜第三2017年9月 .NET技术大版内专家分月排行榜第三
匿名用户不能发表回复!
其他相关推荐C#解方程组
[问题点数:10分,结帖人liming]
本版专家分:1222
结帖率 98.5%
CSDN今日推荐
本版专家分:33933
本版专家分:14921
本版专家分:1222
本版专家分:1222
本版专家分:1222
本版专家分:3336
本版专家分:1222
本版专家分:1222
匿名用户不能发表回复!
其他相关推荐用C#求解数学方程
[问题点数:40分]
本版专家分:0
结帖率 71.43%
CSDN今日推荐
本版专家分:3356
本版专家分:1640
本版专家分:1030
本版专家分:659
本版专家分:50489
2012年11月 .NET技术大版内专家分月排行榜第二
2012年12月 .NET技术大版内专家分月排行榜第三
本版专家分:50489
2012年11月 .NET技术大版内专家分月排行榜第二
2012年12月 .NET技术大版内专家分月排行榜第三
本版专家分:3356
本版专家分:209
本版专家分:670
本版专家分:670
本版专家分:5962
匿名用户不能发表回复!
其他相关推荐c#能解二元一次方程吗_百度知道
c#能解二元一次方程吗
能教教我吗...
能教教我吗
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
#include #define N 0.29 double f(double a) { return a*=(a-1); } double g(double b) { return b*=(b+1); } double t(float x,int a) { double m,b=1; m=1+a*x; x*=x; for(int i=0;i&1000;i++) { m+=((f(a)/g(b))*x); } } void main() { double x,y; x=137.82/y; y=2.9*t(double ((80+x)/10-1),N); printf(&%lf\n&,y); } 编译通过了,但不知道是否正确。给赞啊!!!!!!!!!!!!!
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 方程组怎么解 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信