大家都知道f(x)=ax^2+bx+c(一元二次方程)
求根公式是:x=[-b+sqrt(b^-4ac)]/2a;
怎么在matlab里编程表达这个公式然后还能让b^2-4ac小于零时返回复数根。
谢谢大家~
希望能看到源程序代码。谢谢啦!
matlab 一个入门菜鸟级编程(求根公式)
答案:3 悬赏:70
解决时间 2021-02-22 17:18
- 提问者网友:月葬花瑰
- 2021-02-22 09:38
最佳答案
- 二级知识专家网友:高冷不撩人
- 2021-02-22 10:16
disp('方程形式:a*x^2+b*x+c=0');
a=input('a=');
b=input('b=');
c=input('c=');
deta=b*b-4*a*c;
x=[(-b+sqrt(deta))/2/a;(-b-sqrt(deta))/2/a]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%上面已经达到你的要求了
%%由于matlab在计算sqrt,就是根号的时候,自己会误别根号下的数,
%%如果是负数的话,Matlab会自动生成复数.
%%你如果想自己写这个开根号的号,可以这样
disp('方程形式:a*x^2+b*x+c=0');
a=input('a=');
b=input('b=');
c=input('c=');
a=1
b=2
c=3
deta=b*b-4*a*c;
if deta>=0
x=[(-b+sqrt(deta))/2/a;(-b-sqrt(deta))/2/a]
else
real=-b/2/a;
image=sqrt(-deta)/2/a;
x=[real+image*i;real-image*i]
end
a=input('a=');
b=input('b=');
c=input('c=');
deta=b*b-4*a*c;
x=[(-b+sqrt(deta))/2/a;(-b-sqrt(deta))/2/a]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%上面已经达到你的要求了
%%由于matlab在计算sqrt,就是根号的时候,自己会误别根号下的数,
%%如果是负数的话,Matlab会自动生成复数.
%%你如果想自己写这个开根号的号,可以这样
disp('方程形式:a*x^2+b*x+c=0');
a=input('a=');
b=input('b=');
c=input('c=');
a=1
b=2
c=3
deta=b*b-4*a*c;
if deta>=0
x=[(-b+sqrt(deta))/2/a;(-b-sqrt(deta))/2/a]
else
real=-b/2/a;
image=sqrt(-deta)/2/a;
x=[real+image*i;real-image*i]
end
全部回答
- 1楼网友:努力只為明天
- 2021-02-22 11:55
a=0;a1=0;eps=0.001;while 1 fia=atan((1-a)/(1+a1)); cx=2*cos(fia); cy=sin(fia); aa=1-1/(cx-cy^2/sin(fia)^2+1); %比较奇怪的是cy不是等于sin(fia)吗,中间那项恒为1 aa1=1/(1-cy/cos(fia))-1; if abs(aa-a)<eps && abs(aa1-a1)<eps break; end a=aa; a1=aa1;endaa1
- 2楼网友:木子香沫兮
- 2021-02-22 11:41
当a小于0时sqrt(a)返回的就是复数啊。没问题啊
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