matlab中运用项目思维分析问题并解决问题
我们将沿着以下几步思考:
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
因此,该算法给出了三种情况的正确答案
附图:
matlab中运用项目思维分析问题并解决问题的更多相关文章
- matlab 中 eps 的分析
eps(a)是|a|与大于|a|的最小的浮点数之间的距离,距离越小表示精度越高.默认a=1: 这里直接在matlab中输入:eps == eps(1)(true). 我们知道浮点数其实是离散的,有限的 ...
- [转载]Matlab中fft与fftshift命令的小结与分析
http://blog.sina.com.cn/s/blog_68f3a4510100qvp1.html 注:转载请注明出处——by author. 我们知道Fourier分析是信号处理里很重要的技术 ...
- ExtJS6的中sencha cmd中自动创建案例项目代码分析
在之前的博文中,我们按照sencha cmd的指点,在自己win7虚拟机上创建了一个案例项目,相当于创建了一个固定格式的文档目录结构,然后里面自动创建了一系列js代码.这是使用sencha cmd自动 ...
- APP开发项目思维导图
APP开发项目思维导图 下载思维导图:APP开发项目.xmind.zip --------------------------------------- APP开发项目 app项目标记: 未启动 功能 ...
- [Asp.net 5] DependencyInjection项目代码分析4-微软的实现(5)(IEnumerable<>补充)
Asp.net 5的依赖注入注入系列可以参考链接: [Asp.net 5] DependencyInjection项目代码分析-目录 我们在之前讲微软的实现时,对于OpenIEnumerableSer ...
- MATLAB中FFT的使用方法
MATLAB中FFT的使用方法 说明:以下资源来源于<数字信号处理的MATLAB实现>万永革主编 一.调用方法X=FFT(x):X=FFT(x,N):x=IFFT(X);x=IFFT(X, ...
- [Asp.net 5] DependencyInjection项目代码分析4-微软的实现(2)
在 DependencyInjection项目代码分析4-微软的实现(1)中介绍了“ServiceTable”.“ServiceEntry”.“IGenericService”.“IService”. ...
- [Asp.net 5] DependencyInjection项目代码分析4-微软的实现(3)
这个系列已经写了5篇,链接地址如下: [Asp.net 5] DependencyInjection项目代码分析 [Asp.net 5] DependencyInjection项目代码分析2-Auto ...
- [Asp.net 5] DependencyInjection项目代码分析4-微软的实现(4)
这个系列已经写了6篇,链接地址如下: [Asp.net 5] DependencyInjection项目代码分析 [Asp.net 5] DependencyInjection项目代码分析2-Auto ...
随机推荐
- iOS_init相关信息
第一.initWithNibName这个方法是在controller的类在IB中创建,但是通过Xcode实例化controller的时候用的. 第二.initWithCoder 是一个类在IB中创建但 ...
- app间互相启动及传参数
http://blog.sina.com.cn/s/blog_13bc6705b0102wmc5.html http://blog.csdn.net/iefreer/article/details/8 ...
- 【转】C/CPP之static
静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值. 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见.用法1:函数内部声明 ...
- 真机调试iwatch
http://blog.csdn.net/chenyufeng1991/article/details/48976639 错误:no symbols for paired Apple Watch 错误 ...
- 1.TCP/IP基本概念
为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样 ...
- IOS 使用GCD改善性能
1.GCD介绍 GCD:Grand Central Dispathch,核心中央调度,是一种异步技术.但是它是系统级的. 负责管理队列,是线程之上的抽象层.队列可以并行或串行运行,能够在系统级自动管理 ...
- QT第三天学习
回顾: 布局: 绝对位置法: 手工布局:QLayout 可视化布局:设计器 VB MFC JAVA C# cocos QT信号和槽 ---------------------------------- ...
- HTTP协议缓存策略深入详解之ETAG妙用
Etag是什么: Etag 是URL的Entity Tag,用于标示URL对象是否改变,区分不同语言和Session等等.具体内部含义是使服务器控制的,就像Cookie那样. HTTP协议规格说明定义 ...
- Servlet进阶API
对于每个Servlet的设置信息,web容器会为其生成一个ServletConfig作为代表对象,可以从该对象取得Servlet初始参数,以及代表整个web应用程序的ServletContext对象. ...
- springMvc获取servletContext
springMvc获取servletContext WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebA ...