MatLab学习笔记(3)---2020.3.5

问题描述:

形如fx = xx + bx + c 的二次函数在关键点xc = -b/2处达到最小值。计算函数f在区间【L,R】上的最小值做一些判断。如果xc在这个区间内,则f(xc)就是问题的解,否则函数f在x=L或x=R处达到最小值。

写一段脚本程序,接收实数L,R,b和c的输入,然后输出二次函数fx = xx + bx + c在区间【L,R】上的最小值。这个程序也应该显示这个最小值对应的x值。

% Script Eg1_2
% Minimum of the quadratic x^2 + bx + c on the interval [L,R].

% Acquire and display the input data...
b = input('Enter b:');
c = input('Enter c:');
L = input('Enter L:');
R = input('Enter R (L<R):');
clc
fprintf('Quadratic: x^2 + bx + c,  b = %5.2f, c = %5.2f\n',b,c)
fprintf('Interval : [L,R], L = %5.2f, R = %5.2f\n\n',L,R)
% The critical point...
xc = -b/2;
if xc < L
    % Minimum at the left endpoint...
    fL = L^2 + b*L + c;
    fprintf('Minimizing x    = %5.2f\n',L)
    fprintf('Minimum f value = %5.2f\n',fL)
elseif L <= xc && xc <= R
    % Minimum at the critical point...
    fxc = c - (b/2)^2;
    fprintf('Minimizing x    = %5.2f\n',xc)
    fprintf('Minimum f value = %5.2f\n',fxc)
else
    % Minimum at the right endpoint...
    fR = R^2 + b*R + c;
    fprintf('Minimizing x    = %5.2f\n',R)
    fprintf('Minimum f value = %5.2f\n',fR)
end

知识点:

  1. max(算术表达式1,算术表达式2)
    的结果是计算两个表达式后得到较大的值,函数min的值正好是相反的。
  2. floor(x)为小于或等于x值得最大整数。
    ceil(x)为大于或等于x值得最小整数。
    round(x)是最接近x值得整数,如果恰好在两个整数的正中间,round(x)的结果是离零较远的那个数。
  3. 如果x和y的值为正整数,则rem(x,y)为x除以y得到余数,所以rem(22,7)的值为1.函数rem也可应用于任意的实数。
  4. ~= 为不等于。
  5. 就像算术运算符一样,关系与逻辑运算符也有优先级。非运算(?)的优先级最高,接下来是关系运算符(例如<,==,~=等等)然后是“与”运算符,最后是“或”运算符。
  6. 在同一级的运算符中,采用从左到右的先后顺序,但可通过括号改变顺序。例如,为了确定x是否在3和7之间,你必须使用“与”操作将两个比较运算连起来。
    3<x&&x<7
    写成3<x<7是错误的,因为按从左到右的运算顺序,首先计算3<x,得到真或者假,然后这个得到的布尔值(而不是x)将与7进行比较。
发布了27 篇原创文章 · 获赞 56 · 访问量 4477

猜你喜欢

转载自blog.csdn.net/qq_40544107/article/details/104677283