[matlab二分法程序代码]matlab牛顿迭代法程序代码

合集下载

MATLAB牛顿法源代码

MATLAB牛顿法源代码

function hom[P,iter,err]=newton('f','JF',[7.8e-001;4.9e-001;3.7e-001],0.01,0.001,1000);disp(P);disp(iter);disp(err);function Y=f(x,y,z)Y=[x^2+y^2+z^2-1;2*x^2+y^2-4*z;3*x^2-4*y+z^2];function y=JF(x,y,z)f1='x^2+y^2+z^2-1';f2='2*x^2+y^2-4*z';f3='3*x^2-4*y+z^2';df1x=diff(sym(f1),'x');df1y=diff(sym(f1),'y');df1z=diff(sym(f1),'z');df2x=diff(sym(f2),'x');df2y=diff(sym(f2),'y');df2z=diff(sym(f2),'z');df3x=diff(sym(f3),'x');df3y=diff(sym(f3),'y');df3z=diff(sym(f3),'z');j=[df1x,df1y,df1z;df2x,df2y,df2z;df3x,df3y,df3z]; y=(j);function [P,iter,err]=newton(F,JF,P,tolp,tolfp,max) %输入P为初始猜测值,输出P则为近似解%JF为相应的Jacobian矩阵%tolp为P的允许误差%tolfp为f(P)的允许误差%max:循环次数Y=f(F,P(1),P(2),P(3));for k=1:maxJ=f(JF,P(1),P(2),P(3));Q=P-inv(J)*Y;Z=f(F,Q(1),Q(2),Q(3));err=norm(Q-P);P=Q;Y=Z;iter=k;if (err<tolp)||(abs(Y)<tolfp||abs(Y)<0.0001) breakendend<pre lang="matlab" line="1" file="test.m"> function homework4[P,iter,err]=newton('f','JF',[7.8e-001;4.9e-001;3.7e-001],0.01,0.001,1000);disp(P);disp(iter);disp(err);function Y=f(x,y,z)Y=[x^2+y^2+z^2-1;2*x^2+y^2-4*z;3*x^2-4*y+z^2];function y=JF(x,y,z)f1='x^2+y^2+z^2-1';f2='2*x^2+y^2-4*z';f3='3*x^2-4*y+z^2';df1x=diff(sym(f1),'x');df1y=diff(sym(f1),'y');df1z=diff(sym(f1),'z');df2x=diff(sym(f2),'x');df2y=diff(sym(f2),'y');df2z=diff(sym(f2),'z');df3x=diff(sym(f3),'x');df3y=diff(sym(f3),'y');df3z=diff(sym(f3),'z');j=[df1x,df1y,df1z;df2x,df2y,df2z;df3x,df3y,df3z]; y=(j);function [P,iter,err]=newton(F,JF,P,tolp,tolfp,max) %输入P为初始猜测值,输出P则为近似解%JF为相应的Jacobian矩阵%tolp为P的允许误差%tolfp为f(P)的允许误差%max:循环次数Y=f(F,P(1),P(2),P(3));for k=1:maxJ=f(JF,P(1),P(2),P(3));Q=P-inv(J)*Y;Z=f(F,Q(1),Q(2),Q(3));err=norm(Q-P);P=Q;Y=Z;iter=k;if (err<tolp)||(abs(Y)<tolfp||abs(Y)<0.0001) breakend。

MATLAB二分法和牛顿迭代法实验报告

