QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
11天前
查看: 1614|回复: 0
收起左侧

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

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

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

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

x
好久没来论坛发言了,来分享几个我编写对程序,对工科学生也许会有点启发。
( ?. Y9 ~& r6 `5 q1 x* _' r' D) E5 G; _& O7 @: m. O5 k1 f
用迭代法求解方程超越方程的解  o- g' c$ H/ l' j8 A
#include "math.h"( s, i" ]8 J- y/ N
main()
+ A  w+ A. Y* X{
. k6 h  I! _# m/ Vdouble x1,x2;5 ?9 w" y! |7 _. z' p) h
x1=1;
- ?# Q4 u' z( Mx2=2;1 Y0 F, A' C6 T' S! O" G
while(x2-x1>0.000001||x1-x2>0.000001)
' i9 I% s+ E" m4 D1 K2 g {
8 F) Y  q% f/ G7 v) n  m  J! w x1=x2;
6 [/ b( N2 |5 V: T x2=log10(x1+2);
6 y2 [8 R2 g5 ?! {. J printf("x2=%lf\n",x2);) a) A7 c6 h7 R& g  g, B1 D. N( e
}
5 c$ r) X# O4 w/ M3 X* xprintf("result is %lf\n",x2);- y; |. a2 Z  \! W% P3 \7 }8 k# ?8 q
}
' ^, p7 s1 g9 \: {6 K4 H: V
) d) \- `# [5 u+ v- R
6 q5 B, o2 g  z2 y' f+ L: B1 [0 N' J; _4 T3 b0 K
对分法解方程
- C' _" H0 ]; r" `8 y  |& xdouble f(double x)3 W# t; [( @  G8 @0 M! j+ e' x
{
. ]9 Z/ I9 b! Q. {2 k, l! e% ?' idouble y;
+ }7 }! c9 U4 Q7 w9 Yy=x*x*x+2*x-5;
( J+ h' k) R9 u; q7 k& [return y;- x/ `5 R; m$ Z' Z  G5 n( @
}! G/ m1 |% `/ m; V" n' `2 U
main()9 T* i7 h7 K( I$ R1 f- Y
{- I( [4 ]2 B9 j  Z3 L
double a=1,b=2;
, l& q2 z6 `7 s- V7 Y: u7 T/ S$ _/ Ndouble c,d,r;1 U! w9 E$ ^6 [9 o2 l; Z/ _' f
int i;
: s3 s9 h3 d. G6 q' X8 y  vfor(i=0;i<20;i++)8 q, j2 t8 v" g. Z3 n) H
{$ W$ u2 r; Y4 T# x$ K
c=(a+b)/2;( s3 G6 V5 K) Y8 P4 {8 I6 J3 P* k
d=f(c);: P' b  N0 n5 U( S$ \4 t; O" v
if(d==0)4 v. W( \  v3 ]: Y. a
  {9 |; R2 I  W& O; y* \8 T- ^& X  C; m. x
  r=c;3 d; p; I/ O0 I9 j
  break;1 G0 h1 b5 T$ d: X& q3 k9 S
  }
) \# Z- g& L5 `  S  f else4 |0 y( x0 E: |( V, V) U  [
  {
- z8 K3 A& f5 S) n6 z  if(d>0)
7 v! s* T& a. D% O# r9 @; K9 H) n  b=c;
8 g! ?  O; @8 U$ v' Y5 y  else
$ T* y* X+ o+ k1 j- Y0 E  a=c;
9 }3 j$ ?& [9 i9 a. X% I: S) V* r  }
; J  ?# H. o+ T+ H' |# U$ \: \ }7 m3 q$ T- ^* \* ^2 z) X( J5 l
r=c;
) ?6 N( C3 C2 i2 R2 R& V& ^8 K2 o2 gprintf("The result of ""x^3+2*x-5=0"" is %lf\n",r);
3 H0 J- O& X+ t9 H}& \0 f- A, h. B, Q- e% T- {
; Q5 f# y* G4 v0 W
* E) n9 Q9 u. k0 j8 E1 M* y
一下程序段将以0为起点0.05为步长以2*PI为终点计算各个自变量的正弦值,并将计算结果以点的坐标的形式(x,y)打印到文件中,方便绘图软件处理。使用这种方法,即使不懂C语言的图形操作也可以绘制出高质量的曲线来。7 S" f6 T. R' l! K/ O& e

* f3 ~0 |8 e6 q  n; o#define PI 3.1415926
  Q# f5 ?/ R6 q+ s" U' [2 {5 r#include<stdlib.h>( Z% i, [4 ^/ e0 A
#include<stdio.h>
8 Q5 ?/ a8 U: L) e3 @# C#include<math.h>0 i, j# u0 {9 ]+ Z8 L3 g
main(); W) r9 L9 X, c& a$ h* r, j
{, x% J% v- f( |  w5 E# R4 D9 H
FILE * pf;* N- v, n7 Q2 m7 F
double x,y;
1 u# ?/ W% U. b1 }% S2 T+ I4 lchar xx,yy;+ ?: J4 z; p/ o2 }* j3 c
x=0.0;3 |1 z0 J# O' M& ^* [. ~
if((pf=fopen("d:\\file1.txt","w"))==NULL)* P9 A9 k: u0 t
{
/ T7 ?, o, W* c/ @% a$ j3 H printf("cannot open this file\n");
0 Q! u2 j' T* v! T exit(1);
& T5 i# z3 E) |: ^ }- [3 }0 d$ S3 K# B) w
while(x<=(PI*2.0))3 J* {  J( [) ~: C0 A8 D
{
; x. n7 I6 F: Ey=sin(x);
' r* V# ~: c5 V+ zfprintf(pf,"%lf,%lf\n",x,y);- h3 P8 C6 U3 b- k; ~; x
x+=0.05;
4 V; ]$ Y; j  s: ?+ i' ~& s8 s* c}: r. I$ e( N% v4 ?0 }* H
fprintf(pf,"%lf,%lf\n",2*PI,sin(2*PI));/ \+ G, e! D4 d' k
fclose(pf);8 L- h4 \! n) H+ a* ^) n
}
1 N4 y6 ?- U, O' {' q1 v
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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