我们将沿着以下几步思考:
1.State the problem
关于这个例子陈述问题很简单.我们想写一个判定二元一次方程的程序:是否有两个实根,重复实根,或者两个复数根
2.Define the inputs and outputs
该程序要求输入二元一次方程的三个参数:a,b,c
输出方程根的判定情况
3.Design the algorithm
任务可被分为三个部分:input,processing,and output

Read the input data
Calculate the roots
Write out the roots

现在我们将以上三个部分划分为更小、更细的模块。
根据判别式的值,关于根的情况有三种,因此将执行这个算法用三分支的if结构是合理的

伪代码是:

允许用户定义三个变量 a,b,c
读取 a,b,and c
判别式discriminant <- b^2-4*a*c
if discriminant >0
x1 <- (-b+sqrt(discriminant ))/(2*a)
x2 <- (-b-sqrt(discriminant ))/(2*a)
写msg:二元一次方程有两个不相等实根!
显示两个实根
elseif discriminant == 0
x1 <- -b/(2*a)
写msg:二元一次方程有两个相等实根!
显示这个实根
else
real_part <- -b/(2*a)
image_part <- sqrt( abs(discriminant) )/(2*a)
写msg:二元一次方程有两个复数根
显示两个复数根
end
4.Turn the glgorithm into MATLAB statements
最终MATALAB如下所示:

%  脚本文件:calc_roots.m
%
% 目标:
% 该程序解决了二元一次方程组:a*x^ + b*x + c =0的根的问题
%
% 版本记录
% 日期 编者 描述
% ===== ========= ================
% -- : 泡泡 源码
%
% 定义变量:
%
% a --x^2的参数
% b --x的参数
% c --方程常量参数
% discriminant --方程判别式变量
% imag_part --方程虚根部分
% real_part --方程实根部分
% x1 --方程实根1
% x2 --方程实根2
%
%清除变量或指令
clc;
% 允许用户输入三个参数
disp ('该功能是求解方程的根 ');
disp ('方程:A*X^2 + B*X + C = 0. ');
a = input ('输入参数 A: ');
b = input ('输入参数 B: ');
c = input ('输入参数 C: '); %计算判别式
discriminant = b^-*a*c; %根据判别式分情况讨论
if discriminant > %两个实根
x1 = (-b+sqrt(discriminant ))/(*a)
x2 = (-b-sqrt(discriminant ))/(*a)
disp('二元一次方程有两个不相等实根! ');
fprintf (' x1= %f\n' ,x1);
fprintf (' x2= %f\n' ,x2);
elseif discriminant ==
x1 = -b/(*a)
disp('二元一次方程有两个相等实根! ');
fprintf (' x1=x2= %f\n' ,x1);
else
real_part = -b/(*a)
image_part = sqrt( abs(discriminant) )/(*a)
disp('二元一次方程有两个复数根 ');
fprintf (' x1= %f +i %f\n' ,real_part ,image_part );
fprintf (' x2= %f -i %f\n' ,real_part ,image_part );
end

5.Test the program
A B C    根的情况
1 5 6    -2,-3
1 4 4    -2
1 2 5    -1+/- i2
因此,该算法给出了三种情况的正确答案

附图:

最新文章

  1. N[开源].NET CORE与MySql更配, MySqlSugar ORM框架 3.x
  2. 在xilinxFPGA上使用microblaze及自写GPIO中断
  3. Android中图片的处理(放大缩小,去色,转换格式,增加水印等)(转)
  4. Application.DoEvents()的使用
  5. cuda编程基础
  6. git配置管理
  7. Nginx+Nodejs搭建图片服务器
  8. java当中的定时器的几种使用方式
  9. 【转】提示框第三方库之MBProgressHUD iOS toast效果 动态提示框效果
  10. hdu 2289 Cup (二分法)
  11. cas sso单点登录系列7_ 单点登录cas常见问题系列汇总
  12. 【CNMP系列】VIM编辑器详解
  13. checkbox插件
  14. sql 语句按字段指定值排序及分页
  15. RxSwift学习笔记8:filter/distinctUntilChanged/single/elementAt/ignoreElements/take/takeLast/skip/sample/debounce
  16. 拯救安卓手机的数据(无法进入系统只能打开recovery)
  17. 微信小程序template模板与component组件的区别和使用
  18. Go 示例测试实现原理剖析
  19. 四:SpringCloud-Hystrix
  20. hibernate 中集合的保存

热门文章

  1. November 11th 2016 Week 46th Friday
  2. 6、手把手教你Extjs5(六)继承自定义一个控件
  3. Leetcode题1
  4. ServerSocketChannel
  5. js 设置导航固定
  6. 2.7. 属性的各种设置选项(Core Data 应用程序实践指南)
  7. Ionic在线打包IOS平台应用
  8. spring mvc 引用 jasper JasperReportsHtmlView的nullpx图片问题
  9. 在COM组件中调用JS函数
  10. Java split字符串中包含.的情况