1.已知a1=sin(sym(pi/4)+exp(sym(0.7)+sym(pi/3)))产生精准符号数字,请回答:以下产生的各种符号数哪些是精准的?若不精准,误差又是多少?能说出产生误差的原因吗?

a2=sin(sym(pi/4)+exp(sym(0.7))*exp(sym(pi/3)))

a3=sin(sym('pi/4')+exp(sym('0.7'))*exp(sym('pi/3')))

a4=sin(sym('pi/4')+exp(sym('0.7+pi/3')))

a5=sin(sym(pi/4)+exp(sym(0.7+pi/3)))

a6=sin(sym(pi/4)+sym(exp(0.7+pi/3)))

a7=sin(sym(pi/4+exp(0.7+pi/3)))

a8=sym(sin(pi/4+exp(0.7+pi/3)))

(提示:可用vpa观察误差;注意数位的设置)。

解答:

这里首先介绍一个函数vpa:

 %{
一、要修改运算的精度,需要digits()函数和vpa()函数同时执行,单独使用digits函数不会改变运算精度!
二、vpa()函数对函数内部的变量运算过程不修改精度
%}
clear,clc;
format long;
%digits(m) ,这里设置的vpa会使用digits设定的精度位数m
digits(),vpa(pi),vpa(*pi) %vpa(pi,n) n>=m才可以
vpa(pi,)

执行结果为:

这里面说明了vpa()函数的用法,本次实验保留位数为30.

接着介绍一个函数sym.

S = sym(A)将非符号对象(如,数字,表达式,变量等)A转换为符号对象,并存储在符号变量S中.  但是需要注意的一点是:如果A是整数,那么sym('A')和sym(A)没有任何区别,但是如果不是整数,结果可能不一样:前者以字符串的形式传给符号运算内核,可以保留完整的精度;而后者经过浮点数运算之后再转换为符号类型,存在精度损失。

测试代码如下:

 %整数
sym('')==sym() %非整数,前者以字符串的形式传给符号运算内核,可以保留完整的精度;
%而后者经过浮点数运算之后再转换为符号类型,存在精度损失。
sym('sqrt(2)-1')-sym(sqrt()-)

测试结果如下:

本题测试代码如下:

 clear,clc;
format long;
digits(); a1=sin(sym(pi/)+exp(sym(0.7)+sym(pi/)));
a2=sin(sym(pi/)+exp(sym(0.7))*exp(sym(pi/)));
a3=sin(sym('pi/4')+exp(sym('0.7'))*exp(sym('pi/3')));
a4=sin(sym('pi/4')+exp(sym('0.7+pi/3')));
a5=sin(sym(pi/)+exp(sym(0.7+pi/)));
a6=sin(sym(pi/)+sym(exp(0.7+pi/)));
a7=sin(sym(pi/+exp(0.7+pi/)));
a8=sym(sin(pi/+exp(0.7+pi/))); %vpa(a1,)
da2 = vpa(a1-a2,)
da3 = vpa(a1-a3,)
da4 = vpa(a1-a4,)
da5 = vpa(a1-a5,)
da6 = vpa(a1-a6,)
da7 = vpa(a1-a7,)
da8 = vpa(a1-a8,)

测试代码

执行结果如下:da2 =0.0    da3 =0.000000000526537778494579980984266569899      da4 =0.0000000000162197098301695333225327542401

da5=0.000000000000000887482271695958461952368291362    da6=0.00000000000000148912212817656334175587101055

da7=0.00000000000000151885559392782263589719125845     da8=0.00000000000000151859755909122793880745885451

到这里可以看出除了第一个测试语句与标准语句结果相同外,其余皆有误差。误差原因:从结果可以看出sym(A)与sym('A')的误差差别对结果带来的影响。

2. 请读者先运行以下指令

a=0;b=pi;

t1=a:pi/9:pi;

t2=linspace(a,b,10);

T=t1*t2';

F=find(T<0);

然后,请回答变量a、t1、T、F的维度、规模、长度分别是多少?t1完全等于t2吗?为什么?

a是单变量 ,t1是1*10的向量,T是单变量([1][10]  *  [10]*[1]  -->[1]*[1]),F=0.

t1完全等于t2,因为t1是从0开始到pi,间隔为pi/9的序列,共10个数;而t2是0到pi之间的等间隔的十个数。

3. 对于指令A=reshape(1:18,3,6)产生的数组

A =

     1     4     7    10    13    16

     2     5     8    11    14    17

     3     6     9    12    15    18

先请你用一条指令,使A数组中取值为2、4、8、16的元素都被重新赋值为NaN。然后,再请你用一条指令,把A数组的第4、5两列元素都被重新赋值为Inf。

A([2 4 8 16])=NaN

A([10 11 12 13 14 15])=Inf

执行结果如下图:

