求用C#编程实现:求一个多元一次方程组解

要求:1.用c#实现 2. 这个多元是未知的例如可能是一元可能是二元等等

各位大哥大姐帮小弟下吧。。
是一个线性方程组。网上说可以使用逆矩阵来解但我还是不知道该从何做起,线性代数学得很烂啊。

高斯消元 再代回原方程求解
算法如下
_rows是指方程组行数;_cols是列数
void gaoss(double[,]a)//高斯消元求未知数X,
{
string print = "";
int L = _rows - 1;
int i, j, l, n, m, k = 0;
double[] temp1 = new double[_rows];

/*第一个do-while是将增广矩阵消成上三角形式*/
do
{
n = 0;
for (l = k; l < L; l++)

temp1[n++] = a[l + 1, k] / a[k, k];
for (m = 0, i = k + 1; i < _rows; i++, m++)
{
for (j = k; j < _cols; j++)
a[i, j] -= temp1[m] * a[k, j];
}

k++;

} while (k < _rows);

///*第二个do-while是将矩阵消成对角形式,并且重新给k赋值,最后只剩下对角线和最后一列的数,其它都为0*/
k = L - 1;

do
{
n = 0;
for (l = k; l >= 0; l--)
temp1[n++] = a[k - l, k + 1] / a[k + 1, k + 1];
for (m = 0, i = k; i >= 0; i--, m++)
{
for (j = k; j < _cols; j++)
a[k - i, j] -= temp1[m] * a[k + 1, j];
}
k--;

} while (k >= 0);
/*下一个for是解方程组*/
for (i = 0; i < _rows; i++)
{
double value = a[i, _rows] / a[i, i];
print += "X"+(i+1)+"="+value+" ";

}
MessageBox.Show(print, "方程的解为:");

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-03
一般的方程,c语言里都有解释如何解答的,对于复杂的非线性方程,可以考虑各种算法,查看 现代数值方法等 本人建议用matlab解方程 ,很方便
第2个回答  2010-09-02
是不是那种有多个方程式集合求解的那种?

求用C#编程实现:求一个多元一次方程组解
} while (k >= 0);\/*下一个for是解方程组*\/ for (i = 0; i < _rows; i++){ double value = a[i, _rows] \/ a[i, i];print += "X"+(i+1)+"="+value+" ";} MessageBox.Show(print, "方程的解为:");}

c#用矩阵求解三元一次方程组
你这个其实就是把左边的化为单位矩阵 首先告诉你方法很固定,先用第一行的元素往下加(减),把第一列的元素消为0 第二行的元素往下加(减),把第二列的元素消为0 得到上三角后 第三行的元素往上加(减),把第三列的元素消为0 第二行的元素往。

C#如何 求一元一次 方程?
int main(void){ int x,i,j;clrscr(); textmode(C40);cprintf("x");scanf("+%d=%d",&i,,&j);for(x=1;x<=30000;x++){ if(x+i==j){ gotoxy(1,2); cprintf("x=%d",x);getch(); } } } 如果不能运行,请把textmode(C40);删除!

如何用C#制作一个简易的解方程程序,思路是什么?谢谢了
如果是多元一次方程的话,实现起来比较简单,用线性代数里面的高斯消元法都可以搞定了,不过要写成代码还是要花些时间,不容易。

二元一次方程求解,用c#程序设计怎么写
"c2:");float c2 = (float)Convert.ToDouble(Console.ReadLine());float x1 = (c1 - c2 * (b1 \/ b2)) \/ (a1 - a2 * (b1 \/ b2));float y1 = (c1 - a1 * x) \/ b1;Console.WriteLine("此二元一次方程组的解为:x={0},y={1}",x1,y1);Console.ReadKey();} } } ...

如何用C#制作一个简易一元一次的解方程程序,思路是什么?谢谢了_百度...
double x1 = 0;\/\/解1double x2 = 0;\/\/解2 Console.WriteLine("求 ax^2+bx+c=0 的解");Console.Write("请输入a的值:");double a = Convert.ToInt32(Console.ReadLine());Console.Write("请输入b的值:");double b = Convert.ToInt32(Console.ReadLine());Console.Write("请输入c...

用C#如何解决二元一次方程组
二元一次应该比较简单,给个一般的通式来计算,比如:a1x + b1y=c1 a2x + b2y=c2 x=(c1b2-c2b1)\/(a1b2-a2b1)y=(c1a2-c2a1)\/(a2b1-a1b2)

求一个用C#写的灰色预测模型的代码~ 网上很多用matlab写的。 在用...
你如果有100个点。那么就是说,你要求解的是四元一次方程组。但方程的个数(数据点数)超过四个。也就是说多个方程,四个未知数。数学上讲是一个超定方程组(矛盾方程组)你写成矩阵的形式。这个矩阵是一个长方阵。用最小二乘法进行求解。即A*x=B,你的abcd在x中。然后两边左乘以A',变成 (A...

c语言编程,求方程2X^2+3X-3=0 的根
int main ( ){ double a,b,c,disc,x1,x2,p,q;\/\/scanf("%lf%lf%lf",&a,&b,&c);a=2.0;b=3.0;c=-3.0;disc=b*b-4*a*c;if (disc<0)printf("has not real roots\\n");else { p=-b\/(2.0*a);q=sqrt(disc)\/(2.0*a);x1=p+q;x2=p-q;printf("real roots:...

用VB编写求一元二次方程的代码是什么?
'求一元二次方程的跟ax^2+bx+c=0 Private Sub Command1_Click()Dim a#, b#, c#, gen a = InputBox("输入A的值")b = InputBox("输入B的值")c = InputBox("输入C的值")If a = 0 And b = 0 And c = 0 Then Print "x的值是全体实数."ElseIf a = 0 And b = 0 And ...

相似回答