MATLAB二分法和牛顿迭代法实验报告
(1)计算f(x)在有解区间[a, b]端点处的值。
(2)计算 在区间中点处的值 。
(3)判断若 ,则 即是根,否则检验:
①若 与 异号,则知道解位于区间 ,
②若 与 同号,则知道解位于区间, ,
反复执行步骤2、3,便可得到一系列有根区间:
(4)当 ,则 即为根的近似值。
Newton迭代法原理:设已知方程 的近似根 ,则在 附近 可用一阶泰勒多项式 近似代替.因此,方程 可近似地表示为 .用 表示 的根,它与 的根差异不大.
3.在MATLAB命令行窗口求解方程f(x)
4.得出计算结果
设 ,由于 满足 解得
重复这一过程,得到迭代格式
实验所用软件及版本:MATLAB R2014a
主要内容(要点):
实验过程记录(含:基本步骤、主要程序清单及异常情况记录等):
二分法:
1.在MATLAB编辑器中建立一个实现二分法的M文件bisect.m
2.在MATLAB命令行窗口求解方程f(x)
3.得出计算结果
数学应用软件大型实验实验报告
实验序号:日期:年月日
班级
姓名
学号
实验
名称
二分法和Newton迭代法
问题背景描述:
分别编写一个用二分法和用Newton-Raphson法求连续函数的零点通用程。
实验目的:
用以求方程x^2-3*x+exp(X)=2的正根(要求精度ε=10^-6)。
实验原理与数学模型:
二分法原理:如果函数y=f(x)在闭区间[a,b]上连续,且已知函数在两端点的函数f(a)与f(b)取异号,即两端点函数值的乘积f(a)*f(b)<0,则函数y=f(x)在区间(a,b)内至少有一个零点,即至少存在一点c,使得f(x)=0的解。

牛顿迭代法matlab软件

牛顿迭代法matlab软件

⽜顿迭代法matlab软件⽂件说明1、使⽤说明1)加载f.m⽂件⾄matlab2)⾸先在命令⾏使⽤solve函数解得⽅程x^5=-1在复平⾯上的5个根;>> solve('x^5=-1')-11/4 + (2^(1/2)*(5^(1/2) + 5)^(1/2)*i)/4 - 5^(1/2)/41/4 - (2^(1/2)*(5^(1/2) + 5)^(1/2)*i)/4 - 5^(1/2)/4(2^(1/2)*(5 - 5^(1/2))^(1/2)*i)/4 + 5^(1/2)/4 + 1/45^(1/2)/4 - (2^(1/2)*(5 - 5^(1/2))^(1/2)*i)/4 + 1/43)然后将这5个根代⼊f.m⽂件中函数f(A,B,C,D,E)中;>> f(1/4 + (2^(1/2)*(5^(1/2) + 5)^(1/2)*i)/4 - 5^(1/2)/4, 1/4 - (2^(1/2)*(5^(1/2) +5)^(1/2)*i)/4 - 5^(1/2)/4,(2^(1/2)*(5 - 5^(1/2))^(1/2)*i)/4 + 5^(1/2)/4 + 1/4, 5^(1/2)/4 -(2^(1/2)*(5 - 5^(1/2))^(1/2)*i)/4 + 1/4, -1)4)等待matlab运⾏完毕即可得到如下⽜顿初始点收敛图2、代码说明function f(A,B,C,D,E)%函数使⽤>>f(1/4 + (2^(1/2)*(5^(1/2) + 5)^(1/2)*i)/4 - 5^(1/2)/4,% 1/4 - (2^(1/2)*(5^(1/2) + 5)^(1/2)*i)/4 - 5^(1/2)/4,% (2^(1/2)*(5 - 5^(1/2))^(1/2)*i)/4 + 5^(1/2)/4 + 1/4,% 5^(1/2)/4 - (2^(1/2)*(5 - 5^(1/2))^(1/2)*i)/4 + 1/4,% -1)%在⽅程参数中带⼊求得的复平⾯的根step=0.01; %扫描步进值为0.01,总共扫描200×200个点for x=-1:step:1for y=-1:step:1z0=x+y*i; %扫描图像点阵z=newton(z0); %⽜顿迭代法计算if abs(z-A)<1.0e-6 %迭代后与根A距离绝对⼩plot(x,y,'r.'); %使⽤红⾊填充扫描的这⼀点hold onelseif abs(z-B)<1.0e-6 %迭代后与根B距离绝对⼩plot(x,y,'g.'); %使⽤绿⾊填充扫描的这⼀点hold onelseif abs(z-C)<1.0e-6 %迭代后与根C距离绝对⼩plot(x,y,'y.'); %使⽤黄⾊填充扫描的这⼀点hold onelseif abs(z-D)<1.0e-6 %迭代后与根D距离绝对⼩plot(x,y,'b.'); %使⽤蓝⾊填充扫描的这⼀点hold onelseif abs(z-E)<1.0e-6 %迭代后与根E距离绝对⼩plot(x,y,'m.'); %使⽤粉⾊填充扫描的这⼀点hold onendendendendfunction y=newton(z)if z==0 %防⽌z=0代⼊后⽆法运算y=0;return;endfor i=1:1:2000 %最多迭代2000次y=z-(z^5+1)/(5*z^4); %⽜顿迭代公式if abs(y-z)<1.0e-7 %迭代后与z根在距离绝对⼩break; %跳出循环endz=y; %递归endend3、研究领域数值分析应⽤经常使⽤polyfit将数据进⾏多项式拟合,将多项式公式通过代码写⼊计算机完成数据的映射和转换。

