方程组求解

Posted lllyclh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了方程组求解相关的知识,希望对你有一定的参考价值。

1.问题描述

编程序,求方程ax2+bx+c=0的根

2.问题分析

根据题目要求,要定义几个未知数a,b,c,d,x1,x2

d用来计算b*b-4*a*c

这个表达式的值用来判断方程组有没有解

3.算法设计

要用到多个if语句 

有三种情况,分别是大于0,小于0,等于0,需要分开讨论

4.程序

#include<iostream>
#include<cmath>//这里不要忘记调一下数据库
using namespace std;
int main()

    double a, b, c, x1, x2;
    cout << "请输入二元一次方程组二次项系数a" << endl;
    cin >> a;
    cout << "请输入二元一次方程组一次项系数b" << endl;
    cin >> b;
    cout << "请输入二元一次方程组常数项系数c" << endl;
    cin >> c;
    double d = b * b - 4 * a * c;
    cout << "d=" << d << endl;
    if (a == 0 && b == 0)
    
        cout << "方程组无解" << endl;
    
    if (a == 0)//a=0,变成一次方程
    
        cout << "方程组解为"<< -c/b<<endl;
    
    if (d == 0) //a不为0才有两个解
    
        x1 = (-b) / (2 * a);
        cout << "方程组解为" << x1 << endl;
    
    if (d < 0)
    
        cout << "方程组无解" << endl;
    
    if (d > 0)
    
        x1 = (-b + sqrt(d)) / (2 * a);
        x2 = (-b - sqrt(d)) / (2 * a);
        cout << "x1=" << x1 << endl;
        cout << "x2=" << x2 << endl;
    
    return 0;

 

matlab——符号方程求解

符号方程求解

代数方程符号求解

在MATLAB中,求解用符号表达式表示的代数方程可由函数
solve()实现,其调用格式为:
① solve(s):求解符号表达式s的代数方程,求解变量为
默认变量。
② solve(s,v):求解符号表达式s的代数方程,求解变量
为v。
③ solve(s1,s2,…,sn,v1,v2,…,vn):求解符号表达式
s1,s2,…,sn组成的代数方程组,求解变量分别为v1,
v2,…,vn。

例1 解方程
ax^2+bx+c=0

>> syms x y a b c; 
%方法1
>> solve(a*x^2+b*x+c==0)
ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)
%方法二
>> f=a*x^2+b*x+c
>> solve(f)
ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)

注意:solve()函数求解方程时,所得到的结果不一定准确。
如果不正确,转化后在求解

>> syms x y;
>> [u,v]=solve(x+y==98,x^(1/3)+y^(1/3)==2)
u =
Empty sym: 0-by-1
v =
Empty sym: 0-by-1

转化过后,再解方程:

>> syms x y;
>> u=solve(x+(2-x^(1/3))^3==98)
u =
125
>> v=98-u
v =
-27

常微分方程符号求解

 在MATLAB中,用大写字母D表示导数。例如,Dy表示y',D2y表示y'',
Dy(0)=5表示y'(0)=5。D3y+D2y+Dy-x+5=0表示微分方程y'''+y''+y'-x+5=0。
 符号常微分方程求解可以通过函数dsolve()函数来实现,其调用格式为:
dsolve(e,c,v)
用于求解常微分方程e在初值条件c下的特解。参数v是方程中的自变量,省
略时按默认原则处理,若没有给出初值条件c,则求方程的通解。
 dsolve在求常微分方程组时的调用格式为:
dsolve(e1,e2,…,en,c1,c2,…,cn,v)
用于求解常微分方程组e1, e2, …, en在初值条件c1, c2, …, cn下的特解,若不
给出初值条件,则求方程组的通解。v给出求解变量,如果没有指定自变量则采用默认自变量t。

>> syms x y t;
>> y=dsolve('Dy-(x^2+y^2)/x^2/2',x)
y =
x
-x*(1/(C5 + log(x)/2) - 1)
>> [x,y]=dsolve('Dx=4*x-2*y','Dy=2*x-y',t)
x =
C8/2 + 2*C7*exp(3*t)
y =
C8 + C7*exp(3*t)

以上是关于方程组求解的主要内容,如果未能解决你的问题,请参考以下文章

如何用matlab求解齐次线性方程组

紧急求助:matlab求解唯一解的齐次线性方程组

如何用matlab求解线性方程组

非线性方程组求解

matlab——符号方程求解

如何求解矩阵方程