首页 > 编程知识 正文

C 三元一次方程组算法,三元一次方程计算题

时间:2023-05-04 22:45:42 阅读:272685 作者:4126

       本程序皆为个人所创。

       算法解析:

(1)本程序之所以用指针和结构体,1.是为了节省空间  2.是为了方便统计变量,实验变量在21个往上走。

(2)应用初中数学的知识,碧蓝的板栗和方程二统一倍律后消去变量z,列出一个新方程12;碧蓝的板栗和方程三统一倍律后消去变量z,列出一个新方程13;

然后方程13,方程12就可列成一个新的二元一次方程组,然后再方程12和方程13统一倍律后消去变量x或y,求出其中之一,在带入方程13或方程12,

求出y或x,两个变量的值都知道了,自然就可以求出最后一个了。

#include <iostream>using namespace std;//三元一次方程组struct equation{float x1,x2,x3;float y1,y2,y3;float z1,z2,z3;float numx1, numx2, numx3;float numy1, numy2, numy3;float numz1, numz2, numz3;float sum1, sum2, sum3;};int main() {equation s = { }; //先建设一个空的结构题,方便后续定义struct equation *p = &s; //struct可以省略cout << "请输入x前的系数(numx1)" << endl;cin>> p->numx1;//cout << "请输入x的值(x1)" << endl;//cin >> p->x1;cout << "请输入y前的系数(numy1)" << endl;cin >> p->numy1;cout << "请输入z前的系数(numz1)" << endl;cin >> p->numz1;cout << "请输入sum的值(sum1)" << endl;cin >> p->sum1;cout << "方程为一:" << p->numx1 << "x" << "+" << p->numy1 << "y" << "+" << p->numz1 << "z" <<"="<< p->sum1 << endl;cout << endl;//以上为碧蓝的板栗cout << "请输入x前的系数(numx2)" << endl;cin >> p->numx2;//cout << "请输入x的值(x2)" << endl;//cin >> p->x2;cout << "请输入y前的系数(numy2)" << endl;cin >> p->numy2;cout << "请输入z前的系数(numz2)" << endl;cin >> p->numz2;cout << "请输入sum的值(sum2)" << endl;cin >> p->sum2;cout << "方程为二:" << p->numx2 << "x" << "+" << p->numy2 << "y" << "+" << p->numz2 << "z" << "=" << p->sum2 << endl;cout << endl;//以上是方程二cout << "请输入x前的系数(numx3)" << endl;cin >> p->numx3;//cout << "请输入x的值(x3)" << endl;//cin >> p->x3;cout << "请输入y前的系数(numy3)" << endl;cin >> p->numy3;cout << "请输入z前的系数(numz3)" << endl;cin >> p->numz3;cout << "请输入sum的值(sum3)" << endl;cin >> p->sum3;cout << "方程为:" << p->numx3 << "x" << "+" << p->numy3 << "y" <<"+"<< p->numz3 << "z" << "=" << p->sum3 << endl;cout << endl;//以上是方程三float num12z = p->numz2 / p->numz1; //这里是使1,2方程倍数相同消去变量zfloat num13z = p->numz3 / p->numz1; //这里是使1,3方程倍数相同消去变量zfloat num12y = (p->numy1)*num12z - p->numy2; //此处是为了求出二元一次方程组y的系数float num13y = (p->numy1)*num13z - p->numy3;float num12x = (p->numx1)*num12z - p->numx2; //此处是为了求出二元一次方程组x的系数float num13x = (p->numx1)*num13z - p->numx3;float sum12 = p->sum1*num12z - p->sum2;float sum13 = p->sum1*num13z - p->sum3;float num3 = num13x/num12x; //num3是为了让x前的系数相同,再计算y的值float val = num3*num12y - num13y; //y之间的差值float val2 = sum12*num3 - sum13; //sum是指之间系数差值float y = val2 / val; //float x = (sum12 - num12y * y) / num12x;float z = (p->sum3 - p->numx3*x - p->numy3*y) / p->numz3;cout << "x的值为" << x << endl;cout << "y的值为" << y << endl;cout << "z的值为" << z << endl;return 0;//cout << p << endl;//访问指针位置,十六进制//cout << p->numx1 << endl;}

学好数学,为己所用。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。