|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
好久没来论坛发言了,来分享几个我编写对程序,对工科学生也许会有点启发。
* D% b9 c( x- c7 k) U( o4 L; J3 V" t! t" ^; H5 ^
用迭代法求解方程超越方程的解: `& E1 X3 ?6 ?) n* I) q
#include "math.h"
3 K9 ]6 T) d e: emain()
( n0 f& i1 U d0 W/ M( B/ c; T{
1 j; P, h7 z% K0 Bdouble x1,x2;( ?3 L- O) |; Z! V% T4 ?
x1=1;' \8 N6 f3 Z9 d& J8 Z" Y2 K3 i
x2=2;8 J, X; w2 n F! N
while(x2-x1>0.000001||x1-x2>0.000001)
; R# d: x7 G! H) ` {
% y$ `3 l, O! ?' W) q' Y x1=x2;
* B! F) S/ u# d x2=log10(x1+2);
: [3 s2 O1 w: O8 q# h2 f( T9 p printf("x2=%lf\n",x2);( a1 B3 `7 S5 U3 ^ O8 z
}
3 q4 P) H3 a+ kprintf("result is %lf\n",x2);
$ p4 Z8 c) G" m# I4 U& y}& J6 n: v7 ]# G+ a
f( ^) I- v) Y% z7 M
7 S. @! Y0 O5 o0 U' _* W* d1 C7 s# R) K4 S6 D9 w
对分法解方程0 e0 [, G5 p ^: j
double f(double x)
; v0 }! g/ o3 R) x4 {{+ |# W1 ~% j# U& y) D3 h: p
double y;
0 i! @$ _$ b6 K) u: z, sy=x*x*x+2*x-5;
. M8 Q9 @* _& z) t, nreturn y;2 _0 J1 `7 _; w5 l* Q
}
+ n" q6 s, L R# gmain()
6 d6 p% R: W! I{: p0 J `* K* b
double a=1,b=2;
" O" l8 W$ U; A- h: xdouble c,d,r;
% Q: U0 b% T) `" {int i;' m; S) ?3 z$ K0 }( Q: ?9 b( P
for(i=0;i<20;i++); L1 A5 ?: f* P# Q
{/ ~! r% Y$ B2 j* L
c=(a+b)/2;: M; V8 |" o# a7 h
d=f(c);& l4 n- l/ |+ t+ s
if(d==0)4 o& x- P" b1 ^( _# k0 {
{; h' ~7 m1 ^8 t9 d
r=c;- ^( L( i* M l& I: W# j& }
break;
( M+ V1 V) c$ f0 C' ]; |% n }) P/ K3 W2 f) `8 ?) U4 D4 n
else
! c( a- ~7 h- E: @, j {% ~. C" j( }) ]3 H0 q
if(d>0)
1 E9 m* R7 x, U2 o! N b=c;! J/ N* b8 q$ u0 x5 N0 m) l2 ^
else
) p3 Z% w" s( I4 I( T a=c;- V2 k* F& Z! W6 {
}! w$ [& o4 w/ O, V5 P
}3 L, a% U: j b$ O; b
r=c;: X& ~: {% {* ]5 e) c
printf("The result of ""x^3+2*x-5=0"" is %lf\n",r);
, _2 Y9 H, T# N) ?}4 O, F' M, B, w0 q
6 w1 d# E1 x9 Q8 }8 o' ^
) {2 s+ I0 b; L+ t8 R& U一下程序段将以0为起点0.05为步长以2*PI为终点计算各个自变量的正弦值,并将计算结果以点的坐标的形式(x,y)打印到文件中,方便绘图软件处理。使用这种方法,即使不懂C语言的图形操作也可以绘制出高质量的曲线来。: ?: Y# T! D* b! W3 i
5 q5 r! u+ u2 n1 ]( e#define PI 3.1415926, E% g) X) B* p/ ]: _5 j4 L
#include<stdlib.h>
& ]/ a1 ?* Z0 e% e#include<stdio.h>1 V) j3 V0 J' U
#include<math.h>
" Z: h+ H$ P4 w( q$ dmain()
" A8 N$ |1 J8 z# I2 T{' H9 B7 V0 \0 B( _4 F) f/ T
FILE * pf;! d8 F r* I+ o) g7 K7 a# G
double x,y; i; e& [& e/ ?/ M- e8 t, w7 Z
char xx,yy;& l. I. ?+ J2 u4 I8 A W
x=0.0;
" `4 \4 ~$ L: I& c" w5 T: Pif((pf=fopen("d:\\file1.txt","w"))==NULL)
0 i9 h6 u6 @4 N8 q: p; h6 h: U! V {" h3 z2 A! K$ j! V% a" x
printf("cannot open this file\n");* `1 X5 ?( f) A! i7 W: ?+ p* L" i. o
exit(1);) [6 U4 x' a _3 o% E% u& V9 S
}6 Y9 [3 }# K" z5 z
while(x<=(PI*2.0))
1 l0 Q4 E/ {, L0 v2 i5 a{
. R3 J# l8 u2 ky=sin(x);
4 W! X# v) d4 m2 r U$ Ofprintf(pf,"%lf,%lf\n",x,y);
+ g# V* o3 D0 i1 \8 Nx+=0.05;
5 n: m6 }8 }. q8 j( l}0 `* h6 H0 W/ l
fprintf(pf,"%lf,%lf\n",2*PI,sin(2*PI));2 w5 l. ~6 j0 w
fclose(pf);
2 _; D0 v8 ?3 U; r# Z) \}* u8 W5 O5 z" n7 ~
|
|