
#include<iostream>
using namespace std;
void main() { int X,y;
for ( X=0;X<=30;X++ ) {
y=30-X;
if ( 2X+4y==90 ) cout<<"X="<<X<<",y="<<y<<endl;
}
}
简单来说就是用所有可能来试,满足条件者输出,跳过不满足情况。
这种方法是利用计算机计算迅速的特点来解决问题。
把你方程的系数降幂排列,写成一个向量,利用roots命令即可。
>> p=[1,-6,9,-9];roots(p)
ans =
44260e+000
78701e-001 +11891e+000i
78701e-001 -11891e+000i
扩展资料
MATLAB线性方程求解
a为mn的系数矩阵。
Ø m=n,该方程为“恰定”方程
Ø m>n,该方程为“超定”方程
Ø m<n,该方程为“欠定”方程
(1)恰定方程求解
方程ax+b(a为非奇异)
x=a-1 b
两种解:
①x=inv(a)b 采用求逆运算解方程;
②x=a\b 采用左除运算解方程。
(2)超定方程求解
方程 ax=b ,m>n时此时不存在唯一解。
方程解 (a'a)x=a'b
①x=(a'a)-1 a'b ——求逆法;
②x=a\b matlab用最小二乘法找一个准确地基本解。
(3)欠定方程求解
当方程数少于未知量个数时,即不定情况,有无穷多个解存在。
matlab可求出两个解:
①用除法求的解x是具有最多零元素的解;
②是具有最小长度或范数的解,这个解是基于伪逆pinv求得的。
需要写下它的方程式:
ax+by=m
cx+dy=n
可以求得x,y的通解
x=(md-bn)/(ad-bc)
y=(mc-an)/(bc-ad)
#include<iostream>,#include<cmath>,usingnamespacestd,intmain()。
2{doublea,b,c,root1,root2;cout<<"请输入一元二次方程的系数(a,b,c)
3<<endl;cin>>a>>b>>c;if(a==0)//判断系数a是否为0{cout<<"不是一个一元二次方程”<<endl;return-1;}。
4doublet=bb-4ac;if(t<0)//判断议程是否有实根{cout<<"方程没有实根"<<endl;
return-1;}。
5if(t==0)//判断议程是否有等根root1=root2=-b/(2a);else{root1=(-b+sqrt(t))/(2a);root2=(-b-sqrt(t))/(2a);}。
6cout<<"方程的根为:"<<root1<<"和"<<root2<<endl;return0;}。
假设的情况:
输入没有错误;
x 总是在前面,y 总是在后面;
不存在某个变量系数为 0 的情况(即总是二元方程);
不考虑小数,其实考虑小数也简单,你可以自己思考如何实现。
首先,使用 scanf() 将回车之前的整个字符串扫描进来,放进 str 变量中;
之后,分别以 x y = 为界,找到它们分隔的三个字符串,即从 str 的第一位开始循环,当遇到 'x' 时,停止并将之前的所有字符存到 x 的系数字符串 xStr 中,再从 x 之后开始寻找,遇到 'y' 时将找到的 'x' 与 'y' 之间的字符存到 y 的系数字符串 yStr 中,再向后从 '=' 开始直到结束,存为结果字符串 sumStr。
这样,我们得到的三个字符串都具有相同的格式,一定可以通过某种方式将其转换为一个数字,使用同一个函数就可以做到。
对于某个字符串来说,它可能是以负号 '-' 开头,也可能以正号开头 '+',也可能没有符号,也可能为空,分别考虑:以负号开头的,将其作为负数,以正号开头或没有符号的,将其作为正数;为空的字符串将其视为 1。
截取符号之后,如果没有剩余字符了,将其视为 1,再与符号相乘,就是最终结果。
如果还有剩余,那么之后的字符都是纯数字了(不考虑小数),从字符串的最后一位往前开始循环,下标记为 i(从0开始一直到最前面的数字位数),每一位字符记为 ch,则 n=(int)(ch-'0') 就是当前字符所代表的数字,用 npow(10, i) 就得到了当前数字的实际值,把所有的乘积都加起来,就得到了总的系数的绝对值,再乘以符号,就得到了系数值。
实现了这个部分之后,假设的情况也可以一一实现了,无非就是标记归属的问题。我没有贴代码是因为我看到你问的问题非常认真,我希望你可以通过我的描述自己去实现它。这里用到了一些字符串相关的函数,例如 strlen(str) 可以获得 str 字符串的长度,strncpy(dest, src, 3) 可以将 src 字符串的前三位拷贝到 dest 字符串中,strncpy(dest, src+3, 3) 可以将 src 字符串的 4~7 位拷贝到 dest 字符串中。
1 system("title 公式法解方程"); 这一句是什么意思?无意义,去掉
2 double Δ; 这个变量让我很费解,变量名请用英文字母加数字,避免奇怪的错误。
3 double x1,x2; 你已经告诉计算机,你的根是double类型了,就是小数,怎么可能得到整数呢?南辕北辙啊。
4 sqrt(Δ) 这个函数返回值是double类型,也是小数,这个是C语言标准规定好的,由不得你改的,所以也不可能得到一个你所谓的最简平方根。
至于你想要的显示最简平方根,这个需要你自己去定义一个数据类型,自己去设计它的计算和表示方法。更深入的内容,你需要看计算机代数系统或者符号计算系统方面的资料。
先判断然后分三种类型输出:1)b^2-4ac<0 无实数根 2)b^2-4ac=0 有一根 3)b^2-4ac>0 有两根结果式=-b+sqr(b^2-4ac)/2a =-b-sqr(b^2-4ac)/2a写程序的时候把a,b,c换成你题目中的即可
我刚学C++,还不太懂。不过这里有一个不需要专业软件就可解一元超越方程的vbs代码,用它可以生成一个解一切一元超越方程的工具:
PI=4atn(1)
EN=exp(1)
function arcsin(x)
if abs(x)=1 then
arcsin=sgn(x)PI/2
else
arcsin=atn(x/sqr(-xx+1))
end if
end function
function arccos(x)
if x=1 then
arccos=0
elseif x=-1 then
arccos=PI
else
arccos=atn(-x/sqr(-xx+1))+PI/2
end if
end function
function arctan(x)
arctan=atn(x)
end function
function hsin(x)
hsin=(exp(x)-exp(-x))/2
end function
function hcos(x)
hcos=(exp(x)+exp(-x))/2
end function
function htan(x)
htan=(exp(x)-exp(-x))/(exp(x)+exp(-x))
end function
function aexp(a,x)
aexp=exp(xlog(a))
end function
function logn(n,x)
logn=log(x)/log(n)
end function
d=1e-40
x1=inputbox("请输入初值1")
x2=inputbox("请输入初值2")
fc=inputbox("请输入方程左端f(x)")
do until abs(x1-x2)<=d
x=x1
f1=eval(fc)
x=x2
f2=eval(fc)
if f1-f2=0 then
x=x2
d=10
else
x0=x2-f2(x2-x1)/(f2-f1)
if (x1-x2)(x2-x0)>=0 then
m=x1
else
m=x2
end if
x1=x2
x2=x0
end if
loop
if abs(x0)<1e-15 then x0=0
d=abs(x1-x2)
if d>1e-20 then
d=int(logn(10,d))+2
d=110^d
x=int(x0/d)
x=xd
m=int(m/d)
m=md
else
x=x
m=m
end if
if x>=m then
a=m
b=x
else
a=x
b=m
end if
msgbox("原方程的根x=" & x & " 扫描域:[" & a & "," & b & "]" )
××××××××××××××××××××××××××××××××
注释:(1)这是一段解超越方程的代码,新建一个文本文档,复制粘贴这段代码,保存为“解超越方程vbs”,双击即可运行。
(2)按提示输入两个初始值(在定义域内任取两个值),输入待求方程的左端(方程形式为f(x)=0,只要输入f(x)即可)。
(3)确认,得出一个解和一个“扫描域”,表示在此域内只有一解,重新设定初始值可以扫描其他解,有效数字通常超过十位。
(4)f(x)由基本初等函数构成,具体输入如下:
1三角函数:sin(x);cos(x);tan(x);
2反三角函数:arcsin(x);arccos(x);arctan(x);
3双曲三角函数:hsin(x);hcos(x);htan(x);
4对数函数:logn(n,x)其中n表示底数,如logn(10,5)表示以10为底对5求对数;
5指数函数:aexp(a,x)其中a表示底数,如aexp(3,11)表示3的11次方;
6其他函数:绝对值abs(x);开方sqr(x);e的次x幂exp(x);自然底数对数log(x);
7运算符号:加(+);减(-);乘();除(/);幂(^);
8注意以上函数中的括号不能省略;
9PI表示圆周率;EN表示自然底数。
以上就是关于C++编程里面关于解方程全部的内容,包括:C++编程里面关于解方程、如何用matlab解一元三次方程、用C++如何编写解二元方程组的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)