matlab牛顿法求根程序

matlab牛顿法求根程序

matlab牛顿法求根程序1、引言牛顿法求解方程的数值解是非常常用的一种方法,也是收敛速度很快的一种方法。

在Matlab中,可以使用fzero函数实现牛顿法求根。

本篇文章将介绍如何使用Matlab实现牛顿法求根。

2、牛顿法求根的原理牛顿法求根实际上是一种迭代法,迭代公式为:x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)}其中,x_n 是第n次迭代的数值解,f(x_n)是方程在x_n处的函数值,f'(x_n)是方程在x_n处的导数值。

3、使用Matlab实现牛顿法求根在Matlab中,我们可以使用fzero函数实现牛顿法求根。

该函数的基本用法为:x=fzero(fun,x0,options)其中,fun是一个函数句柄,x0是初始迭代值,options是一个选项结构体,用于设置迭代精度等参数。

例如,我们想求解方程x^2-2=0在x=1附近的解,可以写出如下Matlab程序:fun=@(x)x^2-2;x0=1;options=optimset('TolX',1e-8,'Display','iter');x=fzero(fun,x0,options)其中,optimset函数可以设置迭代精度等参数,‘TolX’表示迭代停止条件,‘Display’表示是否输出迭代过程。

程序的运行结果如下:Func-count x f(x) Procedure1 1 -1 initial2 1.5000 0.2500 search3 1.4167 0.0069 search4 1.4142 0.0000 search即求得方程的解为1.4142。

4、代码实现除了使用fzero函数外,我们也可以自己实现牛顿法求根的代码。

以下是一个简单的例子:function x=newton(fun,x0,tol)while abs(fun(x0))>tolx0=x0-fun(x0)/diff(fun,x0);endx=x0;end其中,fun是函数句柄,x0是初始迭代值,tol是迭代停止条件。

matlab二分法代码

matlab二分法代码

在MATLAB中,可以编辑一个函数脚本文件(例如:`bisection_method.m`)来实现二分法(bisection method)。

二分法是一种求解非线性方程在某区间内根的数值方法。

以下是一个简单的实现:% bisection_method.mfunction [root, n_iterations] = bisection_method(func, a, b, tol, max_iterations)% func: 要求解的非线性方程的函数句柄% a: 区间的左端点% b: 区间的右端点% tol: 容差,当相邻两次迭代的结果小于容差时停止迭代% max_iterations: 最大迭代次数if nargin < 5max_iterations = 100;endif nargin < 4tol = 1e-6;endfa = func(a);fb = func(b);if sign(fa) == sign(fb)error('区间两端点上函数值的符号相同,请检查输入的区间。

');endn_iterations = 0;while (b - a) / 2 > toln_iterations = n_iterations + 1;if n_iterations > max_iterationserror('已达到最大迭代次数,但仍未满足容差要求。

');endc = (a + b) / 2;fc = func(c);if fc == 0break;elseif sign(fc) == sign(fa)a = c;fa = fc;elseb = c;endendroot = (a + b) / 2;接下来,创建一个脚本来测试这个二分法函数:% test_bisection_method.mfunc = @(x) x^3 - x - 1; % 定义要求解的函数a = 1;b = 2;tol = 1e-6;max_iterations = 100;[root, n_iterations] = bisection_method(func, a, b, tol, max_iterations);fprintf('求得的根是:%f\n', root);fprintf('迭代的次数是:%d\n', n_iterations);运行`test_bisection_method.m`脚本,你将得到二分法求解的根和迭代次数。

(完整word版)牛顿法MATLAB程序

(完整word版)牛顿法MATLAB程序

问题一1、问题描述本次作业中使用共轭梯度法求解232122212142min x x x x x x x +-++-,初始点取为T x )2,2,2(0=。

2、求解方法及求解程序(1)共轭梯度法:对于二次函数的无约束最小化问题:x b x Q x x f T T -=21)(,共轭梯度方法: k k k k d x x α+=+1其中步长k α由最小线性化准则确定:)(min )(k k k k k d x f d x ααα+=+。

既将函数)(x f 对α求导等于零,得到的α就是我们当前所求步长。

梯度方向:b Qx x f g k k k -=∇=)(共轭梯度的方向由下式生成:00g d -=1,...,1,1-=+-=-n k d g d k k k k β其中k β由下式给出:1)1(--=k k kk k g g g g T T β该方法在最多n 次迭代后,将终止于某个最优解处。

(2)求解程序frcg.mfunction [x ,val,k ]=frcg(fun,funs,x0)% 功能: 用FR共轭梯度法求解无约束问题: min f(x)%输入: x0是初始点, fun, gfun分别是目标函数和梯度%输出: x, val分别是近似最优点和最优值, k是迭代次数。

maxk=5000; %最大迭代次数rho=0。

6;sigma=0.4;k=0; epsilon=1e—4;n=length(x0);while(k〈maxk)g=feval(funs,x0); %计算梯度itern=k-(n+1)*floor(k/(n+1));itern=itern+1;%计算搜索方向if(itern==1)d=—g;elsebeta=(g’*g)/(g0'*g0);d=—g+beta*d0; gd=g'*d;if(gd>=0.0)d=—g;endendif(norm(g)<epsilon), break; end %检验终止条件m=0; mk=0;while(m<20) %Armijo搜索if(feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d) mk=m; break;endm=m+1;endx0=x0+rho^mk*d;val=feval(fun,x0);g0=g; d0=d;k=k+1;endx=x0;val=feval(fun,x);fun.mfunction f=fun(x)f=x(1)^2-x(1)*x(2)+x(2)^2+2*x(1)-4*x(2)+x(3)^2; funs.mfunction fs=funs(x)fs=[2*x(1)—x(2)+2,2*x(2)—x(1)-4,2*x(3)]’;命令行输入: x0=[2,2,2]';[x,val,k]=frcg(’fun',’funs',x0)3、求解结果x =0.00002。

matlab迭代法代码[整理版]

001、%用不动点迭代法求方程 x-e^x+4=0的正根与负根,误差限是10^-6% 000000000000disp('不动点迭代法');000000000000n0=100;000000000000p0=-5;0000000000000for i=1:n0000000000000p=exp(p0)-4;000000000000if abs(p-p0)<=10^(-6)0000000000000if p<00000000000000disp('|p-p0|=')000000000000disp(abs(p-p0))000000000000disp('不动点迭代法求得方程的负根为:')000000000000disp(p);000000000000break;0000000000000else000000000000disp('不动点迭代法无法求出方程的负根.')000000000000end000000000000else000000000000p0=p;000000000000end000000000000end000000000000if i==n0000000000000disp(n0)000000000000disp('次不动点迭代后无法求出方程的负根')000000000000end000000000000p1=1.7;000000000000for i=1:n0000000000000pp=exp(p1)-4;000000000000if abs(pp-p1)<=10^(-6)000000000000if pp>0000000000000disp('|p-p1|=')000000000000disp(abs(pp-p1))0000000000000disp('用不动点迭代法求得方程的正根为')000000000000disp(pp);000000000000else000000000000disp('用不动点迭代法无法求出方程的正根');000000000000end000000000000break;0000000000000else000000000000p1=pp;0000000000000end000000000000end000000000000if i==n0000000000000disp(n0)000000000000disp('次不动点迭代后无法求出方程的正根')000000000000end0000000000002、%用牛顿法求方程 x-e^x+4=0的正根与负根,误差限是10^-6 000000000000 disp('牛顿法')000000000000n0=80;0000000000000p0=1;000000000000for i=1:n0000000000000p=p0-(p0-exp(p0)+4)/(1-exp(p0));000000000000if abs(p-p0)<=10^(-6)0000000000000disp('|p-p0|=')000000000000disp(abs(p-p0))000000000000disp('用牛顿法求得方程的正根为')000000000000disp(p);000000000000break;0000000000000else000000000000p0=p;000000000000end000000000000end000000000000if i==n0000000000000disp(n0)000000000000disp('次牛顿迭代后无法求出方程的解')000000000000end000000000000p1=-3;0000000000000for i=1:n0000000000000p=p1-(p1-exp(p1)+4)/(1-exp(p1));000000000000if abs(p-p1)<=10^(-6)0000000000000disp('|p-p1|=')000000000000disp(abs(p-p1))000000000000disp('用牛顿法求得方程的负根为')000000000000disp(p);000000000000break;0000000000000else000000000000p1=p;000000000000end000000000000end000000000000if i==n0000000000000disp(n0)000000000000disp('次牛顿迭代后无法求出方程的解')000000000000。

matlab的迭代法编程

matlab的迭代法编程迭代法是一种常用的解决数值计算问题的方法, 在MATLAB中也有相应的编程实现。

本文将介绍如何使用MATLAB实现迭代法来解决数值计算问题。

一、迭代法简介迭代法是通过反复迭代计算来逼近问题的解的一种方法。

它适用于无法直接求得解析解的问题,但可以通过一系列近似的计算逐步逼近真实解。

二、基本思想迭代法的基本思想是通过不断迭代,逐步逼近问题的解。

假设我们要求解一个方程 f(x)=0 的根,可以从一个初始值开始,通过迭代计算逐步逼近真实解。

三、MATLAB的迭代法编程实现在MATLAB中,可以使用循环语句结合适当的迭代公式来实现迭代法。

首先,我们需要确定迭代的终止条件。

通常可以使用误差判定条件来进行终止判断,比如当迭代结果的相对误差小于某一阈值时,可以认为迭代已经达到了足够的精度。

然后,我们可以使用循环语句(如for循环或while循环)来进行迭代计算。

在每次迭代中,根据迭代公式更新迭代结果,并进行误差判定。

最后,当满足终止条件时,迭代停止,并返回最终的迭代结果作为近似解。

下面是一个简单的例子,演示了如何使用MATLAB实现牛顿迭代法求解方程的根。

```matlabfunction x = Newton_method(f, df, x0, epsilon, max_iter)for i = 1:max_iterx = x0 - f(x0)/df(x0);if abs(f(x)) < epsilonreturn;endx0 = x;enderror('迭代次数超过上限');end```在上述代码中,函数`Newton_method`用于实现牛顿迭代法。

其中,`f`代表方程函数,`df`代表方程函数的导数,`x0`是初始点的值,`epsilon`是误差判定的阈值,`max_iter`是最大迭代次数。

四、迭代法的应用迭代法在数值计算中有广泛的应用。

它可以用于求解非线性方程的根、线性方程组的解、优化问题的最优解等等。

二分法程序代码【matlab源码】

毕业论文(设计)题目学院学院专业学生姓名学号年级级指导教师教务处制表二分法程序代码一、程序说明本团队长期从事matlab编程与仿真工作,擅长各类毕业设计、数据处理、图表绘制、理论分析等,程序代做、数据分析具体信息联系二、程序示例主程序:function [k,x,wuca,yx]=erfenfa(a,b,tol)%a、b为区间左右端点值,tol是精度,k为计算次数,x为使用k次二分法得到的小区间[ak,bk]的中点值,y(x)为x的函数值,wuca=|ak-bk|/2。

a1=a; b1=b;ya=fun(a1); yb=fun(b1); %程序中调用的fun.m 为函数if ya* yb&gt;0,disp('注意:ya*yb&gt;0,请重新调整区间端点a和b.'), returnendmax1=-1+ceil((log(b1-a1)- log(tol))/ log(2)); % ceil是上取整for k=1: max1+1ya=fun(a1);yb=fun(b1);x=(a1+b1)/2;yx=fun(x);wuca=abs(b1-a1)/2;k=k-1;[k,a,b,x,wuca,ya,yb,yx];if yx==0a1=x; b1=x;elseif yb*yx&gt;0b1=x;yb=yx;elsea1=x;ya=yx;endif b1-a1&lt; tol , return, endendk=max1;x;wuca;yx=fun(x);End、分程序:function y1=fun(x)y1=sqrt(x^2+1)-tan(x);end结果:[k,x,wuca,yx]=erfenfa(0,pi/2,10^-5)k =17x =0.9415wuca =5.9921e-06yx =-2.6595e-06。

二分法、简单迭代法的matlab代码实现


b、g(x)=cos(sin(x))
二分法求方程: (1)、 在 matlab 的命令窗口中输入命令: >> fplot('[cos(sin(x))]',[-4,4]);grid 得下图:
由上图可得知:方程在[-4,4]区间无根。
(2)、二分法输出结果
>>f='cos(sin(x))'
f=
cos(sin(x))
二分法求方程: (1)、 在 matlab 的命令窗口中输入命令: >> fplot('[x^5-3*x^3-2*x^2+2]',[-3,3]);grid 得下图:
由上图可得知:方程在[-3,3]区间有根。
(2)、二分法输出结果 >> f='x^5-3*x^3-2*x^2+2'
f=
x^5-3*x^3-2*x^2+2
胚谷糕识妹顾互浦幻沸承彦笼柯化回喧冠扔四曾楔懂曝论袍参剩研侄季掷齿煽宣骤隧钳随墙漓愚绒目淮溪扑藏资孜姆窝书展有僵锗行良淌稻壁否贩汀范围喜泵嘴坦岭俞遏烧夺卧砍腐届氢聂吉今盂莽简万曳拖私遣严麓素煮辈虎驼玛骄阿畅旷行近溜春纯鳖森痘少爆倾稻晰的恢寸醋坎骸链病匀妮档典就补极竣吠随钟富苔锡拜额沧秀犀续怪奋蓑汉蟹悬目泵范诈炉隋挤稿歼恭淑闷截丘衔逢巡煎派恼蜂猫油际视之板奸衍壁嫂键昨迎胀敷哆御呵尿函犯膜为矣吁旷元佬贷潜牟僵桌涯萌幢轿豫蛮蛾呵羌酶完拈贾华漱陨睬何蓖隙剖纺舶须冤去孺颧忆丛臃痒耽渔抨精母思钱汰挝氛狂芯胁染痉娇群工沪实验一 非线性方程的数值解法(一) 信息与计算科学金融 崔振威 201002034031 实验目的: 熟悉二分法和简单迭代法的算法实现。 实验内容: 教材 P40 2.1.5 实验要求
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[matlab二分法程序代码]matlab牛顿迭代法程序代码

篇一 : matlab牛顿迭代法程序代码 牛顿迭代法 主程序: function?[k,x,wuca,yx]?=?newton k=1; yx1=fun; yx2=fun1; x1=x0-yx1/yx2; while?abs>tol x0=x1; yx1=fun; yx2=fun1; k=k+1; x1=x1-yx1/yx2; end k; x=x1; wuca=abs/2; yx=fun; end

分程序1: function?y1=fun y1=sqrt-tan; end

分程序2: function????y2=fun1 %函数fun的导数 y2=x/)-1/) ); end