MATLAB的一些基础知识的更多相关文章

  1. Matlab - 基础知识

    Matlab R2016a完全自学一本通 记在前面: (1)函数中:dim=1 按列:dim=2 按行 (2)这本书很垃圾,不建议买. (3)在数据库连接中,用两个单引号表示字符串,千万不能用双引号 ...

  2. 使用matlab处理图像的基础知识

    MATLAB基本函数一 矩阵运算 1.基本算数运算(加减乘除) + -运算要求矩阵维数相同,例m*n * /运算,例A=B*C,B矩阵是m*n矩阵,B是n*p矩阵,则A是m*p矩阵 A/B相当于A*i ...

  3. Matlab--从入门到精通(chapter2 matlab 基础知识)

    Chapter2 Matlab 基础知识 1.基本数学运算符号 注:矩阵的右除是一般意义的除法,但是左除具有对称意义,即A./B=B.\A 2. 命令行中的常用标点 3.常见的操作命令 4.输出数据显 ...

  4. Matlab图像处理基础知识

    Matlab图像处理基础知识 Matlab的图片以矩阵的形式存储,矩阵的行列值为图片的行列的色彩值. 1图像表达方式: 像素索引 图像被视为离散单元.如使用I(2,2)可以获取第二行第二列的像素值 空 ...

  5. Matlab高级教程_第一篇:Matlab基础知识提炼_02

    第三节:变量 正如其他编程软件一样. 都是通过变量来传递和交换数据的,这是基础.按照<MATLAB基础知识提炼>这篇文章先介绍变量比较合适.编程语言不外乎包括两部分:数据和结构.应该先把数 ...

  6. Matlab高级教程_第一篇:Matlab基础知识提炼_01

    第一篇:Matlab基础知识提炼: 这一篇主要用系统和提炼性的语言对Matlab基础知识进行总结,主要适用于有语言基础的学习者.尽量不讲废话. 第一部分:Matlab是什么? 1 Matlab是Mat ...

  7. 转载 Deep learning:一(基础知识_1)

    前言: 最近打算稍微系统的学习下deep learing的一些理论知识,打算采用Andrew Ng的网页教程UFLDL Tutorial,据说这个教程写得浅显易懂,也不太长.不过在这这之前还是复习下m ...

  8. Deep learning:一(基础知识_1)

    本文纯转载: 主要是想系统的跟tornadomeet的顺序走一遍deeplearning; 前言: 最近打算稍微系统的学习下deep learing的一些理论知识,打算采用Andrew Ng的网页教程 ...

  9. DL一(ML基础知识)

    基础知识ML 在进行深度学习前,根据学习网站的建议,首先学习机器学习的基础课程,学习资料主要是Andrew讲的ShortVideo,网址:http://openclassroom.stanford.e ...

随机推荐

  1. Asp.Net Core子应用由于配置中重复添加模块会引起IIS错误500.19

    ASP.NET Core已经从IIS中解耦,可以作为自宿主程序运行,不再依赖IIS. 但我们还是需要强大的IIS作为前置服务器,IIS利用httpPlatformHandler模块来对后台的一些web ...

  2. java程序员保持天天快乐的6个习惯

    忍不住感叹,我第一次对Buffer(在社交媒体上发布最简单的方式)有所想法已经差不多是两年前的事了.并且,在我有想法的一年半前,我还在前面那家新创公司工作的时...... 忍不住感叹,我第一次对Buf ...

  3. java.net.SocketException: Software caused connection abort: socket write error

    用Java客户端程序访问Java Web服务器时出错: java.net.SocketException: Software caused connection abort: socket write ...

  4. mybatis报错invalid types () or values ()解决方法

      原因: Pojo类User没提供无参数构造方法, 加上该构造方法后,问题解决 ### Cause: org.apache.ibatis.reflection.ReflectionException ...

  5. ABP 初探 之 权限设计

    大.小项目都要设计权限,都想设计一个通用的权限,把权限做的比较复杂,现在了解了ABP的设计思路,觉得设计很简单,但实现方法与思路耐人寻味. 本篇只介绍AbpPermissions的数据库设计,其它表结 ...

  6. JavaScript实现通过的集合类

    集合是一种数据结构,用以表示非重复值的无序集合.集合的基础方法包括添加值.检测值是否在集合中,这种集合需要一种通用的实现,以保证操作效率. JavaScript的对象是属性名以及与之对应的值的基本集合 ...

  7. 【模块化编程】理解requireJS-实现一个简单的模块加载器

    在前文中我们不止一次强调过模块化编程的重要性,以及其可以解决的问题: ① 解决单文件变量命名冲突问题 ② 解决前端多人协作问题 ③ 解决文件依赖问题 ④ 按需加载(这个说法其实很假了) ⑤ ..... ...

  8. #8.31课堂总结#JS基础

    一.Javascript能做些什么? 表单数据合法性验证 网页特效:使用DOM和CSS可以实现网页特效 交互式菜单:创作具有动态效果的交互式菜单,完全能够与flash制作的导航菜单相媲美 动态页面:使 ...

  9. Unable to extract 64-bitimage. Run Process Explorer from a writeable directory

    Unable to extract 64-bitimage. Run Process Explorer from a writeable directory When we run Process E ...

  10. eclipse — Failed to load the JNI shared library”……\jvm.dll问题原因以及解决方案

    首先上一张出现问题的图片: 出现这个问题一般是你的jdk和eclipse不是同一位的,比如你的jdk是32位的但是eclipse下载的是64位的就会导致这种问题. 解决方案:把两者都换为32或者64位 ...