搜档网
当前位置:搜档网 › 计算方法matlab上机报告(流程图、源代码等)

计算方法matlab上机报告(流程图、源代码等)

计算方法matlab上机报告(流程图、源代码等)
计算方法matlab上机报告(流程图、源代码等)

上机报告

1. 共轭梯度法

(1)计算过程如下:

第一步:取初始向量)0(X , 计算

???

????+=><><-=-=-?==(0)

0(0)(1))0()0()0()0(0(0)

(0)(0)(0)d X X ,,X )X (r d λλAd d Ad r A b f 第1+k 步:计算

?????????????+=><><-=+=><><-=-=-?=+------(k)0(k)1)(k )()()()()1(1(k))()1()1()1()(1(k)

(k)(k)d X X

,,r ,,X )X (r λλββk k k k k k k k k k k k k Ad d Ad r d d Ad d Ad r A b f

(2)

syms n; %定义一个变量n

A=input('请输入矩阵A')

b=input('请输入矩阵b')

n=size(A)

X=zeros(n);

D=zeros(n);

R=zeros(n);

x=X(:,1); %将矩阵X 的第一列赋值给x 作为初始向量

r=b-A*x; %将x 代入求得初始非零残向量

R(:,1)=r;

d=r; %求得初始方向向量

D(:,1)=d;

for i=1:n; %利用循环进行迭代求得各向量

AF(i)=R(:,i)'*R(:,i)/(D(:,i)'*A*D(:,i));

X(:,i+1)= X(:,i)+AF(i)*D(:,i);

R(:,i+1)=b-A*X(:,i+1);

BT(i)=norm(R(:,i+1))^2/norm(R(:,i))^2;

D(:,i+1)=R(:,i+1)+BT(i)*D(:,i) ;

end

x=X(:,i+1) %输出计算结果

2.龙贝格积分

s=input('请输入被积函数表达式:f(x)=','s') %键盘输入被积函数表达式

f=inline(s)

a=input('请输入积分下限a=')%输入积分下限a

b=input('请输入积分上限b=')%输入积分上限b

f0=f(a);%求下限值f(a)

f1=f(b);%求上限值f(b)

j=zeros(8,4);%定义一个矩阵用来存放T,S,C,R值

j(1,1)=(b-a)*0.5*(f0+f1);%计算出T1

for i=2:8;%对i循环赋值

t=2^(i-2);

fj=zeros(t,1);%构造一个矩阵为接下来存放f(a+(2i-1)*(b-a)/2^(k+1))的值做准备

for m=1:t;

fj(m,1)=f(a+(2*m-1)*(b-a)/2^(i-1));%将计算得到的f(a+(2i-1)*(b-a)/2^(k+1))的值赋值给对应的矩阵元素

ff=sum(fj);%对矩阵所有元素求和

end

j(i,1)=0.5*j(i-1,1)+(1/2^(i-1))*ff;%得到所有的T值

j(i,2)=j(i,1)+(1/3)*(j(i,1)-j(i-1,1));%得到所有的S值

j(i,3)=j(i,2)+(1/3)*(j(i,2)-j(i-1,2));%得到所有的C值

j(i,4)=j(i,3)+(1/3)*(j(i,3)-j(i-1,3));%得到所有的R值

s=j(i,4)-j(i-1,4);

end

j %输出计算结果表

If=vpa(j(i,4),7) %得到精确的积分结果

3.三样条插值

X=zeros(1,6) ; %定义一些下面将用到的矩阵

y=zeros(1,6);

f=zeros(6);

l=zeros(1,6);

for i=1:1:6

X(i)=((i-1)*2)/5-1; %将区间等分取点

y(i)=1/(1+25*X(i)*X(i)); %得到对应点的函数值

end

for j=2:6

f(1,1)= y(1);

f(j, 1)=y(j);

for k=2:j

f(j,k)=(f(j,k-1)-f(j-1,k-1))/(X(j)-X(j-k+1)); %利用循环求差商

end

end

f %得到差商表,其中对角线上的为需要的差商值

syms x;

l=[x,x,x,x,x,x];

g=l-X;

n=g;

for t=2:6

n(1,t)= n(1,t-1)* n(1,t);

end

N=zeros(1,1);

N=f(1,1);

for r=1:5

N= N +n(1,r)*f(r+1,r+1); %利用循环求5次牛顿插值多项式

end

N %得到5次牛顿插值多项式

P=zeros(1,101);

X1=[-1:0.02:1]; %取间距为0.02的等分点作为作图的横坐标

for u=1:101

x=X1(u);

subs(N) ;

p(1,u)= subs(N(1,1)) ; %用上面所求出的5次牛顿插值多项式算得所取等分点的函数值作为纵坐标

end

plot(X1,p, '-c') %绘制5次牛顿插值曲线

hold on

XX=zeros(1,11) ; %定义一些下面将用到的矩阵

yy=zeros(1,11);

F=zeros(11);

L=zeros(1,11);

for I=1:1:11

XX(I)=((I-1)*2)/10-1; %将区间等分取点

yy(I)=1/(1+25*XX(I)*XX(I)); %得到对应点的函数值

end

for J=2:11

F(1,1)= yy(1);

F(J, 1)=yy(J);

for K=2:J

F(J,K)=(F(J,K-1)-F(J-1,K-1))/(XX(J)-XX(J-K+1)); %利用循环求差商

end

end

F %得到差商表,其中对角线上的为需要用的差商值

syms x1;

L=[x1,x1,x1,x1,x1,x1,x1,x1,x1,x1,x1];

G=L-XX;

M=G;

for T=2:11

M(1,T)= M(1,T-1)* M(1,T);

end

H=F(1,1);

for R=1:10

H= H +M(1,R)*F(R+1,R+1); %利用循环求10次牛顿插值多项式

end

H %得到10次牛顿插值多项式

P=zeros(1,101);

XX1=[-1:0.02:1]; %取间距为0.02的等分点作为作图的横坐标

for u1=1:101

x1=XX1(u1);

subs(H) ;

P(1,u1)= subs(H) ; %用上面所求出的10次牛顿插值多项式算得所取等分点的函数值作为纵坐标

end

plot(XX1,P, '-g')

hold on %绘制10次牛顿插值曲线

x3=[-1:0.02:1]; %取间距为0.02的等分点作为作图的横坐标

y3=1./(1+25*x3.^2); %用原函数计算得到所取等分点的纵坐标

plot(x3,y3, '-k')

hold on %绘制原函数f(x)的曲线

h=0.2;

u=0.5;

z=0.5;

d=zeros(11,1);

d(1)=6*((yy(2)-yy(1))/0.2-50/(26*26))/0.2;

d(11)=6*(-50/(26*26)-(yy(11)-yy(10))/0.2)/0.2;

a=0.5*ones(1,10);

b=2*ones(1,11);

c=diag(a,1)+diag(a,-1)+diag(b);

c(1,2)=1;

c(11,10)=1;

e=zeros(11,1); %得到三次样条插值第二种边界条件对应的严格三对角占优矩阵

e(1,1)=d(1);

e(11,1)=d(11);

for ii=2:10

e(ii,1)=F(ii+1,3);

end

e; %得到d0,d1,….dn用矩阵e表示

ff=horzcat(c,e) %利用d0,d1,…..dn与上面所得的三对角占优矩阵构造增广矩阵ff y0=zeros(11,1); %定义一些下面将要用的矩阵

uu=zeros(11,12);

uu(1,1)=ff(1,1);

ll=zeros(11,11);

ll(1,1)=1;

y0(1,1)=ff(1,12);

for tt=2:11

ll(tt,tt)=1;

ll(tt,1)=ff(tt,1)/ uu(1,1);

l(tt,tt-1)=ff(tt,tt-1) /uu(tt-1,tt-1);

for jj=tt:12

uu(1,jj)= ff(1,jj);

uu(tt,jj)=ff(tt,jj)- ll(tt,tt-1)*uu(tt-1,jj); %对增广矩阵进行LU分解,同时进行追法求y0 y0(tt,1)=uu(tt,12);

end

end

xx=zeros(11,1);

for kk=10:-1:1

xx(11,1)=y0(11,1)/uu(11,12);

xx(kk,1)=(y0(kk,1)-uu(kk,kk+1)*xx(kk+1,1))/uu(kk,kk); %用赶法求得xx

end

M0=xx;

Sx=zeros(10,1);

for i0=1:10

syms x2;

Sx=sym(Sx);

Sx(i0)= ((XX(i0+1)-x2)*(XX(i0+1)-x2)*(XX(i0+1)-x2)/(6*h))*M0(i0)+...

((x2-XX(i0))*(x2-XX(i0))*(x2-XX(i0))/(6*h))*M0(i0+1)+ ...

(yy(i0)-(h*h/6)*M0(i0))*(XX(i0+1)-x2)/h+...

(yy(i0+1)-(h*h/6)*M0(i0+1))*(x2-XX(i0))/h; %利用循环求不同区间段的三样条插值多项式end

Sx %得到不同区间段的三样条插值多项式,用矩阵表示

w1=[XX(1):0.01:XX(2)]; %将第一段等分曲线段等分成20段,得各等分点横坐标

P1=zeros(1,21);

for t1=1:21

x2=w1(t1);

subs(Sx(1));

P1(1,t1)= subs(Sx(1)); %求得第一段等分曲线段等分成20段的各等分点横坐标对应的纵坐标end

plot(w1,P1) %绘制利用三样条插值多项式所得的第一等分段曲线

hold on

w2=[XX(2):0.01:XX(3)]; %将第2段等分曲线段等分成20段,得各等分点横坐标

P2=zeros(1,21);

for t2=1:21

x2=w2(t2);

subs(Sx(2));

P2(1,t2)= subs(Sx(2)); %求得第2段等分曲线段等分成20段的各等分点横坐标对应的纵坐标end

plot(w2,P2) %绘制利用三样条插值多项式所得的第2等分段曲线

hold on

w3=[XX(3):0.01:XX(4)]; %将第3段等分曲线段等分成20段,得各等分点横坐标

P3=zeros(1,21);

for t3=1:21

x2=w3(t3);

subs(Sx(3));

P3(1,t3)= subs(Sx(3)); %求得第3段等分曲线段等分成20段的各等分点横坐标对应的纵坐标end

plot(w3,P3) %绘制利用三样条插值多项式所得的第3等分段曲线

hold on

w4=[XX(4):0.01:XX(5)]; %将第4段等分曲线段等分成20段,得各等分点横坐标

P4=zeros(1,21);

for t4=1:21

x2=w4(t4);

subs(Sx(4));

P4(1,t4)= subs(Sx(4)); %求得第4段等分曲线段等分成20段的各等分点横坐标对应的纵坐标end

plot(w4,P4) %绘制利用三样条插值多项式所得的第4等分段曲线

hold on

w5=[XX(5):0.005:XX(6)]; %将第5段等分曲线段等分成40段,得各等分点横坐标

P5=zeros(1,41);

for t5=1:41

x2=w5(t5);

subs(Sx(5));

P5(1,t5)= subs(Sx(5)); %求得第5段等分曲线段等分成40段的各等分点横坐标对应的纵坐标end

plot(w5,P5) %绘制利用三样条插值多项式所得的第5等分段曲线

hold on

%以下依次绘制其余各等分段的曲线

w6=[XX(6):0.005:XX(7)];

P6=zeros(1,41);

for t6=1:41

x2=w6(t6);

subs(Sx(6));

P6(1,t6)= subs(Sx(6));

end

plot(w6,P6) %利用三样条插值多项式绘制第6等分段曲线

hold on

w7=[XX(7):0.01:XX(8)];

P7=zeros(1, 21);

for t7=1:21

x2=w7(t7);

subs(Sx(7));

P7(1,t7)= subs(Sx(7));

end

plot(w7,P7) %利用三样条插值多项式绘制第7等分段曲线

hold on

w8=[XX(8):0.01:XX(9)];

P8=zeros(1,21);

for t8=1:21

x2=w8(t8);

subs(Sx(8));

P8(1,t8)= subs(Sx(8));

end

plot(w8,P8) %利用三样条插值多项式绘制第8等分段曲线hold on

w9=[XX(9):0.01:XX(10)];

P9=zeros(1,21);

for t9=1:21

x2=w9(t9);

subs(Sx(9));

P9(1,t9)= subs(Sx(9));

end

plot(w9,P9) %利用三样条插值多项式绘制第9等分段曲线

hold on

w10=[XX(10):0.01:XX(11)];

P10=zeros(1,21);

for t10=1:21

x2=w10(t10);

subs(Sx(10));

P10(1,t10)= subs(Sx(10));

end

plot(w10,P10) %利用三样条插值多项式绘制第10等分段曲线

4.龙格库塔法

%龙格库塔法求3阶常微分方程的初值问题的通用程序

h=input('请输入步长值h=')%通过键盘输入步长h

a=input('请输入给定的x的初始点值a=')%通过键盘输入起始点的x值

b=input('请输入要求近似值的点的x值b=')%通过键盘输入所求近似值点的x值

n=(b-a)/h%求得步长个数

s=input('请输入m阶微分方程转化为一阶微分方程的后的表达式f(x,y1,y2,y3)=','s')%输入3阶常微分方程转化为一阶常微分方程后的表达式

f=inline(s)

y=zeros(3,n+1);%定义一个矩阵来存放循环求得的y1,y2,y3值

k1=zeros(3,n);%定义一个矩阵来存放循环求得的k1值

k2=zeros(3,n);%定义一个矩阵来存放循环求得的k2值

k3=zeros(3,n);%定义一个矩阵来存放循环求得的k3值

k4=zeros(3,n);%定义一个矩阵来存放循环求得的k4值

A=input('请将微分方程在初始点a的不同阶的的值按阶数由低到高输入到矩阵中A中构成一个3x1的列矩阵A=')%将给定的初值输入到列矩阵A中

y(:,1)=A;%将y1,y2,y3的初值赋值给矩阵y的第一列

for i=2:n+1%引入循环

k1(1,i-1)=h*y(2,i-1);%写出k1矩阵第一行的数学表达式

k1(2,i-1)=h*y(3,i-1);%写出k1矩阵第二行的数学表达式

k1(3,i-1)=h*f(a,y(1,i-1),y(2,i-1),y(3,i-1));%写出k1矩阵第三行的数学表达式

k2(1,i-1)=h*(y(2,i-1)+k1(2,i-1)/2);%写出k2矩阵第一行的数学表达式

k2(2,i-1)=h*(y(3,i-1)+k1(3,i-1)/2);%写出k2矩阵第二行的数学表达式

k2(3,i-1)=h*f(a+((i-2)*h+h/2),y(1,i-1)+k1(1,i-1)/2,y(2,i-1)+k1(2,i-1)/2,y(3,i-1)+k1(3,i-1)/2);%写出k2矩阵第三行的数学表达式

k3(1,i-1)=h*(y(2,i-1)+k2(2,i-1)/2);%写出k3矩阵第一行的数学表达式

k3(2,i-1)=h*(y(3,i-1)+k2(3,i-1)/2);%写出k3矩阵第二行的数学表达式

k3(3,i-1)=h*f(a+((i-2)*h+h/2),y(1,i-1)+k2(1,i-1)/2,y(2,i-1)+k2(2,i-1)/2,y(3,i-1)+k2(3,i-1)/2);%写出k3矩阵第三行的数学表达式

k4(1,i-1)=h*(y(2,i-1)+k3(2,i-1));%写出k4矩阵第一行的数学表达式

k4(2,i-1)=h*(y(3,i-1)+k3(3,i-1));%写出k4矩阵第二行的数学表达式

k4(3,i-1)=h*f(a+((i-2)*h+h),y(1,i-1)+k3(1,i-1),y(2,i-1)+k3(2,i-1),y(3,i-1)+k3(3,i-1));%写出k4矩阵第三行的数学表达式

y(1,i)=y(1,i-1)+(1/6)*(k1(1,i-1)+2*k2(1,i-1)+2*k3(1,i-1)+k4(1,i-1));%利用循环求得矩阵y的第一行

y(2,i)=y(2,i-1)+(1/6)*(k1(2,i-1)+2*k2(2,i-1)+2*k3(2,i-1)+k4(2,i-1));%利用循环求得矩阵y的第二行

y(3,i)=y(3,i-1)+(1/6)*(k1(3,i-1)+2*k2(3,i-1)+2*k3(3,i-1)+k4(3,i-1));%利用循环求得矩阵y的第三行

end

y %得到矩阵y

jg=y(1,n+1) % y(b)的近似值=y(1,n+1),所求的近似解与解析解值很接近

matlab课程教学设计(简单计算器的设计)

matlab课程设计报告 题目简易计算器的设计 学院电子信息工程学院 专业电子信息 学生姓名和学号 指导教师

一、选题目的及意义 GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作,而在matlab有很简单的gui设计工具,我们可以通过这个工具轻松地构建我们想要的程序,从而实现与用户的信息交互。本次课程设计是使用了matlab中的guide生成了简单的计算器程序。 二、源代码 function varargout = Calculator(varargin) %Simple Calculator %@Anhui University % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Calculator_OpeningFcn, ... 'gui_OutputFcn', @Calculator_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

matlab相关图形实现代码

根据数据点绘制饼图和针状图: x=[1 2 3 4 5 6]; >> subplot(2,2,1);pie(x); >> subplot(2,2,2);pie3(x); >> subplot(2,2,3);stem(x); >>subplot(2,2,4);stem3(x); 5% 10% 14% 19% 24% 29% 24% 29% 19% 5%14% 10%0 2 4 6 2 4 6 5 10 01 2 05 10

根据数据点绘制向量场图、羽状图和罗盘图: x=[1 2 3 4 5 6];y=[1 2 3 4 5 6]; u=[1 2 3 4 5 6];v=[1 2 3 4 5 6]; subplot(2,2,1);quiver(x,y,u,v); subplot(2,2,2);quiver(x,y,u,v,'r'); subplot(2,2,3);feather(u,v); subplot(2,2,4);compass(u,v); 024680 246 802468 246 80 5 10 15 2 4 6 5 10 30 210 60240 90270 120 300 150330 180

rand(m,n)产生m ×n 均匀分布的随机矩阵,元素取值在0.0~1.0。 randn 函数:产生标准正态分布的随机数或矩阵的函数。 Y = randn(m,n) 或 Y = randn([m n])返回一个m*n 的随机项矩阵。 > theta=10*rand(1,50); %确定50个随机数theta >> Z=peaks; %确定Z 为峰值函数peaks >> x=0:0.01:2*pi;y=sin(x); %确定正弦函数数据点x.y >> t=randn(1000,1); %确定1000个随机数t >> subplot(2,2,1);rose(theta); %关于(theta )的玫瑰花图 >> subplot(2,2,2);area(x,y); %关于(x,y)的面积图 >> subplot(2,2,3);contour(Z); %关于Z 的等值线图(未填充) >> subplot(2,2,4);hist(t); %关于t 的柱状图 5 10 30 210 60 240 90270 120300150330 18000246 -1 -0.500.5 110 20 30 40 10 2030 40-4 -2 2 4 100 200 300

《应用计算方法教程》matlab作业二

6-1 试验目的计算特征值,实现算法 试验容:随机产生一个10阶整数矩阵,各数均在-5和5之间。 (1) 用MATLAB 函数“eig ”求矩阵全部特征值。 (2) 用幂法求A 的主特征值及对应的特征向量。 (3) 用基本QR 算法求全部特征值(可用MATLAB 函数“qr ”实现矩阵的QR 分解)。 原理 幂法:设矩阵A 的特征值为12n ||>||||λλλ≥???≥并设A 有完全的特征向量系12,,,n χχχ???(它们线性无关),则对任意一个非零向量0n V R ∈所构造的向量序列1k k V AV -=有11()lim ()k j k k j V V λ→∞ -=, 其中()k j V 表示向量的第j 个分量。 为避免逐次迭代向量k V 不为零的分量变得很大(1||1λ>时)或很小(1||1λ<时),将每一步的k V 按其模最大的元素进行归一化。具体过程如下: 选择初始向量0V ,令1max(),,,1k k k k k k k V m V U V AU k m +===≥,当k 充分大时1111,max()max() k k U V χλχ+≈ ≈。 QR 法求全部特征值: 111 11222 111 ,1,2,3,k k k k k A A Q R R Q A Q R k R Q A Q R +++==????==??=???? ??????==?? 由于此题的矩阵是10阶的,上述算法计算时间过长,考虑采用改进算法——移位加速。迭 代格式如下: 1 k k k k k k k k A q I Q R A R Q q I +-=?? =+? 计算k A 右下角的二阶矩阵() () 1,1 1,() (),1 ,k k n n n n k k n n n n a a a a ----?? ? ??? 的特征值()()1,k k n n λλ-,当()()1,k k n n λλ-为实数时,选k q 为()()1,k k n n λλ-中最接近(),k n n a 的。 程序

用MATLAB做一个计算器_包括加减乘除_平方_清空等功能

广西科技大学MATLAB课程设计说明书 课题:设计简易计算器 开发环境:MATLAB GUIDE 作者: 系别: 专业: 时间:

实验目的:1、熟悉MATLAB的主要控件使用方法。 2、熟悉MATLAB的GUI设计流程。 实验环境: 编程软件:MATLAB7.0 实验内容与结果: 使用MATLAB的GUI接口设计一个简单的计算器。 效果图: 一、布局GUI。 1.打开Matlab,输入Guide 回车或者在工具栏上点击图标出现Guide 窗口:

2.然后双击“Blank GUI(Default)”出现GUI窗口 3.添加按钮

4.根据按钮的作用及视觉效果做一定的修改 把按钮的字符串大小、颜色进行设置,对按钮的位置进行排布,尽量使按钮集中在静态文本框下面。最终设置的静态文本框为白色,其他按钮均为分红色。 5.保存、添加功能函数 把做好的按钮及静态文本框保存后自动弹出Editor的M文本,对然后对相应的pushbutton添加功能函数。以下是相应按钮的功能函数。 (1)数字按键编写。 在function pushbutton1_Callback(hObject, eventdata, handles)下输入:textString = get(handles.text1,'String'); textString =strcat(textString,'0'); set(handles.text1,'String',textString) 这是使用句柄handles指向对象text1,并以字符串形式来存储数据文本框text1的内容,并存储数个“0”, 然后由set(handles.text1,'String','textString'在text1中输出。

MATLAB程序代码

MATLAB 程序代码以及运行结果function [ ]= xy_1( A ) % Detailed explanation goes here x0=653.779 y0=604.47 %%%JD0的坐标 x1=757.119 y1=569.527 %%%JD1的坐标 dx=x0-x1 dy=y0-y1 L=(dx^2+dy^2)^0.5 %JD1到ID2的距离 T=T1(12,28,37) %%%切线长 xk0=T-L yk0=0 %JD2的局部坐标 c=0.9473 s=-0.3203 %%%预设cos和sin的值 %求左端缓和曲线坐标 for l=0:10:40 x=l-(l^5)/(40*(A^2))+l^9/(3456*(A^4)) %求左端缓和曲线X局部坐标 y=l^3/(6*A)-(l^7)/(336*(A^3)) %求左端缓和曲线Y局部坐标 dxk=x-xk0 dyk=y-yk0 B=[x0;y0]+[c,-s;s,c]*[dxk;dyk] %进行坐标换算 end end function [ T1 ] = T1( a,b,c) %求左端切线长 % Detailed explanation goes here A=a+b/60+c/3600 r=750 p1=p(40,750) p2=p(30,750) m1=m(40,750) T1=(r+p2-(r+p1)*cosd(A))/sind(A)+m1 end

function x = JZ1( ) %左端坐标系坐标转换矩阵 % Detailed explanation goes here x0=653.779 y0=604.47 %%%JD0的坐标 x1=757.119 y1=569.527 %%%JD1的坐标 dx=x0-x1 dy=y0-y1 L=(dx^2+dy^2)^0.5 %JD1到ID2的距离T=T1(12,28,37) %%%切线长 xk0=T-L yk0=0 %JD0的局部坐标 xk1=T yk1=0 %JD1的局部坐标 dxk=xk0-xk1 dyk=yk0-yk1 A=[dxk,-dyk;dyk,dxk] b=[dx,dy]' x=inv(A)*b %依次输出cos、sin 的值 end xy_1(30000) A = 30000 x0 = 653.7790 y0 = 604.4700 x1 =

计算方法_全主元消去法_matlab程序

%求四阶线性方程组的MA TLAB程序 clear Ab=[0.001 2 1 5 1; 3 - 4 0.1 -2 2; 2 -1 2 0.01 3; 1.1 6 2.3 9 4];%增广矩阵 num=[1 2 3 4];%未知量x的对应序号 for i=1:3 A=abs(Ab(i:4,i:4));%系数矩阵取绝对值 [r,c]=find(A==max(A(:))); r=r+i-1;%最大值对应行号 c=c+i-1;%最大值对应列号 q=Ab(r,:),Ab(r,:)=Ab(i,:),Ab(i,:)=q;%行变换 w=Ab(:,c),Ab(:,c)=Ab(:,i),Ab(:,i)=w;%列变换 n=num(i),num(i)=num(c),num(c)=n;%列变换引起未知量x次序变化for j=i:3 Ab(j+1,:)=-Ab(j+1,i)*Ab(i,:)/Ab(i,i)+Ab(j+1,:);%消去过程 end end %最后得到系数矩阵为上三角矩阵 %回代算法求解上三角形方程组 x(4)=Ab(4,5)/Ab(4,4); x(3)=(Ab(3,5)-Ab(3,4)*x(4))/Ab(3,3); x(2)=(Ab(2,5)-Ab(2,3)*x(3)-Ab(2,4)*x(4))/Ab(2,2); x(1)=(Ab(1,5)-Ab(1,2)*x(2)-Ab(1,3)*x(3)-Ab(1,4)*x(4))/Ab(1,1); for s=1:4 fprintf('未知量x%g =%g\n',num(s),x(s)) end %验证如下 %A=[0.001 2 1 5 1; 3 -4 0.1 -2 2;2 -1 2 0.01 3; 1.1 6 2.3 9 4]; %b=[1 2 3 4]'; %x=A\b; %x1= 1.0308 %x2= 0.3144 %x3= 0.6267 %x4= -0.0513

用MATLAB GUI设计简单计算器

HUBEI NORMAL UNIVERSITY 《MATLAB与仿真》课程设计论文 Course’s Thesis

摘要 基于MATLAB GUI的计算器设计是利用GUIDE创建图形用户界面进行计算器设计。设计计算器时,主要是考虑到计算器的易用性、功能的常用程度进行计算器界面与功能的设计。通过调整控件和文本的布局及颜色,使界面简单大方、布局合理,达到界面友好的效果。 计算器设计时主要利用到get和set两个函数进行各个控件属性值的传递和设置。计算器实现的功能有:数字0~9和小数点的输入显示,平方、开平方和对数的输入显示。进行四则运算、正弦计算、余弦计算、正切计算和余切计算,可以求阶乘、求百分数和求倒数。可以进行括号及变量x与变量y的输入,结合坐标轴编辑框和曲线颜色编辑框实现函数的曲线绘制。最后运行调试,实现基于MATLAB GUI的计算器的设计。 MATLAB GUI介绍 MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。 MATLAB是matrix和laboratory两个词的组合,意为矩阵工厂,主要面对科学计算、可视化以及交互式程设计的高科技计算环境。MATLAB是将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效 数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,特别是所附带的30多种面向不同领域的工具箱支持,使得它在许多科学领域中成为计算机辅助设计和分析、算法研究和应用开发的基本工具和首选平台。 MATLAB的图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。MATLAB的图形用户界(GUI)是由光标,窗口,菜单、文字说明等对象构成一个用户界面。用户可以通过键盘输入相关的参数,通过鼠标选择、激活这些对象,使计算机完成相关的计算或者绘制波形等功能。MATLAB的GUI为开发者提供了一个不脱离MATLAB的开发环境,有助于MATLAB程序的GUI集成。这样可以使开发者不必理会一大堆烦杂的代码,简化程序,但是同样可以实现向决策者提供图文并茂的界面,甚至达到多媒体的效果。可以说MATLAB提供了一个简便的开发环境,可以让开发者快速上手,提高了开发者的工作效率。 MATLAB的图形界面设计是通过对各种图形对象的操作来实现的,因此用户在使用的过程需要深入了解各种图形对象的特征、属性和操作。由此可见,图形用户界面的设计、制作是一件比较繁琐的工作。图形用户界面的创建一般有两种常用的方式:第一是通过使用m文件直接动态添加控件;第二是使用GUIDE快速生成GUI界面。这两种实现的方法都需要使用M语言编程,但是技术的侧重点不同。所谓的GUIDE就是图形用户界面开发环境 (Graphical User Interface Development Environment),它向用户提供了一系列的创建用户图形界面的工具。这些工具大大简化了GUI设计和生成的过程。GUIDE可以完成的任务有如下两点:第一是输出GUI,第二是GUI编程。GUIDE

Matlab程序代码

Matlab程序代码: clc; clear; N=20; T=0.1 t=0:T:N m=length(t) syms x1 x2 x3 fx=[0;x1+x2^2;x1-x2] gx=[exp(x2);exp(x2);0] hx=x3; R=10*eye(1) Q=[10 0 0;0 1 0;0 0 1] A=[0 1 0;0 0 1;0 0 0] B=[0;0;1] SS=B*inv(R)*B' [p1,p2,lamp,perr,wellposed,P]=aresolv(A,Q,SS) z1=hx z2=[diff(hx,x1) diff(hx,x2) diff(hx,x3)]*fx z3=[diff(z2,x1), diff(z2,x2), diff(z2,x3)]*fx ax=[diff(z3,x1), diff(z3,x2), diff(z3,x3)]*fx bx=[diff(z3,x1), diff(z3,x2), diff(z3,x3)]*gx z=[z1;z2;z3] k=inv(R)*B'*P %diff(z)=A*z+B*v=(A-B*K)*Z %x(0)=[1;0;0] abk=A-B*k x1(1)=1 x2(1)=0 x3(1)=1 z1(1)=x3(1) z2(1)=x1(1)-x2(1) z3(1)=-(x1+x2^2) for i=2:m z1(i)=z1(i-1)+T*(abk(1,1)*z1(i-1)+abk(1,2)*z2(i-1)+abk(1,3)*z3(i-1)) z2(i)=z2(i-1)+T*(abk(2,1)*z1(i-1)+abk(2,2)*z2(i-1)+abk(2,3)*z3(i-1)) z3(i)=z3(i-1)+T*(abk(3,1)*z1(i-1)+abk(3,2)*z2(i-1)+abk(3,3)*z3(i-1))

基于matlab的计算器制作

基于MATLAB的计算器制作从入门到高级 项目一、建立GUI框架 1,双击MATLAB图标(本实例使用的是MATLAB R2014),打开软件 2,打开GUI操作界面。有两种方式: a、在命令行窗口输入guide,然后点击回车。 b、先点击新建图标,在选择‘图形用户界面’。 得到如下窗口: 左上方有两个按钮:‘新建GUI’,‘打开现有GUI’。 对于‘新建GUI’:下方的选择框内有你可以选择建立的GUI类型,对于初学者一般选择第一个。下方是用来设置 保存文件位置的。

对于‘打开现有GUI’:初学者可能会在网上下载一些GUI源程序,使用‘打开现有GUI’,再浏览到文件所在位置便可。 3、构建GUI框架: 在选择新建GUI并且确定后,会弹出如下窗口: 在窗口的左边会有很多选项,可以一个个拖动编辑框内; 是不是发现这些选项发挥的作用刚好就是我们平常打开一个网页或者一个软件进行操作时的选择按钮。比较常见的有:按钮、单选按钮、拖动条、弹出式菜单等。看到这里细心地朋友就会发现,MATLAB GUI似乎可以开发出大型

软件哦,只要你有足够的想象力,当你从一个小白进阶到 一个高手之后,你可以做到的。 本次计算器制作只需要用到静态文本(或者是动态文本)用来做显示器,按钮(用来操作)。也可以添加一个面板 用来修饰。 在拖出的选项上双击,会得出该选项的属性栏,比如说 双击一个按钮选项,你会得到: 这个属性框比较复杂,没有必要一个个说清楚(有兴趣的 可以自己研究,其实理解起来也挺简单的) 本次计算器制作,我们只需要知道以下几个:

◆a、BackgroundColor取值为颜色的预定义字符或RGB 数值;缺省(就是默认的意思)值为浅灰色; ◆b、ForegroundColor取值为颜色的预定义字符或RGB 数值,该属性定义控件对象标题字符的颜色;缺省值为黑色; ◆c、String取值为字符串矩阵或块数组,定义控件对 象标题或选项内容; ◆d、FontName取值为控件标题等字体的字库名; ◆e、FontSize取值为数值,控制字体大小; ◆f、Tag取值为字符串,定义了控件的标识值,在任何 程序中都可以通过这个标识值控制该控件对象; ◆g、Style取值可以是pushbutton(缺省值), radiobutton, checkbox, edit, text, slider, frame, popupmenu 或listbox; 项目二、简单加法器的制作 1、框架准备

基于matlab的计算器编程附代码

1.需求分析 本次的实验要求是设计一个计算器,主要功能如下: (1)实现基本数学运算(加减乘除等),而且要能进行混合运算 (2)实现部分函数功能,如求平方根、求倒数等 (3)能实现小数运算 界面与标准计算器界面类似 根据要求以及以前的学习情况,决定使用matlab进行编程。Matlab强大的计算功能以及便捷的GUI设计,可以较为简便的实现所要求的功能。按照要求,数据输入和输出支持小数点,支持四则混合运算,决定使用如下几个数据进行分析:(1+3)*5 Sqrt(4) 1/2 Sin4 用以检验是否可以进行加减乘除四则运算、平方根、倒数、正弦的运算。 2.程序设计 M atlab的程序设计较为简便,用GUI设计出一个计算器的模型,然后系统会自动生成一个框架,在框架中,写入每一个按键对应的程序就可以实现功能。 3.调式分析 编程的过程中遇到的问题不是很多,基本就是找要实现各个功能的子程序,通过上网和去图书馆,加上自己的编写,终于实现了实验要求的功能。但是有一点很重要,matlab不支持中文,所以从路径到文件名必须是全英文的,不然就无法识别。此外,给每个按键命名也是很重要的,不然在生成的程序框架里面,就无法识别各个按键的作用,编写程序的时候也就无法做到一一对应。 4.使用说明 程序的使用比较简单,由于是可视化界面,直接打开matlab,然后建立一个GUI 工程,再打开生成的fig文件,就是一个计算器的界面,直接按照市面上卖的计算器的

方法,按键使用即可。 5.测试结果 计算结果为20 4sqrt=2 Sin4结果为 1/2=0.5 经过计算,这些结果均与实际结果相吻合,计算器的功能实现的较为完好。 6.心得体会 本次试验由于不限制语言,于是计算功能强大,操作简便的matlab变成了首选,matlab的GUI设计,操作是较为简单的,首先建立一个GUI工程,然后用可视化界面,

基于MATLAB的潮流计算源程序代码(优.选)

%*************************电力系统直角坐标系下的牛顿拉夫逊法潮流计算********** clear clc load E:\data\IEEE014_Node.txt Node=IEEE014_Node; weishu=size(Node); nnum=weishu(1,1); %节点总数 load E:\data\IEEE014_Branch.txt branch=IEEE014_Branch; bwei=size(branch); bnum=bwei(1,1); %支路总数 Y=(zeros(nnum)); Sj=100; %********************************节点导纳矩阵******************************* for m=1:bnum; s=branch(m,1); %首节点 e=branch(m,2); %末节点 R=branch(m,3); %支路电阻 X=branch(m,4); %支路电抗 B=branch(m,5); %支路对地电纳 k=branch(m,6); if k==0 %无变压器支路情形 Y(s,e)=-1/(R+j*X); %互导纳 Y(e,s)=Y(s,e); end if k~=0 %有变压器支路情形 Y(s,e)=-(1/((R+j*X)*k)); Y(e,s)=Y(s,e); Y(s,s)=-(1-k)/((R+j*X)*k^2); Y(e,e)=-(k-1)/((R+j*X)*k); %对地导纳 end Y(s,s)=Y(s,s)-j*B/2; Y(e,e)=Y(e,e)-j*B/2; %自导纳的计算情形 end for t=1:nnum; Y(t,t)=-sum(Y(t,:))+Node(t,12)+j*Node(t,13); %求支路自导纳 end G=real(Y); %电导 B=imag(Y); %电纳 %******************节点分类************************************* * pq=0; pv=0; blancenode=0; pqnode=zeros(1,nnum); pvnode=zeros(1,nnum); for m=1:nnum; if Node(m,2)==3 blancenode=m; %平衡节点编号 else if Node(m,2)==0 pq=pq+1; pqnode(1,pq)=m; %PQ 节点编号 else if Node(m,2)==2 pv=pv+1; pvnode(1,pv)=m; %PV 节点编号 end end end end %*****************************设置电压初值********************************** Uoriginal=zeros(1,nnum); %对各节点电压矩阵初始化 for n=1:nnum Uoriginal(1,n)=Node(n,9); %对各点电压赋初值 if Node(n,9)==0;

用MATLAB制作简单计算器

用M A T L A B制作简单计 算器 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

安阳工学院电子信息与电气工程学院《MATLAB编程与应用》课程大作业 题目:用MATLAB制作简单计算器 班级:电子信息工程(专升本) 教师成绩由以下评分标准累计得出 1、设计和仿真结果正确,分析清晰合理。 40% 2、大作业报告重点突出、阐述清晰。 30% 3、陈述清晰正确、有说服力,能够正确回答问题。 30% 总分 (上述成绩由教师填写) 学生自评分值(该表格全部由学生填写) 大作业总成绩(该表格“姓名”和“学号”由学生填写,“成绩”由教师填写)

1.计任务: 1、熟悉MATLAB的主要控件使用方法。 2、熟悉MATLAB的GUI设计流程。 2.设计方案 利用MATLAB GUI设计实现一个图形用户界面的计算器程序,要求实现: A.实现十进制数的加、减、乘、除、简单计算。 B. 科学计算函数,包括正弦、余弦、正切、(余切、开方、指数等函数运行。 C. 能够保存上次历史计算的答案,先是答案存储器中得内容。 D. 有清除键,能清除操作。 3.方案实施 通过MATLAB的gui程序设计较为简单,在gui设计中主要用到两种控件,显示框用到文本编辑框(edit text),说明框用到静态文本框(Static text),数字以及运算等按钮用到命令按钮(push button)。然后在通过各个按钮的回调函数,实现简单的计算功能。 4.方案施舍 首先用MATLAB GUI功能,在绘制一个静态文本框和一个文本编辑框,以及24个命令按钮,调整好各控件大小、颜色,整体布局如图所示: 图-1 一、布局GUI 1.打开Matlab,输入Guide 回车或者在工具栏上点击图标出现Guide 窗口:

基本粒子群算法的matlab源程序

主函数源程序(main.m) %------基本粒子群优化算法(Particle Swarm Optimization)----------- %------名称:基本粒子群优化算法(PSO) %------作用:求解优化问题 %------说明:全局性,并行性,高效的群体智能算法 %------初始格式化-------------------------------------------------- clear all; clc; format long; %------给定初始化条件---------------------------------------------- c1=1.4962; %学习因子1 c2=1.4962; %学习因子2 w=0.7298; %惯性权重 MaxDT=1000; %最大迭代次数 D=10; %搜索空间维数(未知数个数) N=40; %初始化群体个体数目 eps=10^(-6); %设置精度(在已知最小值时候用) %------初始化种群的个体(可以在这里限定位置和速度的范围)------------ for i=1:N for j=1:D x(i,j)=randn; %随机初始化位置 v(i,j)=randn; %随机初始化速度 end end %------先计算各个粒子的适应度,并初始化Pi和Pg---------------------- for i=1:N p(i)=fitness(x(i,:),D); y(i,:)=x(i,:); end pg=x(1,:); %Pg为全局最优 for i=2:N if fitness(x(i,:),D) pg=x(i,:); end end %------进入主要循环,按照公式依次迭代,直到满足精度要求------------ for t=1:MaxDT for i=1:N v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:)); x(i,:)=x(i,:)+v(i,:); if fitness(x(i,:),D) p(i)=fitness(x(i,:),D); y(i,:)=x(i,:);

(整理)matlab16常用计算方法.

常用计算方法 1.超越方程的求解 一超越方程为 x (2ln x – 3) -100 = 0 求超越方程的解。 [算法]方法一:用迭代算法。将方程改为 01002ln()3 x x =- 其中x 0是一个初始值,由此计算终值x 。取最大误差为e = 10-4,当| x - x 0| > e 时,就用x 的值换成x 0的值,重新进行计算;否则| x - x 0| < e 为止。 [程序]P1_1abs.m 如下。 %超越方程的迭代算法 clear %清除变量 x0=30; %初始值 xx=[]; %空向量 while 1 %无限循环 x=100/(2*log(x0)-3); %迭代运算 xx=[xx,x]; %连接结果 if length(xx)>1000,break ,end %如果项数太多则退出循环(暗示发散) if abs(x0-x)<1e-4,break ,end %当精度足够高时退出循环 x0=x; %替换初值 end %结束循环 figure %创建图形窗口 plot(xx,'.-','LineWidth',2,'MarkerSize',12)%画迭代线'.-'表示每个点用.来表示,再用线连接 grid on %加网格 fs=16; %字体大小 title('超越方程的迭代折线','fontsize',fs)%标题 xlabel('\itn','fontsize',fs) %x 标签 ylabel('\itx','fontsize',fs) %y 标签 text(length(xx),xx(end),num2str(xx(end)),'fontsize',fs)%显示结果 [图示]用下标作为自变量画迭代的折线。如P0_20_1图所示,当最大误差为10-4时,需要迭代19次才能达到精度,超越方程的解为27.539。 [算法]方法二:用求零函数和求解函数。将方程改为函数 100()2ln()3f x x x =-- MATLAB 求零函数为fzero ,fzero 函数的格式之一是 x = fzero(f,x0) 其中,f 表示求解的函数文件,x0是估计值。fzero 函数的格式之二是 x = fzero(f,[x1,x2])

流体力学简单计算MATLAB程式

用matlab进行编程计算 第一问: z=30;p1=50*9.8*10^4;p2=2*9.8*10^4;jdc=0.00015;gama=9800;d=0.257;L=50000 ;mu=6*10^(-6); hf=z+(p1-p2)/(0.86*gama) xdc=2*jdc/d; beta=4.15;m=1; Q=(hf*d^(5-m)/(beta*mu^m*L))^(1/(2-m)); v=4*Q/(pi*d^2); Re=v*d/mu; Re1=59.7/xdc^(8*xdc/7); Re2=(665-765*log(xdc))/xdc; i=hf/L; if Re<3000 Q=Q; elseif 3000

Matlab实现HHT程序(源码,非常珍贵)

clear all; x=load ('06514135360001170106.TXT'); fs=1000000; N=length(x); t=0:1/fs:(N-1)/fs; z=x; c=emd(z); %计算每个IMF分量及最后一个剩余分量residual与原始信号的相关性[m,n]=size(c); for i=1:m; a=corrcoef(c(i,:),z); xg(i)=a(1,2); end xg; for i=1:m-1 %-------------------------------------------------------------------- %计算各IMF的方差贡献率 %定义:方差为平方的均值减去均值的平方 %均值的平方 %imfp2=mean(c(i,:),2).^2 %平方的均值 %imf2p=mean(c(i,:).^2,2) %各个IMF的方差 mse(i)=mean(c(i,:).^2,2)-mean(c(i,:),2).^2; end; mmse=sum(mse); for i=1:m-1 mse(i)=mean(c(i,:).^2,2)-mean(c(i,:),2).^2; %方差百分比,也就是方差贡献率 mseb(i)=mse(i)/mmse*100; %显示各个IMF的方差和贡献率 end; %画出每个IMF分量及最后一个剩余分量residual的图形 figure(1) for i=1:m-1 disp(['imf',int2str(i)]) ;disp([mse(i) mseb(i)]); end; subplot(m+1,1,1) plot(t,z) set(gca,'fontname','times New Roman') set(gca,'fontsize',14.0) ylabel(['signal','Amplitude']) for i=1:m-1 subplot(m+1,1,i+1);

matlab用于计算方法的源程序

1、Newdon迭代法求解非线性方程 function [x k t]=NewdonToEquation(f,df,x0,eps) %牛顿迭代法解线性方程 %[x k t]=NewdonToEquation(f,df,x0,eps) %x:近似解 %k:迭代次数 %t:运算时间 %f:原函数,定义为内联函数 ?:函数的倒数,定义为内联函数 %x0:初始值 %eps:误差限 % %应用举例: %f=inline('x^3+4*x^2-10'); ?=inline('3*x^2+8*x'); %x=NewdonToEquation(f,df,1,0.5e-6) %[x k]=NewdonToEquation(f,df,1,0.5e-6) %[x k t]=NewdonToEquation(f,df,1,0.5e-6) %函数的最后一个参数也可以不写。默认情况下,eps=0.5e-6 %[x k t]=NewdonToEquation(f,df,1) if nargin==3 eps="0".5e-6; end tic; k=0; while 1 x="x0-f"(x0)./df(x0); k="k"+1; if abs(x-x0) < eps || k >30 break; end x0=x; end t=toc; if k >= 30 disp('迭代次数太多。'); x="0"; t="0"; end

2、Newdon迭代法求解非线性方程组 function y="NewdonF"(x) %牛顿迭代法解非线性方程组的测试函数 %定义是必须定义为列向量 y(1,1)=x(1).^2-10*x(1)+x(2).^2+8; y(2,1)=x(1).*x(2).^2+x(1)-10*x(2)+8; return; function y="NewdonDF"(x) %牛顿迭代法解非线性方程组的测试函数的导数 y(1,1)=2*x(1)-10; y(1,2)=2*x(2); y(2,1)=x(2).^+1; y(2,2)=2*x(1).*x(2)-10; return; 以上两个函数仅供下面程序的测试 function [x k t]=NewdonToEquations(f,df,x0,eps) %牛顿迭代法解非线性方程组 %[x k t]=NewdonToEquations(f,df,x0,eps) %x:近似解 %k:迭代次数 %t:运算时间 %f:方程组(事先定义) ?:方程组的导数(事先定义) %x0:初始值 %eps:误差限 % %说明:由于虚参f和df的类型都是函数,使用前需要事先在当前目录下采用函数M文件定义% 另外在使用此函数求解非线性方程组时,需要在函数名前加符号“@”,如下所示 % %应用举例: %x0=[0,0];eps=0.5e-6; %x=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps) %[x k]=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps) %[x k t]=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps) %函数的最后一个参数也可以不写。默认情况下,eps=0.5e-6 %[x k t]=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps)

用MATLAB制作一简单计算器

这个matlab课程设计是在GUI环境下生成的。开启MA TLAB 7.0 软件,在命令窗口输入guide,即可进入GUI环境。 实验目的:(1)熟悉GUI环境,并在该环境中制作一个简单的计 算器,起功能有加,减,乘,除, cos, sin, tan。 (2)熟悉matlab软件的制作。 实验内容及结果: 进入GUI环境中双击Blank GUI (Default)出现一个窗口在该窗口中首先制作一个计算器界面如下所示: 红色的是静态编辑框,其余的是按钮。 下面我们来分析一下功能函数: textString = get(handles.text1,'String'); textString = strcat(textString,'1'); set(handles.text1,'String',textString)

这是使用句柄handles指向对象text1,并以字符串形式来存储数据文本框text1的内容,并存储数个“1”, 然后由set(handles.text1,'String','textString'在text1中输出。 同理,分别在function pushbuttonone~zero_Callback(hObject, eventdata, handles)下给1~0数字按键下编写此类程序。 function pushbuttonjia_Callback(hObject, eventdata, handles) textString = get(handles.text1,'String'); textString =strcat(textString,'+'); set(handles.text1,'String',textString) strcat的作用是将两个字符串连接起来,就是在已输入的存储数据textString 后添加“+”进行运算。 然后执行set(handles.text1,'String',textString)。符号键‘-’、‘*’、‘/’与‘+’的运算函数类似。 function cos_Callback(hObject, eventdata, handles) textString=handles.text1; textString=cos(str2num(get(handles.text1,'String'))*pi/180); set(handles.text1,'String',num2str(textString)) (get(handles.text1,'String'))*pi/180是把角度转换为弧度,这样在编程环境中才能识别,cos才能起作用。然后执行set函数,把结果输出来。同理在sin,tan的回调函数中夜输入相应的函数,只需把 textString=cos(str2num(get(handles.text1,'String'))*pi/180); 中的cos改为sin,tan即可。 function dengyu_Callback(hObject, eventdata, handles) textString = get(handles.text1,'String'); s =eval(textString);

相关主题