MatLab编程(第二版中文)第六章
Matlab编程与工程应用(第二版)习题解答(全)
Matlab编程与工程应用〔第二版习题解答第一章:MATLAB简介1.>> myage = 25;>> myage = myage - 1;>> myage = myage + 2;2.>> myage = 25;>> myage = myage - 1;>> myage = myage + 2;3.>> namelengthmaxans =634.>> format bank>> 1/3ans =0.335.>> format rat>> 5/6 + 2/7ans =47/426.25 19 4.3333 9 97.>> pounds = 100;>> kilos = 2.2 * poundskilos =220.00008.>> R1 = 20; R2 = 30; R3 = 40;>> RT = <R1\1 + R2\1 + R3\1>\1RT =9.23089.>> ftemp = 90;>> ctemp = <ftemp - 32> * 5 / 9ctemp =32.222210. 略11.>> sind<90>ans =112.>> sita = 2 * pi / 3;>> r = 2;>> x = r * cos<sita>x =-1.0000>> y = r * sin<sita>y =1.732113.>> t = 100;V = 50;>> wcf = 35.7 + 0.6 * t - 35.7 + 0.16 * V + 0.43 * t * 0.16 * Vwcf =41214.Fix<3.5> = 3; Floor<3.5> = 3;Fix<3.4> = 3; Fix<-3.4> = -3;Fix<3.2> = 3; Floor<3.2> = 3;Fix<-3.2> = -3; Floor<-3.2> = -4;Fix<-3.2> = -3; Ceil<-3.2> = -3;15.Sqrt<19>3 ^ 1.2Tan<pi>16.Intmin<‘int32’>; intmax<‘int32’>; intmin<‘int64’>;intmax<‘int64’>;17.Realmin<‘double’>; Realmax<‘double’>;18.>> DblNum = 33.8;>> int32Num = int32<DblNum>int32Num =3419.>> A1 = rand;A2 = 20*rand;A3 = 30 * rand + 20;A4 = round<rand * 10>;A5 = round<rand * 11>; /A6 = round<rand * 50> + 50;>> A4 = randi<10>;>> A5 = randi<11>;>> A6 = randi<50> + 50;20. 略21.Double〔‘A’ < Double<‘a’>; 所以大写在前,小写在后;22.>> CharNum = 'xyz';>> CharNum = char<CharNum - 2>CharNum =vwx23.>> vec = [3 : 1 : 6]vec =3 4 5 6>> vec2 = [1.0000:0.5000:3.0000]vec2 =1.0000 1.50002.0000 2.50003.0000>> vec3 = [5 : -1 :2]vec3 =5 4 3 224.>> vec1 = linspace<4,8,3>vec1 =4 6 8>> vec2 = linspace<-3,-15,5>vec2 =-3 -6 -9 -12 -15>> vec3 = linspace<9,5,3>vec3 =9 7 525.>> vec = [1 : 1 : 10]vec =1 2 3 4 5 6 7 8 9 10 >> vec = linspace<1,10,10>vec =1 2 3 4 5 6 7 8 9 10 >> vec2 = [2:5:12]vec2 =2 7 12>> vec = linspace<2,12,3>vec =2 7 12>> myend = randi<4> + 8;>> vec1 = [1 : 3 : myend]vec1 =1 4 7 1027.>> vec = [-1:0.2:1]'vec =-1.0000-0.8000-0.6000-0.4000-0.20000.20000.40000.60000.80001.000028.>> vec = [0 : 1 : 15];>> n = [1 : 2 : numel<vec> - 1];>> vec2 = vec<n>vec2 =0 2 4 6 8 10 12 14 29.function [a b] = PI_CONT<x>%UNTITLED Summary of this function goes here% Detailed explanation goes heren =1 : 1 : fix<numel<x> / 2>;a = x<n>;n = 1+fix<numel<x>/2> : 1 : numel<x>;b = x<n>;endrem<numel<vec>,2>30.rand<2,3>10*rand<2,3>5 + round<15 * rand<2,3>>randint<2,3,[5 15]>31.rows = randi<5>;cols = randi<5>;y = zeros<rows,cols>;>> mat = [ 7 8 9 1012 10 8 6];>> A1 = mat<1,3>>> A2 = mat<2,:>>> A3 = mat<:,1:2>33.>> mymat = [2 3 4;5 6 7]>> mymat1 = fliplr<mymat>>> mymat2 = flipud<mymat>>> mymat3 = rot90<mymat>34.>> mymatzero = zeros<4,2>>> mymatzero<2,:> = [3,6]35.>> x = linspace<-pi,pi,20>;>> y = sin<x>;36.>> randmat = randint<3,5,[-5 5]> >> sign<randmat>37.>> randmat = randint<4,6,[-5 5]>;>> randmat2 = abs<randmat> 38.>> randmat = rand<3,5>>> randmat<3,:> = []39.>> vec = 1 : 1:1000;>> vec<end>>> vec<numel<vec>>>> [a b ] = size<vec>;>> vec<a * b>40.同上41.>> mat = zeros<3,5>;>> mat<:,:,1> = zeros<3,5>;>> mat<:,:,2> = zeros<3,5>; 42.>> myc = clock>> today = myc<1:3>>> now = myc<4:6>>> now = fix<now>第二章 MATLAB程序设计概述1.ri = 2; % Radius internalro = 4; % Radius outerV = 4 * pi / 3 * <ro ^ 3 - ri ^ 3> % calculate volume2.% Calculate Atomic Weight H2O2Weight_O = 15.9994;Weight_H = 1.0079;AtomicWeight = Weight_O * 2 + Weight_H * 2 % Calculate H2O2 Atomic Weight 3.fprintf<'Length of The character string is : %d\n',…length<input<'Please input character string :\n','s'>>>;4.NewNumber = input<'please input a Number :\n'>;fprintf<'Number with 2 decimal is :%0.2f\n',NewNumber>;5.>> vec = input<'Enter a matrix: '>Enter a matrix: [1:1:10;1:1:10]6.>> fprintf<'OUTPUT : %f\n',12345.6789>OUTPUT : 12345.678900>> fprintf<'OUTPUT : %10.4f\n',12345.6789>OUTPUT : 12345.6789>> fprintf<'OUTPUT : %10.2f\n',12345.6789>OUTPUT : 12345.68>> fprintf<'OUTPUT : %6.4f\n',12345.6789>OUTPUT : 12345.6789>> fprintf<'OUTPUT : %2.4f\n',12345.6789>OUTPUT : 12345.67897.>> fprintf<'OUTPUT : %d\n',12345>OUTPUT : 12345>> fprintf<'OUTPUT : %5d\n',12345>OUTPUT : 12345>> fprintf<'OUTPUT : %8d\n',12345>OUTPUT : 12345>> fprintf<'OUTPUT : %3d\n',12345>OUTPUT : 123458.>> x = 12.34;>> y = 4.56;>> fprintf<'x is %.3f\n',x>x is 12.340>> fprintf<'x is %0.0f\n',x>x is 12>> fprintf<'y is %0.1f\n',y>y is 4.6>> fprintf<'y is %0.1f !\n',y>y is 4.6 !9.% Calculate Area of the squarenessfprintf<'The Area of The Squareness is %.2f',…<input<'Please input the Length of the Squareness \n'>> …* <input<'Please input the Width of the Squareness \n'>>>;10.NewName = input<'What is your name? ','s'>;fprintf<'Wow,your name is %s!\n',NewName>;11.NewString = input<'Enter your string : ','s'>;fprintf<'Your String was : ''%s''\n',NewString>;12.WaterSpeed = input<'Enter the folw in m^3/s : '>;WaterSpeedft = 0.028 \ WaterSpeed;fprintf<'A flow rate of %.3f meters per sec \n',WaterSpeed>;fprintf<'is equivalent to %.3f feet per sec\n',WaterSpeedft>;13.IncomeY = input<'Input your income every year?'>;FoodCostY= [IncomeY * 8 / 100 IncomeY*10 / 100];FoodCostM = 12\FoodCostY;fprintf<'Food Cost in every year is %.2f - %.2f\n',FoodCostY<1>,FoodCostY<2>>; fprintf<'Food Cost in every Month is %.2f - %.2f\n',FoodCostM<1>,FoodCostM<2>>;14.Weight = input<'Please input the Weight of the plan \n'>Area = input<'Please input the area of the plan wing \n'>fprintf<'Charge of Plan Win is %.2f \n',Weight / Area>15.x = 10;y = 10;plot<x,y,'g+'>;16.clfx = -2 : 0.1 : 2;y = exp<x>;plot<x,y,'g'>;xlabel<'X'>;ylabel<'Y'>;legend<'Exp<x>'>;Title<'Exp Example'>;17.clfx = 1 : 5 : 100;y = sqrt<x>;plot<x,y,'go'>;hold on;bar<x,y>;18.clfy = randint<1,100,[0 100]>;x = 1 : 1 : length<y>;plot<x,y,'ro'>;hold onplot<x,y,'g+'>;figure<2>;plot<x,y,'k'>;figure<3>;bar<x,y>19.clfx = linspace<0,pi,10>;y = sin<x>;plot<x,y,'r'>;figure<2>;x = linspace<0,pi,100>;y = sin<x>;plot<x,y,'b'>;20.load TimeTemp.datx = TimeTemp<:,1>';y = TimeTemp<:,2>';plot<x,y>;Xlabel<'Height'>;Ylabel<'Temperature'>;Title<'Height - Temperature'>;legend<'TEMP'>21.>> randint<3,6,[50 100]>;>> save RandInt.bat ans -ascii;>> randint<2,6,[50 100]>>> save RandInt.bat randint -ascii –append >> load RandInt.bat>> RandInt22.>> load testtan.bat>> tan<testtan>23.>> load hightemp.dat>> hightemp<:,1> = hightemp<:,1> .+ 1900>> save y2ktemp.dat hightemp –ascii24.function [ fn ] = fn< x >%Calculate y as a function of xfn = x^3 - 4 * x^2 + sin<x>;end25.function [ mwh] = mwh_to_gj<x>%convers from MWh to GJmwh = 3.6 * x;end26.function [ output_args ] = miletometer< x >%Conver mile to meterMile = input<'mile per hours number :'>;meter = Mile * 5280 * 0.3048 / 3600;output_args = meter;fprintf<'Meter of the mile is : % .2f',meter>; end27.function [ Tn ] = Interest< p,i,n >%UNTITLED4 Summary of this function goes hereTn = p * <1 + i> * n;end28.略29.function [ V ] = SpeedConv<pi,ps>%UNTITLED4 Summary of this function goes hereV = 1.016 * sqrt<pi - ps>end30. function [ THR ] =Cal_rate<A>%UNTITLED4 Summary of this function goes hereTHR = <220 - A> * 0.6;end31.function [ nJ ] =STL_calc<n>%UNTITLED4 Summary of this function goes herenJ = sqrt<2 * pi * n> * <n / exp<1>>^n;end32.function [ output_args ] = costn< n >%UNTITLED5 Summary of this function goes hereoutput_args = 5 * n ^ 2 - 44 * n + 11;endn = input<'Enter the number of units :'>;Cn = costn<n>;fprintf<'The cost for 100 units will be $%.2f\n',Cn>;33.略〔仿造32题34.function [ V ] = oblong< length >%UNTITLED8 Summary of this function goes hereV = 1/12*sqrt<2>*length^3;endfprintf<'The volume of oblong is : %.2f\n ',oblong<input<'Enter the length of the oblong:\n'>>>35.function [ y ] = pickone< x >%pickone<x> returns a random element from vector xn = length<x>;y = x<randi<n>>;end36.function [ y ] = vecout< x >%UNTITLED11 Summary of this function goes herey = x : 1 : x+5;end37.b = input<'Enter the first side :'>;c = input<'Enter the second side :'>afa = input<'Enter the angle between them :'>y = sqrt<b^2 + c^2 - 2*b*c*cos<afa *<pi/180>>>;fprintf<'The third side is %.3f\n',y>;38.略39.load floatnums.datfloatnums = round<floatnums>;floatnums = floatnums';save intnums.datfloatnums-ascii;40.load costssales.datn = length<costssales<:,1>>;fprintf<'There were %d quarters in the file ',n>;n = 1 : 1 : n;costs = costssales<:,1>;sales = costssales<:,1>;plot<n,costs,'ko'>;hold onplot<n,sales,'b*'>;legend<'COSTS','SALES'>;xlabel<'COST'>;ylabel<'SALE'>;title<'COST-SALE'>;costssales = costssales'costssales = flipud<costssales>;save newfile.datcostssales-ascii;第三章选择语句2. if <input<'please Enter a x :\n','s'> ~= 'x'>disp<'sorry the char not x'>;end3. function y = Test3<x>if <x == 12>y = 1;elsey = x + 1;end;4. disp<'The program will calculate the volume of a pyramid'>;a = input<'Enter the length of the base :'>;c = input<'Is that i or c?','s'>;if< c == 'c'>a = a/2.54;end;b = input<'Enter the width of the base :','s'>;c = input<'Is that i or c?'>;if< c == 'c'>b = b/2.54;end;d = input<'Enter the length of the base :','s'>;c = input<'Is that i or c?'>;if< c == 'c'>d = d/2.54;end;fprintf<'The Volume of the Pyramid is %.3f cubic inches.',a * b * d / 3>;5.if<input<'Are you an engineer?<Y/N>','s'> == 'Y'>disp<'You are the best!'>;elsedisp<'oh~ soga'>;end;6.Fenzi = input<'Please input enter the FENZI: '>;Fenmu = input<'Please input enter the FENMU: '>;if<Fenmu == 0>disp<'Sorry The Fenmu can not be zero!'>;elsefprintf<'The result is %.2f.\n',Fenzi/Fenmu>;end;7.function Result = Test3_Func< a,b >%TEST3_FUNC Summary of this function goes here% Detailed explanation goes hereResult = sqrt<1 - b^2/a>;EndFunction:a = input<'Please Enter the a : '>;b = input<'Please Enter the b : '>;if <a == 0>disp<'Error 0001'>;elsefprintf<'The Result is %.2f \n',Test3_Func<a,b>>;end;8.a = input<'Please Enter the Shousuo : '>;b = input<'Please Enter the Shuzhang : '>;if <a<120 && b<80>disp<'you are the best choice !'>;elsedisp<'Sorry you can not do this!'>;end;9.A1 = input<'Enter the First Area: '>;A2 = input<'Enter the Second Area: '>;if<A1 > A2>disp<'UP!'>;elseif <A1 < A2>disp<'Down!'>;elsedisp<'Keep!'>;en10.a = input<'Enter the PH number : '>;if <a < 7>disp<'Suan'>;elseif <a > 7>disp<'Jian'>;elsedisp<'Zhong'>;end;11.function Result = Test3_Func< a,b >%TEST3_FUNC Summary of this function goes here % Detailed explanation goes hereif <a < b>Result = a : 1 : b;elseResult = a : -1 : b;end12.function Result = Test3_Func< x >%TEST3_FUNC Summary of this function goes here % Detailed explanation goes here[a b] = size<x>;if <<a ~= 1 && b ~= 1> || <a == 1 && b == 1>> Result = x;elseif<a == 1>Result = fliplr<x>;elseResult = flipud<x>;end13.letter = input<'Enter your answer :','s'>;if <letter == 'Y' || letter == 'y'>disp<'OK,continuing'>;elseif<letter == 'N' || letter == 'n'>disp<'OK,halting'>;elsedisp<'Error'>;end14.switch lettercase {'Y''y'}disp<'OK,contining'>case {'N''n'}disp<'OK,halting'>otherwisedisp<'Error'>end15.Mahe = input<'Enter the Speed of Plan : '>/input<'Enter the Speed of Voice: '>; if<Mahe > 1>disp<'supersonic speed'>;elseif<Mahe < 1>disp<'subsonic speed'>;elsedisp<'transonic speed'>;end;16.X = input<'Enter the temp in degrees C : \n'>;switch <input<'Do you want F or K?','s'>>case'F'fprintf<'The temp in degrees F is %.1f',<9/5>*X + 32>;case'K'fprintf<'The temp in degrees K is %.1f',X + 273.15>;otherwisedisp<'Enter Error!'>;end;17.%function y = Test3<x>X = randi<100>;if rem<X,2> == 0fprintf<'%d ÊÇżÊý\n',X>;elsefprintf<'%d ÊÇÆæÊý\n',X>;end18.function y = Test3<x>switch rem<x,4>case 0y = true;otherwisey =false;end;19.function y = Test3<innum>if innum == int32<innum>y = true;elsey =false;end;20.function y = Test3<a,b,c>if a^2 == b^2 + c^2y = true;elsey =false;end;21.Re = input<'Enter the Re Value :\n'>;if Re <= 2300 disp<'Laminar region'>;elseif Re > 2300 && Re <= 4000 disp<'Transition region'>; else disp<'Turbulent region'>;end;22.d1 = input<'Enter d1 : \n'>;d2 = input<'Enter d2 : \n'>;if d1 <= 0 || d2 <= 0disp<'Error!'>;elsefprintf<'%.2f',Test3_Func<d1,d2>>;end;function y = Test3_Func<a,b>y = a * b / 2;23.V = input<'Enter the speed of the wing: '>;if V <= 38 disp<'tropical depression '>;elseif V >= 73 disp<'typhoon'>;else disp<'revolving storm'>;end;24.V = input<'Enter the speed of the wing :'>;if V >74 && V <= 95disp<'1 : 4-5'>;elseif V > 95 && V <= 110disp<'2 : 6-8'>;elseif V > 110 && V <= 130disp<'3 : 9-12'>;elseif V > 130 && V <= 155disp<'4 : 13-18'>;elseif V > 155disp<'5 : 18'>;elsedisp<'Error'>;end25.略26.H = input<'Enter the hight of the cloude :'>;if H < 6500 && H > 0disp<'Low'>;elseif H >= 6500 && H < 20000disp<'Middle'>;elsedisp<'High'>;27.if letter == 'x'disp<'Hello'>;elseif letter == 'y'||letter == 'Y'disp<'Yes'>;elseif letter == 'Q'disp<'Quit'>;elsedisp<'Error'>;end;28.switch numcase {0 1 2}f2<num>;case {-2 -1}f3<num>;case 3f4<num>;otherwisef1<num>;end;29.switch menu<'menu','1.Cylinder','2.Circle','3.Rectangle'>case 1R = input<'Please enter the radius of buttom circle:'>;H = input<'Enter the height of the Cylinder:'>;A = 2 * pi * R * H + 2 * pi * <R ^ 2>;fprintf<'The area is %.2f',A>;case 2R = input<'Please enter the radius of circle:'>;A = pi * <R ^ 2>;fprintf<'The area is %.2f',A>;case 3a = input<'Please enter the long of Rectangle:'>;b = input<'Please enter the with of Rectangle :'>;A = a * b;fprintf<'The area is %.2f',A>;end30.同2931.同2932.x = input<'Enter the Value X :'>;Y = menu<'Menue Choose','Sin','Cos','Tan'>;switch Ycase 1output = sin<x>;case 2output = cos<x>;case 3output = tan<x>;end;33.略34.function output = Test3_Func<x>Y = menu<'Menue Choose','ceil','round','sign'>;switch Ycase 1output = ceil<x>;case 2output = round<x>;case 3output = sign<x>;end;35.略36.略37.略第四章循环1.>> for i = 1.5:0.2:3.1i = iend2.function output = Test3_Func<x>x = x - <rem<x,2> == 0>;output = 0;for i = 1 : 2 : xoutput = output + i;end;3.function output = Test3_Func<x>x = x - <rem<x,2> == 0>;output = 1;for i = 1 : 2 : xoutput = output * i;end;4.5.>> for i = 32 : 1 : 255char<i>end;6.>> vec = [5.5 11 3.45];>> for i = 1 : length<vec>fprintf<'Element %d is %.2f .\n',i,vec<i>>;end;7.n = randi<4> + 1;sum = 0;for i = 1 : nsum = sum + input<'Enter the value'>;end;fprintf<'Sum = %.1f\n',sum>;8disp<'Please enter the threshold below which samples will be considered to be invalid :'>;Value1 = input<'Considered to be invalid :\n'>;Value2 = input<'Please enter the number of data samples to be entered :\n'>; Sum = 0;num = 0;for i = 1:Value2data = input<'Please enter a data sample :'>;if data > Value1Sum = Sum + data;num = num + 1;endendif num == 0disp<'Data Error !'>;elsefprintf<'The average of the %d valid data samples is %.2f volts.',num,Sum/num>; end9.load MaxTemp.mat[a b] = size<MaxTemp>;for i = 1 : a;Matix1 = zeros<size<MaxTemp>>;Matix1<i,:> = MaxTemp<i,:>end10.sum = 0;for i = 1 : length<pipe>sum = sum + <pipe<i,1> < 2.1 || pipe<i,1> > 2.3>;sum = sum + <pipe<i,2> < 10.3 || pipe<i,2> > 10.4>;endfprintf<'There were %d rejects.\n',sum>;11.略12.略13.x = randint<1,5,[-10,10]>;x2 = 0;for i = 1 : length<x>x1<1,i> = x<1,i> - 3;if x1<1,i> > 0x2 = x2 + 1;end;x3<1,i> = abs<x1<1,i>>;if i > 1x4 = max<x1<1,i>,x1<1,i-1>>;end;end16.17.略18.19.20.略22.略23.略24.10略略第五章向量化代码1.Mat.*2;2.Result = vec;3.cumprod<vec>;4.>> vec = randint<1,6,[0 20]>;>> maxvec = max<vec>;>> minvec = min<vec>;>> cumsumvec = cumsum<vec>5.Sum<vec>6.>> clear>> vec = randint<1,5,[-10 10]>;>> vec_3 = vec - 3;>> ZhengshuNum = length<find<vec > 0>>;>> vec_abs = abs<vec>;>> vec_max = max<vec>;7.max<vec,[],1>max<vec,[],2>max<max<vec>>;8.function output = Test3_Func<r,n>vec = [];for i = 0 : nvec = [vec r.^i];end;output = sum<vec>;>> vec1 = Vec<[1 3 5]>;>> vec2 = Vec<[2 4 6]>;>> CheckSum = vec1.*vec2;11.>> vec = 1 : 1 : 1000;>> Result = sum<1./<vec.^2>>;>> Check = pi.^2/6;>> diff = check – result13.略14.略15.clear;clf;vec_temp = 0 : 0.5 : 10;x1 = input<'Enter the number of level :'>;while<all<vec_temp - x1>>x1 = input<'Enter the number of level :'>;end;disp<x1>16.略17.ticif x==21disp<x>end;tocticswitch xcase 21disp <x>;end;toc18.Ones<3>19.If find<r > 0> == [] && fin<h > 0> == 0V = pi .*<r.^2>*hEnd;第六章 MATLAB 程序1~20 略21.function S = Test3_Func<n>P = 10000;i = 0.05;vec = 1 : 1 : n;S = P * <<1 + i>.^vec>;plot<vec,S>;n = input<'Enter the Year:'>;while ~<n >0 && int32<n> == n>n = input<'Enter the Year:'>;end;Test3_Func<n>;22.Function lenf = lenprompt<>;Lenf = input<‘Enter the length By inches: ’>; Function Leni = covert_f_to_i<lenf>Leni = …<英尺转英寸>Function printlens<lenf,leni>Disp<lenf>;Disp<leni>;23.略24.。
《计量经济学》与MATLAB编程-第六章多项式回归与非线性回归
第六节 多项式回归5.1 多项式曲线拟合 p = polyfit(x,y,n) [p,S] = polyfit(x,y,n) [p,S,mu] = polyfit(x,y,n)Descriptionp = polyfit(x,y,n) x 、y 为大小相等行或列向量,在是最小二乘意义上,将(x,y)拟合成次数为n 的多项式:1121)(+-++++=n n n p x p x p x p x p n例如: x=1:10;y=[193 226 240 244 257 260 274 297 350 420]; p = polyfit(x,y,3) p =0.9396 -12.9615 63.4777 141.7667y1=p(1)*x.^3+p(2)*x.^2+p(3)*x+p(4);xy[p,S] = polyfit(x,y,n) [p,S] = polyfit(x,y,3) p =0.9396 -12.9615 63.4777 141.7667 S =R: [4x4 double] df: 6normr: 8.0464 S.R ans =1.0e+003 *-1.4066 -0.1570 -0.0180 -0.0022 0 -0.0262 -0.0075 -0.00180 0 -0.0019 -0.00140 0 0 0.0005normr是残差的模,即:norm(y-y1)ans =8.0464[p,S,MU] = polyfit(x,y,n)[p,S,MU] = polyfit(x,y,3)p =26.0768 23.2986 18.6757 255.1312S =R: [4x4 double]df: 6normr: 8.0464MU =5.50003.0277MU是x均值和x的标准差即std(x)S.Rans =5.1959 0.0000 2.7682 0.00000 -3.7926 -0.0000 -2.37310 0 1.1562 0.00000 0 0 -2.0901P它等于:[p,S] = polyfit((x-mean(x))./std(x),y,3)p =26.0768 23.2986 18.6757 255.1312S =R: [4x4 double]df: 6normr: 8.0464>> S.Rans =5.1959 0.0000 2.7682 0.00000 -3.7926 -0.0000 -2.37310 0 1.1562 0.00000 0 0 -2.09015.2 多项式估计y= polyval(p,x)[y,DELT A] = polyval(p,x,S)y= polyval(p,x) 返回给定系数p和变量x值的多项式的预测y = P(1)*x^N + P(2)*x^(N-1) + ... + P(N)*x + P(N+1)x=1:10;y= polyval([3 2],x)y =5 8 11 14 17 20 23 26 29 32[3 2]有两个数,因此为一次多项式,即y=3x+2如:x=1:10;y=[193 226 240 244 257 260 274 297 350 420];p=polyfit(x,3)y1= polyval(p,x)norm(y-y1)ans =8.0464如果是矩阵,则polyval(p,x)为对应x的每一个预测值。
MATLAB 7.X程序设计语言(第二版) 第6章
1.利用下标建立多维阵列 建立多维阵列可从产生二维矩阵出发,扩展其维数,从 而得到多维阵列。例如,先产生一个矩阵
>>A=[5 7 2; 0 1 2; 3 4 2]; 这时A只是一个3×3的矩阵,实际上也可看作是3×3×1 的阵列,因此再输入
>>A(:, :, 2)=[2 7 3; 4 2 8; 2 0 3] A(:,:,1) =
图6.1 4×4×3的多维阵列结构
6.1.2 建立多维阵列 建立多维阵列与建立矩阵的方法类似。但MATLAB还为
建立多维阵列提供了专门的函数。建立多维阵列可采用四种 方法:
● 利用下标建立多维阵列。 ● 利用MATLAB函数产生多维阵列。 ● 利用cat函数建立多维阵列。 ● 用户自己编写M文件产生多维阵列。
B
2×2
32 double array
C
2×2×2
64 double array
D
4-D
64 double array
E
2×2×4
128 double array
ans
1×4
32 double array
Grand total is 44 elements using 352 bytes
>> size(E)
ans =
224
>> ndims(E)
ans =
3
6.1.4 多维阵列的使用 许多应用于二维矩阵的概念和技术也可以应用于多维阵
列,主要有 ● 下标访问技术。 ● 阵列重新排列。 ● 阵列的序列变换。 为说明这几种技术,先产生一多维随机整数阵列: d=fix(20*randn(10,5,3)); 这一阵列为10×5×3维,而且其元素取值为整数。
Matlab编程 - 第六章 lingo软件基础
LINGO软件基础
1
第六章 lingo软件简介 LINGO(linear interactive and general optimiuzer) 的基本含义是交互式的线性和离散化求解器。 最初是由芝加哥大学的Linus Schrage教授于1980年 开发的. 是主要用来求解优化问题的软件。 最大特色:允许优化问题中的决策变量为整数,即可 求解整数规划,而且执行速度快。
x2+2*x4+x5+3*x6>=20; x3+x5+2*x7>=15; @gin(x1);@gin(x2);@gin(x3); @gin(x4);@gin(x5);@gin(x6); @gin(x7);
x3 x5 2 x7 15,
xi 为整数
结论:按第1种模式切5根,第2种模式切5根,第5种 模式切15根,共需切割25根原料钢管。
9
二、LINGO中集 集是一群相联系的对象,这些对象也称为集的成员。 每个集成员可能有一个或多个与之有关联的特征, 这些特征称为属性。 LINGO有两种类型的集:原始集和派生集。 原始集是由一些最基本的对象组成的。 派生集是用一个或多个其它集来定义的。
10
1.定义原始集 sets: setname/member_list /:attribute_list; endsets
Feasible solution found. Total solver iterations: Variable I1 I2
0 Value 2.000000 3.000000
27
4.集循环函数:@for, @sum, @max, @min 用法:(1) @for(setname: expression_list) 对集合setnane的每个元素独立生成expression_list。 (2) @for(setname(i)|logical_condition:expression_list) 对集合setnane中满足logical_condition的成员独立生成 expression_list。 data: 如: x=3,8,5,7,6,-2; sets: enddata niu/1..6/:x,y,z; @ for(niu:y=x^2+2); endsets @for(niu(i)|i#le#3:z(i)=x(i)-3); @for(niu(i)|i#gt#3:z(i)=x(i)^2-2);
第6章 MATLAB程序设计
循环结构
在MATLAB中,包含两种循环结构 循环次数不确定的while循环 循环次数确定的for循环
循环结构(续)
打开方式
MATLAB提供了meditor编辑器编辑M文件 在MATLAB命令行窗口中键入指令edit,则可启动
meditor编辑器 >> edit
打开方式
通过“File”菜单中的“New”子菜单下的“M-file”命令
来启 动meditor编辑器
直接单击 MATLAB用户界面工具栏上的新建按钮
概述(续)
M文件有两类
独立的M文件 —— 脚本(Scripts) 可调用M文件 —— 函数(Functions)
概述(续)
MATLAB通过M语言来实现完整的编写应用程序的能力 M语言 M语言是一种解释性语言,利用该语言编写的代码
仅能被MATLAB接受,被MATLAB解释、执行。 M语言文件可以分为脚本文件和函数文件 一个M语言文件就是由若干MATLAB的命令组合在一 起构成的。 M语言文件是标准的纯文本格式的文件,其文件扩 展名为.m。 使用M文件可以将一组MATLAB命令组合起来,通过 一个简单的指令就可以执行这些命令。
来启动meditor编辑器
2.打开已有的M文件
打开已有的M文件,也有3种方法: (1) 菜单操作。从MATLAB主窗口的File菜单中选 择Open命令,则屏幕出现Open对话框,在Open对 话框中选中所需打开的M文件。在文档窗口可以对 打开的M文件进行编辑修改,编辑完成后,将M文 件存盘。 (2) 命令操作。在MATLAB命令窗口输入命令: edit 文件名,则打开指定的M文件。 (3) 命令按钮操作。单击MATLAB主窗口工具栏 上的Open File命令按钮,再从弹出的对话框中选 择所需打开的M文件。
第六章 (2)MATLAB高级图形设计
。此时,Value数据就已经存储在句柄值为 ui_handle的对象内。
② 在执行的过程中若要取回该变量,可以通过以下 方式在任一Callback中获取该数据值:
Value=get(‘ui_handle’,’UserData’);
用的有hObject、 eventdata和 handles。
hObject:当前回调函数的图形对象句柄;
eventdata:预留的输入参数;
handles:存放图形窗口中所有图形对象句柄的结 构体,存储了所有在图形界面中的控件、菜单、 坐标轴对象的句柄,可以用于在function之间传 递数据。例如:handles.pushbutton1就是按钮 pushbuton1的句柄,handles.axes1就是axes1 的句柄。
global A;
25
多个回调函数之间变量的传递
方法二:直接通过对象的UserData属性来进行各个
C注al意lb:ack此之方间法的在数操据作存上取简操单作且。方便,但每个对
①象次于首设为仅变复先该V能量杂a必对存时的lu须象取,操e,一先作先的则个前会将句输变的造数柄入量 变 成据值以值 量 很存为下, 值 多储ui程因 就 不_到h序此 会 便一an即被当 。个d可覆同l特e盖一:,定掉对需的,象要对这存存象样储储中对两的,值假
➢string属性是按钮上显示的文字,默认的string属 性与Tag相同。
3.滚动条(Slider) (1)常用属性 滚动条的常用回调函数是callback,当每次单击滚动条
改变当前值时调用该函数。 (2)回调函数 常用属性有value、max、min和SliderStep。
MATLAB编程 第六章
6.1.2 Using Complex Numbers with Relational Operators ➢ = ~=
c1 4 3i c2 4 3i
➢ >, <, >=, <=
t = 0 : pi/20 : 4*pi; y = exp (-0.2*t) .* (cos(t) + i * sin(t)); plot (t, real(y), 'b-'); hold on; plot (t, imag(y), 'r-'); title ('\bfPlot of Complex Function vs Time'); xlabel ('\bf\itt'); ylabel ('\bf\ity(t)'); legend ('real','imaginary'); hold off;
8/9/2020
Hangzhou Dianzi University
6
Chapter 6 Complex Data, Character Data, and Additional Plot Types
Function conj (c) real (c) imag (c)
isreal (c)
abs (c) angle (c)
c1 c2 (a1 a2 ) (b1 b2 )i
c1 c2 (a1a2 b1b2 ) (a1b2 b1a2 )i
c1 c2
a1a2 b1b2 a22 b22b1a2 a22a1b2 b22i
电子书-MATLAB程序设计与应用(第二版)
阅阅读读时时::请请选选择择““视视图图 || 文文档档结结构构图图””,,弹弹出出文文档档中中的的标标题题链链接接。
数学软件MATLAB程序设计与应用第1章MATLAB系统环境1.1 MATLAB概貌1.2 MATLAB环境的准备1.3 MATLAB操作界面1.4 MATLAB帮助系统自上世纪80年代以来,出现了科学计算语言,亦称数学软件。
MATLABMathematicaMathcadMapleLINDOLINGO1.1MATLAB概貌 p3MATLAB 是 MATrix LABoratory(矩阵实验室)的缩写。
1984年由 Math Works 公司推出,现已成为国际公认的优秀的工程应用开发环境,是影响最大,流行最广的科学计算语言。
1.1.1M ATLAB的发展2.例如MATLAB7.6的建造编号是R2008a。
说明MATLAB7.6与MATLAB2008a是等同的;3.对于建造编号,正规化以后,每年出两个版本。
一般来说。
a是测试版,b是正式版。
a是前半年出,b是后半年出。
教材采用MATLAB7.0(R14,2004)实验室采用MATLAB 7.8(R2009a,2009.3,汉化)1.1.2M ATLAB的主要功能 p4◆数值计算和符号计算功能◆绘图功能◆语言体系◆MATLAB工具箱(1) 数值计算和符号计算功能MATLAB以矩阵作为数据操作的基本单位,还提供了十分丰富的数值计算函数。
MATLAB先后和著名的符号计算语言Maple与MuPAD(从MATLAB 2008b开始使用MuPAD)相结合,使得MATLAB具有符号计算功能。
(2) 绘图功能可以绘制二维和三维图形。
MATLAB提供了两个层次的绘图操作:●对图形句柄进行的低层绘图操作;●建立在低层绘图操作之上的高层绘图操作。
(3) 语言体系MATLAB具有程序结构控制、函数调用、数据结构、输入输出、面向对象等程序语言特征,而且简单易学、编程效率高。
MATLAB程序设计及应用第2版课件全全书教学教程完整版电子教案最全幻灯片
第1章 MATLAB入门与基本操作
1.3 MATLAB的安装启动 与操作桌面简介
1.3.1 MATLAB的安装和启动
MATLAB 可以在Windows环境下直接安装。在
MATLAB安装完成后,会在Windows桌面上自动生成
MATLAB的快捷方式图标
。
1.3.1 MATLAB的安装和启动
双击图标
1.3.2 MATLAB默认窗口简介
• 指令窗(Command Window) 该窗口是进行各种MATLAB操作的最主要窗口。它位于 MATLAB默认窗口的正中间。用户可以在该窗口中提示符 “fx>>”后直接键入指令,按“Enter”键后,即可运行并 显示除窗口外的所有运行结果。当指令窗口提示符为 “fx>>”时,表示系统已经准备好,用户可以输入指令、函 数、表达式,按“Enter”键后便可执行。
1.4 MATLAB指令窗操作入门
,就打开了如图1.1所示的MATLAB默认窗口
(Desktop)。
图1.1
1.3 MATLAB的安装启动 与默认窗口简介
1.3.2 MATLAB默认窗口简介
图1.1所示的MATLAB默认窗口分为5个区域:指令窗、 当前目录窗、历史指令窗、工作空间窗和Details窗。 另外,在MATLAB默认窗口的上方,还嵌入了菜单栏 和工具栏,如图1.1所示。它们的使用及选择方式与 Windows环境中的相同。
图1.2
第1章 MATLAB入门与基本操作
1.4 MATLAB指令窗操作入门
1.4.1 MATLAB指令窗简介
MATLAB指令窗位于MATLAB默认窗口的正中间,如图 1.1所示。如果用户希望得到脱离默认窗口的几何独立的指 令窗,只要单击图1.2中的图标 ,并在下拉菜单中选择
《MATLAB程序设计教程(第二版)》第6章__MATLAB解方程与最优化问题求解
例6-7 分别用Jacobi迭代和Gauss-Serdel迭代法求解 下列线性方程组,看是否收敛。 命令如下: a=[1,2,-2;1,1,1;2,2,1]; b=[9;7;6]; [x,n]=jacobi(a,b,[0;0;0]) [x,n]=gauseidel(a,b,[0;0;0])
6.2 非线性方程数值求解 6.2.1 单变量非线性方程求解 在MATLAB中提供了一个fzero函数,可以用来求单变量非 线性方程的根。该函数的调用格式为: z=fzero('fname',x0,tol,trace) 其中fname是待求根的函数文件名,x0为搜索的起点。一个 函数可能有多个根,但fzero函数只给出离x0最近的那个根。 tol控制结果的相对精度,缺省时取tol=eps,trace指定迭代 信息是否在运算中显示,为1时显示,为0时不显示,缺省 时取trace=0。
例6-9 求下列非线性方程组在(0.5,0.5) 附近的数值解。 (1) 建立函数文件myfun.m。 function q=myfun(p) x=p(1); y=p(2); q(1)=x-0.6*sin(x)-0.3*cos(y); q(2)=y-0.6*cos(x)+0.3*sin(y); (2) 在给定的初值x0=0.5,y0=0.5下,调用fsolve函数求方程的 根。 x=fsolve('myfun',[0.5,0.5]',optimset('Display','off')) x= 0.6354 0.3734
例6-10 设有初值问题,试求其数值解,并与精确解 相比较。 (1) 建立函数文件funt.m。
function yp=funt(t,y) yp=(y^2-t-2)/4/(t+1); (2) 求解微分方程。 t0=0;tf=10; y0=2; [t,y]=ode23('funt',[t0,tf],y0); %求数值解 y1=sqrt(t+1)+1; t' y' y1' %求精确解
matlab第二版课程设计
matlab第二版课程设计一、课程目标知识目标:1. 掌握MATLAB第二版的基本操作和功能,包括数据类型、矩阵运算、控制结构等;2. 学习使用MATLAB进行数据可视化、图像处理和信号处理等操作;3. 理解MATLAB编程的基本原则和技巧,培养良好的编程习惯。
技能目标:1. 能够运用MATLAB解决实际问题,进行数据分析和处理;2. 培养运用MATLAB进行算法设计和实现的能力;3. 提高运用MATLAB进行科学计算和工程应用的能力。
情感态度价值观目标:1. 培养学生对MATLAB编程的兴趣,激发学习热情;2. 培养学生主动探索、积极思考的学习态度,增强解决问题的自信心;3. 引导学生认识到数学和计算机技术在解决实际问题中的重要性,培养团队协作和交流沟通的能力。
分析课程性质、学生特点和教学要求,本课程目标注重理论与实践相结合,充分考虑学生的年级知识深度。
通过本课程的学习,使学生能够熟练运用MATLAB软件,解决实际问题和开展科学研究,为后续相关课程打下坚实基础。
同时,注重培养学生的学习兴趣和综合素质,提高其运用现代科技手段解决实际问题的能力。
课程目标具体、可衡量,以便教师进行教学设计和评估。
二、教学内容1. MATLAB基础操作与编程环境:介绍MATLAB软件的安装与界面,基本命令与操作,编写和运行脚本,管理工作空间;对应教材章节:第一章 MATLAB概述。
2. 数据类型与矩阵运算:讲解MATLAB中的基本数据类型,矩阵和向量的创建与操作,矩阵运算规则;对应教材章节:第二章 数据类型与矩阵运算。
3. 控制结构:学习MATLAB中的条件语句和循环结构,实现逻辑判断和循环计算;对应教材章节:第三章 控制结构。
4. 函数与脚本:介绍MATLAB中函数的编写和调用,掌握脚本文件的创建与运行;对应教材章节:第四章 函数与脚本。
5. 数据可视化与图像处理:学习利用MATLAB绘制图表、图像处理和动画制作;对应教材章节:第五章 数据可视化与图像处理。
MATLAB编程
MATLAB编程(第二版)Stephen J. Chapman著邢树军郑碧波译国外高校电子信息类优秀教材(英语影印版)MATLAB编程(第二版)MATLAB Programming for Engineers(Second Edition)Stephen J. Chapman 著邢树军郑碧波译前言郑碧波本文为Stephen J.Chapman《MATLAB编程(第二版)》英文影印版的中文译本,这本书对初学者很好的入门教材。
之前从网上下载到邢树军兄弟译的pdf版本,邢的这个版本用起来有以下几方面不便:1.文件较大。
2.打开之后总是提示播放某首歌,很烦。
3.源代码和图形采用了大量的图片,不方便学习者直接复制到MATLAB中进行调试学习。
即使是文本的源代码,也经常出错,主要是每一行语句末尾的“;”为中文编码的分号。
4.个别字翻译错误(sorry,我的这个版本也没有完全消除),但我有发现的已经更正。
5.第十章翻译不完全。
本来全书只有十章,在第十章还没有翻译结束时插进了第十一章。
6.附录A和B没有(翻译)提供。
其中附录B为练习答案,其实这对初学者来说,是极其重要的。
于是就想着改进该版本的。
本版本在邢译本的基础上做如下修改:1.转换成doc格式,重新排版(其实也没怎么排版)。
2.更换封面,去掉歌曲。
3.所有源代码测试正确。
4.用了较多新的彩色截图代替原来的。
5.提供了附录A和附录B。
6.删除了原来pdf版本的第11章(原著没有)。
本版本有如下缺点1.由于本人截图用MATLAB是7.0和6.5版本,在winxp中运行。
一些截图与原英文版本不一样,原因一是与原英文版本MATLAB 6.0不同,原因二是因于产生图形的数据无法找到相同的,好在基础知识方面的学习差别不大。
2.第十章前几节仍为树军兄弟翻译,后面部分由我翻译,但由于下载不到6.0版本,只好用6.5版本,但使用6.5版本会出现GUI编程代码不一样的情况,从忠于原著角度考虑感觉不爽,后来想想,既然网上都找不到6.0版本,那么使用6.5版本岂不更方便读者?!3.附录B与前面的专有名词翻译可能会不一致。
MATLAB基础与编程入门(第二版)(张威)-第6章
第6章 图 形 基 础
并且可以在MATLAB命令行窗体中看到: >> plot(prices1, 'DisplayName', 'prices1',
'YDataSource', 'prices1'); figure(gcf) 其实这条指令就是绘制变量的MATLAB命令。 如果选择其他指令,例如选择hist,则得到的可视化结
第6章 图 形 基 础 6.2 交 互 式 绘 图
6.2.1 基本绘图 如前所述,实现数据可视化是需要有相应的步骤的,其中
的第一步骤就是准备绘制的数据。绘制的数据可以用MATLAB 的工具将必要的数据导入到MATLAB工作空间。也就是说,能 够进行可视化的数据实质都是保存在MATLAB工作空间中的变 量。本节将在MATLAB命令行窗体中键入下面的指令来创建用 户可视化的数据。
第6章 图 形 基 础
MATLAB的图形窗体主要包括如下几个部分: ·菜单栏:MATLAB的图形窗体一般包括一个菜单栏,利用 这个菜单栏可以完成对窗体中各种对象的基本操作,例如图形 的打印导出等。
·工具栏:图形窗体的工具栏用来完成对图形对象的一 般性操作,例如新建、打开、保存和打印,图形的旋转、缩放 等,还有对图形窗体的一些编辑操作也可以通过该工具栏完成。 具体操作将在后续的实例中依次介绍。
第6章 图 形 基 础
>> randn('state',27) >> startprice = 50; >> fracreturns1 = .0015*randn(200,1)+.0003; >> x = [startprice; 1+fracreturns]; >> prices1 = cumprod(x); >> t = (1:length(prices1))'; >> randn('state',7) >> fracreturns2 = .0015*randn(200,1)+.0003; >> x = [startprice; 1+fracreturns]; >> prices2 = cumprod(x);
第6章 MATLAB程序设计
如果用户调用toc时不指定输出参数t, 例如: >> tic >> toc elapsed_time = 4.0160 函数在命令窗口显示函数工作空间变量 elapsed_time 的值,但在MATLAB命令工作空间里不给输出参数t赋任 何值,也不创建变量t。
如果如果用户调用toc时指定输出参数t,例如: >> tic >> out=toc out = 2.8140 则以变量out的形式返回到命令窗口,并在 MATLAB命令工作空间里创建变量out。
function y = linspace(d1, d2, n) %LINSPACE Linearly spaced vector. if nargin == 2 n = 100; end n = double(n); y = [d1+(0:n-2)*(d2d1)/(floor(n)-1) d2];
function t=toc % TOC Read the stopwatch timer.
Global TICTOC If nargout<1 elapsed_time=etime(clock,TICTO C) else t=etime(clock,TICTOC); end
(8)全局变量可以为编程带来某些方便,但却破坏了函 数对变量的封装,所以在实际编程中,无论什么时候都应 尽量避免使用全局变量。如果一定要用全局变量,建议全 局变量名要长、采用大写字母,并有选择地以首次出现的 M文件的名字开头,使全局变量之间不必要的互作用减至 最小。 (9)MATLAB以搜寻脚本文件的同样方式搜寻函数文件。 例如,输入>>cow,MATLAB首先认为cow是一个变 量;如果它不是,那么MATLAB认为它是一个内置函数; 如果还不是,MATLAB检查当前cow.m的目录或文件夹; 如果仍然不是,MATLAB就检查cow.m在MATLAB搜 寻路径上的所有目录或文件夹。
matlab教材第六章
1. Two variables that are functions of the same independent variable, when you wish to emphasize the importance of the independent variable. 2. A single variable that is a function of two independent variables.
paring individual characters for equality and
inequality
All of the relational operators compare the ASCII values of corresponding characters
3.categorizing characters within a string
eval
sscanf
Quiz6.1 P265
1, 4,7,8,10
6.4 additional two-dimensional plots
stem(x,y) stairs(x,y)
bar(x,y)
barh(x,y)
pie(x, explode) compass(x,y)
Plotting functions
Clabel : elevation label
Exm050401 3)Four-dimension plots
1. Quasi four-dimension
2. Cartoon
exm050402
exm050407
Summary
Complex data operation String functions Two- and three-dimensional plots Exercises P283 6.1, 6.10, 6.11
matlab答案第六章
第六章1. 利用MATLAB提供的randn函数生成符合正态分布的10×5随机矩阵A,进行如下操作:(1) A各列元素的均值和标准方差。
(2) A的最大元素和最小元素。
(3) 求A每行元素的和以及全部元素之和。
(4) 分别对A的每列元素按升序、每行元素按降序排列。
答:clear all; close all; clc;A=randn(10, 5);meanA=mean(A); %(1)A各列元素的均值stdA=std(A); %(1)A各列元素的标准方差maxA=max(max(A)); %(2)A的最大元素minA=min(min(A)); %(2)A的最小元素rowsumA=sum(A, 2); %(3)A每行元素的和sumA=sum(rowsumA); %(3)A全部元素之和sort1=sort(A); %(4)A的每列元素按升序排列sort2=sort(A, 2, 'descend'); %(4)A的每行元素按降序排列2. 按要求对指定函数进行插值和拟合。
(1) 按表6.1用3次样条方法插值计算0~90D范围内整数点的正弦值和0~75D范围内整数点的正切值,然后用5次多项式拟合方法计算相同的函数值,并将两种计算结果进行比较。
表6.1 特殊角的正弦和正切值表α度0 15 30 4560 75 90sinα0 0.2588 0.50000.7071 0.8660 0.9659 1.0000 tanα0 0.2679 0.57741.0000 1.7320 3.7320(2) 按表6.2用3次多项式方法插值计算1~100之间整数的平方根。
表6.2 1~100内特殊值的平方根表N 1 4 9 16 25 36 49 64 81 100N的平方根 1 2 3 4 5 6 7 8 9 10答:(1) 程序设计:clear all; close all; clc;alpha1=0:15:90;sin_alpha1=sin(alpha1*pi/180); %精确正弦值plot(alpha1, sin_alpha1, 'k:p'); hold on; %绘精确正弦曲线alpha2=0:90;sin_Y1=interp1(alpha1, sin_alpha1, alpha2, 'spline'); %3次样条正弦插值plot(alpha2, sin_Y1, 'r-*'); hold on; %绘3次样条插值正弦曲线P1=polyfit(alpha1, sin_alpha1, 5); %5次多项式拟合sin_Y2= polyval(P1, alpha2); %5次多项式求值plot(alpha2, sin_Y2, 'b-o'); %绘5次多项式插值正弦曲线legend('精确正弦值', '3次样条正弦插值', '5次多项式正弦插值'); title('正弦值比较'); alpha3=0:15:75;tan_alpha3=tan(alpha3*pi/180); %精确正切值figure, plot(alpha3, tan_alpha3, 'k:p'); hold on; %绘精确正切曲线alpha4=0:75;tan_Y1=interp1(alpha3, tan_alpha3, alpha4, 'spline'); %3次样条正切插值plot(alpha4, tan_Y1,'r-*'); hold on; %绘3次样条正切曲线P2=polyfit(alpha3, tan_alpha3, 5); %5次多项式拟合tan_Y2= polyval(P2, alpha4); %5次多项式求值plot(alpha4, tan_Y2, 'b-o'); %绘5次多项式插值正弦曲线legend('精确正切值', '3次样条正切插值', '5次多项式正切插值'); title('正切值比较');(2)程序设计:clear all; close all; clc;X=[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]; Y=1:10;X1=1:100; Y1=interp1(X, Y, X1,'cubic');plot(X, Y, 'r:o'); hold on; %绘精确平方根曲线plot(X1, Y1, 'k-x'); %绘3次多项式插值平方根曲线legend('精确平方根', '3次多项式插值');3. 已知一组实验数据如表6.3所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.2.2创建二维字符数组12
6.2.3字符串的连接12
6.2.4字符串的比较13
6.2.5在一个字符串中查找/替换字符14
6.2.6大小写转换15
6.2.7字符串转换为数字16
6.2.8数字转化为字符串16
例6.218
6.3多维数组21
6.4关于二维作图的补充说明23
6.4.1二维作图的附加类型23
x2+ 4x + 4 = 0x = -2
x2+ 2x + 5 = 0x = -1 ± 2i
我们把它们的系数分别输入程序,结果如下
>> calc_root2
This program solves for the roots of a quadratic
equation of the form A*X^2 + B*X + C = 0.
disp ('This program solves for the roots of a quadratic ');
disp ('equation of the form A*X^2 + B*X + C = 0. ');
a = input ('Enter the coefficient A: ');
6.4.2作图函数27
6.4.3柱状图28
6.5三维作图28
6.5.1三维曲线作图29
6.5.2三维表面,网格,等高线图象30
6.6总结33
6.6.1好的编程习惯总结33
6.6.2 MATLAB函数与命令总结33
6.7练习34
6.134
6.235
6.335
6.435
6.535
6.635
6.735
6.835
%12/06/98S. J. Chapman Original code
%
% Define variables:
% a -- Coefficient of x^2 term of equation
% b -- Coefficient of x term of equation
% c -- Constant term of equation
表6.1常见的支持复数运算的MATLAB函数
2
这些函数把复数转化它的极坐标形式。函数abs(c)用于计算复数c相应的绝对值,公式如下
其中c=a+bi。函数angle(c)用下面的公式计算复数c的幅角
angle(c)=atan2(imag(c),real(c))
由它产生的角的取值范围为-π<θ≤π。
3
x1 = ( -b + sqrt(discriminant) ) / ( 2 * a );
x2 = ( -b - sqrt(discriminant) ) / ( 2 * a );
% Display results
disp ('The roots of this equation are:');
fprintf ('x1 = (%f) +i (%f)\n', real(x1), imag(x1));
Enter the coefficient A: 1
Enter the coefficient B: 5
Enter the coefficient C: 6
The roots of this equation are:
x1 = (-2.000000) +i (0.000000)
x2 = (-3.000000) +i (0.000000)
如果复数c1=a1+b1i和复数c2=a2+b2i,那么它们的加减乘除运算定义如下。
c1+ c2= (a1+ a2) + (b1+ b2)i(6.6)
c1- c2= (a1- a2) + (b1- b2)i(6.7)
c1× c2= (a1a2- b1b2) + (a1b2+ b1a2)i(6.8)
(6.9)
本章还会涉及到MATLAB的附加画图类型。
6
复数是指既包含实部又包含虚部的数。复数出现在许多的科研工作问题上。例如,在电器工程中,我们可以用复数代表交变电压,交变电流和阻抗。描述电器系统行为的公式经常用到复数。因为这是非常常见的,作为一个程师如果没有很好理解和运用复数,它无法工作。
复数的一般形式如下:
4.0000 + 3.0000i
函数isreal可以判断一个数组包是实数组还是复数组。如果一个数组中的所有元素只有虚部,那么这个数组是复数组,并且isreal(array)将会返回一个0。
6
用关系运算符==来判断两复数是否相等,或用关系运算符~=判断两复数是否不相等,这种情况是可能的。这些运算都会产生出我们所期望的结果。例如,如果c1=4+3i和c2=4-3i,那么关系运算c1==c2将会产生0,关系运算c1~=c2将会产生1。
c = a + bi = z∠θ
其中z代表向量的模,θ代表辐角。直角坐标中的a,b和极坐标z,θ之间的关系为
a = zcosθ(6.2)
b = zsinθ(6.3)
z =(6.4)
(6.5)
图6.1直角坐标系中复数
图6.2极坐标系中复数
MATLAB用直角坐标表达复数。每一个复数应有一对实数(a,b)组成。第一个数(a)代表复数的实部,第二个数(b)代表复数的虚部。
4.将算法转化为MATLAB语句
% Script file: calc_roots2.m
%
% Purpose:
% This program solves for the roots of a quadratic equation
% of the form a*x**2 + b*x + c = 0. It calculates the answers
6
MATLAB中有许多的函数支持复数的运算。这些函数可分为三大类。
1
这些函数把数据从复数据类型转换为实数数据类型(double)。函数real将复数的实部转化为double型数据,把复数的虚部抛弃。函数imag把函数的虚部转化为相应的实数。
函数
描述
conj(c)
计算c的共共轭复数。如果c=a+bi,那么conj(c)=a bi。
当两个复数进行二元运算,MATLAB将会用上面的法则进行加法,减法,乘法和除法运算。
6
当复数值赋值于一个变量名,MATLAB将自动创建一个复变量。创建复数的最简单方法是用MATLAB本自带的因有变量i或j,它们都被预定义为。例如下面的语句将复数4+3i赋值于c1。
>> c1 = 4 + 3*i
c1 =
1.陈述问题
编写一个程序,解一元二次方程的根,不管有两个不同的实根,还是用两个相同的实根或两个不同复根。不需要检测判别式。
2.定义输入输出
本程序所需要方程式
ax2+bx+c=0(3.1)
的三个系数a,b,c。输出是这个方程式的所有根。
3.设计算法
这个程序从整体上可以分为三大步,即输入,计算,输出
Read the input data
许多的数函数都可以对复数进行运算。这些函数包括指数函数,对数函数,三角函数,还有平方根函数。函数sin,cos,log,sqrt等既能对复数数据进行运算,又能对实数据进行运算。
一些支持复数运算的函数在表6.1中列出。
例
二次方程的求解(重写)
复数的价值体现在它能使运算简化。
例如,我们在例3.2中已解决的二次方程的求解问题,但它根据判别式用到3个选项的选择结构,由于复数的出现,负数的平方根的处理将不困难。所以能够大大简化我们的计算。编写一个普通的程序,解一元二次方程的根,不管是什么类型的。用复变量,而不用选择结构。
6.936
6.1036
6.1136
6.1236
6.1336
6.1436
6.1536
6.1636
6.1737
6.1837
6.1937
6.2037
在第二章中,我们学习了MATLAB基础数据类型:double和char。MATLAB还有许多的附加数据类型,在本章,我们将会了解它们中的一个。我们要讨论的附加数据类型是MATLAB支持的复数数据。我们也将学习如何使用char数据类型,以及如何把MATLAB数组扩展为多维数组。
(6.4)
如果我们对两复数进行比较,得到的结果将更加合理。abs(c1)>abs(c2)将会产生0,因为c1的模大于c2的模。
常见编程错误
当我们应用关系运算符对复数运算时,一定要小心。关系运算符>,<,<=或>=只比较复数的实部,而不是它们的模。如果你要用这些关系运算符对一复数进行运算,比较两复数的模将更加常见。
>> calc_root2
This program solves for the roots of a quadratic
% discriminant -- Discriminant of the equation
% x1 -- First solution of equation
% x2 -- Second solution of equation
% Prompt the user for the coefficients of the equation
C=a+bi
其中C为复数,a和b均为实数,i代表。a,b分别为C的实部和虚部。由于复数有两个部分,所以它能在平面内标出。这个平面的横轴是实轴,纵轴是虚轴,所以复数在这个平面内为一个点,横轴为a,纵轴为b。用上面的方式表示一个复数,叫做直角坐标表示,为坐标的横轴与虚轴分别代表复数的实部与虚部。