zoukankan      html  css  js  c++  java
  • Matlab与科学计算的基本运算


    各种允许的比较关系
    >, >=, <, <=, ==,~=, find(), all(), any()

    例:>> A=[1,2,3;4,5,6;7,8,0]
    A =
    1 2 3
    4 5 6
    7 8 0
    >> find(A>=5), %大于或等于5元素的下标
    ans =
    3 5 6 8

     

    >> syms s;
    >> P=(s+3)^2*(s^2+3*s+2)*(s^3+12*s^2+48*s+64)
    P =
    (s+3)^2*(s^2+3*s+2)*(s^3+12*s^2+48*s+64)

    >> simple(P) % 一系列化简尝试,得出计算机认为的最简形式
    ans =
    (s+3)^2*(s+2)*(s+1)*(s+4)^3

     

    MATLAB 实现:
    s1=simple(s) 从各种方法中自动选择最简格式 [s1,how]=simple(s) 化简并返回实际采用的化简方法
    其中,s为原始表达式,s1为化简后表达式,how为采用的化简方法。
    其它常用化简函数(信息与格式可用 help命令得出)
    collect( ) 合并同类项
    expand( ) 展开多项式
    factor( ) 因式分解
    numden( ) 提取多项式的分子和分母
    sincos( ) 三角函数的化简

    Q =
    s^7 + 21*s^6 + 185*s^5 + 883*s^4 + 2454*s^3 + 3944*s^2 + 3360*s + 1152
    >> syms s1
    >> subs(Q,s,s1)
    ans =
    s1^7 + 21*s1^6 + 185*s1^5 + 883*s1^4 + 2454*s1^3 + 3944*s1^2 + 3360*s1 + 1152

    gcd(m,n) lcm(m,n) factor(n):质因子分解

    isprime:判断质数

     

    例:1-100间质数
    >> A=1:10; isprime(A) %若向量A中某个整数值为质数,则相应位置为1,其他为零。
    ans =
    0 1 1 0 1 0 1 0 0 0
    >> A=1:100; B=A(isprime(A))
    B =
    Columns 1 through 16
    2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53
    Columns 17 through 25
    59 61 67 71 73 79 83 89 97

     

    switch语句

    和 C 语言的区别
    当开关表达式的值等于某表达式,执行该语句后结束该结构,不用 break
    当需要在开关表达式满足若干个表达式之一时执行某一程序段,则用单元形式 (用大括号把这些表达式括起来,用逗号分隔)
    otherwise 语句,不是C语言中的 default(但与之等价)
    程序的执行结果和各个case顺序无关
    case 语句中条件不能重复,否则列在后面的条件将不能执行

    nargin, nargout
    分别表示输入和返回变量的实际个数,此为MATLAB保留变量,只要进入该函数, MATLAB就将自动生成这两个变量。
    varargin, varargout
    输入、输出变量列表(可变输入输出个数)。

    factorial()求阶乘;prod更快,用于求数组内元素的乘积。

    例: conv( ) 可以计算两个多项式的积
    用 varargin 实现任意多个多项式的积
    function a=convs(varargin)
    a=1;
    for i=1:length(varargin), a=conv(a,varargin{i}); end

    >> P=[1 2 4 0 5]; Q=[1 2]; F=[1 2 3]; D=convs(P,Q,F)
    D =
    1 6 19 36 45 44 35 30
    >> poly2sym(D)
    ans =
    x^7+6*x^6+19*x^5+36*x^4+45*x^3+44*x^2+35*x+30

     

    >> a = [1 1]

    a =

    1 1

    >> b = [1 1]

    b =

    1 1

    >> conv(a,b)

    ans =

    1 2 1


    >> E=conv(conv(P,Q),F)
    % 若采用 conv() 函数,则需要嵌套调用
    E =
    1 6 19 36 45 44 35 30
    >> poly2sym(E)
    ans =
    x^7+6*x^6+19*x^5+36*x^4+45*x^3+44*x^2+35*x+30

    >> G=convs(P,Q,F,[1,1],[1,3],[1,1])
    G =
    1 11 56 176 376 578 678 648 527 315 90 

    subplot(2,2,i)

    隐函数绘制f(x,y) = 0

    >> ezplot(‘x^2 *sin(x+y^2) +y^2*exp(x+y)+5*cos(x^2+y)’) %x自选
    >> ezplot('x^2 *sin(x+y^2) +y^2*exp(x+y)+5*cos(x^2+y)',[-10 10])

  • 相关阅读:
    婚礼珠宝策划
    Mandelbrot图像
    程序的又一次测量学实际应用(程序对全站仪测量学导出数据文件的读取与修改)
    中国海域系统源代码
    利用“三角化”计算行列式快速求解程序(验证过很多题目的,绝对准确)
    ”上三角“行列式源代码(改良版,添加了几种特殊情况的特殊处理)
    中国海域系统
    Java
    Java
    【日记】12.12
  • 原文地址:https://www.cnblogs.com/hxsyl/p/4605794.html
Copyright © 2011-2022 走看看