程序ex612.m(续) FrmMeter=1./ToMeter; Value=input('输入待变换的值(O为退出):); while(Value ~=0) ValueinM Value*ToMeter(InUnits); %把输入值变为米 New alue ValueinM*FrmMeter(OutUnits); %把米变为输出单位 fprintf(变换后的值是%gn',NewValue); %打印变换后的值 Value=input('输入待变换的值(O为退出):); %提问下个输入值 end
程序ex612.m(续) FrmMeter= 1./ ToMeter; Value = input('输入待变换的值(0为退出): '); while( Value ~= 0 ) ValueinM = Value*ToMeter(InUnits); % 把输入值变为米 NewValue = ValueinM*FrmMeter(OutUnits); % 把米变为输出单位 fprintf('变换后的值是 %g \n' ,NewValue); % 打印变换后的值 Value = input('输入待变换的值(0为退出): '); % 提问下个输入值 end
【例6-1-3】实验数据拟合 命题:设在某一实验中,给某元件加[1,2,3,4,5V电压,测得 的电流为[0.2339,0.3812,0.5759,0.8153,0.97421ma。 求此元件的电阻。 解:◆建模 ·模型:设直线的方程为y=a(1)x+a(2),待定的系数是 a(1),a(2)。将上述数据分别代入x,y, ·a(1)+a(2)=0.2339 17 1 0.2339 ·2a(1)+a(2)=0.3812 2 1 0.3812 ·3a(1)+a(2)=0.5759 → 3a(1)+1a(2)F 0.5759 ·4a(1)+a(2)=0.8153 4 1 0.8153 ·5a(1)+a(2)=0.9742 5 0.9742 ·把这五个方程联立,用矩阵表述,得 datax *a(1)+ones(N,1)*a(2)=datay
【例6-1-3】实验数据拟合 命题:设在某一实验中,给某元件加[1,2,3,4,5]v电压,测得 的电流为[ 0.2339, 0.3812, 0.5759, 0.8153, 0.9742 ]ma。 求此元件的电阻。 解:◆ 建模 • 模型:设直线的方程为 y= a(1)x +a(2), 待定的系数是 a(1),a(2)。将上述数据分别代入x,y, • a(1)+a(2)=0.2339 • 2a(1)+a(2)=0.3812 • 3a(1)+a(2)=0.5759 • 4a(1)+a(2)=0.8153 • 5a(1)+a(2)=0.9742 • 把这五个方程联立,用矩阵表述, 得 • datax *a(1) + ones(N,1) * a(2) = datay 1 1 0.2339 2 1 0.3812 3 a(1) 1 a(2)= 0.5759 4 1 0.8153 5 1 0.9742
程序exn613 ·这是一个超定方程组,写成A*a=B,其最小二乘解可以 用左除运算符a=A1B来求得。因此程序如下: ·lear,datax=[1:5]'; ·datay=[0.2339,0.3812,0.5759,0.8153,0.9742] A=[datax,ones(5,1)];B=datay; ·a=A1B,r=1/a(1) plot(datax,datay,'o'),hold on 0.8 ·运行结果为: 0.6 ·a(1)=0.1905 0.4 ·a(2)=0.0247 0.2 ·画出曲线如右图。 0 4 6
程序exn613 • 这是一个超定方程组,写成A*a = B,其最小二乘解可以 用左除运算符a = A \ B来求得。因此程序如下: • lear, datax = [1:5]'; • datay=[ 0.2339, 0.3812, 0.5759, 0.8153, 0.9742] • A = [datax , ones(5,1)]; B = datay; • a = A\B, r=1/a(1) • plot(datax,datay, 'o'),hold on • 运行结果为: • a(1) = 0.1905 • a(2) = 0.0247 • 画出曲线如右图。 0 2 4 6 0 0.2 0.4 0.6 0.8 1
6.2力学基础 ·【例6-2-1】目标相对于射点的高度为y,给定初速和射角, 计算物体在真空中飞行的时间和距离。 ·◆建模:这里目标和射点不在同一高度上,不好求封闭 形式的解,用MATLAB使整个计算和绘图过程自动化。其 好处是可快速地计算其在不同初速和射角下的飞行时间和 距离。关键在求落点时间t时需要解一个二次线性代数方 程 由y=votsin。 28 ● 解出t,她就是落点时间tf。它会有两个解,我们只取其中 一个有效解。再求 mYofr sino
6.2 力学基础 • 【例6-2-1】目标相对于射点的高度为 yf,给定初速和射角, 计算物体在真空中飞行的时间和距离。 • ◆建模:这里目标和射点不在同一高度上,不好求封闭 形式的解,用MATLAB使整个计算和绘图过程自动化。其 好处是可快速地计算其在不同初速和射角下的飞行时间和 距离。关键在求落点时间tf时需要解一个二次线性代数方 程 • 由 • • 解出t,她就是落点时间tf。它会有两个解,我们只取其中 一个有效解。再求 2 0 0 f 1 sin 2 y v t gt y max 0 f 0 x v t sin
程序eXn621 ·clear;y0=0;x0=0; %初始位置 vMag=input('输入初始速度(mls):);%输入初始速度 ·vDir=input(输入初速方向(度):); ·yf=input('输入目标高度(米):); %输入目标高度yh ·Vx0=vMag*cos(vDir*(pi/180);%计算x,y方向的初速 vy0 VMag*sin(vDir*(pi/180)); ·Wy=-9.81;wx=0; %重力加速度(m/s2) 。 tf=roots(wy/2,y0,y0-y);%解代数方程计算落点tf ·tf=max(tf; %去除tf两个解中的庸解 ·t=0:0.1:tf ·y=y0+y0*t+y*t.2/2; %计算轨迹 ·X=x0+VX0*t+Wx*t.2/2; xf max(x),plot(x,y), %计算射程,画出轨迹
程序exn621 • clear; y0 = 0; x0 = 0; % 初始位置 • vMag = input('输入初始速度 (m/s): '); % 输入初始速度 • vDir = input(' 输入初速方向(度): '); • yf = input('输入目标高度(米): '); % 输入目标高度yh • vx0 = vMag*cos(vDir* (pi/180)); % 计算x,y方向的初速 • vy0 = vMag*sin(vDir* (pi/180)); % • wy = -9.81; wx = 0; % 重力加速度 (m/s^2) • tf=roots([wy/2,vy0,y0-yf]); % 解代数方程计算落点tf • tf=max(tf); % 去除tf两个解中的庸解 • t=0:0.1:tf; • y = y0 + vy0*t + wy*t.^2/2; % 计算轨迹 • x = x0 + vx0*t + wx*t.^2/2; • xf = max(x),plot(x,y), % 计算射程,画出轨迹