




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
答案1科学计算语言有哪些?如何分类?科学计算语言可以分为商用科学计算语言和开放式科学计算语言两大类。目前在国际上有三种最具影响的商用科学计算语言,分别是TheMathWorks公司的MATLAB语言、WolframResearch公司的Mathematica语言和WaterlooMaple公司的Maple语言;有影响的开放式科学计算语言包括Scilab、Octave、Python和Julia。什么是动态语言?动态语言的优势和劣势分别是什么?动态语言是高级程序设计语言的一个类别,在计算机科学领域已被广泛应用。它是一类在运行时可以改变其结构的语言,例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。动态语言的优点是在开发效率方面有着无与伦比的优势,用户只需关注对象的行为,而不关注对象本身;其缺点是运行效率低下。Julia语言有什么优势?为什么选择Julia语言?Julia在语言设计方面具有先进性Julia由传统动态语言的专家们设计,在语法上追求与现有语言的近似,在功能上吸取现有语言的优势:Julia从LISP中吸收语法宏,将传统面向对象语言的单分派扩展为多重分派,运行时引入泛型以优化其他动态语言中无法被优化的数据类型等。Julia兼具建模语言的表现力和开发语言的高性能两种特性在Julia中可以很容易地将代码优化到非常高的性能,而不需要涉及“两语言”工作流问题,即在一门高级语言上进行建模,然后将性能瓶颈转移到一门低级语言上重新实现后进行接口封装。Julia是最适合构建数字物理系统的语言Julia语言是一种与系统建模和数字孪生技术紧密融合的计算机语言,相比通用编程语言,Julia为功能模型的表示和仿真提供了高级抽象;相比专用商业工具或文件格式,Julia更具开放性和灵活性。Julia语言与MATLAB、Python和C语言相比有什么异同?Julia语言与其它科学计算语言如MATLAB、R、Python等语言的差异主要表现在语言的本质、语言的表层语法和语言函数用法等方面的差异。Julia和MATLAB都是面向科学计算和数值分析的高级语言,但它们之间的差异在于Julia更加现代化和高效,而MATLAB则更加成熟和稳定。Julia语言适合需要高性能、高效率的科学计算任务,而R语言适合数据分析和统计计算任务。选择哪种语言主要取决于具体的应用场景和需求。Julia和Python都是出色的编程语言,各有优缺点。如果需要高性能和数值计算能力,Julia更适合,如果需要通用编程和广泛的生态系统,Python更适合。MWORKS提供了哪三个设计验证闭环?小回路设计验证闭环在传统研制流程中,70%的设计错误在系统设计阶段被引入。在论证阶段引入小回路设计验证闭环,可以实现系统方案的早期验证,提前暴露系统设计缺陷与错误。基于模型的系统设计以用户需求为输入,能够快速构建系统初步方案,然后进行计算和多方案比较得到论证结果,在设计早期就实现多领域系统综合仿真验证,确保系统架构设计和系统指标分解的合理性。大回路设计验证闭环在传统研制流程中,80%的问题在实物集成测试阶段被发现。引入大回路设计验证闭环,通过多学科统一建模仿真以及联合仿真,可以实现设计方案的数字化验证,利用虚拟试验对实物试验进行补充和拓展。在系统初步方案基础上开展细化设计,以系统架构为设计约束,各专业开展专业设计、仿真,最后回归到总体,开展多学科联合仿真,验证详细设计方案的有效性与合理性,开展多学科设计优化,实现正确可靠的设计方案。数字孪生虚拟闭环在测试和运维阶段,构建基于Modelica+的数字孪生模型,实现对系统的模拟、监控、评估、预测、优化、控制,对传统的基于实物试验的测试验证与基于测量数据的运行维护进行补充和拓展。利用系统仿真工具建立产品数字功能样机,通过半物理工具实现与物理产品的同步映射与交互,形成数字孪生闭环,为产品测试、运维阶段提供虚实融合的研制分析支持。Syslab提供了哪些基本功能?与Sysplorer组成了什么平台?Syslab提供了交互式编程环境、科学计算函数库、计算数据可视化、库开发与管理、与系统建模环境的深度融合和中文帮助系统六个基本功能,与Sysplorer形成新一代科学计算与系统建模仿真平台。答案2简述Syslab的主要功能。交互式编程环境Syslab开发环境提供了便于用户使用的Syslab函数和专业化的工具箱,其中许多工具是具有图形化的接口。它是一个集成的用户工作空间,允许用户直接输入输出数据,并通过资源管理器、代码编辑器、命令行窗口、工作空间、窗口管理等编程环境和工具,提供功能完备的交互式编程、调试与运行环境,提高了用户的工作效率。科学计算函数库Syslab是包含大量计算算法的集合,拥有上千个算数运算、线性代数、矩阵与数组运算、插值、数值积分与微分方程、傅里叶变换与滤波、符号计算、曲线拟合、信号处理、通信等丰富的高质量、高性能科学计算函数和工程计算函数,可以方便用户直接调用而不需要另行编程。计算数据可视化Syslab具有丰富的图形处理功能和方便的数据可视化功能,能够将向量和矩阵用图形表现出来,并且可以对图形进行颜色、光照、纹理、透明性等设置以产生高质量的图形。利用Syslab绘图,用户不需要过多地考虑绘图过程中的细节,只需要给出一些基本参数就能够利用内置的大量易用的二维和三维绘图函数得到所需图形。库开发与管理Syslab支持函数库的注册管理、依赖管理、安装卸载、版本切换,同时提供函数库开发规范,以支持用户自定义函数库的开发与测试。与系统建模环境深度融合Syslab与系统建模环境Sysplorer实现了双向深度融合,两者优势互补,形成新一代科学计算与系统建模仿真平台。中文帮助系统Syslab提供了非常完善的帮助系统,用户可以通过查询帮助系统,获取函数的调用情况和需要的信息。论述脚本文件和函数文件的区别。函数文件与脚本文件的主要区别在于:函数文件一般都要带有参数,都有要返回结果,而脚本文件没有参数与返回结果;函数文件的变量是局部变量,运行期间有效,运行完毕后就自动被清除,而脚本文件的变量是全局变量,执行完毕后仍被保存在内存中;函数文件要定义函数名,且保存该函数文件的文件名必须是函数名.jl;运行函数文件前还需先申明该函数。利用Help模式查询绘图函数plot的帮助文档。help?>plotsearch:plotplot3plotfitplot3fitplotCCDFplotmatrixfplotgplottplotfplot3ezplotbiplotTyPlotsubplotwblplotcdfplotrgaplottreeplotnormplotbodeplotsigmaplotrlocusplotTyMathPlotplot-二维线图此Syslab函数创建Y中数据对X中对应值的二维线图。如果X和Y都是向量,则它们的长度必须相同。plot函数绘制Y对X的图。如果X和Y均为矩阵,则它们的大小必须相同。plot函数绘制Y的列对X的列的图。如果X或Y中的一个是向量而另一个是矩阵,则矩阵的行数必须与向量的长度相等。如果矩阵为方阵,则该函数绘制每一列对向量的图。如果X或Y之一为标量,而另一个为标量或向量,则plot函数会绘制离散点。但是,要查看这些点,您必须指定标记符号,例如plot(X,Y,'o')。plot(X,Y)plot(X,Y,Fmt)plot(X1,Y1,...,Xn,Yn)plot(X1,Y1,Fmt1,...,Xn,Yn,Fmtn)plot(Y)plot(Y,Fmt)plot(___,Key=Value)plot(ax,___)h=plot(___)另请参阅gca,hold,legend,loglog,plot3,title,xlabel,xlim,ylabel,ylim,Line属性plot的文档(http://localhost:8055/TyPlot/docs/build/lib/二维图和三维图/线图/plot/)plot绘制timeseries此Syslab函数绘制ts中的timeseries数据对时间的图,从而在样本之间进行插值。plot(ts)plot(ts,specs)在Sysplorer中利用SyslabFunction模块编写Julia脚本。对于SyslabFunction组件而言,单击右键选择“编辑Syslab脚本函数…”选项可以在Syslab中打开编辑器编写Julia脚本。functionfunc1(t)x,y=get_xy(t)returnx,yendfunctionget_xy(t)a=[t,2t]b=[t2t3t;4t5t6t]returna,bend答案3简述Julia变量名的定义需要符合的条件。解:Syslab变量名的定义需要符合的条件如下:英文,规则如下:区分大小写;不能以数字开头;变量与函数名建议用下划线分隔;类与模块首字母建议大写,驼峰式;中文:不推荐使用Unicode字符:输入某个LaTeX符号(比如\beta),再敲击Tab键。生成复变量12im,并且提取其实部和虚部。解:程序运行如下:julia>real(1+2im),imag(1+2im)(1,2)在REPL窗口中输入如下指令,查看相应的运行结果。解:程序运行如下:julia>A=[123;456;789]3×3Matrix{Int64}:123456789julia>B=[-356;212]2×3Matrix{Int64}:-356212julia>C=[12;34;56]3×2Matrix{Int64}:123456计算A*B,A.*B,并比较两者的区别。解:程序运行如下:julia>A=[123;456;789];B=[468;556;322];julia>A*B3×3Matrix{Int64}:23222659617495100122julia>A.*B3×3Matrix{Int64}:41224202536211618根据程序运行结果可见,A*B是按照矩阵乘法法则进行计算,A.*B是矩阵对应位置进行相乘。计算表达式e8182log25tan21的值。解:程序运行如下:julia>exp(8)+18^2*log2(5)/tan(21)2488.450341939447计算表达式tanx2arccosx在x0.25和x0.3时的函数值。解:程序运行如下:#定义函数functionexpression(x)y=tan(-x^2)*acos(x)returnyend运行结果:expression(genericfunctionwith1method)julia>expression(0.25)-0.08248969091136954julia>expression(0.3*pi)-0.419297605215162解:程序运行如下:julia>A=[26;-15];B=[1-3;27];julia>A+B2×2Matrix{Int64}:33112julia>5*A2×2Matrix{Int64}:1030-525julia>A*B2×2Matrix{Int64}:1436938julia>A.*B2×2Matrix{Int64}:2-18-235julia>A\B2×2Matrix{Float64}:-0.4375-3.56250.31250.6875julia>A/B2×2Matrix{Float64}:0.1538460.923077-1.307690.153846julia>A./B2×2Matrix{Float64}:2.0-2.0-0.50.714286编写函数,计算1!2!20!。解:程序运行如下:#定义函数functionjieCheng(n_start,n_end)sum=0fori=n_start:n_endy=factorial(i)#调用求阶乘的函数sum=sum+yendreturnsumend运行结果:jieCheng(genericfunctionwith1method)julia>jieCheng(1,20)2561327494111820313编写一个转换成绩等级的程序,其中成绩等级转换标准为:考试分数在90,100的记为A+;分数在80,90的记为A;分数在60,80的记为B;分数在0,60的记为C。解:程序运行如下:#定义函数functionscore_convert(score)ifscore<0||score>100println("输入的成绩有误,请输入0-100区间的分数")elseifscore>=90&&score<=100println("成绩等级:A+")elseifscore>=80&&score<90println("成绩等级:A")elseifscore>=60&&score<80println("成绩等级:B")elseifscore>=0&&score<60println("成绩等级:C")endend运行结果:score_convert(genericfunctionwith1method)julia>score_convert(95)成绩等级:A+julia>score_convert(55)成绩等级:Cjulia>score_convert(130)输入的成绩有误,请输入0-100区间的分数julia>jieCheng(1,20)公式求π的近似值,直到某项的绝对值小于106为止。解:程序运行如下:#定义函数s=0forn=1:(10)^9globalsif(1/(2*n-1))>1e-6#判断绝对值大小s=s+(1/(2*n-1)*(-1)^(n-1))#求和endendk=4*s运行结果:3.141590653589692利用for循环函数找出0~100之间的所有素数。解:程序运行如下:#定义函数prime=Array{Union{Nothing,Int64}}(nothing,1,50)j=1fori=2:100ifisprime(i)globaljprime[1,j]=ij=j+1endendprintln("素数:")prime[1,1:j-1]'运行结果:素数:1×25adjoint(::Vector{Union{Nothing,Int64}})witheltypeInt64:2357111317192329313741434753596167717379838997答案4创建一个模块,模块包含计算求和函数、平均值函数、求向量模的函数,调用模块及内部函数。创建名称为“Exercises1”的脚本文件,代码如下:moduleExercises1exportMySum,MyAvg#求和MySum(x)=sum(x)#求平均值MyAvg(x)=sum(x)/length(x)#求列向量的模Mynorm(x)=sqrt(x'*x)end命令窗口调用代码如下:#加载路径push!(LOAD_PATH,".")usingExercises1a=[3,4];MySum(a)MyAvg(a)Exercises1.Mynorm(a)自定义复合类型,并对复合类型实例化。创建“mycomp”的脚本文件,代码如下:structmycomps1::Float64s2::String255end实例化代码如下:ee=mycomp(1.0,"Syslab")创建一个函数包含3种以上的方法并调用该函数。创建名称为“Exercises3”的脚本文件,代码如下:functionmy_fun(x)print("Fristmethod\n")endfunctionmy_fun(x::String)print("Secondmethod")endfunctionmy_fun(x::Int64)print("Thirdmethod")endfunctionmy_fun(x::Float64)print("Forthmethod")end命令窗口调用代码如下:my_fun("Syslab")my_fun(1)my_fun(2.0)my_fun([1,2])创建一个宏包含3种以上的方法并调用该宏。创建名称为“Exercises4”的脚本文件,代码如下:macromac(s1::Int64)return:((println("Firstmethod:theinputis",$s1)))endmacromac(s1::Float64)return:((println("Secondmethod:theinputis",$s1)))endmacromac(s1::String)return:((println("Thirdmethod:theinputis",$s1)))endmacromac(s1)return:((println("Forthmethod:theinputis",$s1)))end命令窗口调用代码如下:@mac(1)@mac(1.0)@mac("Syslab")@mac([1,2])在Syslab中调用自定义C++动态链接库求数组最大值:exercise4.h文件:#pragmaonce#ifndef_ADD_H#define_ADD_Hextern"C"__declspec(dllexport)doubleGetSum(doublex[],intnum);#endif//!_ADD_Hexercise4.cpp文件:#include"pch.h"#include"exercise4.h"#include<math.h>doubleGetSum(doublex[],intnum){ inti; doublemaxnum=0.0; for(i=0;i<num;++i) { if(x[i]>maxnum) maxnum=x[i]; } returnmaxnum;}Syslab调用程序代码如下:lib="C:\\Users\\...\\exercise4\\x64\\Debug\\exercise4"#动态库路径usingLibdl#加载库lib_path=joinpath("C:\\Users\\...\\exercise4\\x64\\Debug\\exercise4")lib=Libdl.dlopen(lib_path)#获取调用函数的符号GetSum=Libdl.dlsym(lib,:GetSum)a=[1,4,5];a=Vector{Float64}(a)#调用函数c=@ccall$GetSum(a::Ptr{Cdouble},3::Cint)::Cdouble#关闭dllLibdl.dlclose(lib)在Syslab中调用以下Python文件:defTest(s):returnsum(s)以上程序的文件名为“pyfun1.py”:defTest(s):returnsum(s)调用Python文件代码如下:usingPyCallfunctionset_python_path(path::AbstractString)py"""importsysdefset_path(path):ifpathnotinsys.path:sys.path.append(path)"""py"set_path"(path)end#将路径添加到Python工作目录中println(@__DIR__)_set_python_path(@__DIR__)#查看sys.pathpyimport("sys").path#导入python文件@pyimportpyfun1asmyfunc#调用python接口myfunc.Test([1,2,3])答案51、在区间内,绘制和的曲线,将两条曲线绘制在同一坐标系中,第一条曲线格式指定为红色虚线,线宽为2磅,第二条曲线格式指定为蓝色实线,线宽为2磅。x=-2*pi:pi/10:2*piy1=3*x+cos.(x)y2=3*x+sin.(x)plot(x,y1,"--r",x,y2,"-r";linewidth=2)图SEQ图\*ARABIC1第一题答案图2、自变量定义为,和定义为关于的正弦和余弦向量,绘制、和的三维曲线,并设置图像的标题、轴、轴和轴的标签。t=0:pi/50:10*pist=sin.(t)ct=cos.(t)plot3(st,ct,t)title("螺旋线")xlabel("st=sin(t)")ylabel("ct=cos(t)")zlabel("t")图SEQ图\*ARABIC2第二题答案图3、定义为0到间具有均匀间隔的12个点,定义为,每个数据点处显示长度不等的误差条。x=LinRange(0,2*pi,12)y=cos.(2*x)err=rand(size(y,1))errorbar(x,y,err)图SEQ图\*ARABIC3第三题答案图4、绘制半对数图,定义为一个由区间[1,100]内的100个具有均匀间隔的点组成的向量,定义为。绘制和,调用grid()函数显示网格线并向数据点添加文本说明。x=LinRange(1,100,100)y=x.^2semilogy(x,y)grid("on")text(10,100,raw"$\leftarrowx.^2$")图SEQ图\*ARABIC4第四题答案图5、创建矩阵,依据矩阵创建水平条形图。水平条形图以25为基准值显示值,小于25的值显示在基线左侧,大于25的值显示在基线右侧。y=[81533;303540;505562]barh(y,basevalue=25)图SEQ图\*ARABIC5第五题答案图6、在同一坐标系中绘制两个针状图。定义为0到间的50个点,定义为;定义为到间的50个点,定义为,且要求对应针状图要填充终止针状图的圆。x1=LinRange(0,2*pi,50)x2=LinRange(pi,3*pi,50)y1=cos.(x1)y2=0.5*sin.(x2)stem(x1,y1)hold("on")stem(x2,y2,filled=true)图SEQ图\*ARABIC6第六题答案图7、将1000个随机数划分到16个组中并绘制直方图。x=randn(1000)histogram(x,16)图SEQ图\*ARABIC7第七题答案图8、创建为0到间的100个等间距值。创建为带随机量的正弦值。根据和创建散点图,填充标记,并向散点图中任一数据添加数据提示。x=LinRange(0,2*pi,100)y=sin.(x)+rand(100)sc=scatter(x,y;filled=true)a=x[50]b=y[50]datatip(sc,a,b);图SEQ图\*ARABIC8第八题答案图9、创建向量,依据向量绘制饼图,并通过设置explode元素偏移第三块饼图扇区。x=[5,8,10,4,6]pie(x,explode=[0,0,0.1,0,0])图SEQ图\*ARABIC9第九题答案图10、创建向量,利用meshgrid2函数创建二维网格返回矩阵和。定义。绘制、和的三维曲面图,并设置图像透明度为0.5。X,Y=meshgrid2(-5:0.5:5,-5:0.5:5)Z=Y.*sin.(X)-X.*cos.(Y)s=surf(X,Y,Z;alpha=0.5)图SEQ图\*ARABIC10第十题答案图11、利用peaks()函数绘制二维等高线图。要求等高线图包含10条等高线。X,Y,Z=peaks()con=contour(X,Y,Z,10)图SEQ图\*ARABIC11第十一题答案图12、创建一个复数值向量。使用羽状图显示这些复数值。实部确定每个箭头的分量,虚部确定分量。Z=[2+3im-1-3im-1+im2im3-4im-2-2im-2+4im0.5-im-3im1+im];feather(Z)图SEQ图\*ARABIC12第十二题答案图13、利用极坐标绘图函数ezpolar()函数绘制笛卡尔心形图figure()ezpolar(t->1-sin(t))图SEQ图\*ARABIC13第十三题答案图MACROBUTTONMTEditEquationSection2SEQMTEqn\r\hSEQMTSec\r1\hSEQMTChap\r1\h答案61.设双自由度系统如图6-24所示,试建立基础位移引起的振动位移的响应。已知两个质量块的质量分别为、,两个阻尼器的阻尼系数分别为,两个弹簧的弹性模量分别为、。图6-24双自由度系统建立双自由系统的数学模型为 将数值代入,简化后得 对式GOTOBUTTONZEqnNum219431REFZEqnNum219431\*Charformat\!(2)中的两个方程取拉普拉斯变换,得 由式GOTOBUTTONZEqnNum467650REFZEqnNum467650\*Charformat\!(3)中第二式解得 将式GOTOBUTTONZEqnNum988455REFZEqnNum988455\*Charformat\!(4)代入式GOTOBUTTONZEqnNum467650REFZEqnNum467650\*Charformat\!(3)的第一式,得 整理后得 即 则可得双自由系统的传递函数为 建立双自由度系统的数学模型后,使用控制系统工具箱中的函数命令构造相应模型分析基础位移引起的振动位移的响应。利用Syslab求解系统的状态空间方程:num=[5,15,10]den=[1,16,32,15,10]A,B,C,D=tf2ss(num,den)G=ss(A,B,C,D)运行结果为A=-16.0-32.0-15.0-10.01.00.00.00.00.01.00.00.00.00.01.00.0B=1.00.00.00.0C=0.05.015.010.0D=0.0连续时间状态空间模型求解式GOTOBUTTONZEqnNum727453REFZEqnNum727453\*Charformat\!(8)传递函数的零点和极点:sys_tf=tf(G)sys_zpk=zpk(G)r,p,k=residue(num,den)运行结果为(1.0s+2.0000000000000013)(1.0s+0.9999999999999976)5.0--------------------------------------------------------------------------------------------(1.0s+13.747883799019652)(1.0s+1.9077926911948915)(1.0s^2+0.344323509785451s+0.3812702916574071)连续时间传递函数模型julia>r4×1Matrix{ComplexF64}:0.17650320307673503-0.28001958852835407im0.17650320307673503+0.28001958852835407im-0.01050763901627602-1.0037764413489501e-17im-0.34249876713719407+6.781239485763239e-17imjulia>p4-elementVector{ComplexF64}:-0.1721617548927255-0.5929845038528951im-0.1721617548927255+0.5929845038528951im-1.9077926911948915+0.0im-13.747883799019652+0.0im由Syslab运行结果可得双自由系统的零极点模型为 留数模型为 通过施加单位阶跃分析双自由度系统的响应结果step(G,40)xlim([040])ylim([01.5])xlabel("Time(s)",fontname="TimesNewRoman",fontsize=10)ylabel("Amplitude",fontname="TimesNewRoman",fontsize=10)title("StepResponse",fontname="TimesNewRoman",fontsize=10)阶跃响应结果如图2所示。图1阶跃响应结果2.对于1000Hz采样的数据,设计一个低通滤波器,在0~40Hz的通带中波纹不超过3dB,在阻带中衰减至少60dB,求滤波器的阶数和截止频率。#采样频率fs=1000#通带截止频率Wp=40*2/fs#阻带截止频率Ws=150*2/fs#通带纹波Rp=3;#阻带衰减Rs=60#计算滤波器的阶数和截止频率n,Wn=buttord(Wp,Ws,Rp,Rs)运行结果为:(5,0.08103849495776429)因此,滤波器的阶数为5,截止频率为0.0810385。3.设某二进制数字通信系统的码元传输速率为100bps,系统的采样速率为1000Hz,比较信号经过高斯白噪声信道前后的不同。#采样频率fs=1000#采样时间t=0:(1/fs):1#生成正弦信号x=sin.(2*pi*100*2*t)#调制信号,载波频率为50Hzy,=modulate(x,50,fs,"amssb")#通过信噪比为10dB的AWGN信道rng=MT19937ar(1234)out=awgn(rng,y,10,"measured")figure("经过高斯白噪声信道前后的信号",facecolor="white")plot(t,[yout])legend(["OriginalSignal","SignalwithAWGN"])运行结果为:图2经过高斯白噪声信道前后的信号答案7求函数在附近的零点。usingTyOptimizationf(t)=0.23*t-exp(-t)*sin(t)t0=(2-0.01,2+0.01)result=fzero(f,t0)println("计算结果:t=",result.x)运行结果为:计算结果:t=1.2117284685861966求下列方程的的数值解。usingTyOptimizationfunctionfun(x)returnsin(x[1])+x[2]^2+log(x[3])-7,3*x[1]+2*x[2]-x[3]^3+1,x[1]+x[2]+x[3]-5endx0=[0,0,1]result=fsolve(fun,x0)println("计算结果:x=",result.x)println("目标函数值:f(x)=",result.fun)运行结果为:计算结果:x=[5.36334723322567,-2.6405590951394315,2.277211861586341]目标函数值:f(x)=[6.503079399422518e-7,-6.495512572257667e-8,-3.2742075717351327e-10]已知当时,函数的值,对采用不同的方法进行插值。functionLagrange(x0,y0,x)n=length(x0)m=length(x)y=zeros(size(x))foriin1:mz=x[i]s=0.0forkin1:np=1.0forjin1:nifj!=kp=p*(z-x0[j])/(x0[k]-x0[j])endends=p*y0[k]+sendy[i]=sendreturnyendx=0:0.2:2y=zeros(size(x,1),1)fori=1:size(x,1)y[i,1]=(x[i]^2-3*x[i]+5)*exp(-3*x[i])*sin(x[i])endxq=0:0.03:2yq1=Lagrange(x,y,xq)yq2=NewtonInterp(x,y,xq)figure("插值",facecolor="white")plot(x,y,"o",markeredgecolor="k",markerfacecolor="#FFFF00")hold("on")plot(xq,yq1,"-",color=[0,0.4470,0.7410],linewidth=1.5)plot(xq,yq2,"-.",color=[0.9290,0.6940,0.1250],linewidth=1.5)xlabel("数据点");ylabel("插值结果");legend(["原数据点","拉格朗日插值法","牛顿插值法"])运行结果为:图1插值结果有3组正态分布的随机数据,每组20个数据,其均值为10,均方差为2,求置信度为95%和99%的置信区间和参数估计值。rng=mt19937ar(1234);r=normrnd(rng,10,2,20,3);muHat1=zeros(3,1);sigmaHat1=zeros(3,1)muHat2=zeros(3,1);sigmaHat2=zeros(3,1)muCI1=zeros(3,2);sigmaCI1=zeros(3,2);muCI2=zeros(3,2);sigmaCI2=zeros(3,2);fori=1:3muHat1[i,1],sigmaHat1[i,1],muCI1[i,:],sigmaCI1[i,:]=normfit(r[:,i],0.05,nargout=4)muHat2[i,1],sigmaHat2[i,1],muCI2[i,:],sigmaCI2[i,:]=normfit(r[:,i],0.01,nargout=4)end运行结果为:julia>muHat13×1Matrix{Float64}:10.5824630245771879.7322595807421210.06327254533023julia>sigmaHat13×1Matrix{Float64}:1.3102652925168182.468023904223211.9292125380267298julia>muCI13×2Matrix{Float64}:9.9692411.19578.5771910.88739.1603710.9662julia>sigmaCI13×2Matrix{Float64}:0.9964441.913741.876913.604731.467152.81775julia>muHat23×1Matrix{Float64}:10.5824630245771879.7322595807421210.06327254533023julia>sigmaHat23×1Matrix{Float64}:1.3102652925168182.468023904223211.9292125380267298julia>muCI23×2Matrix{Float64}:9.7442511.42078.153411.31118.8291111.2974julia>sigmaCI23×2Matrix{Float64}:0.919482.183141.731944.112181.353833.21442某工厂生产甲、乙两种产品,已知生产1吨产品甲需要原料A4吨,原料B4m3;生产1吨产品乙,需要原料A1吨,原料B6m3,原料C7个单位。若1吨产品甲和1吨产品乙的经济价值分别为8万元和5万元,3种原料的限制量分别为90吨、220m3和240个单位,试分析分别生成甲、乙两种产品各多少吨可以使创造的总经济价值最高?由题意可建立下面整数规划问题:编写Syslab程序为:usingTyOptimizationf0=[8;5];intcon=[2]A=[41;46;07];b=[90;220;240]result=intlinprog(-f0,intcon,A,b)println("优化问题的解:",result.x)println("目标函数的值:",result.fun)运行结果为:优化问题的解:[16.0,26.0]目标函数的值:-258.0综上,当甲、乙两种产品分别生产16吨和26吨时,可以使创造的总经济价值最高,为258万元。求下列函数在初始点(0,1)处的最优解。usingTyOptimizationx0=[0;1]f(x)=x[1]^2+x[2]^2-x[1]*x[2]-2*x[1]-5*x[2]ineq(x)=[x[2]-(x[1]-1)^2;6+2*x[1]-3*x[2]]constraints=[ineq_cons(ineq)]result=fmincon(f,x0,constraints)println("优化结果:x=",result.x)println("目标函数值:f(x)=",result.fun)运行结果为:优化结果:x=[3.0000000097839536,3.999999970195355]目标函数值:f(x)=-12.999999999999993答案7求函数在附近的零点。usingTyOptimizationf(t)=0.23*t-exp(-t)*sin(t)t0=(2-0.01,2+0.01)result=fzero(f,t0)println("计算结果:t=",result.x)运行结果为:计算结果:t=1.2117284685861966求下列方程的的数值解。usingTyOptimizationfunctionfun(x)returnsin(x[1])+x[2]^2+log(x[3])-7,3*x[1]+2*x[2]-x[3]^3+1,x[1]+x[2]+x[3]-5endx0=[0,0,1]result=fsolve(fun,x0)println("计算结果:x=",result.x)println("目标函数值:f(x)=",result.fun)运行结果为:计算结果:x=[5.36334723322567,-2.6405590951394315,2.277211861586341]目标函数值:f(x)=[6.503079399422518e-7,-6.495512572257667e-8,-3.2742075717351327e-10]已知当时,函数的值,对采用不同的方法进行插值。functionLagrange(x0,y0,x)n=length(x0)m=length(x)y=zeros(size(x))foriin1:mz=x[i]s=0.0forkin1:np=1.0forjin1:nifj!=kp=p*(z-x0[j])/(x0[k]-x0[j])endends=p*y0[k]+sendy[i]=sendreturnyendx=0:0.2:2y=zeros(size(x,1),1)fori=1:size(x,1)y[i,1]=(x[i]^2-3*x[i]+5)*exp(-3*x[i])*sin(x[i])endxq=0:0.03:2yq1=Lagrange(x,y,xq)yq2=NewtonInterp(x,y,xq)figure("插值",facecolor="white")plot(x,y,"o",markeredgecolor="k",markerfacecolor="#FFFF00")hold("on")plot(xq,yq1,"-",color=[0,0.4470,0.7410],linewidth=1.5)plot(xq,yq2,"-.",color=[0.9290,0.6940,0.1250],linewidth=1.5)xlabel("数据点");ylabel("插值结果");legend(["原数据点","拉格朗日插值法","牛顿插值法"])运行结果为:图1插值结果有3组正态分布的随机数据,每组20个数据,其均值为10,均方差为2,求置信度为95%和99%的置信区间和参数估计值。rng=mt19937ar(1234);r=normrnd(rng,10,2,20,3);muHat1=zeros(3,1);sigmaHat1=zeros(3,1)muHat2=zeros(3,1);sigmaHat2=zeros(3,1)muCI1=zeros(3,2);sigmaCI1=zeros(3,2);muCI2=zeros(3,2);sigmaCI2=zeros(3,2);fori=1:3muHat1[i,1],sigmaHat1[i,1],muCI1[i,:],sigmaCI1[i,:]=normfit(r[:,i],0.05,nargout=4)muHat2[i,1],sigmaHat2[
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纤维支气管镜肺泡灌洗治疗小儿重症肺炎的临床效果观察
- 驾校安全协议书(2篇)
- 宁波十校2025届高三3月联考地理试卷(含答案)
- 暑假去旅游创意画
- 2025年热敏型CTP版项目合作计划书
- 2025年关于小马过河标准教案
- 腰椎结核术中护理查房
- 2025年《机电工程管理与实务》考试备考宝典:基础知识点库与典型试题
- 2025年护士执业资格考试题库:护理教育与培训护理外科护理历年真题及解析
- 2025年小学教师资格《综合素质》教育资源整合试卷含答案分析
- 《预制高强混凝土风电塔筒生产技术规程》文本附编制说明
- ICD-11(国际疾病分类第十一修订)重点基础知识总结-
- 重庆市2025年初中学业水平暨高中招生考试数学试题预测卷(一)
- 2025年山东省青岛市技师学院公开招聘工作人员35名历年高频重点提升(共500题)附带答案详解
- 全国青少年人工智能创新挑战赛技能知识竞赛题库(含答案)
- 服务细节培训课件
- 山羊养殖培训课件
- 民法典合同编培训
- 2024-2030年中国油用牡丹行业需求状况及产销规模预测报告
- 无机化学实验(下)知到智慧树章节测试课后答案2024年秋陕西师范大学
- 高等教育自学考试自考《英语二》试题及答案指导(2025年)
评论
0/150
提交评论