QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 1617|回复: 0
收起左侧

[原创] 分享几个自己对编程成果(C语言版)

[复制链接]
发表于 2010-9-11 22:00:32 | 显示全部楼层 |阅读模式 来自: 中国云南昆明

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
好久没来论坛发言了,来分享几个我编写对程序,对工科学生也许会有点启发。5 E% k0 g* D- F( C# f8 J0 @. F8 ]1 @

; x6 I: m' X- F; _- V  s* f用迭代法求解方程超越方程的解
5 w# U; P/ d* [+ y* Q1 `, `#include "math.h"9 ^% K! E& e$ K  H
main()* }. O% x4 X1 ?; K& O# a+ x/ v( ?
{+ Q7 b, D5 N) V- u: @7 |
double x1,x2;
8 V8 o' q8 Z, p7 c# }  M+ _" ^x1=1;
7 Q) g9 g: C6 T! {x2=2;+ u0 N1 U/ B9 E& _
while(x2-x1>0.000001||x1-x2>0.000001)' M+ k# c  O" q7 m  ^
{$ C5 f; O7 q) q* M3 O* M7 O
x1=x2;6 v' j; R! A4 L( ~1 |) N
x2=log10(x1+2);
! P9 S  B/ ]9 m" S- Q printf("x2=%lf\n",x2);
: v( p8 e, {5 B2 u' e0 Z: } }
4 J3 h4 l; X  _3 f$ Zprintf("result is %lf\n",x2);  e- F2 y5 }- q! J9 o
}  [" B- D1 W+ i/ K; R

& v& g$ Y+ d* \+ |2 e3 \3 j$ k
/ Y$ Z: i* D, H+ _6 T# Q- K+ r0 g/ S0 Q% }' @% H
对分法解方程% ?: U. N8 H2 l- J
double f(double x)
! J! I( L0 s. x) O3 d' ~, R: [{
/ L6 U2 Q1 j: p3 k' w& gdouble y;$ n/ N1 L; h$ X1 K, K, ]( [1 W
y=x*x*x+2*x-5;
- h' A% K; ^1 C1 E# ]return y;
1 V& y) w6 H, a. t  K}
& r7 e: E0 a6 |5 h( q, N' J: Bmain()( I" d6 `: q2 j# D
{
: n! [# Q4 h0 @( K2 vdouble a=1,b=2;
1 v, y* `4 L, f( }- Edouble c,d,r;
8 P; j. f: L3 ?, Z1 z4 v$ mint i;+ @$ |' ~: v' e# H) g! K# X5 ?
for(i=0;i<20;i++)
3 U/ q+ D/ G4 S# c8 o/ a6 t {& Y% I4 l  V5 }/ l
c=(a+b)/2;
/ Q: e1 k- |1 \ d=f(c);
( _* L- \; {8 l' J' L8 i  W if(d==0)
; J. ^# i+ l; X; R9 t  {
4 Q5 R" h' J& Y  r=c;
. S5 j7 b& p8 o& [7 r  break;
0 s2 `+ O4 e* I9 `6 ~  }
# D' w% c- d6 A0 G  M: v  B: E else
8 u" {; C& m" d4 L  {% y  {& s; \& o, b+ |9 h
  if(d>0)
# q. {! g; R' e  b=c;
9 H. k& F1 n! r9 W  else
0 L* ?, x" n+ k, \  M7 ?2 k* i1 B  a=c;
. k8 d2 H1 {4 |$ `0 d5 B  }2 @! b  E. H. ?! }/ n3 b
}
( O/ b* B/ f. w, {% kr=c;
8 Y+ S, k7 I4 y7 N; M; |printf("The result of ""x^3+2*x-5=0"" is %lf\n",r);2 I" ~4 r2 T3 p8 a) [5 \
}
" K, e  n0 W+ S5 G3 _- s+ Z5 q, k9 Y' w4 @3 q/ ?) R

- X6 ~9 H5 y# ]3 J' x! O/ a' M一下程序段将以0为起点0.05为步长以2*PI为终点计算各个自变量的正弦值,并将计算结果以点的坐标的形式(x,y)打印到文件中,方便绘图软件处理。使用这种方法,即使不懂C语言的图形操作也可以绘制出高质量的曲线来。( u0 W9 Q2 C. o+ M1 ?2 T) j
2 `1 G1 ^; R- ]- v9 n
#define PI 3.1415926
2 j2 Q2 l& ~% A+ p) ^6 Q#include<stdlib.h>
3 x' u  m5 a% x% `! x) |+ x6 V+ E#include<stdio.h>/ K4 z: y4 |8 m+ o6 t2 O
#include<math.h>
, i2 i! y  ~  S6 ?5 B( Gmain()) H5 r) t& G5 |) I3 P4 i5 u
{
; ]& d. N7 R0 l6 `/ C0 [4 `/ _FILE * pf;
5 k7 y) C/ A4 U4 K1 ^% M) G. Edouble x,y;( s0 `# S  ^; M+ m' y3 A0 v
char xx,yy;  p8 ~" ~; }9 S) E' w$ K! p
x=0.0;4 E  ^3 k  Q2 w- N7 S
if((pf=fopen("d:\\file1.txt","w"))==NULL)
& f+ S/ u8 b4 N" u {
: Q( l. Y" V$ V, S3 ^" P) A+ r2 H printf("cannot open this file\n");
; |' E8 a9 }" o% L6 _3 s" H# g exit(1);
% v7 `3 Q8 Y. e0 ~: `3 b& E }/ u5 Y3 k$ d! D3 f5 g; I
while(x<=(PI*2.0))
" t1 w. u* F/ X{
1 y4 T# I" F+ d* g4 ]9 qy=sin(x);
! y/ D9 Q$ L8 F9 _/ ?* }1 [/ X, dfprintf(pf,"%lf,%lf\n",x,y);
- J% `' O+ R6 \x+=0.05;* g( I* y3 B6 z
}
8 k9 F/ |0 d) s% L+ v9 n% d3 Gfprintf(pf,"%lf,%lf\n",2*PI,sin(2*PI));4 M, H; N! O) t
fclose(pf);
$ @" G' H% L7 o" P7 s$ a}
+ U# l% ?; m7 |
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表