精华内容
下载资源
问答
  • matlab解决实际应用题

    万次阅读 2016-08-29 21:21:47
    The input character is not valid in MATLAB statements or expressions. 解决方法:文件名2_2.m不能以数字开头 一个m文件同时画多幅图片 解决方法:在plot之前加 fugure(1), figure(2) 多行注释 解决方法: ...

    题目一

    这里写图片描述

    题目二

    这里写图片描述

    遇到的问题

    The input character is not valid in MATLAB statements or expressions.

    解决方法:文件名2_2.m不能以数字开头

    一个m文件同时画多幅图片

    解决方法:在plot之前加 fugure(1), figure(2)

    多行注释

    解决方法: ctrl + R 取消T

    字符间距突然变大

    解决办法:shift + space

    代码

    close all, clear all, clc
    load('data.txt');
    data = reshape(data, 160, 1); %将矩阵转化为行向量
    figure(1)
    hist(data, 15);
    [counts,centers] = hist(data, 15); %counts频数 centers中点
    
    %算数平均数
    mean_1 = sum(data)/160;
    %几何平均值
    mean_2 = geomean(data);
    %中位数
    mean_3 = median(data);
    %极差
    dis_1 = max(data) - min(data);
    %四分位数间距
    dis_2 = prctile(data,75) - prctile(data,25);
    %方差
    dis_3 = var(data);
    %标准差
    dis_4 = std(data);
    
    %斜度
    deg_1 = skewness(data);
    %峭度
    deg_2 = kurtosis(data);
    
    %正态性检验-方法1 图
    figure(2)
    normplot(data);
    %正态性检验-方法2 Jarque-Bera检验
    [h1,p]=jbtest(data,0.05); % 5%的显著性水平 h1 = 0 则为正态分布
    %正态性检验-方法3 Jarque-Bera检验
    y  = zscore(data);   %进行标准化处理
    [h2,p,k,c] = kstest(y,[],0.05,0); %h2 = 0
    
    %求95%置信区间
    [muhat,sigmahat,muci,sigmaci] = normfit(data, 0.05); %muci和sigmaci分别为mu和sigma的95%的置信区间

    图像

    这里写图片描述
    这里写图片描述

    第六题

    这里写图片描述

    close all, clear all, clc
    sum = 100000;
    city = 0.2*sum; country = sum - city;
    hold on
    for i = 1: 100 %到第100年末
       city = 0.9*city + 0.05*country;
       country = sum - city;
       p = city/sum
       plot(i, p, '*');
    end
    xlabel('年份'), ylabel('城镇人口所占比例');
    title('总人口20%位于城镇');


    这里写图片描述

    展开全文
  • MatLab工程数学应用

    2010-05-10 07:57:58
    本书从基础知识入手,在详细介绍各种命令的同时,向读者介绍Matlab在高等数学、线性代数、图形图像处理、数据处理等方面的应用和外部接口程序设计。配习题和参考答案。
  • 使用 Matlab 解决数学建模问题

    千次阅读 多人点赞 2018-12-06 00:35:37
    线性规划函数1. 线性规划函数:linprog()1.1. linprog() 的标准形式1.2. linprog() 的使用1.3. 应用例子 1. 线性规划函数:linprog() ...Matlab 中规定线性规划的标准形式为 min⁡xcTxs.t.{Ax≤...

    前言

    如果你在使用 Matlab 来处理一些数学问题,希望这篇博客可以帮到你。你可以根据所需要的内容查看对应的标题的内容,可以知道在 Matlab 中使用什么函数来解决问题。

    1. 优化问题

    1.1. 线性规划函数:linprog()

    1.1.1. 线性规划的标准形式

    线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于号也可以是大于号。

    Matlab 中规定线性规划的标准形式为
    min ⁡ x c T x s . t . { A x ≤ b A e q ⋅ x = b e q l b ≤ x ≤ u b \min_x c^Tx \\ s.t. \begin{cases} Ax \leq b \\ Aeq \cdot x = beq \\ lb \leq x \leq ub \\ \end{cases} xmincTxs.t.AxbAeqx=beqlbxub

    第一个式子为目标函数, s . t . s.t. s.t. 式是约束条件。其中 c c c x x x n n n 维列向量, A A A A e q Aeq Aeq 为适当维数的矩阵, b b b b e q beq beq 为适当维数的列向量。

    1.1.2. linprog() 的使用

    在 matlab 中,线性规划的函数为 linprog() ,它有两种常用形式:X = linprog(f,A,b,Aeq,beq,LB,UB,X0)[X, FVAL] = linprog(f,A,b,Aeq,beq,LB,UB,X0)

    返回的值 X 是向量 x x x 的值,FVAL 是目标函数的值,LB 和 UB 分别是变量 x x x 的下界和上界, x 0 x_0 x0 x x x 的初始值。

    1.1.3. 应用例子

    例子 1.

    求下列线性规划问题:

    max ⁡ z = 2 x 1 + 3 x 2 − 5 x 3 s . t . { x 1 + x 2 + x 3 = 7 2 x 1 − 5 x 2 + x 3 ≥ 10 x 1 + 3 x 2 + x 3 ≤ 12 x 1 , x 2 , x 3 ≥ 0 \max z = 2x_1+3x_2-5x_3 \\ s.t. \begin{cases} x_1+x_2+x_3=7 \\ 2x_1-5x_2+x_3 \ge 10 \\ x_1+3x_2+x_3 \leq 12 \\ x_1,x_2,x_3 \ge 0 \\ \end{cases} maxz=2x1+3x25x3s.t.x1+x2+x3=72x15x2+x310x1+3x2+x312x1,x2,x30

    依据 Matlab 的标准,默认求解是求最小值,而本例是求的最大值,把 z z z 的系数变为相反数,即 − 1 -1 1 就好了,同理 下面的大于等于号 ≥ \ge 也做同样处理,就是把 10 → − 10 10 \to -10 1010,然后没有上界 UB,下界 LB 为三个变量都为 0 0 0 ,也就是一个全零的矩阵 zeros(3, 1)

    编写一个 .m 文件:

    c = [2; 3; -5];
    a = [-2, 5, -1; 1, 3, 1];
    b = [-10; 12];
    aeq = [1, 1, 1];
    beq = 7;
    x = linprog(-c, a, b, aeq, beq, zeros(3, 1))
    value = c'*x
    

    执行后输出最优解和目标函数在最优解的取值:

    x =
    
        6.4286
        0.5714
        0.0000
    
    
    value =
    
       14.5714
    
    

    1.2. 非线性规划函数:fmincon()

    1.2.1. 非线性规划的标准形式

    如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。

    线性规划与非线性规划的区别:

    线性规划的最优解只能在其可行域的边界上达到;而非线性规划的最优解则可能在可行域的任意一点达到。

    1.2.2. fmincon() 的使用

    Matlab 中非线性规划的数学模型的形式为:
    min ⁡ f ( x ) s . t . { A x ≤ B A e q ⋅ x = B e q C ( x ) ≤ 0 C e q ( x ) = 0 \min f(x) \\ s.t. \begin{cases} Ax \leq B \\ Aeq \cdot x = Beq \\ C(x) \leq 0 \\ Ceq(x) = 0 \end{cases} minf(x)s.t.AxBAeqx=BeqC(x)0Ceq(x)=0
    f ( x ) f(x) f(x) 是标量函数, A A A, B B B, A e q Aeq Aeq, B e q Beq Beq 是相应位数的矩阵和向量, C ( x ) C(x) C(x), C e q ( x ) Ceq(x) Ceq(x) 是非线性向量函数。

    Matlab 中的函数是:X = fmincon(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)

    它的返回值是向量 x x x,其中 FUN 是用 M 文件定义的函数 f ( x ) f(x) f(x) ;X0 是 x x x 的初始值; A, B, Aeq, Beq 定义了线性约束 A ∗ X ≤ B A * X \leq B AXB, A e q ∗ X = B e q Aeq * X = Beq AeqX=Beq,如果没有线性约束,则 A=[], B=[], Aeq=[], Beq=[];LB 和 UB 是变量 x x x 的下界和上界,如果上界和下界没有约 束,则 LB=[],UB=[],如果 x x x 无下界,则 LB 的各分量都为 -inf,如果 x x x无上界,则 UB 的各分量都为 inf;NONLCON 是用 M 文件定义的非线性向量函数 C ( x ) C(x) C(x), C e q ( x ) Ceq(x) Ceq(x);OPTIONS 定义了优化参数,可以使用 Matlab 缺省的参数设置。

    1.2.3. 应用例子

    例子 1.

    求下列非线性规划:
    min ⁡ f ( x ) = x 1 2 + x 2 2 + x 3 2 + 8 s . t . x 1 2 − x 2 + x 3 2 ≥ 0 x 1 + x 2 2 + x 3 3 ≤ 20 − x 1 − x 2 2 + 2 = 0 x 2 + 2 x 3 2 = 3 x 1 , x 2 , x 3 ≥ 0 \min f(x)=x^2_1+x_2^2+x_3^2+8 \\ \begin{matrix} s.t. & x_1^2-x_2+x_3^2 \ge 0 \\ & x_1+x_2^2+x_3^3 \leq 20 \\ & -x_1-x_2^2+2=0 \\ & x_2+2x_3^2=3 \\ & x_1, x_2, x_3 \ge 0 \\ \end{matrix} minf(x)=x12+x22+x32+8s.t.x12x2+x320x1+x22+x3320x1x22+2=0x2+2x32=3x1,x2,x30
    编写 M 文件 fun1.m, fun2.m, example2.m,内容分别为下:

    %% content of fun1.m
    function f=fun1(x);
    f=sum(x.^2)+8; 
    
    %% content of fun2.m
    function [g,h]=fun2(x);
    g=[-x(1)^2+x(2)-x(3)^2 x(1)+x(2)^2+x(3)^3-20];  %非线性不等式约束
    h=[-x(1)-x(2)^2+2 x(2)+2*x(3)^2-3]; %非线性等式约束 
    
    %% content of exemple.m
    options=optimset('largescale','off'); 
    [x,y]=fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[],'fun2', options)
    

    运行的结果:

    x =
    
        0.5522
        1.2033
        0.9478
    
    
    y =
    
       10.6511
    
    

    1.3. 整数规划:intlinprog()

    1.3.1. 整数规划的标准形式

    规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中, 变量限制为整数,则称为整数线性规划。如不加特殊说明,一般指整数线性规划。

    整数规划在 Matlab 上的标准形式是:
    min ⁡ x   c T x s . t . { A x ≤ b A e q ⋅ x = b e q l b ≤ x ≤ u b \min_x \, c^Tx \\ s.t. \begin{cases} Ax \leq b \\ Aeq \cdot x = beq \\ lb \leq x \leq ub \\ \end{cases} xmincTxs.t.AxbAeqx=beqlbxub
    与之前的线性规划一样,不同的是这里我们的 x x x 是取整数的。

    1.3.2. intlinprog() 的使用

    由于《数学建模算法与程序》这本书写得算是比较早,那个时候 Matlab 对于整数规划还没有函数,而唯一一个出现的 bintprog() 函数在如今的 Matlab 上也移除了,用了一个新的函数 intlinprog() 代替,也就是说,我们现在可以在 Matlab 上处理整数规划问题了。

    先看看 intlinprog() 的用法解释:

    X = intlinprog(f,intcon,A,b,Aeq,beq,LB,UB) 与上面一样,但是第二个参数 intcon 是指定要限定哪一个 x x x 为整数,如果想要限定 x 2 x_2 x2 x 10 x_{10} x10 为整数,那就是 [2,10]

    1.3.3. 应用例子

    这里我们使用 intlinprog() 解决书上的第一个整数规划(书上使用的是分支定界法,还是挺复杂的):

    例子 1.

    求解下述整数规划:
    M a x   z = 10 x 1 + 90 x 2 { 9 x 1 + 7 x 2 ≤ 56 7 x 1 + 20 x 2 ≤ 70 x 1 , x 2 ≥ 0   ( x 1 , x 2 ∈ Z ) \mathrm{Max} \, z=10x_1+90x_2 \\ \begin{cases} 9x_1+7x_2 \leq 56 \\ 7x_1+20x_2 \leq 70 \\ x_1, x_2 \ge 0 \, (x_1,x_2 \in \boldsymbol{Z}) \end{cases} Maxz=10x1+90x29x1+7x2567x1+20x270x1,x20(x1,x2Z)
    编写程序:

    c=[40;90];
    A=[9 7;7 20];
    b=[56 70];
    Aeq=[];
    beq=[];
    LB=[0;0];
    UB=[inf;inf]
    X=intlinprog(-c,[1,2],A,b,Aeq,beq,LB,UB)
    value=f'*X
    

    运行,解得:

    X =
    
        4.0000
        2.0000
    
    
    value =
    
       340
    
    展开全文
  • Matlab基本数学应用

    2016-07-17 11:35:00
    Matlab通过数列的通项表达式来定义数列,通项表达式也是一个数学函数但是它的自变量是离散的。limit函数同样可以对数列求极限,如 limit(expr, n, Inf) 多重极限视为极限的复合,嵌套调用limit函数: limit(limit...

    基本线性代数

    • [R jb]=rref(A)将A化为行最简型矩阵。R为所得行最简型矩阵,jb是一个向量显示每行首非0元所在列号。

    • inv(A)求方阵A的逆,注意结果可能出现错误。当结果中出现Inf和NaN时一定有错。

    • pinv(A)求矩阵伪逆

    • A \ b 矩阵左除计算,返回Ax = b的一个特解。当矩阵A为方阵时 A  b等价于 inv(a) * b;当A不是方阵时只能使用左除计算而不能使用inv(A).

    • A / b 矩阵右除运算,当矩阵A为方阵时 A  b等价于 inv(a) * b;当A不是方阵时只能使用左除计算而不能使用inv(A

    • det(A) 求矩阵A对应行列式的值

    • rank(A) 求矩阵A的秩

    • trace(A) 矩阵A求迹

    • [V D] = eig(A) 矩阵D为矩阵A所有特征值组成的对角矩阵,矩阵V是由矩阵A的特征向量组成的列向量组,其顺序与矩阵D对应。

    求解线性方程组

    • 克拉莫法则

    • 化为行最简型(rref),代入完成剩下的计算。

    • null(A,’r’)可以求解向量空间A的一组有理基(列向量),参数’r’是求有理解(reasonable)的选项。此命令可以求解齐次线性方程组的基础解系,结合求逆,左(右)除求非齐次方程的特解,可以求解任意线性方程组。

    微积分

    数学函数的定义

    M函数文件,可执行字符串均可用于定义数学函数,但是数学函数通常使用符号表达式和匿名函数来定义.

    为了与大多数函数(特别是求解析解的函数)兼容,这里推荐使用符号表达式.

    求反函数:

    • g = finverse(f) 求符号表达式f对于默认自变量的反函数

    • g = finverse(f,var) 求符号表达式f对于符号变量var的反函数

    复合函数

    • h= compose(f, g)求符号表达式f,g的复合函数f [ g(x) ]

    • h= compose(f, g, t) 求符号表达式f,g的复合函数f [ g(x) ],并代入t作为自变量

    函数极限与微积分

    极限:

    • limit(expr, x ,a)对符号表达式expr求在变量x趋于a时的极限,返回极限的符号表达式

    • limit(expr, a)对符号表达式expr求在默认自变量趋于a时的极限

    • limit(expr ) 对符号表达式expr求在默认自变量趋于0时的极限

    • limit(expr,x,a,'left')对符号表达式expr求在变量x趋于a时的左极限

    • limit(expr,x,a,'right')对符号表达式expr求在变量x趋于a时的右极限

    Matlab通过数列的通项表达式来定义数列,通项表达式也是一个数学函数但是它的自变量是离散的。limit函数同样可以对数列求极限,如limit(expr, n, Inf)

    多重极限视为极限的复合,嵌套调用limit函数:

    • limit(limit(fun,x,x0), x , x0)

    • limit(limit(fun,x,x0), y , y0)

    函数求导:

    • dyx = diff(fun) 对符号表达式fun求对于默认自变量的一阶导数

    • dyx = diff(fun ,n)

    偏导数本质上仍是一元导数,将其余变量赋值后即可使用diff求偏导数。

    隐函数求导:

    syms x dy       %定义符号变量
    y = sym('y(x)') %声明y为x的函数
    fun = x*y - 1       %定义隐函数fun(x,y) = 0
    dfx = diff(fun,x)   %对fun(x,y) 左侧求导考虑,y与x之间的函数关系
    dfx = subs(dfx,'diff(y(x),x)',dy)  %定义dy代替导数yx
    dfx = solve(dfx,dy)            %求解关于dy(yx )的方程dfx (dy) = 0

    公式法隐函数求导:

    syms x y        %定义符号变量
    fun = x*y - 1   %定义隐函数fun(x,y) = 0
    dy = diff( fun , y)     %不考虑y与x的函数关系,求Fx。
    dx = diff( fun , x)  %不考虑y与x的函数关系,求Fy。
    dfx  = - dx / dy            %代入公式

    隐函数求高阶导:

    function [ dyx ] = imdiff(fun,n)
    % find the diff of the implict function y=y(x) defined by equation f(x,y)=0
    %Please define the next sym :
    %syms x dy
    %y=sym('y(x)'); 
    %please define fun, and you can use this function
    
        dfx = diff(fun,x);
        dfx = subs(dfx,'diff(y(x), x)',dy);
        dyx=solve(dfx,dy);
        dfx=dyx;
        for i=2:n
                    dyx=diff(dyx,x);
                    dyx=subs(dyx,'diff(y(x), x)',dfx);
        end
    end

    参数方程求导:

    syms t;
    y = sin(t);
    x = cos(t);
    dx = diff(x,t);
    dy = diff(y,t);
    dyx = dy / dx;

    参数方程求高阶导:

    function [ dyx ] = paradiff(y,x,t,n)
    %recurison diff of a paramatic function
    % y = y(t) x = x(t) diff(y,x,n)
        dx = diff(x,t);
        if (n == 1)
                        dyx = diff(y,t) / dx;
        else
                        dyx = diff( paradiff(y,x,t,n-1) / dx);
        end
    end

    泰勒展开:

    • R = taylor( fun, v, a)fun为关于变量v的数学函数,var为符号变量表示自变量,a为展开点。

    • taylortool命令将打开图形化的taylor展开分析界面。]

    一元积分的解析解:

    • int (fx , x)关于符号表达式fx对变量x求不定积分解析解。当x为默认自变量时可以省略参数x。

    • int (fx , x, a, b)关于符号表达式fx对变量x在区间[a,b]上求定积分解析解。当x为默认自变量时可以省略参数x,可以进行反常积分。

    一元积分的数值解:

    • I = integral(fun, xmin, xmax)fun是描述数学函数的函数句柄(不支持符号表达式和可执行字符串),在[xmin,xmax] 区间内求数值积分。含有参数的数学函数可以在参数表结尾依次添加参数值。

    • q = integral(fun,xmin,xmax,Name,Value)可以为integral指定选项。

    重积分可以化为嵌套的定积分求解:

    I = integral2(fun, xmin, xmax, ymin, ymax)fun是描述数学函数的函数句柄(不支持符号表达式和可执行字符串)。xmin, xmax, ymin, ymax 可以是常数或者数学函数句柄。调用与integral非常类似,三重积分可以使用integral3.

    数值分析

    拟合与回归分析

    拟合

    多项式拟合[a,b,...]=polyfit(X,Y,N),X、Y是代表数据点的坐标,N代表拟合多项式的最高次数,返回降幂排列的多项式系数。

    polyval(P, x)用于计算多项式的值,P是降幂排列的系数,x是待计算的自变量。

    Matlab中的Fit函数可以进行自定义函数拟合,在使用该函数之前首先要使用fittype函数创建拟合模式参数。

    p=fittype(LibraryModelName)使用库定义的拟合模式,拟合模式是库定义的描述拟合函数形式的字符串。

    ‘poly’代表多项式后面紧跟(不含空格)一系列数字代表各个自变量拟合时的最大次数,如 p=fittype(‘poly3’)代表拟合函数为y=k1x3+k2x2+k3*x+k4.

    p=fittype(‘poly22’)代表拟合函数为z=k1x2+k2x+ k3y2+k4y+k5.

    f=fittype('rat22')是进行比例拟合 y= (p1x^2 + p2x + p3) / (x^2 + q1*x + q2)。

    更多拟合模式参见help fittype,调用该函数时将会输出拟合模式f的表达式

    p=fittype(LinearModelName)的参数是一个字符串组成的向量,每一个字符串都是关于自变量x的一个函数,Matlab以这些函数作为各项进行线性拟合.

    例如fittype({'sin(x)','x','1'})代表拟合模式y = asin(x) + bx + c

    上述拟合表达式中都以x为自变量y为因变量,实际上和许多Matlab函数一样fittype函数的最后的参数可以是Name-Value对来对属性进行设置.

    • 'independent'和一个代表自变量的字符串或string-cell数组

    • 'dependent'和代表因变量的字符串

    • 'coefficients'和代表系数的字符串或string-cell数组

    p=fittype(expression)可以直接使用可执行字符串描述拟合函数模式,但需要在其后指定参数和自变量名称(默认为x)

    p=fittype(@(coefficients,independent,dependent))允许以匿名函数作为参数,但要求参数表按照先写系数最后两个依次为自变量和因变量的顺序书写

    fit( X, Y,model)model是fittype型变量(本质是个类对象),X列向量,Y为X的等长列向量组,返回值中包含拟合系数和代表拟合程度的数组stats

    线性回归分析

    上述拟合可以得到拟合函数但不能分析拟合程度,Matlab中的regress函数在进行拟合的同时返回代表拟合程度的值.

    [b,bint,r,rint,stats] = regress(y,X,, alpha),参数y代表因变量组成的列向量,参数X为自变量矩阵将其理解为行向量组,每个行向量表示一组x值,通常将第一列置为全1向量以获得常数项。

    返回值b列向量代表每个自变量的系数,第一个系数是常数项,bint是一个两列向量代表系数的置信区间,r为残差列向量,rint为两列向量,stats元素依次为残差平方和R2,F_检验值,阈值f,显著性概率p.

    一般地,F_越大越好一般要求F_至少大于阈值f。参数中alpha为显著性检验标准,默认为0.05,当返回值stats中p>alpha则表示有变量作用不明显可以剔除。

    regress函数利用最小二乘法进行线性回归分析,返回的值b实际是各个自变量的系数即y(m,1)=X(m, :)*b(:, m)或y=Xb,若有一个自变量始终为1那它的系数即为常数项。

    regress函数只能进行线性回归分析但是可以得到拟合情况的反馈,从而对拟合进行判断。polyfit,与fittype可以进行多项式或者曲线拟合却不能得到拟合效果的反馈。

    假设已有数据X 和Y,在Matlab软件包中,使用stepwise命令进行逐步回归,得到回归方程y=k1x1+k2x2+...+ε其中ε是随机误差。

    stepwise命令的使用格式如下:stepwise(X,Y) ,X,Y与regress的要求一致。

    注意:应用stepwise命令做逐步回归,数据矩阵X的第一列不需要人工加一个全1向量,程序会自动求出回归方程的常数项(intercept)。 

    在应用stepwise命令进行运算时,程序不断提醒将某个变量加入(Move in)回归方程,或者提醒将某个变量从回归方程中剔除(Move out)。 

    方程数值解

    [x, fval, exitflag, output] = fzero( fun, x0, options)
    参数表:

    • fun为表达式,函数求fun(x) = 0的数值解。

      • x0为迭代的初始解。
      • options选项结构体,包括Display和Tolx两个选项:Tolx 为误差限;Display为输出格式。如:- options = optimset('Display','final')

    返回值:

    • x为求得的解。

    • fval是根处目标函数的值

    • exitflag表示解的存在状况:正数表示存在,负数表示不存在

    • output为包含计算过程信息的结构体:

      • output.algorithm 表示求解算法

      • output.funcCount 表示函数赋值次数

      • output.iterations 表示迭代次数

    转载于:https://www.cnblogs.com/Finley/p/5678200.html

    展开全文
  • 本文档主要讲述MATLAB数学建模中的应用,包括常用算法编程,以及真题演练
  • matlab、lingo数学应用

    2009-09-02 12:10:22
    数学建模 优化软件LinGo的使用.ppt 数学软件—MatLab.ppt 数据的统计分析与描述-Matlab.ppt
  • 数学建模算法与应用习题1-3 解析 MATLAB 整数规划

    千次阅读 多人点赞 2021-01-27 02:55:27
    数学建模算法与应用习题 1.3 某厂生产三种产品Ⅰ,Ⅱ,Ⅲ。每种产品要经过A,B两道工序加工。设该厂有两种规格的设备能完成A工序,以A1,A2 表示;有三种规格的设备能完成B工序,以B1,B2,B3,表示。产品Ⅰ可在A,B任何一种...

    数学建模算法与应用习题 1.3

    某厂生产三种产品Ⅰ,Ⅱ,Ⅲ。每种产品要经过A,B两道工序加工。设该厂有两种规格的设备能完成A工序,以A1,A2 表示;有三种规格的设备能完成B工序,以B1,B2,B3,表示。产品Ⅰ可在A,B任何一种规格设备上加工。产品Ⅱ可在任何规格的A设备上加工,但完成B工序时,只能在B1设备上加工;产品Ⅲ只能在A2与B2设备上加工。已知在各种机床设备的单件工时、原材料费、产品销售价格、各种设备有效台时以及满负荷操作时机床设备的费用如表1.2所列,试安排最优的生产计划,使该厂利润最大。

    设备产品Ⅰ产品Ⅱ产品Ⅲ设备有效台时满负荷时的设备费用/元
    A15106000300
    A2791210000321
    B1684000250
    B24117000783
    B374000200
    原料费/(元/件)0.250.350.50
    单价/(元/件)1.252.002.80

    这里,我们可以设产品Ⅰ的A1、A2、B1、B2、B3参与生产的产品数量分别为x1、x2、x3、x4、x5。
    设产品Ⅱ的A1、A2、B1参与生产的产品数量分别为x6、x7、x8。
    设产品Ⅲ的A2、B2参与生产的产品数量分别为x9、x10。

    根据利润公式——利润 = 单价 - 原料 - 设备费用,得出:
    在这里插入图片描述

    z = (1.25-0.25)(x1+x2)+(2 -0.35)x8+(2.8-0.5)x9 
    -(300/6000)(5x1+10x6) - (321/10000)(7x2+9x7+12x9)  
    -(250/4000)(6x3+8x8) - (783/7000)(4x4+11x10) 
    -(200/4000)7x5
    

    可能公式不是很好理解
    (单价-成本)*(产品数量)-(设备单位时间价格)*时间
    这里的产品数量可以使用所有在A或者B加工的数量来表示,因为这个产品必须要经过A,B两道工序,所以说使用一个产品参与的所有的A或者B工序数量就可以。

    下面是条件限制

    5x1 + 10x6 ≤ 6000
    7x2 + 9x7 + 12x9 ≤ 10000
    6x3 + 8x8 ≤ 4000
    4x4 + 11x10 ≤ 7000
    7x5 ≤ 4000
    x1 + x2 = x3 + x4 + x5,
    x6 + x7 = x8
    x9 = x10
    x = 1:10
    

    整理后
    利润公式系数分别为 3/4,7753/10000,-3/8,-3132/7000,-7/20,-1/2,-2889/10000,1.15,19148/10000,-8613/7000。

    得出代码:

    clc;clear;
    c = [3/4,7753/10000,-3/8,-3132/7000,-7/20,-1/2,-2889/10000,1.15,19148/10000,-8613/7000];
    A = [5,0,0,0,0,10,0,0,0,0;0,7,0,0,0,0,9,0,12,0;
         0,0,6,0,0,0,0,8,0,0;0,0,0,4,0,0,0,0,0,11;
         0,0,0,0,7,0,0,0,0,0];
    b = [6000,10000,4000,7000,4000];
    aeq = [1,1,-1,-1,-1,0,0,0,0,0;
           0,0,0,0,0,1,1,-1,0,0;
           0,0,0,0,0,0,0,0,1,-1];
    beq = [0,0,0];
    options = optimoptions('linprog','Algorithm','dual-simplex');
    [x,y] = linprog(-c,A,b,aeq,beq,zeros(10,1),[],options);
    
    fprintf('最优方案应该为:\n')
    for i = 1:10
       fprintf('x%d = %.5f\n',i,x(i)); 
    end
    fprintf('最大利润为%.5f元\n',-y);
    
    
    

    输出为:

    
    Optimal solution found.
    
    最优方案应该为:
    x1 = 1200.00000
    x2 = 230.04926
    x3 = 0.00000
    x4 = 858.62069
    x5 = 571.42857
    x6 = 0.00000
    x7 = 500.00000
    x8 = 500.00000
    x9 = 324.13793
    x10 = 324.13793
    最大利润为1146.56650元
    

    同答案上Lingo程序的结果对比基本一致,又因为需要进行整数规划。这里我们对代码进行一下修改。

    clc;clear;
    c = [3/4,7753/10000,-3/8,-3132/7000,-7/20,-1/2,-2889/10000,1.15,19148/10000,-8613/7000];
    A = [5,0,0,0,0,10,0,0,0,0;0,7,0,0,0,0,9,0,12,0;
         0,0,6,0,0,0,0,8,0,0;0,0,0,4,0,0,0,0,0,11;
         0,0,0,0,7,0,0,0,0,0];
    b = [6000,10000,4000,7000,4000];
    aeq = [1,1,-1,-1,-1,0,0,0,0,0;
           0,0,0,0,0,1,1,-1,0,0;
           0,0,0,0,0,0,0,0,1,-1];
    beq = [0,0,0];
    intcon = [1 2 3 4 5 6 7 8 9 10];
    [x,y] = intlinprog(-c,intcon,A,b,aeq,beq,zeros(10,1),[]);
    fprintf('最优方案应该为:\n')
    for i = 1:10
       fprintf('x%d = %.5f\n',i,x(i)); 
    end
    fprintf('最大利润为%.5f元\n',-y);
    
    
    

    输出为:

    最优方案应该为:
    x1 = 1200.00000
    x2 = 230.00000
    x3 = 0.00000
    x4 = 859.00000
    x5 = 571.00000
    x6 = 0.00000
    x7 = 500.00000
    x8 = 500.00000
    x9 = 324.00000
    x10 = 324.00000
    最大利润为1146.41420元
    
    展开全文
  • 此书介绍了近年一些数学建模真题的Matlab实现!
  • 1、实验二 MATLAB求解数学问题2.1实验目的掌握MATLAB在大学数学问题中的基本应用,会使用MATLAB软件求解高等数学、线性代数和概率统计中的常见问题。2.2实验要求掌握MATLAB简单符号计算,学会使用MATLAB函数进行简单...
  • 数学建模算法与应用 习题1-4 我这里解答方案和答案上有一点点不一样,我是设每个货物的总量为1,这样每个货物在三个仓加起来就是小于等于1。 MatLab代码: clc;clear; zero = [0,0,0,0]; %% 这里是利润的判断 一共是...
  • 高等应用数学问题的MATLAB求解_习题参考解答
  • 提供了Matlab数学建模中的应用一书后的一些习题程序
  • 小型数学建模问题,解决正规战的胜负,老师的解答,上课课件
  • 薛定宇《高等应用数学问题MATLAB 求解》习题参考解答
  • 第一章 Matlab的简单应用 第二章 Matlab的绘图功能 第三章 Matlab函数 第四章 应用Matlab做线性代数运算 第五章 应用Matlab做统计分析运算 第六章 应用Matlab做插值及曲线拟合运算 第七章 微积分与微分方程的数值...
  • MATLAB工程数学系列

    2020-02-10 13:15:47
    系列课程介绍MATLAB在最优化、偏微分方差数值解、数据拟合等工程数学课程方面的应用和实现。具有较强的实用性。
  • 利用MATLAB解决高等数学问题Matlab 大作业本人选择了利用MATLAB解决高等数学问题。极限计算limit(f,x,a): 求函数f在x趋于常数a时的极限;limit(f): 求函数f在x趋于0时的极限;limit(f,x,a,’right’): 求函数f在x...
  • 通过MATLAB软件实现课后习题的求解,从更为基本的角度帮助学生学习MATLAB软件,为学生理论联系实际奠定应用基础,同时增加了复变函数画图和可视化、矩阵分析中部分内容的MATLAB实现和计算机仿真中常用的Mote Carlo...
  • matlab数学建模

    2021-07-24 16:24:16
    matlab数学建模,通过编程实战掌握具体应用。包括matlab基础编程、matlab神经网络、优化算法等内容。
  • 经过多方努力,MATLAB技术论坛计划在2011年3月26号举行的首届『全国MATLAB编程应用竞赛』。打造国内权威赛事,巩固论坛主导地位! 为了使竞赛的顺利进行,MATLAB技术论坛重新购买新的高性能服务器(至强4核4G),...
  • 上篇 方法演绎方法名称以及在数学模型中的应用场合,特色内容常规方法:主要是数据处理和绘制图形,建议预测方面,其中数据处理包括数据清预处理,数值计算,数值拟合等内容。这种方法的特色是:MATLAB的交互,薄膜...
  • 版块汇总建模和应用数学模型工程实例工具箱-高等应用数学问题MATLAB求解习题参考解答.part4.rar 下面使我们在建模,学习,应用中经常用到的一些数学模型,期望对您的工作学习有所帮助。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,379
精华内容 1,751
关键字:

matlab解决数学应用题

matlab 订阅