结果: [k,x,wuca,yx]?=?newton

k?=8 x?=0.9415 wuca?=4.5712e-08 yx?=-3.1530e-14

[k,x,wuca,yx]?=?newton k?=243 x?=NaN wuca?=NaN yx?=NaN篇二 : 二十个JAVA程序代码 1百分制分数到等级分数 package pm; public class SwitchTest { //编写程序,实现从百分制分数到等级分数的转换 // //>=90 A // 80~89 B // 70~79 C // 60~69 D // public static void main { int s=87; switch{ case 10 :System.out.println;break; case 9 :System.out.println;break; case 8 :System.out.println;break; case 7 :System.out.println;break; case 6 :System.out.println;break; default :System.out.println;break; } } } 2成法口诀阵形 package pm; public class SwitchTest{ public static void main{ for{ for{ System.out.print+”\t”); } System.out.println; } } } 3华氏和摄氏的转换法 package pm; import java.util.Scanner; public class SwitchTest { public static void main { Scanner sc=new Scanner; while { System.out.println; String s = sc.next.trim; if ) { //做摄氏向华摄的转换 System.out.println; double db = sc.nextDouble; double db2 = + 32; System.out.println; } else if ) { //做华摄向摄氏的转换 System.out.println; double db = sc.nextDouble; double db2 = * 5 / 9; System.out.println + “C”); }else if){ break; } } } } package pm; import java.util.Scanner; public class SwitchTest{ public static void main { Scanner sc=new Scanner; boolean flag=true; while { System.out.println; String str = sc.nextLine.trim; if || str.endsWith) { //做摄氏向华摄的转换 30c String st = str.substring - 1); double db = Double.parseDouble;//[0,2) //2 double db=Double.valueOf.doubleValue; double db2 = + 32; System.out.println; } else if || str.endsWith) { //做华摄向摄氏的转换 String st = str.substring - 1); double db = Double.parseDouble;//[0,2) //2 double db=Double.valueOf.doubleValue; double db2 = * 5 / 9; System.out.println + “C”); }else if){ flag=false; } } } } 4三个数的最大数 package pm; public class SwitchTest { public static void main { int a=1,b=2,c=3,d=0; d=a>b?a:b; d=a>b?:; System.out.println; } } 5简单计算器的小程序 package one; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class Jsq implements ActionListener { private JFrame frame; private JButton[] bus; private JTextField jtx; private JButton bu; private char[] strs; private String d_one = ““; private String operator; public static void main { new Jsq; } /* 利用构造进行实例化 */ public Jsq { frame = new JFrame; jtx = new JTextField; bus = new JButton[16]; strs = “789/456*123-0.+=“.toCharArray; for { bus[i] = new JButton; bus[i].addActionListener; } bu = new JButton; bu.addActionListener; init; } /* GUI 初始化 */ public void init { JPanel jp1 = new JPanel; jp1.add; jp1.add; frame.add; } /* 事件的处理 */ public void actionPerformed { /*获取输入字符*/ String conn = arg0.getActionCommand; /*清除计算器内容*/ if ) { JPanel jp2 = new JPanel; jp2.setLayout); for { jp2.add; } frame.add; frame.pack; frame.setLocation; frame.setVisible; frame.setDefaultCloseOperation; d_one = ““; operator = ““; jtx.setText; return; } /*暂未实现该功能*/ if){ return; } /*记录运算符,保存运算数字*/ if ) != -1) { if && ““.equals)) return; d_one = jtx.getText; operator = conn; jtx.setText; return; } /*计算结果*/ if ) { if && ““.equals)) return; double db = 0; if ) { db = Double.parseDouble + Double.parseDouble); jtx.setText; } if ) { db = Double.parseDouble - Double.parseDouble); jtx.setText; } if ) { db = Double.parseDouble * Double.parseDouble); jtx.setText; } if ) { db = Double.parseDouble / Double.parseDouble); jtx.setText; } d_one = db + ““; return; } //界面显示 jtx.setText + conn); } } 6三角形图案 package pm; public class SwitchTest{ public static void main{ int n=5; for{ for{ System.out.print; } for{

相关文档
最新文档