精华内容
下载资源
问答
  • 求解

    2020-07-15 10:30:15
    有哪位大佬知道这个错误是什么意思 还有就是如何定义T0+T1等于一个固定值[img=https://img-bbs.csdn.net/upload/202007/15/1594780214_869905.png][/img]
  • 实际上,我们在求解过程中将找推导这一过程变成找满足相应条件的产生式,就不会出错。

    写在前面

    网上看了很多求解FIRST集合和FOLLOW集合的方法,但是用起来有时候还是会有所遗漏,于是总结了以下方法,只要严格按照这个方法操作,肯定不会找漏。

    我们知道,找漏的原因其实就是各种推导总是搞错,如果我们只看产生式就能找到所有集合,而不需要去具体推导,那么就不会遗漏。

    求解FIRST集合

    由于求解FOLLOW集合涉及到求解FIRST集合,因此先讲下怎么求解FIRST集合。
    根据FIRST集合的定义:
    在这里插入图片描述
    简单来说就是一个非终结符(这里只讨论非终结符)能够推导出一个以终结符开头的串,那么该终结符就属于该非终结符的FIRST集合。由此得到以下算法,两个步骤:

    1. 遍寻所有产生式,找到所有右边为一个终结符开头的产生式A->a…,这里尤其注意,一定不要遗忘产生式右边只有一个终结符的!!很多人看到A->a…就想当然地以为a后边一定要有东西,这是不对的。最后把a加入FIRST(A)。
    2. 遍历所有产生式,找到右边以一个非终结符开头的,这里也要注意A->B也是允许的,B后边不一定要有东西,然后将FIRST(B)加入到FIRST(A)中。

    重点在于求FOLLOW集合,我把这个步骤分解成五个步骤:

    1. 将#加入到FOLLOW(S)中,S为文法开始符号。
    2. 遍寻所有产生式,找到所有类似A->…Ba…的产生式,将a加入到FOLLOW(B)中,这里也要注意:B的前面和a的后面可以没有任何东西!!
    3. 遍寻所有产生式,找到所有两个类似A->…BC…的产生式,BC都为非终结符。这里举一个极端例子:A->BCDE,我们将任意两个相邻非终结符对中,后面非终结符的FIRST集合中除空串以外的所有加入到前面非终结符的FOLLOW集合中!简单来说,这里需要分别将C、D、E的FIRST集合加入到B、C、D的FOLLOW集合中。
    4. 遍寻所有产生式,找到类似A->…B的产生式,这里要注意:一定不要遗忘产生式右边只有一个非终结符的,比如A->B这种。然后我们将FOLLOW(A)加入到FOLLOW(B)中。
    5. 遍寻所有产生式,找到所有类似A->…BC的产生式。还是以A->BCDE为例,这里只需要考虑DE的关系,因为必须要求这两个相邻非终结符在最后!!如果FIRST(E)中含有空串,就将FOLLOW(A)加入到FOLLOW(D)中。步骤5其实是步骤4的特殊情况。

    注意以上所有过程最好都重复至少两次,防止存在这种情况:比如S要加入E中,S在这一轮加入了新的,E中最后却没有更新。

    实战演练一下

    在这里插入图片描述

    1.求解FIRST集合

    1). 根据上面的算法,首先找到所有右边为一个终结符开头的产生式A->a…。我们发现S={a},D={ ϵ \epsilon ϵ},T={b},M={b},H={ ϵ \epsilon ϵ}。
    2). 遍历所有产生式,找到右边以一个非终结符开头的。D->STe,于是将S加入D中,D={ ϵ \epsilon ϵ,a};H->M,将M加入H中,于是H={ ϵ \epsilon ϵ,b}
    3). 综上:S={a},D={ ϵ \epsilon ϵ,a},T={b},M={b},H={ ϵ \epsilon ϵ,b}。

    2.求解FOLLOW集合

    1). S={#}。
    2). 寻找所有产生式右边非终结符身后跟着一个终结符的产生式。我们发现:D->STe,所以T={e}。
    3). 找寻所有右边有两个非终结符相邻的产生式。我们发现:D->STe,所以将FIRST(T)加入S,S={#,b}。
    4). 找寻所有右边以一个非终结符结尾的产生式。我们发现:S->aD,所以将S加入D中,D={#,b};T->bM,将T加入M中,M={e};M->bH,将M加入H中,H={e};H->M,将H加入M中,M不变。
    5). 找寻所有右边以两个相邻非终结符结尾的产生式,没找到。
    6). 综上:S={#,b},D={#,b},T=M=H={e}。

    展开全文
  • 迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解迷宫求解...
  • 导航网格问题求解

    2020-10-12 17:14:17
    我有2种导航 , 可行走和水, 我的有2种怪物,一种可以行走在水上,一种不能走水, 然后 我不能走水的怪物会沿着水的边缘走, 就会导致 怪物有一半身体在水面上, 就很难看 请问有什么办法能让 不能走水的怪物 离水的...
  • 求解 求解

    2020-09-26 11:51:05
    [img=https://img-bbs.csdn.net/upload/202009/26/1601092178_421201.png][/img][img=https://img-bbs.csdn.net/upload/202009/26/1601092198_677530.jpg][/img] 去某公司给的面试题,自己没做出来,想让大佬们...
  • [img=https://img-bbs.csdn.net/upload/202006/20/1592659863_948401.png][/img]
  • 【优化求解-单目标求解】基于蜉蝣算法求解单目标问题matlab源码.md
  • 【优化求解-单目标求解】基于阿基米德算法求解单目标问题matlab源码.md
  • 使用python求解特征值与特征向量

    万次阅读 多人点赞 2016-10-25 19:04:05
    使用python求解特征值与特征向量 实例介绍

    #使用python求解特征值与特征向量
    问题描述:
    求解矩阵[[1.25,0.375,0],[0.375,1.25,-0.5],[0,-0.5,0.875]]的特征值与特征向量

    参考链接1:
    百度经验:python线性代数—求方阵的特征值特征向量

    利用python求解方阵特征值与特征向量的方法及代码实现

    >>>import numpy as np      ##引入numpy模块
    >>>x=numpy.diag((1,2,3))   ##写入对角阵x
    >>>x                       ##输出对角阵x
    array([[1,0,0],
    [0,2,0],
    [0,0,3]])
    >>>a,b=numpy.linalg.elg(x) ##特征值赋值给a,对应特征向量赋值给b 
    >>>a                       ##特征值 1 2 3
    array([1.,2.,3.])
    >>>b                       ##特征向量
    array([1.,0.,0.],
    [0.,1.,0.],
    [0.,0.,1.])  
    

    局限性:使用函数numpy.diag( )产生的是对角阵,实际情况都是要处理一般方阵。关于numpy.diag( )的用法可以参考numpy.diag 使用说明

    参考链接2:
    科学计算python VS matlab
    介绍python进行矩阵运算的各种函数

    a2=np.array([[1,2,3],[2,3,4]])   #建立一个二维数组
    b2=np.array([[1,2,3],[2,3,4]],dtype=int)  #可以输出指定数据类型
    np.linalg.eig(a2)                #返回矩阵a2的特征值与特征向量
    

    针对开头的问题,求解代码如下图所示:
    问题求解代码

    参考链接3:
    特征值与特征向量的雅克比算法C++实现

    没有比较就不知道,使用python求解特征值问题多么简单!
    链接3是使用C++求解特征值的方法,虽然有点复杂,代码多,个人感觉,有必要看一看,以认识具体的实现过程。

    展开全文
  • matlab数独求解

    2020-10-03 13:52:41
    matlab数独求解。matlab数独求解。matlab数独求解。matlab数独求解。matlab数独求解。matlab数独求解。matlab数独求解
  • comsol求解

    2018-09-27 17:00:04
    实用的comsol求解器相关文档,包括求解器基础理论,求解类型,求解器配置
  • 利用Python程序求解任意可解数独,同时输出整个求解过程,文件中包含几个测试用例,其中有世界最难数独的求解结果
  • 【Matlab】使用yalmip和cplex求解求解规划问题

    万次阅读 多人点赞 2018-11-16 11:10:46
    yalmip是由Lofberg开发的一种免费的优化求解工具,其最大特色在于集成许多外部的最优化求解器(包括cplex),形成一种统一的建模求解语言,提供了Matlab的调用API,减少学习者学习成本。简而言之,它可以让你像书写...

    1.yalmip简介

    yalmip是由Lofberg开发的一种免费的优化求解工具,其最大特色在于集成许多外部的最优化求解器(包括cplex),形成一种统一的建模求解语言,提供了Matlab的调用API,减少学习者学习成本。简而言之,它可以让你像书写数学模型那样输入你的模型。

    2.环境搭建

    2.1 yalmip安装

    yalmip下载页面,点击下载即可。

    解压后,将其复制到toolbox文件夹下面。

    打开matlab,在home选项卡里面找setpath(设置路径)。

    注意:有些matlab的doc可能不能使用,因此doc yalmip可能会报错,不必担心。

    2.2 cplex安装

    若您已经安装了cplex studio,可以在matlab菜单栏中找到设置路径(set path)的选项,选择“添加并包含子文件夹”,将cplex安装路径的cplex\matlab这一个文件夹添加进去。如下图所示。

    若您没有安装cplex studio,也没有关系。可以直接下载简化版,如下图所示。

    下载地址已经放在了csdn上,本博客最下方也提供了百度云链接。

    下载解压之后,接着,同样需要像上面一样配置路径。

    matlab版本2015a上亲测可用,效果如下图。

    3. 使用方法

    yalmip求解优化问题四部曲

    3.1 创建决策变量

        yalmip一共有三种方式创建决策变量,分别为:

    1. sdpvar-创建实数型决策变量
    2. intbar-创建整数型决策变量
    3. binvar-创建0/1型决策变量

        不过值得注意的是,在创建n*n的决策变量时,yalmip默认是对称方阵,所以要创建非对称方针时,需要这样写:

       xxxvar(n,n,'full')

    3.2 添加约束条件

        比起matlab自带的各种优化函数所要写明的约束条件,yalmip的约束条件写起来是非常舒适直观的。

        例如:0<=x1+x2+x3<=1,可以这样写(非常直观简介):

    % 创建决策变量
    x = sdpvar(1,3);
    % 添加约束条件
    C = [0<=x(1)+x(2)+x(3)<=1];

    3.3 参数配置

        关于参数设置,我们大多数是用来设置求解器solver的,如下所示。

    %设置求解器为cplex
    options=sdpsettings('solver','cplex');

    3.4 求解问题

        首先要明确求解目标z,yalmip默认是求解最小值问题,所以遇到求解最大值的问题,只需要在原问题的基础上添加一个负号即可。求解调用格式如下所示。

    %求解
    optimize(target,constraints,opstions)

    3.5 举例

    3.5.1 求解如下非线性规划问题

    % 清除工作区
    clear;clc;close all;
    % 创建决策变量
    x = sdpvar(1,2);
    % 添加约束条件
    C = [
        x(1) + x(2)  >= 2
        x(2)-x(1) <=1
        x(1)<=1
        ];
    % 配置
    ops = sdpsettings('verbose',0,'solver','cplex');
    % 目标函数
    z = -(x(1)+2*x(2))/(2*x(1)+x(2)); % 注意这是求解最大值
    % 求解
    reuslt = optimize(C,z);
    if reuslt.problem == 0 % problem =0 代表求解成功
        value(x)
        -value(z)   % 反转
    else
        disp('求解出错');
    end

    执行结果如下

                                                First-order      Norm of
     Iter F-count            f(x)  Feasibility   optimality         step
        0       1    0.000000e+00    2.000e+00    1.845e+00
        1       2   -1.361410e+00    5.242e-01    7.089e-01    1.602e+00
        2       3   -1.308814e+00    4.441e-16    7.788e-01    8.140e-01
        3       4   -1.299288e+00    0.000e+00    9.851e-02    8.490e-02
        4       5   -1.333584e+00    4.441e-16    1.095e-01    7.327e-02
        5       6   -1.364417e+00    4.441e-16    2.942e-02    7.491e-02
        6       7   -1.360272e+00    0.000e+00    2.021e-02    8.267e-03
        7       8   -1.379966e+00    4.441e-16    2.129e-02    5.706e-02
        8       9   -1.387834e+00    4.441e-16    3.065e-02    5.399e-02
        9      11   -1.391538e+00    4.441e-16    3.738e-02    2.721e-02
       10      12   -1.392332e+00    0.000e+00    4.000e-03    6.714e-03
       11      13   -1.398128e+00    4.441e-16    7.445e-03    2.336e-02
       12      14   -1.398413e+00    0.000e+00    3.518e-03    6.077e-04
       13      15   -1.398400e+00    0.000e+00    8.000e-04    2.893e-05
       14      16   -1.399667e+00    0.000e+00    1.513e-03    5.037e-03
       15      17   -1.399680e+00    0.000e+00    2.062e-04    1.052e-04
       16      18   -1.399680e+00    4.441e-16    1.600e-04    1.719e-06
       17      19   -1.399935e+00    0.000e+00    3.110e-04    1.024e-03
       18      20   -1.399936e+00    0.000e+00    3.200e-05    9.170e-07
       19      21   -1.399999e+00    0.000e+00    7.509e-05    2.535e-04
       20      22   -1.399999e+00    4.441e-16    3.200e-07    3.477e-08
    
    Local minimum found that satisfies the constraints.
    
    Optimization completed because the objective function is non-decreasing in 
    feasible directions, to within the selected value of the function tolerance,
    and constraints are satisfied to within the selected value of the constraint tolerance.
    
    <stopping criteria details>
    
    
    ans =
    
        0.5000    1.5000
    
    
    ans =
    
        1.4000

    3.5.2 求解经典TSP问题

    % 利用yamlip求解TSP问题
    clear;clc;close all;
    d = load('E:\\tsp_dist_matrix.txt')';
    n = size(d,1);
    % 决策变量
    x = binvar(n,n,'full');
    u = sdpvar(1,n);
    % 目标
    z = sum(sum(d.*x));
    % 约束添加
    C = [];
    for j = 1:n
        s = sum(x(:,j))-x(j,j);
        C = [C,   s  == 1];
    end
    for i = 1:n
        s = sum(x(i,:)) - x(i,i);
        C = [C, s  == 1];
    end
    for i = 2:n
        for j = 2:n
            if i~=j
                C = [C,u(i)-u(j) + n*x(i,j)<=n-1];
            end
        end
    end
    % 参数设置
    ops = sdpsettings('verbose',0,'solver','cplex');
    % 求解
    result  = optimize(C,z);
    if result.problem== 0
        value(x)
        value(z)
    else
        disp('求解过程中出错');
    end

    其中,用到了tsp_dist_matrix.txt文件,内容如下。

    0 7 4 5 8 6 12 13 11 18
    7 0  3 10 9 14 5 14 17 17
    4 3 0 5 9 10 21 8 27 12
    5 10 5 0 14 9 10 9 23 16
    8 9 9 14 0 7 8 7 20 19
    6 14 10 9 7 0 13 5 25 13
    12 5 21 10 8 13 0 23 21 18
    13 14 8 9 7 5 23 0 18 12
    11 17 27 23 20 25 21 18 0 16
    18 17 12 16 19 13 18 12 16 0

    运行结果如下

    Tried aggregator 1 time.
    Reduced MIP has 92 rows, 99 columns, and 396 nonzeros.
    Reduced MIP has 90 binaries, 0 generals, 0 SOSs, and 0 indicators.
    Presolve time = 0.03 sec. (0.19 ticks)
    Probing time = 0.02 sec. (0.16 ticks)
    Tried aggregator 1 time.
    Reduced MIP has 92 rows, 99 columns, and 396 nonzeros.
    Reduced MIP has 90 binaries, 0 generals, 0 SOSs, and 0 indicators.
    Presolve time = -0.00 sec. (0.19 ticks)
    Probing time = -0.00 sec. (0.17 ticks)
    Clique table members: 56.
    MIP emphasis: balance optimality and feasibility.
    MIP search method: dynamic search.
    Parallel mode: deterministic, using up to 4 threads.
    Root relaxation solution time = 0.08 sec. (0.15 ticks)
    
            Nodes                                         Cuts/
       Node  Left     Objective  IInf  Best Integer    Best Bound    ItCnt     Gap
    
          0     0       74.6000    20                     74.6000       27         
          0     0       77.0000    20                     Cuts: 7       33         
    *     0+    0                           77.0000       77.0000       33    0.00%
          0     0        cutoff             77.0000       77.0000       33    0.00%
    Elapsed time = 0.33 sec. (3.33 ticks, tree = 0.00 MB, solutions = 1)
    Clique cuts applied:  4
    Mixed integer rounding cuts applied:  1
    Multi commodity flow cuts applied:  2
    
    Root node processing (before b&c):
      Real time             =    0.33 sec. (3.34 ticks)
    Parallel b&c, 4 threads:
      Real time             =    0.00 sec. (0.00 ticks)
      Sync time (average)   =    0.00 sec.
      Wait time (average)   =    0.00 sec.
                              ------------
    Total (root+branch&cut) =    0.33 sec. (3.34 ticks)
    
    ans =
    
       NaN     0     0     1     0     0     0     0     0     0
         0   NaN     0     0     0     0     1     0     0     0
         0     1   NaN     0     0     0     0     0     0     0
         0     0     1   NaN     0     0     0     0     0     0
         0     0     0     0   NaN     1     0     0     0     0
         0     0     0     0     0   NaN     0     1     0     0
         0     0     0     0     1     0   NaN     0     0     0
         0     0     0     0     0     0     0   NaN     0     1
         1     0     0     0     0     0     0     0   NaN     0
         0     0     0     0     0     0     0     0     1   NaN
    
    
    ans =
    
        77

    本文引用的其他博主的博客内容均有指明,对此表示感谢。有读者问如何解码最后的邻接矩阵,先给出笔者的做法:

    a=[NaN     0     0     1     0     0     0     0     0     0
         0   NaN     0     0     0     0     1     0     0     0
         0     1   NaN     0     0     0     0     0     0     0
         0     0     1   NaN     0     0     0     0     0     0
         0     0     0     0   NaN     1     0     0     0     0
         0     0     0     0     0   NaN     0     1     0     0
         0     0     0     0     1     0   NaN     0     0     0
         0     0     0     0     0     0     0   NaN     0     1
         1     0     0     0     0     0     0     0   NaN     0
         0     0     0     0     0     0     0     0     1   NaN];
    
    %初始时,从第一行开始
    k = 1;
    path = [k];
    for i=1:size(a,1)
         %寻找当前行k中的1所在的位置
         for j=1:size(a,2)
            if(a(k,j) == 1)
                k = j;
                path = [path, k];
                break;
            end
         end
    end
    
    path
    path =
    
         1     4     3     2     7     5     6     8    10     9     1

    由于看到大家需求比较大,这里直接放在百度网盘上了,需要的话去下载就行了。

    链接:https://pan.baidu.com/s/1Zj0JEFNKC7kwmaaBWeOKtQ 
    提取码:k497 

    展开全文
  • 【优化求解-单目标求解】基于黑猩猩算法求解单目标问题matlab源码.md
  • 高等数学中的二次求解,用数值分析的方法求解
  • 最想说的一句话:要查matlab用法,一定要到官网去查,一些用法matlab官方是在不断更新的,现存的一些办法已经无法解决问题 使用的是 solve 这个函数 ...题目:求解方程 2x+1=0 2x+1=0 2x+1=0 syms x...

    最想说的一句话:要查matlab用法,一定要到官网去查,一些用法matlab官方是在不断更新的,现存的一些办法已经无法解决问题

    使用的是 solve 这个函数,官网说明链接
    它拥有解决优化问题,解方程的功能,下面我将举一些常用的例子

    一、解单变量方程

    题目:求解方程
    2 x + 1 = 0 2x+1=0 2x+1=0

    syms x
    eqn = 2*x + 1 == 0;
    x = solve(eqn, x)
    

    二、解多变量方程

    题目:求解方程
    { x 2 + y 2 = 5 x − y = 1 \begin{cases} x^2 + y^2 = 5 \\ x - y = 1 \end{cases} {x2+y2=5xy=1

    syms x y
    eqns = [x^2 + y^2 == 5, x - y == 1];
    vars = [x y];
    [x, y] = solve(eqns, vars)
    

    三、解带参数方程

    题目:求解方程
    a x 2 + b x + c = 0 ax^2 + bx + c = 0 ax2+bx+c=0

    syms a b c x
    eqn = a*x^2 + b*x + c == 0;
    x = solve(eqn, x)
    

    四、解不等式

    题目:求解不等式
    { x > 0 y > 0 x 2 + y 2 < 1 \begin{cases} x > 0 \\ y > 0 \\ x^2 + y^2 < 1 \end{cases} x>0y>0x2+y2<1

    syms x y
    cond1 = x > 0;
    cond2 = y > 0;
    cond3 = x^2 + y^2 < 1;
    conds = [cond1 cond2 cond3];
    
    sol = solve(conds, [x y], 'ReturnConditions', true);
    
    sol.x
    sol.y
    sol.conditions
    

    其中,sol.x & sol.y 会输出新的变量,sol.conditions新变量之间满足的关系

    知识点总结

    常规语法:sol = solve(eqn,var)

    当公式中的解无法有限列举出来时,需要用参数化表示,就要用下列语法:
    [y1,…,yN,parameters,conditions] = solve(eqns,vars,‘ReturnConditions’,true)
    (通过将 "ReturnConditions选项指定为true, 可以找到同一公式的完整解。)

    展开全文
  • 该代码利用 NSGA_II算法求解 算法求解算法求解ZDT问题和DTLZ问题,是研究生自然计算课程的第二次作业,其中还包含ZDT问题和DTLZ问题的真实前端
  • 多目标规划求解的matlab和lingo求解方法,里面还有例题
  • 如何利用matlab求解方程

    万次阅读 多人点赞 2018-04-22 12:46:54
    如何利用matlab求解方程1. 前言作为三大数学软件之一,matlab在数值计算方法的能力首屈一指。求解方程是工科学习和工程计算中最基础、最常见的问题。掌握利用现代化工具求解方程的方法对于提升我们的工科素养至关...
  • 应用ECOS求解器,求解二阶锥问题,程序中有备注,上传的是整个方案,可以直接使用VS2010打开
  • 表达式求解

    2012-08-09 16:31:36
    表达式求解
  • 解决cplex求解优化问题。
  • 回溯迷宫求解器:回溯迷宫求解
  • 一个双目匹配求解视差图的matlab源代码
  • 求解求解求解求解求解求解求解求解啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 554,793
精华内容 221,917
关键字:

求解